Prototipo de una función
Hasta ahora, hemos definido las funciones en seguida de las cabeceras del programa. Una vez que se define la función hemos procedido a desarrollar el código de la función y al final escribimos el programa principal. Si te detienes a observar un poco, te darás cuenta que este procedimiento tiene una lógica, y esa lógica es la de definir primero lo que vas a usar y ya que definiste esa función la puedes utilizar.
Sin embargo muchas veces será necesario que definas las funciones que sabes que necesitarás y después las implementarás (u otra persona de tu equipo) para poder desarrollar el código principal sin preocuparte en ese momento por los detalles de la implementación. En ése momento solo te interesará conocer cómo invocarás a la función y qué parámetros requiere.
A esta forma de definir la cabecera de una función y hasta después codificarla, se denomina Prototipos de Función
Como acabo de mencionar, el objetivo de definir prototipos de función consiste en poder desarrollar la aplicación principal sin detenernos en los detalles de la función utilizada, sino hasta que llega el momento. Otra razón todavía más relevante de definir prototipos de función tiene que ver con la definición y uso de librerías de funciones. Pero el punto “culminante” toma sentido al momento de trabajar con objetos.
Definiendo Un prototipo de función
Para definir un prototipo de función sólo debemos indicar la cabecera de la función, después definimos nuestro programa principal, y después definimos las funciones declaradas.
//Definición de prototipos, nota que llevan ";" al final <tipo_valor_retorno><identificador>(<lista_parámetros>); <tipo_valor_retorno><identificador>(<lista_parámetros>); // Programa principal. int main() { [sentencias] } // Se definen las funciones <tipo_valor_retorno><identificador>(<lista_parámetros>) { [sentencias] }
Primero expresamos las cabeceras de las funciones que utilizaremos (prototipos), a continuación desarrollamos nuestro programa principal y finalmente codificamos las funciones definidas.
Ejemplo
Veamos un ejemplo, definiremos una simple función en la forma que hemos hecho hasta el momento, y en seguida redefiniremos en programa para que utilice prototipos.
Función declarada de forma “estándar”
// cpp_62_funciones_proto.cpp // Este programa forma parte del tutorial de introducción al lenguaje C++ // http://a.ehack.info/leguaje-c-introduccion/ // Se define un par de funciones que en el siguiente ejemplo // eb61_funciones_proto2.cppse definirán como prototipos // 2018, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.onlinegdb.com/online_c++_compiler #include <iostream> using namespace std; int esMayor(int a, int b) { //Devuelve el número mayor entero de 2 números dados como parámetros if (a >= b) { return a; } else { return b; } return 0; } int esMenor(int a, int b) { //Devuelve el número menor entero de 2 números dados como parámetros if (a <= b) { return a; } else { return b; } return 0; } int main() { int num1, num2; cout<<"Escribe un número entero: "; cin >> num1; cout<<"Escribe otro número entero: "; cin >> num2; cout<<"El mayor número introducido es: " << esMayor(num1, num2) << endl; cout<<"El menor número introducido es: " << esMenor(num1, num2); return 0; }
Función declarada con prototipos
A continuación presentamos la misma función definiendo el prototipo de la función. El cual como ya mencionamos, consiste en definir la cabecera de la función, la utilizamos, después la definimos.
// eb61_funciones_proto2.cpp // Este programa forma parte del tutorial de introducción al lenguaje C++ // http://a.ehack.info/leguaje-c-introduccion/ // Se define un par de funciones utilizando prototipos // 2018, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.onlinegdb.com/online_c++_compiler #include <iostream> using namespace std; int esMayor(int a, int b); // Definimos el prototipo de nuestra función int esMenor(int a, int b); // Definimos el prototipo de nuestra función int main() { int num1, num2; cout<<"Escribe un número entero: "; cin >> num1; cout<<"Escribe otro número entero: "; cin >> num2; cout<<"El mayor número introducido es: " << esMayor(num1, num2) << endl; cout<<"El menor número introducido es: " << esMenor(num1, num2); return 0; } // Definimos las funciones definidas en la cabecera. int esMayor(int a, int b) { //Devuelve el número mayor entero de 2 números dados como parámetros if (a >= b) { return a; } else { return b; } return 0; } int esMenor(int a, int b) { //Devuelve el número menor entero de 2 números dados como parámetros if (a <= b) { return a; } else { return b; } return 0; }
Probablemente consideres trabajo adicional e innecesario el uso de prototipos de función, sin embargo debes saber que es la puerta de entrada a conceptos muy poderosos: Las librerías y las Clases (Objetos). Resulta conveniente que estés familiarizado en su uso.
Referencias
Fuente Imágenes
- “Todas las demás imágenes de esta sección”: by Nala Systems
Código Fuente
- El código fuente de toda la serie lo puedes descargar en nuestro repositorio en github busca los programas con el nombre del encabezado de cada programa.
- Código de esta sección
Funciones IV en C++ by Roberto C. González is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.