Capítulo 9: Funciones
Bien, ya hemos visto muchas cosas, variables, operadores, sentencias de control de flujo, entrada por teclado, salida por pantalla… Ahora veamos una cosa que es muy, muy útil.
Habréis notado que muchas cosas del código que escribimos la tenemos que teclear una y otra vez, así que vamos a dar un tema que evitará en cierta medida este inconveniente, además, como veréis a lo largo del tiempo esto tiene muchas más utilidades. Se trata de las funciones. Por definición una función es un trozo de código que desempeña una tarea.
Aprenderemos a crear nuestras propias funciones con las tareas que más usemos para no tener que estar escribiéndolas una y otra vez y para que el programa sea más sencillo y legible (cosa muy importante). Veamos como se estructura una función:
(tipo de variable que devuelve) (nombre de la función) (parámetros de entrada){
cuerpo de la función;
}
Veamos un ejemplo porque así no se ve demasiado claro, posteriormente lo explicaremos:
int elevar(int base, int exponente){
int resultado = 1;
while(exponente > 0){
resultado = resultado * base;
exponente = exponente – 1;
}
return resultado;
}
Vemos que cuando usemos una función, ésta devolverá un entero, la función se llama elevar y recibe dos variables, base y exponente. En el cuerpo de la función se crea una variable que almacenará el resultado, se hace el cálculo de la potencia y se usa return (variable); para devolver lo que queramos que devuelva la función (en este caso debe ser un entero).
Habrá veces que no queremos que la función devuelve nada, esto también se llama procedimiento. Si no devuelve nada en la cabecera hay que poner void en vez de int o cualquier variable y no se usa return al final de la función. Quizás no necesitemos que la función reciba ninguna variable, entonces entre paréntesis en vez de poner ningún parámetro de entrada ponemos void.
Una función debe estar definida para poder usarse en main o dentro de otra función (esto también es posible). La definición de la función se coloca después del main (la definición es lo que hemos visto antes). Pero también es necesario declarar la función al comienzo del todo. Para declarar la función de antes deberíamos escribir:
int elevar(int base, int exponente); /*No olvidar aquí el ; */
El orden normal de escribir las cosas en un programa es:
– Inclusión de librerías.
– Definición de constantes
– Declaración de funciones (cabecera con 😉
– Main
– Implementación de funciones (cabecera con llaves y cuerpo de la función)
Para llamar a una función dentro de main o en cualquier sitio hacemos:
elevar(a, b):
a y b son variables que pertenecen a main o a la función donde las usemos. Las variables sólo existen en la función donde se declaran. Por ejemplo si creamos una variable c y llamamos a una función, dentro de esa función c no existirá y si la usamos nos dará un error. Así mismo podemos repetir nombres en una función main y en la implementación de una función que usemos en main. Por ejemplo.
#include <stdio.h>
#include <stdlib.h>
int elevar(int base, int exponente);
int main(void){
int base = 4, exponente = 3, resultado;
resultado = elevar(base, exponente);
printf(“%i”, resultado);
system(“pause”);
return 0;
}
int elevar(int base, int exponente){
int resultado = 1;
while(exponente > 0){
resultado = resultado * base;
exponente = exponente – 1;
}
return resultado;
}
Esto es un ejemplo completo de un programa que usa una función. Me gustaría que metieráis en funciones las operaciones de la calculadora que programasteis en la entrega anterior. Por ejemplo, la suma la hace una función, la multiplicación otra, podríais añadir la opción de elevar. Las cabeceras podrían ser algo asi:
int suma(int a, int b);
Saludos.