Introducción a la Programación – Parte 9 – Funciones Funciones Introducción Las funciones son de gran utilidad en los programas. Nos ayudan a que sean más legibles y más cortos. Con ellas estructuramos mejor los programas. Hasta ahora hemos trabajado siempre con una función, main. Cada vez que hacíamos un nuevo programa y lo escribíamos dentro de las llaves de main, estábamos definiendo la función main, que es la principal de cualquier programa. Una función sirve para realizar tareas concretas y simplificar el programa. Nos sirve para evitar tener que escribir el mismo código varias veces. Además de main también hemos utilizado otra función, system, que ya viene con las librerías de c y la usabamos para ejecutar comandos, en particular “PAUSE”. Sin embargo nosotros también podemos definir nuestras propias funciones. Pocas veces se ve un programa un poco complejo que no use funciones. Definición de una Función Una función tiene el siguiente formato: TIPO NOMBRE( PARAMETROS ) { VARIABLES DE LA FUNCION … CUERPO DE LA FUNCIóN … return valor; } Vamos de a poco. Empecemos por el nombre de la función (“NOMBRE”). Al igual que para las variables, para el nombre no se pueden usar más que letras, números y el símbolo '_'. No se pueden usar ni acentos ni espacios. Además el nombre de la función debe empezar por una letra, no puede empezar con un número. El nombre de la función se usa para llamarla dentro del programa. El TIPO: Cuando una función se ejecuta y termina puede devolver un valor. Este valor puede ser de cualquiera de los tipos de variables que hemos visto anteriormente (int, char, float, etc.). El valor que devuelve la función suele ser el resultado de las operaciones que se realizan en la función, o si han tenido éxito o no. Si no queremos que la función devuelva ningún valor, usaremos el tipo void. Variables de la Función: Dentro de la función podemos definir variables que sólo tendrán validez dentro de la propia función. Si declaramos una variable en una función no podemos usarla en otra, ni siquiera en la función main. Cuerpo de la función: Aquí es donde va el código de la función. Olimpiadas Sanluiseñas del Conocimiento en Informática – ULP Mariano Luzza - Coordinador Introducción a la Programación – Parte 9 – Funciones Return: Antes dijimos que la función devuelve un valor. La sentencia return se usa para esto. El dato que se pone despues de return es el dato que se devuelve. Puede ser cualquier expresión, como una constante, una variable, un cálculo o la llamada a otra función. Debe ser del mismo tipo que TIPO. Si la función tenía el tipo void, entonces return se puede omitir o se debe colocar sin ningún valor, así: return; Parámetros: Estos son variables que se pasan como datos a una función. Deben ir separados por una coma. Cada variable debe ir con su tipo de variable. Las funciones deben definirse antes de ser llamadas. En los ejemplos a continuación se llama a la función desde main, así que tenemos que definirlas antes que main. Esto lo veremos a continuación. Ejemplos Ejemplo 1. Función sin argumentos que no devuelve nada: Este programa llama a la función saludar que muestra el mensaje "Hola Mundo!!!". Por supuesto es de nula utilidad pero nos sirve para empezar. #include <cstdlib> #include <iostream> using namespace std; void saludar() /* No se debe poner punto y coma aquí */ { cout<<”Hola Mundo!!!”<<endl; return;//Como es void, el return no tiene valor. Podría omitirse. } int main(int argc, char *argv[]) { saludar();// Llamamos a la función system("pause");//Aca se llama a otra función que ya viene definida return EXIT_SUCCESS;//Como main es otra función, tiene su return } Ejemplo 2. Función con argumentos, no devuelve ningún valor: En este ejemplo la función compara toma dos números, los compara y nos dice cual es mayor. #include <cstdlib> #include <iostream> using namespace std; Olimpiadas Sanluiseñas del Conocimiento en Informática – ULP Mariano Luzza - Coordinador Introducción a la Programación – Parte 9 – Funciones void compara(int a,int b)//Tenemos 2 parámetros a y b a comparar { if(a > b) cout<<a<<" es mayor que "<<b<<endl; else if(a < b) cout<<b<<" es mayor que "<<a<<endl; else cout<<a<<" es igual a "<<b<<endl; } int main(int argc, char *argv[]) { int num1, num2; cout<<”Introduzca el 1º número: “; cin>>num1; cout<<”Introduzca el 2º número: “; cin>>num2; compara(num1, num2);//Llamamos a la función con sus dos parámetros system("pause");//Aquí “pause” es un parámetro de la función system return EXIT_SUCCESS; } Ejemplo 3. Función con argumentos que devuelve un valor. Este ejemplo es como el anterior pero devuelve como resultado el mayor de los dos números. #include <cstdlib> #include <iostream> using namespace std; int compara(int a,int b)//Tenemos 2 parámetros a y b a comparar { int mayor; if(a > b) mayor = a; else mayor = b; return mayor;//La variable “mayor” es int como la función } int main(int argc, char *argv[]) { int num1, num2, res; cout<<”Introduzca el 1º número: “; cin>>num1; cout<<”Introduzca el 2º número: “; cin>>num2; //Llamamos a la función y guardamos el resultado res = compara(num1, num2); cout<<”El mayor de los dos números es: “<<res<<endl; system("pause");//Aquí “pause” es un parámetro de la función system return EXIT_SUCCESS; } En este ejemplo podríamos haber hecho también: cout<<”El mayor de los dos números es: “<<compara(num1, num2)<<endl; Olimpiadas Sanluiseñas del Conocimiento en Informática – ULP Mariano Luzza - Coordinador Introducción a la Programación – Parte 9 – Funciones De esta forma nos ahorramos tener que definir la variable “resultado”. Resumen Hemos visto como definir y llamar funciones. Las funciones nos permiten ahorrar código repetido y estructurar nuestros programas. Olimpiadas Sanluiseñas del Conocimiento en Informática – ULP Mariano Luzza - Coordinador