Informática II -
UTN - FRT
UTN – Facultad Regional Tucumán
Informática II Funciones Subprogramas en C Prof. Ing. Oscar Gálvez A.T.P. Ing. César Ovejero
Informática II -
Contenidos
UTN - FRT
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
Informática II -
1. ¿Qué es una función?
UTN - FRT
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
Informática II -
2. Definición
UTN - FRT
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
Informática II -
3. Paso de Parámetros
UTN - FRT
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
Informática II -
4. Devolución de Resultados
UTN - FRT
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
Informática II -
5. Llamada
UTN - FRT
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
Informática II -
6. Declaración
UTN - FRT
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
8
Informática II -
Ejemplo
UTN - FRT
#include /* 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
Informática II -
Ejemplo (II)
UTN - FRT
#include /* 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