14 de noviembre de 2010

Esqueleto de una función en C con argumentos (control)

Realiza una función en C que reciba tres númeos reales y devuelva el menor.

Una función en C tiene el siguiente aspecto:

void nombre_función (parámetros)
{...código de la función..}

Si la función necesita algún valor, se define en la zona de parámetros. Si la función devuelve un resultado, habrá que definirlo. En el código de arriba aparece 'void' al principio de la función, esto significa que la función no devuelve nada.

En nuestro caso, la función necesita tres datos reales, por lo tanto hay que definirlos en la zona de parámetros, indicando el nombre y el tipo (double = real):

void nombre_función (double dato1, double dato2, double dato3)
{...código de la función..}


Como la función devuelve un valor real, hay que especificarlo.
En la función donde pone 'void' debe escribirse 'double':

double nombre_función (double dato1, double dato2, double dato3)
{...código de la función..}

Una vez definidos correctamente los parámetros necesarios para la función y el tipo de resultado que devolverá, sólo queda añadir la instrucción encargada de pasar al programa principal dicho valor:

double nombre_función (double dato1, double dato2, double dato3)
{...código de la función..
   return resultado;
}

En este punto, siendo la definición de la función y sus parámetros correcta, sólo queda implementar una solución para el problema propuesto, quedando como ejercicio. Lo que más me interesa es que defináis correctamente la función y sus argumentos, la solución puede ser más o menos buena pero sin este paso bien hecho, la función fallará.

Importante:
Cuando se pide implementar una función que realice una tarea determinada, hay que escribirla fuera del bloque principal 'main'. Si lo escribimos dentro de este bloque, técnicamente el problema estará resuelto pero no es lo que se pide. Cuando se define una función, habrá que hacerlo en otra unidad o al principio del bloque, antes del 'main' y la función deberá incluir la instrucción 'return'.

No hay comentarios: