Tema 7 Funciones Contenidos 1. ¿Qué es una función? 2. Definición. 3. Paso de parámetros. 4. Devolución de resultados. 5. Llamada. 6. Declaración. 2 1. ¿Qué es una función? Función: Secuencia de instrucciones agrupadas bajo un mismo nombre que realizan una tarea determinada. La función se ejecutará tantas veces como se la llame mediante su nombre. Ventajas: Facilita la reutilización de código, aumentando la productividad del programador. Descomposición de un problema en subproblemas más sencillos → se disminuye la complejidad del problema. El uso de funciones mejora la estructura del programa, haciéndolo más legible y entendible. 3 2. Definición La definición de una función consta de: Cabecera. Indica el tipo devuelto por la función (puede ser nulo: void), su nombre y los argumentos que recibe (puede no recibir ninguno). Cuerpo. Bloque de instrucciones de la función. Sintaxis: tipo nombre(argumentos) { /* declaración de variables locales */ /* instrucciones */ return exprexión; } 4 3. Paso de Parámetros En la definición de la función se especifica la lista de parámetros o argumentos que recibe y su(s) tipo(s). Puede no tener ningún argumento La sintaxis de la lista de argumentos es: (tipo1 argumento1, tipo2 argumento2, ...) Al invocar (llamar) a la función se le deben pasar tantos argumentos como reciba y del tipo correcto. Existen dos formas de paso de parámetros: Por valor. Se pasa como parámetro un valor (puede ser una constante, una variable, el resultado de una operación …). Por referencia. Se pasa como parámetro la dirección en memoria de una variable. Esta variable podrá ser modificada desde dentro de la función. 5 4. Devolución de Resultados Una función puede devolver un valor como resultado. El valor devuelto será del tipo definido en la cabecera de la función. Si el tipo especificado es void, la función no devolverá nada (es lo que normalmente se llama un procedimiento). Si el tipo especificado no es void, la función deberá obligatoriamente devolver un valor de retorno. La instrucción para devolver el valor de retorno es: return valor; Si no se devuelve ningún valor no es necesario que aparezca return, aunque puede usarse para evitar que se sigan ejecutando instrucciones de la función: return; 6 5. Llamada Para que se ejecute una función, esta debe ser invocada mediante su nombre, seguido por los argumentos entre paréntesis. nombre(arg1, arg2, ...); Los parámetros pueden ser variables, constantes, expresiones o el resultado de llamadas a otras funciones. Si la función invocada devuelve un valor, este podrá ser almacenado en una variable o utilizado como operando en alguna expresión. variable = función2(); 7 6. Declaración La declaración de una función consiste en escribir su cabecera seguida de un punto y coma. El nombre de los argumentos no es necesario, tan sólo su tipo. Es conveniente declarar las funciones antes de utilizarlas. Esto permite que el compilador dé error si no se utilizan bien (comprobará el tipo y número de argumentos y el tipo devuelto). Si la definición de una función aparece en el programa antes de su uso, sirve además como declaración. Las declaraciones de las funciones de las librerías estándar (además de otras cosas como constantes, tipos, ...) es lo que hay en las cabeceras que se incluyen en los programas: #include <stdio.h> 8 Ejemplo #include <stdio.h> /* Declaración de la función suma */ int suma(int a, int b); int main() { /* Llamada a la función suma */ printf("3 + 5 = %d\n", suma(3, 5)); return 0; } /* Definición de la función suma */ int suma(int a, int b) { return a + b; } 9 Ejemplo (II) #include <stdio.h> /* Declaración y definición de saluda */ void saluda(char nombre[]) { printf("Hola, %s.\n", nombre); } int main() { /* Invocación del procedimiento saluda */ saluda("Juan"); saluda("Luisa"); return 0; } 10