1 / 23

Paso de Parámetros a una Función

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. Recuerde !!!!!.

nayda-cobb
Download Presentation

Paso de Parámetros a una Función

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 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. Paso de Parámetros por Valor: Ejemplo 2 Salida del programa anterior . .. … …. ….. …… ……. …….. ……… ……….

  8. #include <iostream.h> 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; } Paso de Parámetros por Valor: Ejemplo 3

  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 <iostream.h> 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. #include <iostream.h> // 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; } Paso de Parámetros por Referencia: Ejemplo 2

  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. #include <iostream.h> 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; } Paso de Parámetros por Referencia: Ejemplo 3

  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 xn 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 ab 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_si fin_RM 3. Fin CODIFICAR!!!!!!

  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.

More Related