Cómo controlar la ejecución

Los controladores de la ejecución permiten, tal como su nombre indica, controlar la ejecución.

Las órdenes de control de la ejecución aparecen resaltadas en negro y con un tipo de letra negrita. Las llaves, que se usan generalmente junto con los controladores de ejecución, aparecen resaltadas en negro.

Cómo hacer que la tortuga espere

Si ya has programado algo en KTurtle, te habrás dado cuenta de que la tortuga es muy rápida dibujando. Con esta orden puede hacer que la tortuga se detenga durante un tiempo determinado.

esperar
esperar X

esperar hace que la tortuga se detenga durante X segundos.

repetir 36 {
  avanzar 5
  derecha 10
  esperar 0,5
}

Este código dibuja un circulo, pero la tortuga espera durante medio segundo antes de realizar el siguiente paso. Esto da la impresión de que la tortuga se está moviendo a cámara lenta.

Ejecutar si

si
si valor lógico { ... }

El código que está entre llaves solo se ejecutará si el valor lógico es «verdadero».

$x = 6
si $x > 5 {
  escribir $x + " es mayor que cinco"
}

En la primer línea, a $x se le asigna el valor 6. En la segunda, se usa un operador de comparación para evaluar la condición $x > 5. Al cumplirse esta condición, es decir, al ser 6 mayor que 5, el controlador si permite que el código entre llaves se ejecute.

Si no es así: «sino»

sino
si valor lógico { ... } sino { ... }

sino puede usarse en conjunción con el controlador si. El código que aparece entre llaves después de sino solo se ejecute si el valor lógico es «falso».

reiniciar
$x = 4
si $x > 5 {
  escribir $x + " es mayor que cinco"
}
sino {
  escribir $x + " es menor que seis"
}

El operador de comparación evalúa la expresión $x > 5. Ya que en este caso 4 no es mayor que 5, el resultado es «falso». Esto quiere decir que se ejecuta el código que aparece entre llaves después de sino.

El bucle «mientras»

mientras
mientras valor lógico { ... }

El controlador mientras actúa de forma similar a si. La diferencia es que mientras continúa ejecutando (en un bucle) el código que se encuentra entre llaves hasta que el valor lógico sea «falso».

$x = 1
mientras $x < 5 {
  avanzar 10
  esperar 1
  $x = $x + 1
}

En la primer línea, a $x se le asigna el valor 1. En la segunda, se evalúa la condición $x < 5. Mientras el resultado de esta condición sea «verdadero», el controlador while continúa ejecutando el código que se encuentra entre llaves, así hasta que la condición $x < 5 sea «falsa». En este ejemplo, el código entre llaves se ejecuta 4 veces, porque cada vez que la quinta línea se ejecuta, al valor de $x se le suma 1.

El bucle «repetir»

repetir
repetir número { ... }

El controlador repetir actúa de forma similar a mientras. La diferencia es que repetir continúa ejecutando (en un bucle) el código que se encuentra entre llaves tantas veces como le indica el número dado.

El bucle «para», un bucle que cuenta

para
para variable = número hasta número { ... }

El bucle para es un «bucle que cuenta», es decir, que lleva la cuenta por ti. El primer número asigna a la variable el valor del primer bucle. Con cada bucle, este número se incrementa hasta alcanzar el segundo número.

para $x = 1 hasta 10 {
  escribir $x * 7
  avanzar 15
}

Cada vez que se ejecute el código entre llaves, la variable $x se incrementa en 1, así hasta que sea igual a 10. El código entre llaves escribe el valor de $x multiplicado por 7. Cuando el código termine de ejecutarse, verás en el lienzo la tabla de multiplicar del 7.

El incremento predeterminado del bucle es 1, pero puedes usar otro valor con:

para variable = número hasta número paso número { ... }

Interrumpir un bucle

parar
parar

Interrumpe inmediatamente el bucle que se está ejecutando y transfiere el control a la primera línea de código después del bucle.

Interrumpir la ejecución de tu programa

salir
salir

Detiene la ejecución de tu programa.

Comprobación de afirmaciones en tiempo de ejecución

afirmar
afirmarvalor lógico { ... }

Se puede utilizar para razonar sobre la corrección del programa o de los datos de entrada

$in = ask "What is your year of birth?"
# el año debe ser positivo
assert $in 
> 0