Curso de C++ (Página 3)

pagina002 Principal pagina004a

CAPITULO 3 Funciones I: Declaracion y definición

Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan un valor de salida o valor de retorno; aunque tanto unos como el otro pueden no existir.

Tal vez sorprenda que las introduzca tan pronto, pero como son una herramienta muy valiosa, y se usan en todos los programas C++, creo que debemos tener, al menos, una primera noción de su uso.

Al igual que con las variables, las funciones pueden declararse y definirse.

En general, la definición de una función se compone de las siguientes secciones, aunque pueden complicarse en ciertos casos:

Una función muy especial es la función "main". Se trata de la función de entrada, y debe existir siempre, será la que tome el control cuando se ejecute un programa en C. Los programas Windows usan la función WinMain() como función de entrada, pero esto se explicará más adelante.

Existen reglas para el uso de los valores de retorno y de los parámetros de la función "main", pero de momento la usaremos como "int main()" o "int main(void)", con un entero como valor de retorno y sin parámetros de entrada. El valor de retorno indicará si el programa ha terminado sin novedad ni errores retornando cero, cualquier otro valor de retorno indicará un código de error.

Un elemento que se usa muy frecuentemente son los prototipos, o declaración de función. Una función prototipo consiste en una definición de la función con un sin cuerpo y terminado con un ";". La estructura de un prototipo es:

<tipo> func(lista-de-declaración-de-parámetros);

Por ejemplo:

int Mayor(int a, int b);

Sirve para indicar al compilador los tipos de retorno y los de los parámetros de una función, de modo que compruebe si son del tipo correcto cada vez que se use esta función dentro del programa, o para hacer las conversiones de tipo cuando sea necesario. Los nombres de los parámetros son opcionales, y se incluyen como documentación y ayuda en la interpretación y comprensión del programa. El ejemplo anterior sería igualmente válido y se podría poner como:

int Mayor(int,int); 

Normalmente, las funciones se declaran como prototipos dentro del programa, o se incluyen estos prototipos desde un fichero externo, (usando la directiva "#include", ver en el siguiente capítulo el operador de preprocesador.)

Las funciones son externas por defecto. Esto quiere decir que son accesibles desde cualquier punto del programa, aunque se encuentren en otros ficheros fuente del mismo programa. Esto no es así para las funciones declaradas "static". La definición de la función se hace más adelante o más abajo, según se mire. Lo habitual es hacerlo después de la función "main".

La estructura de un programa en C o C++ quedaría así:

[directivas del pre-procesador: includes y defines]

[declaración de variables globales]

[prototipos de funciones]

función main

[definiciones de funciones]

Una definición de la función "Mayor" podría ser la siguiente:

int Mayor(int a, int b)
{
   if(a > b) return a; else return b;
}

Los programas complejos se escriben normalmente usando varios ficheros fuente. Estos ficheros se compilan separadamente y se enlazan juntos. Esto es una gran ventaja durante el desarrollo y depuración de grandes programas, ya que las modificaciones en un fichero fuente sólo nos obligarán a compilar ese fichero fuente, y no el resto, con el consiguiente ahorro de tiempo.

La definición de las funciones puede hacerse dentro de los ficheros fuente o enlazarse desde librerías precompiladas. La diferencia entre una declaración y una definición es que la definición posee un cuerpo de función.

En C++ es obligatorio el uso funciones prototipo, y aunque en C no lo es, resulta altamente recomendable.

Palabras reservadas usadas en este capítulo

extern y static.


pagina002 Principal pagina004a