¿QUE ES UNA FUNCIÓN?
- · DEFINICIÓN:
Una función es un
conjunto de líneas de código que realizan una tarea específica y puede retornar
un valor. Las funciones pueden tomar
parámetros que modifiquen su funcionamiento.
- · TIPOS
- No reciben ni retornan.
- Reciben y no retornan.
- No reciben y retornan.
- Reciben y retornan.
1.
NO RECIBEN NI RETORNAN
Las más sencillas. Para usarlas sólo tenemos que
saber cómo crearlas y cómo llamarlas. Una función se crea de esta forma
general:
tipo nombre(){}
El ‘tipo’ se refiere al tipo de dato (int, float, void, char) y en las funciones que no retornan siempre es void.
tipo nombre(){}
El ‘tipo’ se refiere al tipo de dato (int, float, void, char) y en las funciones que no retornan siempre es void.
El ‘nombre’ es el nombre de la función: cualquiera
que empiece con una letra, que sea significativo y que no sea una palabra
reservada.
Para llamarlas sólo hay que escribir el nombre de
la función seguido de sus paréntesis y un punto y coma (;).
nombre();
nombre();
Así nuestro programa sería:
Como ven, todo lo que habríamos puesto en nuestro
main mejor los pusimos en una función y desde el main la llamamos. Una función
siempre, siempre, siempre tiene que ir antes del main.
Una función de este tipo que hemos usado muchas
veces es getch();
2.
RECIBEN Y NO RETORNAN
¿Cómo haríamos para pedir los dos números en el
main y que la función haga la suma? Para eso tenemos que hacer una función
capaz de recibir datos, entonces la sintaxis cambia un poco:
tipo nombre(tipo_var1 nombre_var1, tipo_var2 nombre_var2){}
‘tipo’ y ‘nombre’ se refieren a lo mismo y como no retorna el tipo siempre es void.
tipo nombre(tipo_var1 nombre_var1, tipo_var2 nombre_var2){}
‘tipo’ y ‘nombre’ se refieren a lo mismo y como no retorna el tipo siempre es void.
Dentro del paréntesis tenemos otros aspectos:
‘tipo_var1’ se refiere al tipo de la variable que
nuestra función va a recibir.
‘nombre_var1’ se refiere al nombre de esa variable.
Si queremos recibir una variable hasta ahí es
suficiente, si queremos otra variable ponemos una coma (,) y declaramos la
siguiente variable.
Para llamar la función hay que poner la variables
que vamos a enviar dentro del paréntesis en el mismo orden en que las
declaramos en la función:
nombre(var1, var2);
nombre(var1, var2);
Nuestro programa quedaría así:
Pedimos los dos números en el main, los enviamos a
la función, ésta los suma y los muestra.
Una función de este tipo que hemos usado muchas
veces es el odiado por muchos, amados por otros, gotoxy(x,y);
3.
RETORNAN Y NO RECIBEN
¿Y si ahora queremos lo contrario? Pedir los
números en la función, pero mostrar el resultado en el main. Para eso
necesitamos una función que retorne.
Recibir es
enviar datos del main a la función. Retornar es enviar datos
de la función al main. Para retornar datos hay que hacer dos cosas: no
usar void como tipo y usar return.
De forma general:
tipo nombre() { return var; }
El ‘tipo’ tiene que ser del tipo de variable que queremos retornar, si nuestra variable retorna una variable int, pues el tipo de la función es int.
tipo nombre() { return var; }
El ‘tipo’ tiene que ser del tipo de variable que queremos retornar, si nuestra variable retorna una variable int, pues el tipo de la función es int.
Para indicar qué variable estamos retornando
usaremos la palabra return seguido de la variable. Usualmente
esto va al final de la función.
Para llamar a la función hay que preparar un
colchón en donde caiga la variable que está retornando.
var = nombre();
La variable que está retornando nuestra función se va a almacenar en la variable ‘var’. Este es un buen momento para recordarles que las variables declaradas entre dos llaves {} únicamente existen entre esas dos llaves. O sea que la variable ‘var’ de la función no es la misma que la variable ‘var’ de la función; sin embargo la var del main está adquiriendo el valor de la var del main. Un poco confuso lo se, no se preocupen.
var = nombre();
La variable que está retornando nuestra función se va a almacenar en la variable ‘var’. Este es un buen momento para recordarles que las variables declaradas entre dos llaves {} únicamente existen entre esas dos llaves. O sea que la variable ‘var’ de la función no es la misma que la variable ‘var’ de la función; sin embargo la var del main está adquiriendo el valor de la var del main. Un poco confuso lo se, no se preocupen.
Nuestro programa quedaría así:
¿A alguien se le ocurre una función conocida de
este tipo?
4.
RECIBEN Y RETORNAN
Ahora queremos que nuestra función únicamente sume,
el main se va a encargar de pedir los números y sumar los resultados. Para eso
necesitamos que nuestra función reciba las variables y además retorne el
resultado. ¿Es acaso eso posible? Claro que sí.
Es sólo cuestión de combinar las funciones que
reciben y no retornan con las que retornan y no reciben.
Nuestro programa quedaría así:
Las funciones de la librería math.h son en su
mayoría de este tipo. sqrt(); pow(); sin();
En principio puede parecer que las funciones sirven
únicamente para organizar el código, lo cual es cierto, pero no sólo eso. ¿Se
imaginan si tuviéramos que escribir todo el código detrás de un
simple gotoxy();?n:
Comentarios
Publicar un comentario