Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Funciones.
Una funcin es una entidad formada por un grupo de sentencias destinadas a hacer un trabajo concreto.
Los objetivos bsicos de la utilizacin de funciones son tres:
main()
{
..........;
.............;
********;
********;
*********;
---------;
------------;
********;
********;
*******;
----------;
-----------;
}
main()
{
Cdigo repetidoo
............;
................;
funcin();
----------;
--------------;
funcin();
---------;
-------------;
}
funcin()
{
*******;
*******;
*****;
}
3. Independencia.
Utilizar funciones independientes del programa principal y entre si, permite su reutilizacin en
diferentes programas. En el ejemplo de calcular la potencia de un nmero, se podra coger la
funcin que hace esta operacin, y incluirla en cualquier programa que la necesite sin tenerla que
escribir cada vez.
// Prototipo de la funcin
printf(Ejemplo de funcin );
printf(Se llama a la funcin );
sonido();
// Llama la funcin
printf(Se vuelve a llamar a la funcin);
sonido();
// Llama la funcin
printf(Final de programa; pulse una tecla);
getch();
}
// Funcin sonido. Emite un beep y muestra un mensaje.
void sonido(void)
// Declaracin de la funcin
{
printf(\x7);
printf(Est dentro de la funcin sonido, pulse una tecla para
volver a funcin main());
getch();
}
Definicin de funcin.
Se llama definicin de funcin a la funcin misma. La funcin siempre empieza con una lnea
que incluye, entre otros elementos, el nombre de la funcin, en el ejemplo anterior,
void sonido (void)
Esta lnea se llama declarador de la funcin. El void inicial significa que la funcin no devuelve
nada, y el void que va entre el parntesis, que la funcin no recibe ningn parmetro; es una
funcin sin argumentos. Se vern las funciones que devuelven valores y los argumentos, un poco
ms adelante.
Fjese que el declarador de funcin no acaba en punto y coma, no es una instruccin, sirve para
indicar al compilador que en este punto empieza la definicin de la funcin. A continuacin del
declarador de la funcin se encuentra el cuerpo de la funcin, que son todas las lneas de cdigo
que incluye.
Prototipo de la funcin.
Es la lnea que hay antes de la funcin main()
void sonido(void);
El prototipo (tambin llamado declaracin de funcin), sirve para declarar la funcin, de la
misma manera que se han de declarar les variables antes de poder ser utilizadas. Esta lnea le
indica al compilador el nombre de la funcin, el tipo de dato que devuelve (ninguno en el
ejemplo), y el tipo de argumentos que se le pasan (ninguno en el ejemplo), de esta manera cuando
el compilador llegue a las lneas que llaman a la funcin, comprobar que esta llamada sea
sintcticamente correcta (que el tipo de funcin y el tipo y nmero de argumentos coincidan con
la declaracin del prototipo).
El prototipo est escrito antes de la funcin main(), esto provoca que esta funcin pueda ser
llamada desde todas les funciones del programa.
Observe que la lnea del prototipo acaba con punto y coma.
Llamar a la funcin.
Para llamar a la funcin sonido se utiliza la misma sintaxis que cuando es llama cualquier
funcin de C, como por ejemplo printf(), getche() o clrscr(), es decir, el nombre de la funcin
seguido de parntesis. Estos son necesarios para que el compilador sepa que nos referimos a una
funcin. La llamada a una funcin es una instruccin o sentencia, por tanto ha de acabar en punto
y coma.
int veces;
clrscr();
sonido(2);
printf(Entre el nmero de veces que ha de pitar : );
scanf(%d,&veces);
4
sonido(veces);
}
void sonido(int veces)
{
int i;
Prototipo de la funcin.
void sonido (int );
Cuando se especifica el prototipo, se indica que la funcin tiene un parmetro del tipo int.
Cuando el compilador encuentre las diferentes llamadas a la funcin, comprobar s estas
incluyen como parmetro un valor o una variable tipo int; si no es as, se mostrar un error.
Too few parameters in call to nombre de funcin llamada in function nombre de la
funcin que llama.
Significa que se ha llamado a la funcin con menos parmetros de los que se han
especificado en el prototipo.
Extra parameter in call to nombre de la funcin llamada in function nombre de la
funcin que llama.
Significa que se ha llamado a la funcin con ms parmetros de los especificados en el
prototipo.
En lugar de void sonido(int) es recomendable poner tambin el nombre de la variable receptora
de la funcin. As el prototipo quedara void sonido(int veces); sencillamente para dejar el
programa ms claro.
Definicin de funcin.
void sonido(int veces)
Observe en la definicin de funcin el parmetro int veces. En este apartado se declara la variable
veces de tipo int, esta variable recibir los valores pasados en las diferentes llamadas que se hace
a la funcin.
sonido(2);
sonido(veces);
Variables locales.
La variable i definida dentro de la funcin sonido slo se conoce dentro de esta funcin, no se
puede utilizar en la funcin main().
La variable veces definida en main() slo es conocida en main(). La variable veces definida como
argumento de la funcin sonido, slo es conocida dentro de la funcin sonido. Evidentemente, la
variable veces declarada en main() no es la misma variable que veces declarada como argumento
de funcin sonido.
Una variable slo se conoce en la funcin donde se declara, y slo puede utilizarse en esta
funcin. Vea el siguiente ejemplo donde se utiliza una funcin para sumar dos nmeros:
#Include <stdio.h>
#include <conio.h>
void suma (int a, int b);
main()
{
int a, b;
clrscr();
suma(3, 5);
printf(Entre el primer valor a sumar : );
scanf(%d,&a);
printf(Entre el segundo valor a sumar : );
scanf(%d,&b);
suma(a,b);
}
void suma (int a, int b)
{
int total;
total = a + b;
printf(El valor de la suma es : %d \n , total);
}
Esquema de memoria.
a
b
a
b
total
En la funcin main() se han declarado dos variables a y b, y en la funcin suma se han declarado
tres a, b y total; a y b son adems variables que reciben valores externos. Insistimos en que a y b
declaradas en main() no son las mismas variables que a y b declaradas en suma, vea el esquema
de memoria.
Copie el programa siguiente y ejectelo para acabar de comprender los conceptos global,
local y mbito de una variable.
#include <stdio.h>
#include <conio.h>
void prueba(int a, int b);
int global;
main()
{
int a, b;
// Variables locales a main, solo conocida en funcin
//main.
a = 10;
b = 20;
global = 20;
prueba(a, b);
printf(%d, a);
// Escribe 10
printf(%d, b);
// Escribe 20
printf(%d, global); // Escribe 31, el valor que se le ha dado en funcin prueba.
}
void prueba(int Pepe, int Paco)
{
printf(%d, Pepe);
printf(%d, Paco);
Pepe = 5;
Paco = 5;
main
main
7
global = 31;
int a, b, total;
clrscr();
printf(Entre el primer valor : );
scanf(%d, &a);
printf(Entre el segundo valor : );
scanf(%d, &b);
total = suma (a,b);
printf(%d,total);
}
int suma(int a, int b)
{
int total;
total = a + b;
return(total);
clrscr();
printf(Entre el primer valor : );
scanf(%d, &a);
printf(Entre el segundo valor : );
scanf(%d, &b);
nummayor = mayor(a, b);
printf(El valor mayor %d, nummayor);
}
int mayor(int a, int b)
{
if (a > b)
return (a);
return(b);
}
Programa que calcula la suma de los factoriales de dos nmeros entrados desde teclado.
#include <stdio.h>
#include <conio.h>
long int factorial(int numero);
main()
{