Menu
CoddyTech

El bucle repeat-until

Parte de la sección Fundamentos del Journey de Lua de Coddy. Lección 72 de 90.

Lua ofrece otro tipo de bucle llamado bucle repeat-until, que tiene una característica única que lo distingue del bucle while que acabas de aprender. La diferencia clave es que un bucle repeat-until siempre ejecuta su bloque de código al menos una vez, independientemente de la condición.

La sintaxis es así:

repeat
    -- código que se debe repetir
until condition

Observa que la condición se comprueba al final, después de que el código ya se haya ejecutado una vez. El bucle sigue repitiéndose hasta que la condición se vuelve true - lo cual es lo contrario de un bucle while, que continúa mientras la condición sea true.

Aquí tienes un ejemplo práctico que simula tirar un dado hasta obtener un 6:

local roll = 0

repeat
    roll = math.random(1, 6) -- Genera un número aleatorio entre 1 y 6
    print("Rolled:", roll)
until roll == 6

print("Finally got a 6!")

Este bucle garantiza que tirarás el dado al menos una vez y sigue tirándolo hasta que la condición roll == 6 se cumpla. Este comportamiento de «ejecutar primero y comprobar después» hace que los bucles repeat-until sean perfectos para situaciones en las que necesitas que algo ocurra al menos una vez antes de decidir si continuar.

challenge icon

Desafío

Fácil

Estás creando una simulación sencilla de validación de contraseñas.

  1. Crea una variable llamada password y asígnale una cadena vacía ("").
  2. Crea otra variable llamada correctPassword y asígnale "secure123".
  3. Crea una tabla llamada attempts que contenga los siguientes intentos de contraseña en orden:
    • "password"
    • "123456"
    • "admin"
    • "secure123"
  4. Crea una variable llamada index y asígnale 1. La usarás para llevar la cuenta del intento actual.
  5. Usa un bucle repeat-until para:
    • Asigna el intento actual a password usando attempts[index]. Esto lee el elemento en la posición index de la tabla.
    • Imprime la password actual.
    • Aumenta index en 1 (por ejemplo, index = index + 1) para pasar al siguiente intento.
  6. El bucle debe detenerse solo cuando password sea igual a correctPassword.

Cada vez que se ejecuta el bucle, lee un intento de la tabla, lo imprime y después pasa al siguiente. El bucle continúa hasta encontrar la contraseña correcta.

Pruébalo tú mismo

-- Inicializa las variables
local password = ""
local correctPassword = "secure123"

-- Lista de intentos de contraseña
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1

-- TODO:
-- Usa un bucle repeat-until para:
-- 1. Asignar el intento actual a password
-- 2. Imprimir la contraseña probada
-- 3. Pasar al siguiente intento
-- Detenerse cuando password coincida con correctPassword
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Lua online