Funciones

Anuncio
Introducción a la
Programación
7. Funciones.
Roberto Marabini — Introduccin a la programacin — ETS – p.1/15
Introducción
Las funciones se definen como bloques de
código independientes con nombre he
identidad propia. En principio se pueden
compilar por separado.
Otra forma de ver las funciones es como
entidades aisladas de cálculo (algo parecido
a las ecuaciones matemáticas) a las cuales
se les suministra unos datos de entrada y
proporcionan una cierta salida
Pedazo de código entre llaves precedido por
un nombre
Roberto Marabini — Introduccin a la programacin — ETS – p.2/15
Ejemplo
#include <stdio.h>
#define MAX 10
int a[MAX];
int rand_seed=10;
/* returns random number between 0 and 32767.*/
int rand(){//int rand () return {}
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}
int main(){
int i,t,x,y;
/* fill array */
for (i=0; i < MAX; i++){
a[i]=rand();
printf("%d\n",a[i]);
}
/* more stuff will go here in a minute */
return 0;
}
Roberto Marabini — Introduccin a la programacin — ETS – p.3/15
Definición
Una función sencilla: no acepta parámetros y devuelve un
int:
int rand()
/* from K&R
- produces a random number between 0 and 32767.*/
{
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}
La línea int rand() define la función rand al resto del
programa y especifica que rand no acepta parámetros y
devuelve un entero.
Roberto Marabini — Introduccin a la programacin — ETS – p.4/15
Variables locales
int rand()
/* from K&R
- produces a random number between 0 and 32767.*/
{
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}
Esta función no tiene variables locales, si fueran necesario
habría que declararlas despues de la llave { y su existencia
desaparecería tan pronto como se alcance el } correspondiente.
Roberto Marabini — Introduccin a la programacin — ETS – p.5/15
()
int rand()
/* from K&R
- produces a random number between 0 and 32767.*/
{
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}
No hay “;” despues de () en la primera linea. Si
accidentalmente pones unos el compilador te
obsequiará con una cascada de errores sin sentido
() es obligatorio aunque no se pasen parámetros. Si
pones int rand en lugar de int rand() el
compilador pensará que estas declarando un entero.
Roberto Marabini — Introduccin a la programacin — ETS – p.6/15
Return
int rand()
/* from K&R
- produces a random number between 0 and 32767.*/
{
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}
El comando return especifica el valor que la función devolverá y termina la función (como break con while). Una
función puede tener varios returns y por lo tanto acabar
potencialmente en diversos puntos. Si te olvidas de colocar return se devolverá un valor aleatorio.
Roberto Marabini — Introduccin a la programacin — ETS – p.7/15
Llamada
Hay diversas formas de llamar a la función int
rand(). Por ejemplo:
x=rand(); Se asigna a la variable x el
valor devuelto por la función.
if (rand() > 100)
rand();
Roberto Marabini — Introduccin a la programacin — ETS – p.8/15
Funciones sin return
Las funciones pueden declararse usando void
void print_header()
{
printf("Programa Numebero 1\n");
printf("escrito por Pepe celebrin\n");
printf("Version 1.0, acabada el 26/12/91\n");
}
Esta función no devuelve ningún valor. Puedes llamarla
usando:
print_header();
Recuerda que hay que utilizar (). Si no lo haces el programa compilará (en muchos compiladores) pero no funcionará correctamente.
Roberto Marabini — Introduccin a la programacin — ETS – p.9/15
Pasar Parametros
En C las funciones pueden aceptar parámetros de
cualquier tipo:
int factorial(int i)
{
int j,k;
j=1;
for (k=2; k<=i; k++)
j=j*k;
return j;
}
devuelve el factorial de i que se pasa como un entero.
Roberto Marabini — Introduccin a la programacin — ETS – p.10/15
Pasar Parametros
Si se desea pasar varios parámetros hay que separarlos
entre comas:
int add (int i, int j)
{
return i+j;
}
Roberto Marabini — Introduccin a la programacin — ETS – p.11/15
Codigo pre ANSI-C
Estilo de definición viejo:
int add(i,j)
int i;
int j;
{
return i+j;
}
versus nuevo
int add(int i,int j)
{
return i+j;
}
IMPORTANTE: No mezclarlos nunca.
Roberto Marabini — Introduccin a la programacin — ETS – p.12/15
Prototipos
Es muy deseable usar prototipos para todas las
funciones utilizadas en el programa. Un prototipo
declara el nombre de la función, y el tipo de variables que requiere y devuelve. Veremos su utilidad y uso con un ejemplo
funtion.c
function2.c
function3.c
function4.c
function5.c
Roberto Marabini — Introduccin a la programacin — ETS – p.13/15
Ejercicio
Escribir una función que calcule el area de un
circulo de radio R
Roberto Marabini — Introduccin a la programacin — ETS – p.14/15
Ejercicio
Escribir una función que calcule el area de un
circulo de radio R
float areaCirculo(float R);
float areaCirculo(float R)
{
return R*R*3.1416;
}
int main()
{
float R=1.0;
printf("El area de un circulo de radio %f es %f",
R,areaCirculo(R));
}
Roberto Marabini — Introduccin a la programacin — ETS – p.15/15
Ejercicio
Indica si es correcto el código maximo.c
Roberto Marabini — Introduccin a la programacin — ETS – p.16/15
por valor y por referencia
valor.c
referencia.c
Roberto Marabini — Introduccin a la programacin — ETS – p.17/15
Descargar