06 Funciones
06 Funciones
06 Funciones
2 Estructura de un programa
5 Funciones en ficheros
¿Qué es una función?
Una función es un bloque de código que realiza una tarea determinada a partir de unos
datos.
Ventajas
Permiten programación estructurada y abstracta, sin necesidad de conocer el detalle
de la implementación de una tarea concreta.
Mejoran la legibilidad del código.
Facilitan el mantenimiento del programa.
Permiten reutilizar código de manera eficiente (DRY!).
Ejemplos
void printHello(int veces);
area = b * h / 2.0;
return area;
}
2 Estructura de un programa
5 Funciones en ficheros
Estructura de un programa
int main()
{
float r = 2.0;
printf("Una circunferencia de radio %f", r);
printf(" tiene un area de %f", PI * r * r);
return 0;
}
// Función main
int main() {
//Uso de la función en main
printHello(3);
return 0;
}
// Definición de la función
void printHello(int n)
{
int i;
for (i = 1; i <= n; i++)
printf("Hello World!\n");
}
Declaración y definición de funciones
#include <stdio.h>
// Prototipo de la función (termina en ;)
float areaTriangulo(float b, float h);
// Función main
int main(){
float at;
//Uso de la función en main
at = areaTriangulo(1, 2);
printf(" %f", at);
return 0;
}
// Definición de la función
float areaTriangulo(float b, float h)
{
float area;
area = b * h / 2.0;
return area;
}
1 Definición de función
2 Estructura de un programa
5 Funciones en ficheros
Variables globales
#include <stdio.h>
void foo(void);
int main(){
printf("main (1):\t gVar es %d.\n", gVar);
foo();
gVar *= 2;
printf("main (2):\t gVar es %d.\n", gVar);
return 0;
}
void foo(void){
gVar = gVar + 1;
printf("foo:\t gVar es %d.\n", gVar);
}
Variables locales
#include <stdio.h>
void foo(void);
int main()
{
int x = 1; // variable local en main
printf("main (1):\t x es %d.\n", x);
foo();
printf("main (2):\t x es %d.\n", x);
return 0;
}
void foo(void)
{
int x = 2; // variable local en foo
printf("foo:\t x es %d.\n", x);
}
1 Definición de función
2 Estructura de un programa
5 Funciones en ficheros
Ejemplo
#include <stdio.h>
#define PI 3.141592
int main(){
float radio, vol;
scanf(" %f", &radio);
vol = volEsfera(radio);
printf("El volumen es %f", vol);
return 0;
}
float volEsfera(float r){ //Usa eleva3
return 4.0/3.0 * PI * eleva3(r);
}
float eleva3(float x){
return x * x * x;
}
Funciones recursivas
#include <stdio.h>
int main(){
int x;
printf("Indica un número:\n");
scanf(" %d", &x);
printf("El factorial de %d es %d\n", x, fact(x));
return 0;
}
int fact(int n){
int res;
if (n > 1) // Incluye llamada a si misma
res = n * fact(n - 1);
else
res = 1;
return res;
}
1 Definición de función
2 Estructura de un programa
5 Funciones en ficheros
Motivación y uso
Motivación
Para poder reutilizar las funciones definidas es conveniente alojarlas en un fichero (o
colección de ficheros) que puedan ser incluidos en otros proyectos.
Uso
Debe existir un (o varios) fichero(s) .h (cabecera) y un fichero .c (código fuente,
implementación de las funciones).
Se debe usar #include "nombre_lib.h" al comienzo del programa.
Hay que compilar conjuntamente (en un proyecto).
Programa principal
#include <stdio.h>
// Directiva para incluir la librería local
#include "myLib.h"
int main()
{
float radio, vol;
scanf(" %f", &radio);
vol = volEsfera(radio);
printf("El volumen es %f", vol);
return 0;
}