Está en la página 1de 9

Una función, como les decía, 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 números, usando los cuatro tipos de funciones:

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. 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();

Así nuestro programa sería:
#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 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();

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:

Si queremos recibir una variable hasta ahí es suficiente. 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. De forma general: tipo nombre() { return var. cin >> num1. int num2) { int r. var2). . Para eso necesitamos una función que retorne. } int main() { int num1. Dentro del paréntesis tenemos otros aspectos: „tipo_var1′ se refiere al tipo de la variable que nuestra función va a recibir. Usualmente esto va al final de la función. Retornan y No Reciben ¿Y si ahora queremos lo contrario? Pedir los números en la función. } El „tipo‟ tiene que ser del tipo de variable que queremos retornar. Para indicar qué variable estamos retornando usaremos la palabra return seguido de la variable.gotoxy(x. num2. „nombre_var1′ se refiere al nombre de esa variable. Una función de este tipo que hemos usado muchas veces es el odiado por muchos. Retornar es enviar datos de la función al main. cout << "La suma es " << r. cout << "Numero 2: ". Recibir es enviar datos del main a la función. si nuestra variable retorna una variable int. void sumar(int num1.y). ésta los suma y los muestra. } Pedimos los dos números en el main. num2). pues el tipo de la función es int. los enviamos a la función. cout << "Numero 1: ". pero mostrar el resultado en el main.tipo nombre(tipo_var1 nombre_var1. Para retornar datos hay que hacer dos cosas: no usar void como tipo y usar return. cin >> num2. amados por otros.) y declaramos la siguiente variable. si queremos otra variable ponemos una coma (. r = num1 + num2. tipo_var2 nombre_var2){} „tipo‟ y „nombre‟ se refieren a lo mismo y como no retorna el tipo siempre es void. sumar(num1. Nuestro programa quedaría así: #include<iostream> using namespace std.

¡Wow! ¿Es acaso eso posible? Claro que sí. r. Este es un buen momento para recordarles que las variables declaradas entre dos llaves {} únicamente existen entre esas dos llaves. La variable que está retornando nuestra función se va a almacenar en la variable „var‟. num2. var = nombre(). int sumar() { int num1. cout << "Numero 1: ". cin >> num1. } int main() { int r. Nuestro programa quedaría así: #include<iostream> using namespace std. } int main() { int num1. cin >> num2. r = num1 + num2. cout << "La suma es " << r.Para llamar a la función hay que preparar un colchón en donde caiga la variable que está retornando. return r. Para eso necesitamos que nuestra función reciba las variables y además retorne el resultado. int num2) { int r. cin >> num1. O sea que la variable „var‟ de la función no es la misma que la variable „var‟ de la función. r = sumar(). r = num1 + num2. Un poco confuso lo se. sin embargo la var del main está adquiriendo el valor de la var del main. return r. cin >> num2. cout << "Numero 2: ". r. num2. . } ¿A alguien se le ocurre una función conocida de este tipo? Reciben y Retornan Ahora queremos que nuestra función únicamente sume. cout << "Numero 2: ". Nuestro programa quedaría así: #include<iostream> using namespace std. Es sólo cuestión de combinar las funciones que reciben y no retornan con las que retornan y no reciben. el main se va a encargar de pedir los números y sumar los resultados. cout << "Numero 1: ". int sumar(int num1. no se preocupen.

h son en su mayoría de este tipo. cin >> num1. } :D 12 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++. cierra los ojos y saca la lengua. Perro[Lengua]. pero no sólo eso. pow(). . Perro[OjoIzq]. bueno.Cerrar(). Imagínense que están entrenando a su perro a hacerse el muertito. ¿Se imaginan si tuviéramos que escribir todo el código detrás de un simplegotoxy(). lo cual es cierto. Una función es un pedazo de código fuera del main.? Ah verdad… Bueno. el nombre de la función sería muertito. num2.r = sumar(num1. cout << "La suma es " << sumar(num1. En programación.Tirarse(posicion='espalda'). Perro[OjoDer]. int sumar(int num1. y cada vez que nosotros decimos muertito estamos llamando a la función. num2). En principio puede parecer que las funciones sirven únicamente para organizar el código. el perro se tira de espaldas en el suelo. cerrar los ojos y sacar la lengua. cin >> num2. bueno. con un nombre y que puede ser „llamado‟ desde otra parte de nuestro programa. } Las funciones de la librería math. num2). Ya en serio vamos a hacer un clásico Hola Mundo pero usando una función: #include<iostream> using namespace std.Sacar(). cout << "Numero 2: ". sqrt(). Cada vez que ustedes dicen „muertito„.Cerrar(). cout << "La suma es " << r. int num2) { return num1 + num2. Nuestra función sería algo así: void muertito() { Perro. sin(). } int main() { int num1. cout << "Numero 1: ". } Jajaja. elcontenido de la función sería tirarse de espaldas. no me iba a quedar tranquilo si no les mostraba la versión optimizada de la última función: #include<iostream> using namespace std.

5 y 6 Ahora veamos una función que sí nos es útil: Primero pedimos un nombre. cout << "Cual es tu nombre?: ". Llave. Llave. OK el namespace estándar. Linea 5. Linea 8. Salir #include<iostream> using namespace std. pero nos sirve para ver cómo actúa una función: al momento de llamar a la función. esta función es muy estúpida. Linea 7. Ejecutar lineas 4. En el siguiente post voy a explicar la sintaxis de los cuatro tipos de funciones en c++. Ignorar ¡Por fin el main! Llave. pero el objetivo de este post es que sepan qué es una función y para qué se puede usar. Ignorar Parte de la función. void hola(char nombre[50]) { cout << "Hola " << nombre << "!".void hola() { cout << "Hola Mundo!". cin. Esta función se me hace Linea 10. 50. No nos beneficia en nada y nos hace escribir más código del necesario. Linea 9. este diría: Linea 1. Si pudieran leerle la mente a un compilador. '\n'). Usar Linea 3. vuelve al punto desde donde brincó. } la librería iostream. la ejecuta y cuando termina. } int main() { hola(). funciones . si nunca habían visto una función tal vez no entiendan la sintaxis. 7 Comentarios Cómo pasar una matriz o arreglo como parámetro a una función Guardado en: Programas el 28 de octubre del 2010Etiquetas: arreglos. el compilador se brinca a la función. Entrar conocida… oh sí ya recuerdo. OK función llamada hola. } int main() { char nombre[50]. Ignorar Mundo!”. Oh! una Linea 4. Llave. lo guardamos en una variable y se le mandamos a la función para que lo muestre. Imprimir “Hola Linea 6.getline(nombre. la recordaré. Parte de la función. No se preocupen. hola(nombre). } Como ven. Parte de la función. Incluir Linea 2.

Este programa pide tres números. Veamos. Chéquenlo. parámetros o funciones en este blog. } m[4][3]) Y Si int la la forma de función se llamar retorna declara la función una sería: matriz… matriz[4]... cin >> matriz[i]. usando para cada acción una función. casi creo que nunca he hablado de matrices. i<=len. fx(matriz). return matriz[3]. } void mostrar(int matriz[3]. … void la la el forma fx(int de declarar m[4]) la { función la dos lo { es la función siguiente: } . int len) { for(int i=0. … void mismo: . void pedir(int matriz[3]. i<=len. Si tu arreglo es de una dimensión… int matriz[4]. pero este post es una petición de Rodrigo que me dijo por email que tenía problemas con su tarea porque no sabecómo pasar una matriz como parámetro a una función en c++. } int main() { int matriz[3]={0}. dimensiones… matriz[4][3]..código. int len) { for(int i=0. } m[4]) { return Y la forma de llamar la función sería: matriz[4] = fx(matriz).. i++) { cout << "Numero " << i+1 << ":? ".. } } int sumar(int matriz[3].. . i++) cout << matriz[i] << " "..código. … void fx(int normal: matriz[4].Bueno.. #include<iostream> using namespace std. los almacena en una matriz. le suma 1 a cada elemento y los muestra. len = sizeof(matriz)/sizeof(int). int len) { for(int i=0. i++) matriz[i]++. i<=len. pero difícil de deducir. Así que tenemos funciones que reciben matrices y que retornan matrices. Y Si int forma arreglo pues fx(int de es llamar de es sería: fx(matriz). Es algo sencillo.

En algunos compiladores Borland esta función se incluye en la librería conio. cin >> sec. Si le sumamos cierta cantidad de segundos obtenemos una fecha en el futuro.h pero como aquí estamos del lado del software libre vamos a hacer nosotros mismos esta función. time(NULL)).pedir(matriz. len-1). esta: { time(NULL)). time Una función a veces útil a veces no mucho es el delay(). La función time(NULL) nos devuelve el segundo exacto en que estamos. } 9 Comentarios Función delay() en C++ Guardado en: Programas el 24 de septiembre del 2010Etiquetas: funciones. time(NULL) != i. 1. delay(sec).h> o #include<ctime>. } int main() { int sec. 8 Comentarios . 4. Veamos como se usa en un programa en c++: #include<time. len-1). sirve para hacer una pausa de „n‟ segundos. void delay(int secs) { for(int i = (time(NULL) + secs). Primero veamos cómo se usa: delay(variable_tipo_int). o delay(numero_entero). es int delay(secs). mostrar(matriz. En cada vuelta del ciclo se checa si esa fecha en el futuro es diferente a la fecha actual. return 0. 3.h> #include<iostream> using namespace std. función secs) time(NULL) != es i. i = (time(NULL) Y void for(int } la delay(int + secs). decir: claro. cout << "Segundos a pausar?: ". es delay(12). 2. En cuanto las dos fechas son iguales el ciclo acaba y el programa continúa. matriz[3] = sumar(matriz. } Para poder usar la función delay de esta forma es necesario ponerla en todos los programas en donde necesitemos usarla (ahora me doy cuenta que no he escrito mucho sobre funciones) e incluir siempre la librería #include<time. len-1). decir: secs=10.

c1<=9.c2. } int imprimir(int lista[]) { . } cout<<"\nAscendente 1\nDescendente 2\n--> Opción: ". funciones Programa que lee un arreglo de 10 números y los ordena con el método de la burbuja de maneraascendente o descendente según se elija. int ordenar(int[]. Para esto utiliza una función que recibe el arreglo y la varible „ord‟ (1=asc.c<=9. } } else { if(lista[c2]<lista[c2+1]) { aux=lista[c2]. luego utiliza otra función para imprimirlo. } } } } return 0. int imprimir(int[]).aux.c2<9. cin>>ord. lista[c2+1]=aux.c2++) { if(ord==1) { if(lista[c2]>lista[c2+1]) { aux=lista[c2]. if(ord==1 || ord==2) { ordenar(lista. for(c1=0. lista[c2]=lista[c2+1]. #include<iostream> using namespace std.int ord) { int c1. cin>>lista[c]. lista[c2]=lista[c2+1]. int main() { int c. } } int ordenar(int lista[]. for(c=0.int). burbuja. imprimir(lista).ord).c1++) { for(c2=0.ord.Ordenar arreglo de manera ascendente o descendente (burbuja) Guardado en: Programas el 19 de noviembre del 2009Etiquetas: arreglos.c++) { cout<<"Numero "<<c+1<<": ". 2=desc).lista[9]. lista[c2+1]=aux.

int c.get().get(). } /*Creado por THEbatzuk*/ .c<=9. cin.cin. for(c=0.c++) cout<<lista[c]<<" ".