Introducción a la Programación 10 punteros y Funciones Roberto Marabini — Introduccin a la programacin — ETS – p.1/9 Funciones-I swap1.c Comencemos con un ejemplo: una funcion que intercambie los valores de dos variables. #include <stdio.h> void swap(int i, int j){ int t; t=i; i=j; j=t; } void main(){ int a,b; a=5; b=10; printf("%d %d\n", a, b); swap(a,b); printf("%d %d\n", a, b); } Roberto Marabini — Introduccin a la programacin — ETS – p.2/9 Funciones-II swap2.c Comencemos con un ejemplo: una funcion que intercambie los valores de dos variables. #include <stdio.h> void swap(int *i, int *j){ int t; t = *i; *i = *j; *j = t; } void main(){ int a,b; int *pa, *pb; a=5; b=10; pa=&a;pb=&b; printf("%d %d\n",a,b); swap(pa,pb); printf("%d %d\n",a,b); } Roberto Marabini — Introduccin a la programacin — ETS – p.3/9 Ejercicio incrementar.c Escribir un programa que use la función incrementar para incrementar el valor de x en uno (por ejemplo, pasar de 5 a 6) void incrementar(int *a); int main(void) { int x=5; ... } Roberto Marabini — Introduccin a la programacin — ETS – p.4/9 Ejercicio incrementar2.c Escribir un programa que use las funciones incrementar e incrementar2 para incrementar el valor de x en uno (por ejemplo, pasar de 5 a 6). incrementar no debe hacer nada excepto llamar a incrementar2 void incrementar(int *a); void incrementar2(int *a); int main(void) { int x=5; ... } Roberto Marabini — Introduccin a la programacin — ETS – p.5/9 Ejercicio structswap1-4.c Modificar el programa swap de forma que x e y pertenezcan a una estructura. (escribir primero la version que no funciona). Recuerda que una estructura no es más que una variable. NOTA: teneis que pasar la estructura en bloque no cada componente por separado. struct VECTOR{ int x; int y; }; void swap(struct VECTOR miestructura); int main(void){ struct VECTOR miestructura; miestructura.x=5; miestructura.y=10; .... } Roberto Marabini — Introduccin a la programacin — ETS – p.6/9 Ejercicio arrayswap1.c Modificar el programa swap de forma que x e y sean dos elementos de un array. NOTA: teneis que pasar el array en bloque no cada componente por separado. void swap(); int main(void){ int myarray[2]; myarray[0]=5; myarray[1]=10; .... } Roberto Marabini — Introduccin a la programacin — ETS – p.7/9 Ejercicio pointfile.c Escribir un programa que abra un fichero, escriba la palabra hola y cierre el fichero. Cada paso debe hacerse dentro de una función. #include <stdio.h> int main(void){ FILE * fhFichero; fhFichero=fopen("fichero.txt","wt"); fprintf(fhFichero,"Hola\n"); fclose(fhFichero); } -----------------void mi_fopen(...); void mi_fprintf(...); void mi_fclose(...); int main(void){ FILE * fhFichero; mi_fopen(...); mi_fprintf(...); mi_fclose(...); } Roberto Marabini — Introduccin a la programacin — ETS – p.8/9 ? pointfunc/2.c // the four arithmetic operations // one of these functions is selected at runtime with a swicth or a fu float Plus (float a, float b) { return a+b; } float Minus (float a, float b) { return a-b; } float Multiply (float a, float b) { return a*b; } float Divide (float a, float b) { return a/b; } // solution with a switch-statement - <opCode> specifies which operati float Switch(float a, float b, char opCode){ float result; // execute operation switch(opCode){ case ’+’ : result = Plus (a, b); break; case ’-’ : result = Minus (a, b); break; case ’*’ : result = Multiply (a, b); break; case ’/’ : result = Divide (a, b); break; } return result; } void main(void){ Switch(2, 5, ’+’/* ’+’ specifies function ’Plus’ to be executed */); } Roberto Marabini — Introduccin a la programacin — ETS – p.9/9