Funciones en la Programación #9
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.
Números anteriores de “Programación de videojuegos”.
Todo sobre















Autor:
(David Saltares) , 15/10/2008 



la funcion para el producto es multiplicar?? o producto? y la division?
Las tienes que crear tu, les puedes poner el nombre que quieras, pero que esté relacionado con lo que hace para que sea más claro.
Ahora que me doy cuenta, mi calculadora no esta bien echa. Podrias mandarme un mail de la forma en la que se escribe en el compilador a terryarchi@hotmail.com ? Saludos
Perdon por postear de nuevo, pero si puedes, mandamelo al mail lucianorigourd@hotmail.com . No al otro mail.
Disculpa, lo que pasa es que en la parte que se pone " exponente = exponente – 1" me marca stray'\152' in program, ¿a que se debe?
Alfareon: no se a qué se puede deber, tendría que mirar el resto del programa. Según me has escrito faltaría ";". TerryArchi: mandame a mi correo (aparece en uno de estos números) el programa que hayas hecho y te digo los fallos. Es mejor así, si lo copias del tirón no aprendes. Confía en lo que te digo, lo se por experiencia. Saludos.
Dejalo, ya entendi mi error. Era sobre lo de elevar. Pero ahora que vemos lo de funciones, en la calculadora, por ejemplo en el menu de sumar, tenemos que hacer que se sumen 2 numeros, o primero 2 numeros y despues que se sume cada numero que pongamos? Saludos.
Ahora quiero mandarte un mail con el programa de la calculadora con gunciones para que veas si esta bien pero no encuentro tu mail. Podrías volver a escribirlo? Saludos.
TerryArchi: sólo sumar dos números, es algo sencillo, no vamos a meternos con más cosas por ahora. Mi correo es david.saltares@gmail.com. Saludos.