Breve 6 Funciones

Anuncio
Breve 6 Funciones
Fundamentos de Informática
Funciones
•
Permiten el desarrollo modular de un programa
Llama a la función
Le pasa la información que
quiere que la función procese
Programa principal
Función
(u otra función)
La función devuelve el resultado al
punto exacto donde la función fue
llamada
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Breve 6: Funciones
2
Funciones
#include <stdio.h>
float Factorial (int num);
Prototipo
int main(void)
{
float facn;
float facm;
float resultado;
int m;
/* dato entrada */
int n;
/* dato entrada */
Llamada
Llamada
printf (“Introduce m: “);
scanf(“%d”,&m);
printf (“Introduce n: “);
scanf(“%d”,&n);
facm = Factorial(m);
facn = Factorial(n);
resultado = facm/facn;
printf(“\n Las combinaciones de m“
“sobre n vale: %f”,resultado);
return 0;
Departamento de Sistemas Informáticos
}
Escuela Técnica Superior de Ingeniería ICAI
Función
float Factorial (int num)
{
float resul;
/* resultado */
int cont;
/* índice bucle */
resul=1;
for (cont=1; cont<=num; cont++){
resul *= cont;
}
return resul;
}
Breve 6: Funciones
3
Función
Datos de entrada
a la función
...
tipo_devuelto NombreFuncion (tipo_1 argumento_1, ..., tipo_n argumento_n)
{
instrucción_1;
expresion_devuelta
instrucción_2;
debe ser del tipo:
...
tipo_devuelto
instrucción_n;
return expresion_devuelta;
Variables locales:
}
Visibles SOLO dentro
de la función
•Si no hay expresion_devuelta:
• tipo_devuelto: void
• Última instrucción: return;
float Factorial (int num)
{
float resul;
int cont;
resul=1;
for (cont=1; cont<=num; cont++){
resul *= cont;
}
return resul;
void MuestraNum (float num1)
•Si no tiene argumentos:
tipo_devuelto NombreFuncion (void)
Ejemplo: int
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
}
getchar(void)
Breve 6: Funciones
4
Prototipo
•
Prototipo o declaración de una función: Se declara antes del programa principal
Es la primera línea de la definición, con un ; al final
tipo_devuelto NombreFuncion (tipo_1 argum_1, ...,tipo_n argum_n);
float Factorial (int num);
int getchar (void);
void MuestraNum (float num1, float num2);
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Breve 6: Funciones
5
Llamada a una función
La llamada a una función se encuentra en el programa principal, o en otra función
•
#include <stdio.h>
float Factorial (int num);
int main(void)
{
float facn;
float facm;
float resultado;
int m; /* entrada */
int n; /* entrada */
/* .. Se lee m y n ...*/
Se copia contenido
de m en num
float Factorial (int num)
{
float resul;
/* resultado */
int cont;
/* índice bucle */
resultado=1;
for (cont=1; cont<=num; cont++){
resultado *= cont;
}
return resul;
facm = Factorial(m);
facn = Factorial(n);
resultado = facm/facn;
printf(“\n Combinaciones: %f”,
resultado);
return 0;
}
}
El contenido de resul se
asigna a facm
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
¡¡Deben Breve 6: Funciones
coincidir los tipos!!
6
Recursividad
•
•
En una función recursiva una sentencia en el cuerpo de la función invoca a la propia función
Las llamadas recursivas se utilizan en problemas iterativos (repetitivos) en los que cada iteración se determina en función de un resultado anterior.
#include<stdio.h>
void Inverso(void);
int main(void)
{
printf(“Introduce una linea de texto:\n”);
Inverso();
return 0;
}
void Inverso(void)
{
char c;
if ( (c = getchar() ) != ‘\n’) {
Inverso();
}
putchar(c);
Llamada a la
}
propia función
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Ejecución:
Introduce una linea de texto
abcdef
fedcba
Breve 6: Funciones
7
Descargar