Función (programación)

 

Función (programación)


Las funciones son la parte central de la programación. Algunos lenguajes, como Pascal, distinguen entre procedimientos ("Procedures") y funciones. En C++ las funciones desempeñan ambos papeles, aunque en cierto modo, los ficheros desempeñan algunas funcionalidades de lo que, en otros lenguajes como Modula-2, se denominan módulos. Otra diferencia substancial es que C++ no permite el anidamiento de funciones, es decir, definir funciones dentro de otras. En C++ todas las funciones se definen a nivel de fichero, con lo que tienen ámbito global al fichero.

Existe una excepción a esta regla; se refiere a las funciones miembro de las clases, que pueden ser declaradas y definidas dentro de las propias clases. Aunque las clases no son por supuesto funciones en el sentido estricto, si representan cierta compartimentación de datos y procedimientos (un tipo de "módulos").

Elementos de la declaración de una Función

Las declaraciones de funciones generalmente son especificadas por: Un nombre único en el ámbito: Nombre de la función con el que se identifica y se distingue de otras. No podrá haber otra función ni procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos). Un tipo de dato de retorno: tipo de dato del valor que la función devolverá al terminar su ejecución. Una lista de parámetros: Especificación del conjunto de argumentos (pueden ser cero, uno o más) que la función debe recibir para realizar su tarea. El código u órdenes de procesamiento: conjunto de órdenes y sentencias que debe ejecutar la función.

Una función de inicio

Cada programa debe tener una sola función externa denominada main(), principal, que desde la óptica del programador define el punto de entrada al programa. Las funciones se declaran en cabeceras (estándar o específicas de usuario) o dentro de los ficheros fuente. Estas declaraciones son denominadas prototipos. En ocasiones la declaración y definición se realiza en el mismo punto (como ocurre con las variables), aunque es normal colocar al principio del fuente los "prototipos" de las funciones que serán utilizadas en su interior, y las definiciones en cualquier otro sitio (generalmente al final). En el caso del ejemplo anterior, la declaración y definición de func1 se ha realizado en el mismo punto, mientras que la declaración de func2 se realiza dentro del cuerpo de la clase y la definición en el exterior de esta. La forma general del prototipo de una función es: valor-devuelto nombre-función (lista-de-argumentos); La forma general de la definición es:

valor-devuelto nombre-función (lista-de-argumentos) {
  sentencias;         // "cuerpo" de la función
}

Ejemplo:

float cuadrado (float x);                // prototipo
float cuadrado (float x) { return x*x; } // definición

La comunicación entre el programa y las funciones que lo componen se realiza mediante los argumentos de llamada, los valores devueltos y las variables globales y externas.

Comentarios