Ciclos
repetir sobre rangos y listas, mientras, continuar y romper.
repetir recorre rangos y listas. El rango 1..6 cuenta de 1 a 5 (el final no se incluye), y |nombre| da nombre al valor de cada vuelta:
repetir (1..6) |numero|
imprimir(numero)
repetir (frutas) |fruta, indice|
imprimir("${indice}: ${fruta}")
Para repetir algo un número de veces basta con escribir la cantidad. Un rango solo cuenta hacia adelante; para contar hacia atrás o a saltos se le añade paso:
repetir (3)
imprimir("¡Hola!")
repetir (3..0, paso = -1) |i|
imprimir(i) // 3, 2, 1
repetir (0..10, paso = 2) |i|
imprimir(i) // 0, 2, 4, 6, 8
mientras repite mientras la condición sea verdadera. Para sumar o restar basta con +=, -=, *=, /= y %=:
var vidas = 3
mientras vidas > 0
vidas -= 1
repetir sin nada es un ciclo infinito. continuar salta a la siguiente vuelta y romper termina el ciclo más cercano.
Programa completo
// Repetir acciones con repetir y mientras.
fn inicio()
// Con un número, repetir hace eso mismo esa cantidad de veces.
repetir (3) imprimir("¡Hola!")
// Un rango cuenta desde el primer número hasta antes del segundo.
imprimir("Cuenta del 1 al 5:")
repetir (1..6) |numero|
imprimir(numero)
// Si el cuerpo es corto, puede ir en la misma línea.
imprimir("Cuenta atrás:")
repetir (3..0, paso = -1) |numero| imprimir(numero)
imprimir("¡Despegue!")
// repetir también recorre listas.
var frutas = ["manzana", "pera", "uva"]
repetir (frutas) |fruta, indice|
imprimir("${indice}: ${fruta}")
// Y recorre un texto letra por letra.
repetir ("sol") |letra|
imprimir(letra)
// continuar salta a la siguiente vuelta; romper termina el bucle.
imprimir("Números pares hasta encontrar uno mayor que 8:")
repetir (1..100) |numero|
si numero % 2 != 0
continuar
si numero > 8
romper
imprimir(numero)
// mientras repite mientras la condición sea verdadera.
// x += 1 es lo mismo que x = x + 1 (también hay -=, *=, /= y %=).
var vidas = 3
mientras vidas > 0
imprimir("Vidas: ${vidas}")
vidas -= 1
// Sin rango ni lista, repetir es infinito: sal con romper.
var intentos = 0
repetir
intentos += 1
si intentos == 3
romper
imprimir("Intentos: ${intentos}")