lunes, 9 de febrero de 2009

Ejercicio 9. Variables globales y variables locales. Sentencias condicionales if


El objetivo de este ejercicio es crear un procedimiento que dibuje un polígono de n lados y con una longitud de lado dada. Aprovecharemos este ejemplo para distinguir entre variables globales y locales en Netlogo, así como para presentar la sentencia condicional if.

¿Qué diferencia hay entre una variable global y una variable local?


Las variables globales son accesibles para todos los procedimientos del programa, mientras que las variables locales sólo tienen validez dentro de un mismo procedimiento. Otra diferencia es que las variables globales hay que declararlas (es decir, tenemos que decirle a Netlogo al principio del programa que vamos a utilizar una variable global de cierto nombre, aunque el valor se lo asignemos posteriormente). Las variables locales, en cambio, no se declaran al principio del programa, sino que se crean y se les asigna un valor según se va necesitando a lo largo del programa.

Para declarar una variable global, utilizaremos la primitiva globals, y, entre corchetes, el nombre de las variables globales que vayamos a utilizar en nuestro programa:

globals [
variable_global_1
variable_global_2
variable_global_n ]

Para asignar un valor a una variable global, se utiliza la primitiva set (recuerda: la misma que se utilizaba para dar valores a las propiedades de los agentes):


set variable_global_1 5 ;; asignamos el valor 5 a la variable variable_global_1


Para asignar un valor a una variable local, por primera vez, se utiliza la primitiva let. Si a lo largo del mismo procedimiento debemos asignar un nuevo valor a esta variable, entonces utilizaremos la primitiva set:

let variable_local 5 ;; asignamos el valor 5 a la variable
;; comandos
set variable_local 7 ;; asignamos el valor 7 a la variable


Nota: Si recuerdas, en el ejercicio 8 ya utilizamos variables globales. Entonces dijimos que la variable “lado” era una variable global. Sin embargo, en aquel caso no la teníamos que declarar dentro del código del programa, ya que ésta quedaba definida dentro de un botón (input, slider, chooser), por lo que el programa se encargaba de declararla de forma interna.


Una vez hechas estas observaciones, comenzaremos a programar nuestro modelo. El código se muestra a continuación:


El código del procedimiento se muestra a continuación:

;; DECLARACIÓN DE VARIABLES GLOBALES
globals [n] ;; declaración de la variable global n (número de lados del polígono)

;: COMIENZA EL PROCEDIMIENTO
to comenzar
ca ;; borrar pantalla, variables, etc
crt 1 ;; creamos la tortuga que dibujará el polígono

;; asignamos un valor a n en función del número de lados del polígono elegido

if figura = "triángulo"
[
set n 3
]



if figura = "cuadrado"
[
set n 4
]

if figura = "pentágono"
[
set n 5
]

if figura = "hexágono"
[
set n 6
]


;; definimos el ángulo interior del polígono
let angulo 360 / n



;; dibujamos el polígono


ask turtles [repeat n [pd fd lado rt angulo]]
end



Observa la sintaxis de las sentencias condicionales if:
if condición
[
;; comandos
]


Si se cumple la condición que sigue a if, entonces se ejecutarán el conjunto de comandos que escribamos a continuación, entre corchetes. Si no se cumple, no se ejecutarán dichos comandos.

Nota: El hecho de emplear n como una variable global en este ejemplo es simplemente ilustrativo: ya que sólo existe un procedimiento en nuestro programa, podríamos haber utilizado una variable local en su lugar.
Una vez escrito el procedimiento, en la vista interfaz deberás introducir un botón que inicialice el procedimiento, una barra desplazadora para elegir el lado del polígono y un menú desplegable para elegir el polígono a dibujar, de la misma manera que lo hemos hecho en ejercicios anteriores.

Los valores de lado deberán ser 1, 2, 3, 4, 5 ó 6. Presta atención a la configuración del botón chooser. Las posibles opciones han de escribirse entre comillas:


Ejecuta el programa probando los distintos polígonos y tamaños.

1 comentario:

DP dijo...

Para evitar los problemas que pueden surgir al copiar el código del blog y pegarlo en Netlogo, puedes descargarte el archivo desde aquí: Ejercicio9