1 / 23

Paso de Vectores como Parámetros

Paso de Vectores como Parámetros. Prof. Judith Barrios Albornoz Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Semestre A_2013. Este material toma como base el curso original Prof. Narciso. Año 2000- 2006.

greg
Download Presentation

Paso de Vectores como Parámetros

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Paso de Vectores como Parámetros • Prof. Judith Barrios Albornoz • Departamento de Computación • Escuela de Ingeniería de Sistemas • Facultad de Ingeniería • Universidad de Los Andes • Semestre A_2013 Este material toma como base el curso original Prof. Narciso. Año 2000- 2006

  2. Paso de vectores como parámetros Un vector completo se puede pasar como parámetro actual a una función : • se especifica únicamente sunombre, sin corchetes ni subíndices charcaracteres[80]= “esta cadena es constante”; …… F1(caracteres, longitud); …… El parámetro formal debe ser definido dentro de la función, se indicará con un par de corchetes vacíos, sin definir el tamaño del vector void F1 (charstring[], intlng)

  3. Paso de vectores como parámetros • En C/C++ los arreglos en general son pasados como parámetros por referencia • Esto es, el nombre del arreglo es la dirección del primer elemento del arreglo • En C/C++ un elemento cualquiera de un arreglo puede ser pasado a una función por valor o por referencia, tal y como se hace con una variable simple

  4. Ejemplo 1 de paso de vectores como parámetros floatmedia (int a, float x[]) /* Definición de la función*/ { /* Note que se incluyen los corchetes vacíos */ ……. } voidmain () { intn; floatmed; float lista[100]; ……… med = media(n, lista); /* Esta llamada pasa como parámetros*/ /* actuales la longitud del vector y el vector*/ /* No se incluyen los corchetes*/ …………….. }

  5. Ejemplo 2 de paso de vectores como parámetros voidmodificarTemp(intb[], intnumEltos) /* Definición de la función*/ { /* Se incluyen los corchetes vacíos*/ ……. } voidmain () { inttempDiaria[24]; ……… modificarTemp(tempDiaria, 24); /* Esta llamada pasa como *//* parámetros actuales nombre del *//* vector y su longitud*/ …………/* No se incluyen los corchetes*/ }

  6. Ejemplo 3 de paso de vectores como parámetros #include <ctype.h> #include <string.h> void F1(charstring[], intlng) { int i; for (i=0; i!=lng; i++) string[i] = toupper(string[i]); } voidmain () { char caracteres[80] = “Ejemplo”; int longitud = strlen(caracteres); puts(caracteres); F1(caracteres, longitud); puts(caracteres); } Entrada = Ejemplo Salida = EJEMPLO Main F1 ( ) Strlen ( ) Puts ( ) Toupper ( ) Funciones de librería Función definida por el Programador

  7. Ejemplo 4 de paso de vectores como parámetros /*Paso de vector y elementos individuales del vector como parámetros*/ # include<stdio.h> #define numeroEltos5 voidmodificarVector(int [], int); /* Prototipo de la función*/ voidmodificarValor(int); /* Prototipo de la función */ voidmodificarReferencia(int &); /* Prototipo de la función */ voidmain() { int vector[numeroEltos] = {0, 1, 2, 3, 4}, j; printf (“Los valores del vector original son: \n” ); for (j = 0; j < numeroEltos; j ++) printf (vector[j]); modificarVector(vector, numeroEltos); printf (“Los valores del vector modificado son:\n”); for (j = 0; j <= numeroEltos– 1; j ++) printf (vector[j]); Principal - Main modificarValor modificarReferencia modificarVector

  8. Ejemplo 4 de paso de vectores como parámetros - continuación printf (“Efectos de pasar un elemento de un vector como parámetro por valor\n”); modificarValor(vector[3]); printf (“El valor del cuarto elemento del vector es: %d\n”,vector[3]); modificarReferencia(vector[3]); printf (“El valor del cuarto elemento del vector es: %d\n”,vector[3]); } Principal - Main modificarValor modificarReferencia modificarVector

  9. Ejemplo 4 de paso de vectores como parámetros - continuación voidmodificarVector (int b[], intnum) { intk; for (k = 0; k <= num– 1; k ++) b[k] *= 2; } voidmodificarValor(int e) { e *= 2; printf (“Valor modificado del elemento = %d\n”, e); } voidmodificarReferencia (int &e) { e *= 2; printf (“Valor modificado del elemento = %d\n”, e); } Principal - Main modificarValor modificarReferencia modificarVector

  10. Diagrama de descomposición modular Principal - Main modificarValor modificarReferencia modificarVector

  11. Ejemplo 5 de paso de vectores como parámetros Diseñar un programa que calcule y escriba el área y la circunferencia de n círculos, los nradios se deben almacenar en el vectorRadios #include<stdio.h> #define n 100 voidleerRadios(float radios[], int &numElementos) /*Parametrosde salida: vector radios su numero de elementos numElementos*/ { int j; printf (“¿Cuantos radios seran introducidos ?\n”); scanf (&numElementos); for (j = 0; j < numElementos; j++) { printf (“radio %d =\n”, j+1); scanf (&radios[j]); } }

  12. Ejemplo 5 de paso de vectores como parámetros voidAreaCirc(float radio, float &area, float &circulo) /* Parametros de entrada: radio*/ /* Parametros de salida: area y circulo */ { float pi = 3.14159; area = pi * pow(radio, 2); circulo = 2 * pi * radio; } voidAreasCircs(float radios[], intnumElementos, floatareas[], floatcirs[]) /* Parametros de entrada: vector radios */ /* Parametros de salida: vectores areas y cirs */ { int I; for (I = 0; I < numElementos; I++) AreaCirc(radios[I], areas[I], cirs[I]); }

  13. Ejemplo 5 de paso de vectores como parámetros voidescribirAreasCircs (float radios[], intnumElementos, floatareas[], floatcirs[]) { int j; for (j = 0; j < numElementos; j++) { printf (“Para la circunferencia de radio %d\n”, radios[j]); printf (“su area es: %d\n”,areas[j]); printf (“su circunferencia es: %d\n”,cirs[j]); } } voidmain() { float R[n], A[n], C[n]; intnRadios; leerRadios(R, nRadios); AreasCircs(R, nRadios, A, C); escribirAreasCircs(R, nRadios, A, C); }

  14. Diagrama de descomposición modular Principal - Main leerRadios AreasCircs escribirAreasCircs AreaCirc

  15. Ejercicios • Determinar la salida del siguiente programa si el dato de entrada es el entero 4. #include<stdio.h> intA (int y) { y *= 2; return y; } intB (int x) { x += 5; return x; } voidmain () { int x, x1; printf (“Introduzca un numero \n”); scanf (&x); x1 = B(x); printf (“%d\n”, x1); x1 = A(x); printf (“%d\n”, x1); }

  16. Ejercicios • Determinar la salida del siguiente programa: #include<stdio.h> int reloj, num, temp; void pascal (intnum, int &suma) { int reloj; temp = 2 * num + suma; reloj = temp * suma; num++; suma += num; printf (“%d %f %d %d\n”, temp, reloj, num, suma); } voidmain () { num = 1; reloj = 0; temp = 0; pascal (num, temp); printf (“%d %f %d\n”, num, reloj, temp) ; temp++; pascal (temp, num); printf (“%d %d %d\n”, num, reloj, temp); }

  17. Ejercicios 3) Diseñar un procedimiento con tres parámetros formales reales (por referencia), a, b y c. El procedimiento debe girar los valores de los parámetros hacia la derecha de manera que, después de la ejecución, el valor que originalmente estaba en a quede en b, el que estaba en b quede en c y el que estaba en c quede en a. Deben escribirse los números iniciales y su valor después de la rotación Ejemplo de entrada: 4.7 1.0003 7.5 -12.5 6.5 2.005 Ejemplo de salida 7.5 4.7 1.0003 2.005 -12.5 6.5

  18. Ejercicios 4) Los registros mensuales de visitantes al parque Chorros de Milla durante el año 2011 son los siguientes: Mes Ene Feb Mar AbrMayJunJulAgoSepOctNovDic #visitantes 180 300 120 150 210 250 330 510 380 230 160 320 Diseñar un programa, estructurado en funciones que realizan las siguientes tareas: • Leer y almacenarlos datos en el vector VISITANTES (12) . Cada posición corresponde con un mes del año. • Calcular y escribirel promediode visitantesdurante el año 2011 • Calculary escribir los nombres de los meses con el mayor y el menor número de visitantes

  19. Paso de Arreglos bidimensionales como Parámetros

  20. Paso de arreglos como parámetros Un arreglo completo se puede pasar como parámetro actual a una función : • se especifica únicamente sunombre, sin corchetes ni subíndices intnotas [40][6] …… F1(notas, filas, columnas); …… El parámetro formal debe ser definido dentro de la función, se indicará con un par de corchetes vacíos, sin definir el tamaño del vector void F1 (intPR1[] [], intfila, int columna)

  21. Paso de vectores como parámetros • En C los arreglos en general son pasados como parámetros por referencia • Esto es, el nombre del arreglo es la dirección del primer elemento del arreglo • En Cun elemento cualquiera de un arreglo puede ser pasado a una función por valor o por referencia, tal y como se hace con una variable simple

  22. Ejemplo 1 de paso de Arreglos como parámetros floatPromParciales(int f, int c, int notas[] []) /* Definición de la función*/ { /* Note que se incluyen los corchetes vacíos */ ……. } voidmain () { intn, m; floatmedia; int listaPR1[40][3]; ……… media = PromParciales(n, m, listaPR1); /* Esta llamada pasa como parámetrosactuales numero de filas y de columnas y el arreglo*/ /* No se incluyen los corchetes*/ …………….. }

  23. Ejercicio • Definir una subprograma que permite leer un arreglo bidimensional NotasParciales compuesto por las 4 notas parciales de los estudiantes de PR1 sección 01. • Definir una subprograma para crear un arreglo unidimensional con las NotasDefinitivasde los alumnos, las cuales son el promedio de los 4 parciales almacenados en el arreglo NotasParciales . • Definir una subprograma para ordenar el arreglo NotasDefinitivasen orden descendente, considerando que cada vez que cambia cambia de lugar un elemento del arreglo NotasDefinitivas, debe cambiar de lugar toda una fila del arreglo NotasParciales. Esto considerando que ambos arreglos son tratados como paralelos. • Definir una subprograma que permita crear un arreglo con los nombres de los estudiantes de PR1 – arreglo de caracteres, el cual se corresponde con las notas parciales y posteriormente con las notas definitivas. Este es igualmente un arreglo paralelo con NotasParcialesyNotasDefinitivas.

More Related