Punteros y funciones

Anuncio
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
Descargar