La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de 2009. Funciones. Paso de Parámetros a una Función Existen dos.

Presentaciones similares


Presentación del tema: "Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de 2009. Funciones. Paso de Parámetros a una Función Existen dos."— Transcripción de la presentación:

1 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de Funciones. Paso de Parámetros a una Función Existen dos posibilidades para pasar parámetros a un subprograma: Por valor Por referencia. Paso por valor El parámetro formal es una copia del parámetro real. Como darnos cuenta rápido: los parámetros de entrada no son punteros.

2 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de Funciones. Ejemplo: void Decremento(int x) { x = x - 1; printf(%d\n,x); return; } void main(void) {... n = 4; Decremento(n); 3 printf(%d\n,x); } n no cambia su valor 3434

3 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de Funciones. Paso por referencia El parámetro real y el formal son consideradas como una única variable. Maneja parámetros de entrada/salida. Se pasa como parámetro real la dirección de una variable simbolizado por &. Como darnos cuenta rápido: el parámetro de entrada por referencia a la función Es un puntero.

4 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de Funciones. Ejemplo: void Decremento(int *x) { *x = *x - 1; printf(%d\n,*x); return; } void main(void) {... int n = 4; Decremento(&n); 3 printf(%d\n,*x); } El valor de n cambia después de llamar a la función. 3333

5 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de Traza de Programas Consiste en representar el valor de ciertas variables seleccionadas de nuestro Programa después de ejecutar cada instrucción. Herramienta: el depurador. Ejemplo: int a, b; /* variables globales */ void F1(int *c); int main() Traza: { 1) a = 1; 2) b = 3; 3) F1(&a); 4) printf( %d %d \n,a,b); return 0; } void F1(int *c) { int b; 5) b = 2; 6) *c = a + b + 2; return; } Lineaab/Gc / *cb/L 11? &a /1? &a /52 453

6 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de Como pasar arreglos a una función: Para pasar un arreglo a una función, tenemos que especificar el nombre del arreglo sin corchete alguno. Por ejemplo, si el arreglo Temperatura_por_hora ha sido declarado como: int Temperatura_por_hora [24]; El enunciado de llamada a la función Modificar_arreglo(Temperatura_por_hora,24); Pasa el arreglo y su tamaño a la función Modificar_arreglo. ¿Qué tipo de llamada a función estamos haciendo? ¿Por qué pasamos como parámetro el tamaño del arreglo? ¿Cómo seria el prototipo o declaración de la función? void Modificar_arreglo(int a [], int b); ¿Y la declaración void Modificar_arreglo(int *a, int b); sirve?

7 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de Veamos un ejemplo práctico en el cual pasamos a funciones arreglos completos o bien elementos puntuales del arreglo. Conclusión del ejemplo: Cuando pasamos el arreglo como parámetro, es una llamada por referencia, por lo cual la función puede modificar el arreglo local a main. Cuando pasamos tan solo un elemento del arreglo a la función, es una llamada por valor, por lo cual la función no puede modificar el valor del elemento del arreglo local a main.

8 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de Recursividad Una función recursiva es aquella que se llama a sí misma. Cada vez que se ejecuta la función lo hace con parámetros y variables locales nuevas, mientras que el código permanece invariable. El proceso recursivo debe tener una condición de parada. La recursividad es un método algorítmico alternativo a la iteración. Cualquier Estructura iterativa es posible sustituirla por una función recursiva y viceversa.. La recursividad permite definir ciertos algoritmos de una manera más sencilla pero con peor optimización de recursos ( memoria y tiempo de ejecución) que la versión iterada. Analicemos la implementación de una función que convierte un numero expresado en base 10 a base 2 por el método iterativo y por el método recursivo.

9 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de ARGUMENTOS DE LA FUNCIÓN main() Los argumentos de la función main ( ) son pasados a través de la línea de comandos del SO. Existen dos variables predefinidas dentro del lenguaje que reciben los argumentos que se pasan al ejecutar un programa. int main ( int argc, char *argv[ ] ) Argc (argument count) Es un parámetro de tipo entero que contiene el número de argumentos que se han introducido considerando el nombre del ejecutable. Argv ( argument values) Es un arreglo de punteros a cadenas de caracteres. Contiene los argumentos que se pasan desde el SO cuando se invoca el programa. Cada argumento debe estar separado por un espacio ó una tabulación

10 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de Ejemplo1: /*Prueba1.c*/ #include int main(int argc,char *argv[]) { if(argc!=1) printf(cantidad de parametros pasados al main incorrecta\n); else printf(cantidad de parametros pasados al main correcta\n); Getchar(); Return(0); } >prueba argc vale 1 argv[0] apunta a la cadena prueba

11 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de Ejemplo2: Programa que saluda al usuario cuyo nombre lo ingresa como argumento de main() por linea de comandos del SO. /*prueba2.c*/ #include main(int argc, char *argv[]) { if(argc!=2) printf("Adjunte su nombre al ejecutable.\n"); else printf("Hola %s", argv[1]); getchar(); } >prueba Pepe argv[0]=prueba argv[1]=Pepe argc = 2 >Hola Pepe

12 Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de La próxima clase empezamos a ver estructuras de datos y manejo de archivos. Estos son los temas de la práctica 6.


Descargar ppt "Programación, Algoritmos y Estructuras de Datos. Facultad de Ingeniería – UNLP. Junio de 2009. Funciones. Paso de Parámetros a una Función Existen dos."

Presentaciones similares


Anuncios Google