Fundamentos de la Programación en C: Declaración, Definición e Invocación de Funciones

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,93 KB

Tipos y Creación de Funciones en Programación C

Además de la función principal (main), en un programa se pueden encontrar otros tipos de funciones:

  • Funciones definidas por el programador: Creadas y diseñadas específicamente para la aplicación.
  • Funciones de librería: Ya creadas, implementadas y compiladas en librerías (de creación propia o adquirida).

En C, una vez que las funciones son creadas y definidas, pueden ser invocadas tantas veces como se requiera, permitiendo la construcción de nuestras propias bibliotecas de funciones.

Distinción Fundamental: Declaración, Definición e Invocación

Siempre que hablamos de funciones, utilizamos los conceptos de creación y definición. Es crucial distinguir entre tres etapas fundamentales en el manejo de una función:

  1. Declaración o Prototipo (Creación de la función): Especifica la firma de la función.
  2. Definición: El cuerpo de código que recoge las sentencias que debe ejecutar la función para lograr llevar a cabo su tarea.
  3. Invocación o Llamada: El acto de ejecutar la función.

Una función creada y definida solo se ejecuta si otra función la invoca o llama. La única función que se ejecuta sin ser invocada (y que tampoco permite ser invocada) es la función main. Por lo tanto, cualquier otra función será ejecutada únicamente si es invocada por la función main o por alguna función que, en su origen, tiene una llamada desde la función main (a través de una cadena de invocación).

3.2 Declaración de una Función: El Prototipo

La declaración de una función se realiza a través de su prototipo. Un prototipo establece la firma de la función y tiene la siguiente estructura:

tipo_funcion nombre_funcion([tipo1 [var1] [,… tipoN [varN]]);
Componentes del Prototipo
  • tipo_funcion: Declara el tipo de valor que devolverá la función. Una función puede devolver valores de cualquier tipo de dato válido en C (primitivo o diseñado por el programador). Si no devuelve ningún valor, se indica que es de tipo void.
  • nombre_funcion: Es el nombre (identificador) que se le asigna a la función.
  • tipo1, ..., tipoN: Declaran el tipo de cada uno de los valores que la función recibirá como parámetros al ser invocada. En la declaración del prototipo, es opcional indicar el nombre (var1, varN) que tomarán las variables que recibirán esos valores y que se comportarán como variables locales de la función.
Ámbito y Reglas de Declaración

Al final de la declaración se consigna el punto y coma (;), ya que la declaración de una función es una sentencia en C. Esta sentencia se consigna fuera de cualquier función. La declaración de una función tiene carácter global dentro del programa donde se declara.

Advertencia: No se puede declarar, ni definir, una función dentro de otra función; esto siempre generará un error de compilación.

Función del Prototipo y Control de Tipos

Toda función que quiera ser definida e invocada debe haber sido previamente declarada. El prototipo de la función presenta el modo en que esa función debe ser empleada; es la definición de su interfaz o forma de comunicación:

  • Qué valores debe recibir.
  • De qué tipo deben ser.
  • En qué orden deben presentarse como argumentos al ser invocada.

El prototipo permite al compilador:

  1. Localizar cualquier conversión ilegal de tipos entre los argumentos utilizados en la llamada de la función y los tipos definidos en los parámetros.
  2. Controlar que el número de argumentos usados en una llamada a una función coincida con el número de parámetros de la definición.
Excepción de Tipo int

Existe una excepción a la regla de la declaración obligatoria: cuando una función es de tipo int, puede omitirse su declaración. Sin embargo, es recomendable no hacer uso de esta excepción.

Si en una expresión, dentro del cuerpo de una función, aparece un nombre o identificador que no ha sido declarado previamente, y ese nombre va seguido de un paréntesis de apertura, el compilador supone que ese identificador corresponde al nombre de una función de tipo int.

Todas las declaraciones de función deben preceder a la definición del cuerpo de la función main.

Entradas relacionadas: