La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.

Presentaciones similares


Presentación del tema: "Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de."— Transcripción de la presentación:

1 Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

2 Recuerde !!!!! Los PARAMETROS son VARIABLES LOCALES. La única diferencia es el lugar donde son declarados (lista_parámetros_formales). Cuando se pasa un valor desde una función “llamadora o invocadora” a una función “llamada o invocada”, se crea una variable temporal dentro de la función invocada. Una vez que termina la ejecución de la función invocada y se retorna a la función invocadora, esta variable deja de existir.

3 Paso de Parámetros Paso de parámetros: –Por valor –Por referencia Por valor : Los parámetros formales correspondientes reciben una copia de los valores (constante, variable, resultado de la evaluación de una expresión) de los parámetros actuales; por tanto, los cambios que se produzcan en ellos por efecto de la ejecución de la función no podrán afectar el valor de los parámetros actuales.En C/C++ todas las llamadas, por defecto, son por valor.

4 Paso de Parámetros por Valor: Ejemplo 1 void DibujarPuntos( int numPuntos ) { int i; for ( i = 1; i <= numPuntos; i++ ) cout << "."; } void main( ) { DibujarPuntos( 30 ); } 30

5 Paso de Parámetros por Valor: Ejemplo 2 void DibujarPuntos( int numPuntos ) { int i; for ( i = 1; i <= numPuntos; i++ ) cout << "."; } void main( ) { int i; for ( i = 1; i <= 10; i++ ) { DibujarPuntos( i ); cout << endl; } Valor de i

6 Paso de Parámetros por Valor: Ejemplo 2

7 Salida del programa anterior... … …. ….. …… ……. …….. ……… ……….

8 Paso de Parámetros por Valor: Ejemplo 3 #include void modificar(int); void main() { int a = 2; cout << “antes de la llamada” << a << endl; modificar(a); cout << “despues de la llamada” << a << endl; } void modificar (int a) { a *= 3; cout << “desde la funcion” << a << endl; return; }

9 Paso de Parámetros por Referencia Paso de parámetros: –Por valor –Por referencia Por referencia :Lo que se pasa a la función es la dirección de memoria del parámetro actual. De esta forma, una variable pasada como parámetro actual es compartida; es decir, se puede modificar directamente durante la ejecución de la función.

10 Paso de Parámetros por Referencia Apuntador: Variable especial cuyo contenido es la dirección de memoria de otra variable. Permiten devolver varios valores desde una función a través de los parámetros. Ap1 es una variable de tipo apuntador y A una variable de tipo entero

11 Parámetros por Valor vs. Parámetros por Referencia Si se pasa el valor de una variable (parámetro actual) a una función, ésta puede usar el valor de la variable pero no lo puede cambiar. Si se pasa la dirección de una variable (parámetro actual) a una función, ésta puede cambiar el valor de la variable.

12 Paso de Parámetros por referencia  Definición de la función en C++ tipo_dato nombre_función (tipo_dato &parámetro_formal,...) { // Cuerpo de la función }  Invocación de la función nombre_función(parámetro_actual,...)

13 Paso de Parámetros por Referencia: Ejemplo 1 #include void Cuadrado( int num, int &AptCuadrado ) { AptCuadrado = num * num; } void main( ) { int c; Cuadrado( 5, c); cout << ”El cuadrado de 5 es" << c << endl ; } Por valor Por referencia

14 Paso de Parámetros por Referencia: Ejemplo 2 #include // Prototipo de la funcion f1 void f1(int, int); // Prototipo de la funcion f2 void f2 (int &, int &); void main( ) { int u = 1, v = 3; cout << “u =“ << u << “v = “ << v << “antes de la llamada a f1” << endl; f1(u, v); cout << “u =“ << u << “v = “ << v << “despues de la llamada a f1” << endl; f2(u, v); cout << “u =“ << u << “v = “ << v << “despues de la llamada a f2” << endl; } void f1 (int a, int b) { a = 0; b = 0; cout << “a =“ << a << “b = “ << b << “dentro de f1” << endl; return; } void f2 (int &a, int &b) { a = 0; b = 0; cout << “a =“ << a << “b = “ << b << “dentro de f2” << endl; return; }

15 Paso de Parámetros por Referencia: Ejemplo 2 Corrida en frío u = 1 v = 3 antes de la llamada a f1 a = 0 b = 0 dentro de f1 u = 1 v = 3 despues de la llamada a f1 a = 0 b = 0 dentro de f2 u = 0 v = 0 despues de la llamada a f2

16 Paso de Parámetros por Referencia: Ejemplo 3 #include int cuadradoPorValor (int); void cuadradoPorReferencia (int); void main () { int x = 2, z = 4; cout << “x=“ << x << “antes de la llamada a cuadradoPorValor” << endl; cout << “valor devuelto por cuadradoPorValor: “ << cuadradoPorValor(x); cout << “x=“ << x << “despues de la llamada a cuadradoPorValor” << endl; cout << “z=“ << z << “antes de la llamada a cuadradoPorReferencia” << endl; cout << cuadradoPorReferencia(z) << endl; cout << “z = “ << z << “despues de la llamada a cuadradoPorReferencia” << endl; } int cuadradoPorValor (int a) { return a *= a; } void cuadradoPorReferencia (int &cRef) { cRef *= cRef; }

17 Paso de Parámetros: Ejemplo 1 Escribir una función que reciba los valores enteros de x y n > 0 como parámetros de entrada y devuelva el valor de x n como salida. entero función Potencia (entero x, entero n) 0. Inicio 1. pot = 1 2. Repita para (I = 1; I < n; I = I + 1) pot = pot * x fin_RP 3. devolver pot 4. fin_función CODIFICAR!!!!!!

18 Paso de Parámetros: Ejemplo 2 Escribir un programa que tome un conjunto de pares de números enteros a y b, y calcule la potencia a b de cada par. El fin de entrada de datos viene dado por a = -1 y b = -1. 0. Inicio 1. Q = cierto 2. Repita mientras (Q = cierto) Escribir (“Introduzca los valores de a y b”) Leer (a, b) Si (a = -1 y b = -1) entonces Q = falso sino Si (b > 0) entonces resultado = Potencia (a, b) Escribir (“Resultado = “, resultado) sino Escribir(“Error: b debe ser > 0”) fin_si fin_RM 3. FinCODIFICAR!!!!!!

19 Paso de Parámetros: Ejemplo 3 Realizar una función en C++ que permita sumar el número de elementos negativos de una lista de n números reales. void funcion Suma (real &resultado) 0. Inicio 1. Escribir (“Introduzca el valor de n”) 2. Leer (n) 3. resultado = 0 4. Repita para (j = 1; j < n; j = j + 1) Escribir (“Introduzca un número real”) Leer (numero) Si (numero < 0.0) entonces resultado = resultado + numero fin_si fin_RP 5. fin_funcion

20 Paso de Parámetros: Ejemplo 3 Realizar una función en C++ que permita sumar el número de elementos negativos de una lista de n números reales. void Suma (float &resultado) { int n, j; float numero, resultado = 0.0; cout << “Introduzca el valor de n” << endl; cin >> n; for (j = 1; j <= n; j++) { cout << “Introduzca un número real” << endl; cin >> numero; if (numero < 0.0) resultado = resultado + numero; }

21 Ejercicios Escribir las funciones necesarias para leer cuatro números reales, calcular y escribir su producto, suma y su media aritmética. Escribir una función que compruebe si un número dado es correcto, en cuyo caso la función deberá devolver el valor q. En caso negativo, la función devolverá el valor -1. Considere los siguientes casos para decidir si un número es o no correcto.

22 Ejercicios –El número es correcto si se encuentra en el rango definido por dos valores constantes MINIMO y MAXIMO. –El número es correcto si es uno de tres valores constantes VALOR1, VALOR2 o VALOR3. –El número es correcto si se encuentra en el rango definido por dos valores constantes MINIMO y MAXIMO, o bien es igual al valor constante VALOR1. –El número es correcto si se encuentra en el rango definido por dos valores constantes MINIMO1 y MAXIMO1, o bien en el definido por los valores constantes MINIMO2 y MAXIMO2.

23 Ejercicios Escribir una función que tome un carácter como parámetro de entrada y devuelva su tipo que podrá ser uno de los siguientes: (1) letra mayúscula de la ‘A’ a la ‘Z’, (2) letra minúscula de la ‘a’ a la ‘z’, (3) dígito del ‘0’ al ‘9’. Escribir una función que tome como parámetros de entrada dos instantes de tiempo expresados en horas, minutos y segundos e indique si el primero es anterior al segundo.


Descargar ppt "Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de."

Presentaciones similares


Anuncios Google