La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Funciones. Programación, Algoritmos y Estructuras de Datos.

Presentaciones similares


Presentación del tema: "Funciones. Programación, Algoritmos y Estructuras de Datos."— Transcripción de la presentación:

1 Funciones. Programación, Algoritmos y Estructuras de Datos.
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. Facultad de Ingeniería – UNLP Junio de 2009.

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

3 Funciones. Programación, Algoritmos y Estructuras de Datos.
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. Facultad de Ingeniería – UNLP Junio de 2009.

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

5 Programación, Algoritmos y Estructuras de Datos.
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; Linea a b/G c / *c b/L 1 ? 2 3 &a /1 5 6 &a /5 4 Facultad de Ingeniería – UNLP Junio de 2009.

6 Programación, Algoritmos y Estructuras de Datos.
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? Facultad de Ingeniería – UNLP Junio de 2009.

7 Programación, Algoritmos y Estructuras de Datos.
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. Facultad de Ingeniería – UNLP Junio de 2009.

8 Programación, Algoritmos y Estructuras de Datos.
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. Facultad de Ingeniería – UNLP Junio de 2009.

9 Programación, Algoritmos y Estructuras de Datos.
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 Facultad de Ingeniería – UNLP Junio de 2009.

10 Programación, Algoritmos y Estructuras de Datos.
Ejemplo1: /*Prueba1.c*/ #include <stdio.h> 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” Facultad de Ingeniería – UNLP Junio de 2009.

11 Programación, Algoritmos y Estructuras de Datos.
Ejemplo2: Programa que saluda al usuario cuyo nombre lo ingresa como argumento de main() por linea de comandos del SO. /*prueba2.c*/ #include <stdio.h> 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 Facultad de Ingeniería – UNLP Junio de 2009.

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


Descargar ppt "Funciones. Programación, Algoritmos y Estructuras de Datos."

Presentaciones similares


Anuncios Google