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.
Si tienes alguna duda que no se responde en este documento, por favor plantea tu pregunta para poder responderte. O escribe directamente a soporte@ehack.mx
Referencias
- Por Roberto C. González para Ethical Hack
- Notas del Prof. Edgardo Adrián Franco Martínez
- Documentación de Microsoft MSDN
- Zator: Curso de C++
Fuente Imágenes
- «Todas las imágenes de esta sección»: by Nala Systems
Tutorial de C++ by eHack
- Volver al índice de temas del Tutorial de C++
- *** Durante todo este tutorial se repetirá: Este es un curso orientado a gente que nunca ha programado, incluso a gente ajena a la informática. Por esta razón el desarrollo puede parecer lento en ciertas etapas. Prefiero ser claro paso a paso, que hacer «pasos mágicos» como suele ocurrir cuando se enseña programación. *** También es buena idea leas esta entrada si te preguntas «Por qué C++»
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 - Prototipos, por Roberto C. González. Se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.
©2025, Ethical Hack, Todos los derechos reservados sobre el contenido propio.