Docencia: Estalmat - Sesiones NetLogo
La información que hay en esta página está orientada a los alumnos de 1º y 2º de Estalmat Sevilla, donde se imparten algunas sesiones dedicadas a iniciación a la programación usando LOGO (concretamente, en las sesiones usamos un derivado suyo llamado NetLogo). A lo largo de estas clases se usa un conjunto minimalista de instrucciones de este lenguaje con el que los alumnos pueden abordar distintos tipos de problemas y paradigmas de programación y que se especifican más abajo.
Descarga de NetLogo
El programa NetLogo se puede descargar gratuitamente de esta página:
https://ccl.northwestern.edu/netlogo/
Elementos básicos del lenguaje
Y a continuación mostramos las instrucciones básicas con las que trabajaremos en las sesiones para manejar tortugas:
Crear Tortugas: | crt n |
Mover: (avanzar/retroceder) |
fd / bk distancia |
Girar (izq/dcha): | lt / rt angulo |
Bajar/subir lapiz: | pd / pu |
Acciones: | to nombre-acción [parámetros] … instrucciones end |
Funciones: | to-report nombre-función [parámetros] … instrucciones end |
Repetir acciones: | repeat num-veces [ …acciones ] |
Pedir acciones a las tortugas: |
ask turtles [ …acciones ] |
Decisiones: | if condicion [acciones si SÍ] ifelse condicion [acciones si SÍ] [acciones si NO] |
Borrar todo: | ca |
Operaciones airtméticas: | + - * / n1 + n2, n1 - n2, ... |
Listas
Comandos Básicos sobre Listas:
Crear listas: | list 1 2 = [1 2] (list 1 2 3) = [1 2 3] |
Primer elemento: | first [1 2 3] = 1 |
Cola | but-first [1 2 3] = [2 3] (bf |
Último elemento: | last [1 2 3] = 3 |
Inicio: | but-last [1 2 3] = [1 2] (bl) |
Poner al principio: | fput “a” [1 2 3] = [“a” 1 2 3] |
Poner al final: | lput “a” [1 2 3] = [1 2 3 “a”] |
Acceder elemento: | item 0 [1 2 3] = 1 item 2 [1 2 3] = 3 |
Reemplazar elemento: | replace-item 1 [1 2 3] “a” = [1 “a” 3] |
Sublista: | sublist [“a” “b” “c” “d” “e”] 1 3 = [“b” “c”] |
Ejercicios Sesión I
Algunos ejercicios que se pueden hacer fácilmente con una tortuga y los fundamentos del lenguaje:
- Preparando el mundo para dibujar con tortugas.
- Dibujo de polígonos:
- Directamente.
- Definiendo procedimientos.
- Con parámetros de entrada.
- Dibujo de circunferencias y arcos de circunferencia.
- Ejercicios de composición de procedimientos (ver propuestas más abajo).
- Introducción a la recursión.
- Ejercicios de cálculo numérico sencillo: máximo, soluciones de una parábola, primalidad,…
- Recursión numérica aplicada al cálculo de funciones numéricas sencillas: suma, factorial,…

Ejercicios Sesión II
- 1) Haz un procedimiento que haga que todos los patches cambien a un color. Conceptos explicados:
ask
patches
pcolor
constantes de colores
set
- 2) Los patches cambian a B/N dependiendo de la posición que ocupan. Conceptos explicados:
with [...]
pxcor, pycor
Se propone jugar con combinaciones y operaciones matemáticas con las coordenadas:
mod, +
- 3) Haz un procedimiento que haga que todos los patches cambien a B/N aleatoriamente. Conceptos explicados:
one-of
listas constantes
- 4) Ahora que los patches cambien a B/N según la cantidad de vecinos que tienen de cada color. Conceptos explicados:
let
count
neighbors (topología del toro)
if, ifelse
- 5) Introducir la ejecución por pasos. Conceptos explicados:
- Poner el modo de ejecución en `on ticks`.
- Añadir `tick` al procedimiento anterior.
- Poner un procedimiento como `setup`.
- Añadir botones para facilitar la ejecución.
- Explicar el botón `forever`.
- 6) Igual, pero ahora haciendo uso de listas de color de cambio. Conceptos explicados:
item
- 7) Crear listas de valores. Conceptos explicados:
n-values
- 8) Utilizando las listas, vamos a hacer el mismo procedimiento, pero ahora haciendo uso de una lista (regla) generada al azar.
- 9) Variables globales. Hasta ahora la regla de cambio es distinta en cada ejecución, así que vamos a introducir el concepto de variable global. Conceptos explicados:
globals [ ... ]
Se pasa la generación de la regla a una función propia: `crea-regla`.
- 10) Hablar del Paralelismo. En realidad, los patches ejecutan las cosas secuencialmente... vamos a implementar un comportamiento que sea igual que el paralelismo. Añadir nuevas propiedades a los patches. Conceptos explicados:
patches-own [ ... ]
- 11) Añadir el centro como parte del vecindario.
- 12) Enriquecer el interfaz de usuario. Añadir un monitor para mostrar la regla-global. Añadir un plot para contar cuántos hay negros.
- 13) Las reglas dependen de la situación del patch. Modificar todo para dar un comportamiento distinto dependiendo de si el patch está vivo o muerto:
to Reglas-GoL
set regla-negros [white white black black white white white white white]
set regla-blancos [white white white black white white white white white]
end
- 14) Autómatas con más colores (estados).
- 15) Saltar a 1D. Explicar la notación 0/1, y las reglas numeradas.