Dos minutos con el lenguaje Logo

Logo es un lenguaje, hoy en día anticuado, que durante un tiempo se consideró muy adecuado para introducir en la programación a niños de corta edad.

Uno de los factores a su favor era la facilidad para crear "gráficos de tortuga": un robot con forma de tortuga y con un lápiz acoplado iba dibujando sobre un papel, respondiendo a las órdenes del usuario. En versiones posteriores, esta "tortuga" se convirtió en una "flecha" que se desplazaba por la pantalla.

Por ejemplo, esta es la apariencia del intérprete de Logo creado en Javascript por Joshua Bell:

Logo 01 - entorno

En la parte inferior de la pantalla se escriben las órdenes. Por ejemplo, para decir que avance 90 unidades en pantalla, usaríamos "forward 90":

Logo 01 - forward 90

Y para decir que gire 45 grados hacia la derecha (en el sentido de las agujas del reloj) utilizaríamos "right 45":

Logo 01 - right 45

Con cuatro pares de secuencias como esas, podríamos dibujar un cuadrado que tuviera 100 unidades de lado:

Logo 01 - cuadrado

(De forma similar, con la orden "left" nuestra tortuga giraría a la izquierda, y con "clean" borraríamos la pantalla).

En la mayoría de versiones de Logo, las órdenes se pueden abreviar. Por ejemplo, "forward" se puede reducir a "fd" y "right" se abrevia "rt", así que lo anterior se podría conseguir escribiendo menos (a cambio de resultar menos legible) haciendo:

Pero en general lo más recomendable no es "teclear menos", sino indicar que las tareas repetitivas son simplemente una misma tarea que se repite. Para eso podemos usar la orden "repeat" e indicar cuantas veces debemos repetir (por ejemplo) 4, seguido del bloque a repetir, entre corchetes, así:

También podemos "dar un nombre" a una serie de pasos, creando así un "procedimiento". Por ejemplo, podemos crear un procedimiento llamado "estrella" que dibuje una estrella de 5 puntos, girando 144 grados tras cada segmento:

El "procedimiento" se declara precediéndolo con la palabra "to" (para), y termina con "end". Para ponerlo en marcha, basta indicar su nombre:

Logo 01 - estrella

Si no queremos que esa estrella se dibuje siempre con 120 unidades de lado, podemos usar una "variable", de modo que su valor pueda cambiar entre una llamada del procedimiento y la siguiente. Por ejemplo, podemos crear un tríangulo cuyo lado no esté prefijado haciendo:

(Para indicar que algo no es una orden, sino una variable, se debe preceder su nombre por un símbolo de "dos puntos", como en ":lado"). Para dibujar un triángulo de lado 80 haríamos:

Logo 01 - triángulo

Pero podemos "rizar el rizo" un poco más: si tras dibujar cada segmento, giramos y dibujamos un segmento algo más grande, obtendremos una espiral:

(Se puede cambiar el valor de una variable usando "make", y precediendo su nombre por un único símbolo de comillas dobles)

Si ahora pedimos una espiral de lado 20 (con "espiral 20"), aparecerá:

Logo 01 - espiral

Todas esas pruebas están realizadas usando el intérprete de Logo en Javascript, creado por Joshua Bell.

Si no te basta con imágenes estáticas, este video recoge todo el proceso "casi en tiempo real":

(Por Nacho Cabanes, 2012)