Ads 468x60px

Perfil

lunes, 17 de octubre de 2011

Funciones

Las funciones son porciones de código que devuelven un valor.
Permiten descomponer el programa en módulos que se llaman entre ellos.
En C no existe diferencia entre funciones y procedimientos: a todas las subrutinas se las llama funciones.

La definición de una función especifica lo siguiente:
  • nombre de la función
  • número de argumentos que lleva y tipo de cada uno de ellos
  • tipo de datos que devuelve
  • Cuerpo de la función (el código que ejecuta)

Sintaxis:
tipo nombre ( arg1, arg2, ... )
{
... cuerpo ...
}

Cada argumento se especifica como en una declaración de variable.
El cuerpo de la función debería contener una sentencia donde se devuelve el resultado de la función, que se hace de esta forma:

return expresión;

La función devolverá el resultado de la expresión.

5.1 Ejemplo de función


Función que devuelve la suma de dos enteros.
 
         int suma ( int a, int b )
         {
                  return a+b;
         }

5.2 Llamadas a función

Para llamar a una función, se escribe su nombre y entre paréntesis los valores que se deseen dar a los argumentos:

         función ( expr1, expr2, ... )

Cada expresión se evalúa y su resultado se pasa como argumento a la función. Las expresiones han de tener el mismo tipo del argumento correspondiente, o al menos un tipo compatible.

         x = suma ( 1, a+5 );               /* correcto */
         
         y = suma ( “hola”, 5 );   /* arg. 1 incorrecto */


Una llamada a función es una expresión, con todo lo que ello implica.

No es necesario recoger en una variable el valor devuelto por la función.
(Por ejemplo, printf y scanf son funciones que devuelven un entero).

5.3 Funciones sin argumentos


Se declaran con void entre paréntesis (sólo en C).
 
         int fecha (void)
         { ... }

Se las llama así:

         dato = fecha();

es decir, siempre hay que escribir los paréntesis aunque no haya argumentos.
En C++ se declaran sólo con los paréntesis, sin el void.

5.5 Argumentos de entrada/salida o paso por referencia


Una función en C no puede alterar las variables pasadas como parámetros. Los parámetros se pasan por valor .


#include <stdio.h>
 
/* función inútil */
 
void incrementa ( int variable )
{
         variable ++;
}
  
main()
{ 
         int x = 33;
         incrementa (x);
         
         /* x no resulta afectada, sigue valiendo 33 */
 
         printf ( "la variable x vale ahora %d\n", x );
 
}

Para conseguir alterar una variable pasada como parámetro, hay que recurrir a los punteros. (Se verá más adelante).

5.6 Otras consideraciones

Funciones anidadas

En C no se pueden declarar funciones dentro de otras (funciones anidadas o locales). Todas las funciones son globales.

Recursividad

Se permite hacer llamadas recursivas:

float factorial (int n)
{
if (n<=1) return 1.0;
else return n*factorial(n-1);
}

0 comentarios: