Está en la página 1de 6

Los tipos de funciones en c++ son 4, aunque en realidad son las combinaciones de las 2 cosas que una funcin

puede hacer. Si andan perdidos en cuanto a funciones les recomiendo leer mi post anterior:Funciones en C++. Una funcin, como les deca, puede hacer (o no) dos cosas: 1 Recibir datos y 2 Retornar datos. De esto surgen los cuatro tipos de funciones: 1. No reciben ni retornan 2. Reciben y no retornan 3. No reciben y retornan 4. Reciben y retornan Vamos a hacer un programa que sume dos nmeros, usando los cuatro tipos de funciones:

No reciben ni retornan
Las ms sencillas. Para usarlas slo tenemos que saber cmo crearlas y cmo llamarlas. Una funcin 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. El nombre es el nombre de la funcin: cualquiera que empiece con una letra, que sea significativo y que no sea una palabra reservada. Para llamarlas slo hay que escribir el nombre de la funcin seguido de sus parntesis y un punto y coma (;).
nombre();

As nuestro programa sera:


#include<iostream> using namespace std; void sumar() { int num1, num2, r; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; r = num1 + num2; cout << "La suma es " << r; } int main() { sumar(); }

Como ven, todo lo que habramos puesto en nuestro main mejor los pusimos en una funcin y desde el main la llamamos. Una funcin siempre, siempre, siempre tiene que ir antes del main. Una funcin de este tipo que hemos usado muchas veces es getch();

Reciben y No Retornan
Cmo haramos para pedir los dos nmeros en el main y que la funcin haga la suma? Para eso tenemos que hacer una funcin 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. Dentro del parntesis tenemos otros aspectos: tipo_var1 se refiere al tipo de la variable que nuestra funcin 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 funcin hay que poner la variables que vamos a enviar dentro del parntesis en el mismo orden en que las declaramos en la funcin:
nombre(var1, var2);

Nuestro programa quedara as:


#include<iostream> using namespace std; void sumar(int num1, int num2) { int r; r = num1 + num2; cout << "La suma es " << r; } int main() { int num1, num2; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; sumar(num1, num2); }

Pedimos los dos nmeros en el main, los enviamos a la funcin, sta los suma y los muestra. Una funcin de este tipo que hemos usado muchas veces es el odiado por muchos, amados por otros,gotoxy(x,y);

Retornan y No Reciben
Y si ahora queremos lo contrario? Pedir los nmeros en la funcin, pero mostrar el resultado en el main. Para eso necesitamos una funcin que retorne. Recibir es enviar datos del main a la funcin. Retornar es enviar datos de la funcin al main. Para retornar datos hay que hacer dos cosas: no usar void como tipo y usar return.

De
tipo nombre() {

forma
return var;

general:
}

El tipo tiene que ser del tipo de variable que queremos retornar, si nuestra variable retorna una variable int, pues el tipo de la funcin es int. Para indicar qu variable estamos retornando usaremos la palabra return seguido de la variable. Usualmente esto va al final de la funcin. Para llamar a la funcin hay que preparar un colchn en donde caiga la variable que est retornando.
var = nombre();

La variable que est retornando nuestra funcin 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 funcin no es la misma que la variable var de la funcin; 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 quedara as:
#include<iostream> using namespace std; int sumar() { int num1, num2, r; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; r = num1 + num2; return r; } int main() { int r; r = sumar(); cout << "La suma es " << r; }

A alguien se le ocurre una funcin conocida de este tipo?

Reciben y Retornan
Ahora queremos que nuestra funcin nicamente sume, el main se va a encargar de pedir los nmeros y sumar los resultados. Para eso necesitamos que nuestra funcin reciba las variables y adems retorne el resultado. Wow! Es acaso eso posible? Claro que s. Es slo cuestin de combinar las funciones que reciben y no retornan con las que retornan y no reciben. Nuestro programa quedara as:
#include<iostream> using namespace std; int sumar(int num1, int num2)

{ int r; r = num1 + num2; return r; } int main() { int num1, num2, r; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; r = sumar(num1, num2); cout << "La suma es " << r; }

Las funciones de la librera math.h son en su mayora de este tipo. sqrt(); pow(); sin(); En principio puede parecer que las funciones sirven nicamente para organizar el cdigo, lo cual es cierto, pero no slo eso. Se imaginan si tuviramos que escribir todo el cdigo detrs de un simplegotoxy();? Ah verdad Bueno, no me iba a quedar tranquilo si no les mostraba la versin optimizada de la ltima funcin:
#include<iostream> using namespace std; int sumar(int num1, int num2) { return num1 + num2; } int main() { int num1, num2; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; cout << "La suma es " << sumar(num1, num2); }

:D
43 Comentarios

Funciones en C++
Guardado en: Curso el 6 de noviembre del 2010Etiquetas: funciones

Supongo que ya es hora de retomar el blog y ponerme a hablar de funciones en c++. Una funcin es un pedazo de cdigo fuera del main, con un nombre y que puede ser llamado desde otra parte de nuestro programa. Imagnense que estn entrenando a su perro a hacerse el muertito. Cada vez que ustedes dicen muertito, el perro se tira de espaldas en el suelo, cierra los ojos y saca la lengua. En programacin, elcontenido de la funcin sera tirarse de espaldas, cerrar los ojos y sacar la lengua; el nombre de la funcin sera muertito; y cada vez que nosotros decimos muertito estamos llamando a la funcin.

Nuestra funcin sera algo as:


void muertito() { Perro.Tirarse(posicion='espalda'); Perro[OjoDer].Cerrar(); Perro[OjoIzq].Cerrar(); Perro[Lengua].Sacar(); }

Jajaja, bueno, bueno. Ya en serio vamos a hacer un clsico Hola Mundo pero usando una funcin:
#include<iostream> using namespace std; void hola() { cout << "Hola Mundo!"; } int main() { hola(); }

Como ven, esta funcin es muy estpida. No nos beneficia en nada y nos hace escribir ms cdigo del necesario, pero nos sirve para ver cmo acta una funcin: al momento de llamar a la funcin, el compilador se brinca a la funcin, la ejecuta y cuando termina, vuelve al punto desde donde brinc. Si pudieran leerle la mente a un compilador, este dira: Linea 1. Incluir Linea 2. Usar Linea 3. Oh! una Linea 4. Llave. Linea 5. Imprimir Hola Linea 6. Llave. Linea 7. Linea 8. Linea 9. Esta funcin se me hace Linea 10. Llave. Salir librera iostream. OK el namespace estndar. OK funcin llamada hola, la recordar. Parte de la funcin. Ignorar Mundo!. Parte de la funcin. Ignorar Parte de la funcin. Ignorar Por fin el main! Llave. Entrar conocida oh s ya recuerdo. Ejecutar lineas 4, 5 y 6 la

Ahora veamos una funcin que s nos es til:


#include<iostream> using namespace std; void hola(char nombre[50]) { cout << "Hola " << nombre << "!"; } int main() { char nombre[50];

cout << "Cual es tu nombre?: "; cin.getline(nombre, 50, '\n'); hola(nombre); }

Primero pedimos un nombre, lo guardamos en una variable y se le mandamos a la funcin para que lo muestre. No se preocupen, si nunca haban visto una funcin tal vez no entiendan la sintaxis, pero el objetivo de este post es que sepan qu es una funcin y para qu se puede usar. En el siguiente post voy a explicar la sintaxis de los cuatro tipos de funciones en c++.

También podría gustarte