Programar en Mac 03: Las funciones (y III)

Programar en Mac 03: Las funciones (y III)

23 mayo, 2010 |  by  |  Programar en Mac

Haciendo que todo funcione

Como puedes ver en el último ejemplo de la 2ª parte [10], tenemos la función principal “main()” [10.1] y otra función que definimos nosotros mismos [10.13].  Si tuviéramos que compilar ese código, el compilador aún encontraría obstáculos. En la línea [10.8] podría demandar no conocer ninguna función llamada circleArea(). ¿Por qué? Aparentemente, el compilador comienza leyendo la función principal y de repente encuentra algo que no conoce. No buscará nada más y te mostrará este mensaje de alerta. Para satisfacer al compilador, simplemente añade la declaración de una función antes de la línea que contiene “int main()” [11.1]. No pasaría nada por que se tratara de la misma línea, salvo que ésta terminará con el signo de punto y coma. Ahora el compilador no se sorprenderá cuando encuentre la llamada a la función.

// [11]
float circleArea(float theRadius);    // Declaración de la función
 
int main()
{
// El código de la función main() iría aquí...
}

nota: El resto del programa no se muestra.

Pronto compilaremos este programa en la realidad. Primero un par de impares y finales.

Cuando escribimos un programa, puede aconsejarse tener en cuenta la posibilidad de reutilizar el código en el futuro. Nuestro programa podría tener una función llamada “rectangleArea()” como se muestra a continuación [12.1] y esa función podría ser llamada en nuestra función principal “main()”. Esto es útil tanto si el código que ponemos en una función es tan sólo utilizado una vez. La función “main()” será más sencilla de leer” Si tienes que resolver los bugs del código, será más fácil localizar dónde podrían encontrarse dentro de tu programa. Podrías saber que los bugs están en una determinada función. En lugar de tener que moverte a través de una enorme secuencia de órdenes, simplemente tendrás que chequear las líneas de la función, que son más fáciles de encontrar, gracias a la apertura y cierre de las llaves { }.

// [12]
float rectangleArea(float length, float width)
{
return (length * width)
}
 

Como puedes ver en un caso sencillo como éste, es posible tener una única orden [12.3] tanto para el cálculo como para la devolución del resultado. Utilicé la variable superflua “theArea” en [10.15] sólo para mostrarte cómo declarar la variable en una función.

Mientras que las funciones que definamos por nosotros mismos en este capítulo son algo triviales, es importante darse cuenta que nosotros podemos modificar una función sin afectar en el código que la llama mientras no cambiemos la declaración de la función (por ejemplo, en la primera línea).

Por ejemplo, puedes cambiar los nombres de las variables de una función y la función todavía funcionará (y esto tampoco afectará al resto del programa). Algún otro podría escribir la función y podrías usarla sin saber qué es lo que va dentro de la función.. Todo lo que necesitas saber es cómo usarla. Y esto quiere decir conocer:

  • El nombre de la función
  • El número, orden y tipco de los argumentos (arguments) de la función
  • Lo que la función devuelve (el valor del área de la superficie del rectángulo) y el tipo de resultado.

En el ejemplo [12], estas respuestas son, respectivamente:

  • rectangleArea
  • Dos argumentos: ambos decimales (floats) en el que el primero representa la longitud y el segundo la anchura.
  • La función devuelve algo, y el resultado es de tipo decimal (como puede percibirse desde la primera palabra del código [12.1]).

Variables Blindadas (shielded variables)

El código de dentro de una función está blindado respecto al programa principal y a las demás funciones.

Lo que esto significa es que el valor de una variable dentro de una función, por defecto no está afectada por otra variable o por otra función, incluso aunque tenga el mismo nombre. Esta es una de las características principales del Objective-C. En el capítulo 5, veremos de nuevo este comportamiento, pero antes, vamos a comenzar a utilizar el Xcode y hacer que funcione nuestro programa [10].


 

6 Comments


  1. Gracias por este esfuerzo que hacen, y enseñarnos ha comprender la programación desde “0″ de objective-c.
    Muy buenos los tutoriales.
    Y estaré esperando al siguiente capítulo.

    Saludos

  2. Esperando el prox capitulo :D

    • La verdad es que cuando empezamos esto no había traducción en Español…
      Nosotros seguiremos este tutorial en la parte de C, como base para lo siguiente.
      Pero en la parte de Cocoa no seguiremos eso, aún así es un buen material para irse enterando de las cosas.
      Un saludo!

  3. de estos tutoriales nunca más se supo, no?

    o al menos no encuentro la parte 4 y siguientes.

Trackbacks

  1. Programar en Mac 03: Las funciones (y III) | AppleNeXt
  2. Bitacoras.com

Leave a Reply