La iteración y las claúsulas condicionales

Logo tiene algunas primitivas para tratar a una lista como una serie de instrucciones. La mayoría de estas primitivas puede ser categorizada en uno de estos dos grupos:

Nota: Hay otras primitivas que ejecutan instrucciones que no entran dentro de estos grupos. Por ejemplo, activa, esperahasta, porsiempre y lanza. Porsiempre, lanza y esperahasta también son tratadas en El manejo de los procesos.

El mando repite representa un ejemplo de una primitiva que permite ejecutar una instrucción en forma repetitiva.

repite 3 [escribe "hola]

Repite toma como primera entrada un número y, como segunda entrada, una lista para activar. Al igual que sucede con cualquier entrada, la lista-a-activar puede ser tanto una instrucción, como el valor de una variable, otro procedimiento o una primitiva. Por ejemplo:

da "mensaje [escribe "hola]
repite 3 :mensaje

Cumplelista y cumpleveces son otras de las primitivas que controlan la iteración. Estos mandos proveen iteración con alguna modificación.

Las claúsulas condicionales permiten ejecutar una instrucción siempre y cuando la condición sea cierta. Si representa el ejemplo de un mando que se utiliza para probar una condición.

si coory > 100 [fcolor "rojo]

Escriba la instrucción anterior en el Centro de Mando y presione la tecla Intro. Luego arrastre la tortuga hacia la parte de arriba de la página y ejecute de nuevo la instrucción.

Si toma dos entradas. La primera es una condición que devuelve cierto o falso; la segunda entrada es una lista de instrucciones. La lista de instrucciones para si es condicional; se ejecuta sólo si la condición se cumple.

Hay muchas primitivas que pueden ser usadas para crear condicionales. Este tipo de primitivas se llaman predicados.

Siotro es otro mando que prueba condiciones. Siotro toma tres entradas. De la misma forma que si, la primera entrada devuelve cierto o falso; mientras que su segunda entrada es una lista de instrucción a ejecutar si la condición es cierta. La tercera entrada es una lista de instrucción a ejecutar si la condición es falsa.

porsiempre [adelante 1]
porsiempre [siotro coory > 0 [fcolor "rojo] [fcolor "azul]]

Los dos mandos si y siotro pueden ser utilizados como reglas de detención. Una regla de detención tiene la siguiente forma:

Si se cumple una determinada condición, entonces se detiene el procedimiento.

La instrucción si en el siguiente procedimiento constituye un ejemplo de regla de detención:

para espiral :paso :ángulo :inc
si :paso > 200 [alto]
adelante :paso
derecha :ángulo
espiral :paso + :inc :ángulo :inc
fin

Alto es un mando que sirve para detener un procedimiento. Otros mandos con una función parecida son deténme, deténtodo y reporta.