Menu
CoddyTech

O Loop repeat-until

Parte da seção Fundamentos do Journey de Lua da Coddy. Lição 72 de 90.

Lua oferece outro tipo de laço chamado laço repeat-until, que tem uma característica única que o diferencia do laço while que você acabou de aprender. A principal diferença é que um laço repeat-until sempre executa seu bloco de código pelo menos uma vez, independentemente da condição.

A sintaxe é assim:

repeat
    -- código a ser repetido
until condition

Observe que a condição é verificada no final, depois que o código já foi executado uma vez. O loop continua se repetindo até que a condição se torne true — o que é o oposto de um loop while, que continua enquanto a condição é true.

Aqui está um exemplo prático que simula lançar um dado até obter um 6:

local roll = 0

repeat
    roll = math.random(1, 6) -- Sorteia um número entre 1 e 6
    print("Rolled:", roll)
until roll == 6

print("Finally got a 6!")

Esse loop garante que você jogue o dado pelo menos uma vez e continua jogando até que a condição roll == 6 se torne verdadeira. Esse comportamento de “executar primeiro, verificar depois” torna os loops repeat-until perfeitos para situações em que você precisa que algo aconteça pelo menos uma vez antes de decidir se deve continuar.

challenge icon

Desafio

Fácil

Você está criando uma simulação simples de validação de senha.

  1. Crie uma variável chamada password e defina-a como uma string vazia ("").
  2. Crie outra variável chamada correctPassword e defina-a como "secure123".
  3. Crie uma tabela chamada attempts que contenha as seguintes tentativas de senha nesta ordem:
    • "password"
    • "123456"
    • "admin"
    • "secure123"
  4. Crie uma variável chamada index e defina-a como 1. Você usará essa variável para acompanhar em qual tentativa está.
  5. Use um loop repeat-until para:
    • Atribuir a tentativa atual a password usando attempts[index]. Isso lê o item na posição index da tabela
    • Imprimir a password atual
    • Aumentar index em 1 (por exemplo, index = index + 1) para passar para a próxima tentativa
  6. O loop deve parar somente quando password for igual a correctPassword.

Cada vez que o loop é executado, ele lê uma tentativa da tabela, imprime essa tentativa e, em seguida, passa para a próxima. O loop continua até que a senha correta seja encontrada.

Experimente você mesmo

-- Inicialize as variáveis
local password = ""
local correctPassword = "secure123"

-- Lista de tentativas de senha
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1

-- TODO:
-- Use um loop repeat-until para:
-- 1. Atribuir a tentativa atual a password
-- 2. Exibir a senha testada
-- 3. Passar para a próxima tentativa
-- Pare quando password corresponder a correctPassword
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Compilador de Lua online