Programar en Mac 03: Las funciones (II)

Programar en Mac 03: Las funciones (II)

23 mayo, 2010 |  by  |  Programar en Mac

Argumentos (Arguments)

Vamos a añadir un par de nombres de variable del tipo decimal [4.4] e iniciaremos la variable circleRadius, por ejemplo le daremos un valor [4.4], en el que la función circleArea() será “llamada”. Como puedes ver, el nombre de la variable circleRadius ha sido puesta entre los signos de paréntesis. Esto es un “argument” de la función “circleArea()”. Cuando la función “circleArea()” ha hecho su trabajo de cálculo, deberá devolver un resultado. Vamos a modificar la función de [3] para reflejar esto [5]:

Nota: sólo la función “circleArea()” será mostrada:

// [5]
circleArea(float theRadius) // [5.1]
{
float theArea;
theArea = 3.1416 * theRadius *theRadius; // pi por radio al cuadrado, π · r2
return thArea;
}

En [5.1] definimos que para la función circleArea() será necesario introducir un valor decimal… Cuando se recibe, este valor es almacenado en la variable llamada theRadius. Usamos una segunda variable a la que llamaremos theArea para almacenar el resultado del cálculo de la línea [5.4], por lo que deberemos declararla [5.3] del mismo modo que las declarábamos en la función “main()” [4.4]. Te darás cuenta que la declaración de la variable theRadius está realizada en paréntesis [5.1]. La línea [5.5] devuelve el resultado de la parte del programa desde la que la función ha sido llamada. como resultado, en la línea [4.11] la variable circleSurfaceArea está puesta en este valor.

La función del ejemplo [5] está completa, salvo por una cosa: No hemos especificad el tipo de datos que la función deberá devolver. El compilador requiere que lo hagamos así que no tenemos más opción que obedecer e indicar que el tipo es decimal [6.1].

// [6]
float circleArea(float theRadius) // [6.1]
{
float theArea;
theArea = 3.1416 * theRadius * theRadius;
return theArea;
}

Como indica la primera palabra de la línea [6.1], el dato que devuelve esta función (por ejemplo, el valor de la variable theArea) es del tipo decimal. Como programador, deberás asegurarte que la variable circleSurfaceArea en la función “main()” [4.8] es de esemismo tipo de dato de manera que el compilador no motivos para quejarse en este punto.

No todas las funciones requieren un “argument”. Aún así, aunque no haya uno, el paréntesis será necesario incluso cuando deba estar vacío.

// [7]
int throwDice()
{
int noOfEyes;
// Código para generar un valor aleatorio del 1 al 6
return noOfEyes;
}

Devolviendo valores

No todas las funciones devuelven un valor. Si una función no devuelve un valor, será del tipo “void” (vacío). La línea de código de la devolución del valor será, por tanto, opcional. Pero si la utilizas, la palabra “return” no deberá ir seguida de ningún valor o nombre de variable.

// [8]
void beepXTimes(int x);
{
// Código para hacer beep x veces.
}

Si una función tiene más de una orden, como en la función picureSurfaceArea() que aparece a continuación, las órdenes deberán estar separadas por una coma:

// [9]
float pictureSurfaceArea(float theWidth, float theHeight)
{
// Código para calcular el área de la superficie
}

La función “main()” debería, por conveniencia, devolver un número entero, y sí: también posee una orden de devolución (return). Podría devolver 0 (cero, [10.9]) para indicar que la función se ha ejecutado sin problemas. Como la función “main()” devuelve un entero, deberemos escribir “int” antes de “main()” [10.1]. Vamos a poner todo el código que tenemos en una lista:

// [10]
int main()
{
float pictureWidth, pictureHeight, pictureSurfaceArea,
circleRadius, circleSurfaceArea;
pictureWidth = 8;
pictureHeight = 4.5;
circleRadius = 5.0;
pictureSurfaceArea = pictureWidth * pictureHeight;
return 0;   // [10.9]
}
float circleArea(float theRadius)   // [10.12]
{
float theArea;
theArea = 3.1416 * theRadius * theRadius;
return theArea;
}

 

2 Comments


  1. hay que declarar lso prototipos de las funciones como en c++?

    • Sí, antes del main irían las declaraciones de funciones.
      Tienen la misma forma pero acabadas en “;”

      En un par de semanas publicaremos el siguiente artículo de la serie… Gracias por entenderlo!

Trackbacks

  1. Programar en Mac 03: Las funciones (II) | AppleNeXt

Leave a Reply