Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1. Introduccin
Vamos a dar un paso ms en la complejidad de nuestros programas. Vamos a empezar a usar
funciones creadas por nosotros. Las funciones son de una gran utilidad en los programas. Nos
ayudan a que sean ms legibles y ms cortos. Con ellos estructuramos mejor los programas.
Una funcin sirve para realizar tareas concretas y simplificar el programa. Nos sirve para evitar
tener que escribir el mismo cdigo varias veces. Ya hemos visto en el curso algunas funciones
como printf, gotoxy, scanf y clrscr. Algunas de stas estn definidas en una biblioteca (la biblioteca
estndar de C). No tenemos que preocuparnos de ella porque el compilador se encarga de ella
automticamente.
Sin embargo nosotros tambin podemos definir nuestras propias funciones. Pocas veces se ve un
programa un poco complejo que no use funciones. Una de ellas, que usamos siempre, es la
funcin main.
cuerpo de la funcin;
return 0;
}
Poco a poco, empecemos por el nombre_de_la_funcin. Para el nombre no se pueden usar mas
que letras, nmeros y el smbolo '_'. No se pueden usar ni acentos ni espacios. Adems el nombre
de la funcin debe empezar por una letra, no puede empezar con un nmero. El nombre de la
funcin se usa para llamarla dentro del programa.
El tipo_de_variable: Cuando una funcin se ejecuta y termina debe devolver un valor. Este valor
puede ser cualquiera de los tipos de variables que hemos visto en el captulo de Tipos de datos
(int, char, float, double) o un tipo de dato definido por nosotros (esto lo veremos ms tarde). El valor
que devuelve la funcin suele ser el resultado de las operaciones que se realizan en la funcin, o si
han tenido xito o no.
Tambin podemos usar el tipo void. Este nos permite que podamos devolver cualquier tipo de
variable o ninguna.
Definicin de variables: Dentro de la funcin podemos definir variables que slo tendrn validez
dentro de la propia funcin. Si declaramos una variable en una funcin no podemos usarla en otra.
_______________________________________________________________
1
Unidad II: Funciones
Lenguajes de programacin
Return: Antes hemos indicado que la funcin devuelve un valor. La sentencia return se usa para
esto. El dato que se pone despues de return es el dato que se devuelve. Puede ser una constante
o una variable. Debe ser del mismo tipo que tipo_de_variable.
Argumentos: Estos son variables que se pasan como datos a una funcin. Deben ir separados por
una coma. Cada variable debe ir con su tipo de variable.
Las funciones deben definirse antes de ser llamadas. En los ejemplos a continuacin se llama a la
funcin desde main, as que tenemos que definirlas antes que main. Esto lo veremos en el
apartado siguiente.
Este programa llama a la funcin prepara pantalla que borra la pantalla y muestra el mensaje "la
pantalla est limpia". Por supuesto es de nula utilidad pero nos sirve para empezar.
#include <stdio.h>
#include <conio.h>
void prepara_pantalla(void);
main()
{
prepara_pantalla();/* Llamamos a la funcin */
getch();
}
void prepara_pantalla(void) /* No se debe poner punto y coma aqu */
{
clrscr();
printf( "La pantalla esta limpia\n" );
_______________________________________________________________
2
Unidad II: Funciones
Lenguajes de programacin
En este ejemplo la funcin compara toma dos nmeros, los compara y nos dice cual es mayor.
#include <stdio.h>
#include <conio.h>
main()
{
int num1, num2;
_______________________________________________________________
3
Unidad II: Funciones
Lenguajes de programacin
Este ejemplo es como el anterior pero devuelve como resultado el mayor de los dos nmeros.
#include <stdio.h>
#include <conio.h>
int compara( int a, int b);/*Funcin prototipo*/
main()
{
int num1, num2;
int resultado;
getch();
}
/*Definicin de la funcin*/
if ( a > b )
mayor = a;
else mayor = b;
_______________________________________________________________
4
Unidad II: Funciones
Lenguajes de programacin
CIRCUITO1_CODIGO1.C
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define CIRCUITO_VOLTAJE 18
#define RESISTENCIA 6
void main(void)
{
double corriente,voltaje,potencia,potencia_total,resistencia;
int numero_resistencia,contador;
clrscr();
printf("Ingresar el voltaje\n");
scanf("%lf",&voltaje);
if(voltaje>=CIRCUITO_VOLTAJE)
{
printf("Cantidad de resistencia");
scanf("%d",&numero_resistencia);
contador=1;
while(numero_resistencia>=contador)
{
printf("Ingresar el valor - Resistencia:%d\n",contador);
scanf("%lf",&resistencia);
corriente=CIRCUITO_VOLTAJE/resistencia;
printf("\t--------------------------------------------------");
printf("\n\tFormula: Intensidad=Voltajes/nResistencia");
printf("\n\tLa Intensidad - Resistencia%d
es:%lfAmperios",contador,corriente);
potencia=pow(corriente,2);
potencia_total=potencia*resistencia;
printf("\n\t--------------------------------------------------");
printf("\n\tFormula: Potencia=Intensidad ^2*Resistencia");
printf("\n\tLa potencia - corriente%d
es:%lfWatts\n",contador,potencia_total);
contador++;
} /*fin wheli*/
} /*fin if*/
else
{
corriente= CIRCUITO_VOLTAJE/RESISTENCIA;
printf("\tFormula: Intensidad=Voltajes/Resistencia");
printf("\n\tLa Intensidad - Resistencia
es:%lfAmperios",corriente);
} /*fin else*/
getch();
} /*fin mail*/
_______________________________________________________________
5
Unidad II: Funciones
Lenguajes de programacin
CIRCUITO2_CODIGO2.C
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define CIRCUITO_VOLTAJE 28.5
#define RESISTENCIA 6
void circuito (void);
void main(void)
{
int numero;
do
{
circuito();
printf("\nPara salir(0),Continuar (1)");
scanf("%d",&numero);
} while(numero!=0);
} /*fin mail*/
/*/////////FUNCION///////////*/
void circuito(void)
{
double corriente,voltaje,potencia,potencia_total,resistencia;
int numero_resistencia,contador,cont=0;
clrscr();
printf("Ingresar el voltaje\n");
scanf("%lf",&voltaje);
if(voltaje==CIRCUITO_VOLTAJE)
{
printf("Cantidad de resistencia");
scanf("%d",&numero_resistencia);
for(contador=1;numero_resistencia>=contador;contador++)
{
printf("Ingresar el valor - Resistencia:%d\n",cont+1);
scanf("%lf",&resistencia);
corriente=CIRCUITO_VOLTAJE/resistencia;
printf("\n\tLa Intensidad - Resistencia%d
es:%lfAmperios",cont+1,corriente);
potencia=pow(corriente,2);
potencia_total=potencia*resistencia;
printf("\n\tLa potencia - corriente%d
es:%lfWatts\n",cont+1,potencia_total);
cont++;
} /*for*/
} /*fin if*/
else
{
corriente= CIRCUITO_VOLTAJE/RESISTENCIA;
printf("\n\tLa Intensidad - Resistencia
es:%lfAmperios",corriente);
} /*fin else*/
getch();
}/*fin circuito*/
_______________________________________________________________
6
Unidad II: Funciones
Lenguajes de programacin
Las funciones deben definirse siempre antes de donde se usan. Lo habitual en un programa es:
Seccin Descripcin
Includes Aqu se indican qu ficheros externos se usan
Definiciones Aqu se definen las constantes que se usan en el programa
Definicin de Aqu se definen las variables globales (las que se pueden usar en TODAS
variables las funciones)
Definicin de
Aqu es donde se definen las funciones
funciones
Funcin main Aqu se define la funcin main.
Esta es una forma muy habitual de estructurar un programa. Sin embargo esto no es algo rgido, no
tiene por qu hacerse as, pero es recomendable.
Se puede hacer de otra forma, tambin aconsejable. Consiste en definir despus de las variables
las cabeceras de las funciones, sin escribir su cdigo. Esto nos permite luego poner las funciones
en cualquier orden. Ejemplos:
#include <stdio.h>
#include <conio.h>
main()
{
int num1, num2, resultado;
getch();
}
_______________________________________________________________
7
Unidad II: Funciones
Lenguajes de programacin
return(mayor);
}
Cuando se define la cabecera de la funcin sin su cuerpo (o cdigo) debemos poner un ';' al final.
Cuando definamos el cuerpo ms tarde no debemos poner el ';', se hace como una funcin normal.
La definicin debe ser igual cuando definimos slo la cabecera y cuando definimos el cuerpo.
Mismo nombre, mismo nmero y tipo de parmetros y mismo tipo de valor devuelto.
Podemos crear una variable global y en una funcin una variable local con el mismo nombre.
Dentro de la funcin cuando llamamos a esa variable llamamos a la local, no a la global. Esto no da
errores pero puede crear confusin al programar y al analizar el cdigo.
#include <stdio.h>
#include <conio.h>
main()
{
int num1, num2;
int resultado,
getch();
}
Solucin:
_______________________________________________________________
8
Unidad II: Funciones
Lenguajes de programacin
#include <stdio.h>
int main()
{
int a, b;
a = 2; b = 3;
printf( "%d", resultado( a );
getch();
}
Solucin:
_______________________________________________________________
9
Unidad II: Funciones