Menu
Coddy logo textTech

Il ciclo repeat-until

Fa parte della sezione Fondamenti del percorso Lua di Coddy. Lezione 72 di 90.

Lua offre un altro tipo di ciclo chiamato ciclo repeat-until, che ha una caratteristica unica che lo distingue dal ciclo while che hai appena imparato. La differenza principale è che un ciclo repeat-until esegue sempre il suo blocco di codice almeno una volta, indipendentemente dalla condizione.

La sintassi è questa:

repeat
    -- codice da ripetere
until condition

Nota che la condizione viene controllata alla fine, dopo che il codice è già stato eseguito una volta. Il ciclo continua a ripetersi finché la condizione non diventa true - il che è l'opposto di un ciclo while, che continua finché la condizione è true.

Ecco un esempio pratico che simula il lancio di un dado finché non esce un 6:

local roll = 0

repeat
    roll = math.random(1, 6) -- Genera un numero casuale tra 1 e 6
    print("Rolled:", roll)
until roll == 6

print("Finally got a 6!")

Questo ciclo garantisce che lancerai i dadi almeno una volta e continua a farlo finché la condizione roll == 6 non diventa vera. Questo comportamento «esegui prima, controlla dopo» rende i cicli repeat-until perfetti per le situazioni in cui hai bisogno che accada qualcosa almeno una volta prima di decidere se continuare.

challenge icon

Sfida

Facile

Stai creando una semplice simulazione di convalida della password.

  1. Crea una variabile chiamata password e impostala su una stringa vuota ("").
  2. Crea un’altra variabile chiamata correctPassword e impostala su "secure123".
  3. Crea una tabella chiamata attempts che contenga i seguenti tentativi di password, in ordine:
    • "password"
    • "123456"
    • "admin"
    • "secure123"
  4. Crea una variabile chiamata index e impostala su 1. La userai per tenere traccia del tentativo corrente.
  5. Usa un ciclo repeat-until per:
    • Assegnare il tentativo corrente a password usando attempts[index]. In questo modo leggi dalla tabella l’elemento nella posizione index.
    • Stampare la password corrente.
    • Aumentare index di 1 (ad esempio, index = index + 1) per passare al tentativo successivo.
  6. Il ciclo dovrebbe interrompersi solo quando password è uguale a correctPassword.

Ogni volta che il ciclo viene eseguito, legge un tentativo dalla tabella, lo stampa e poi passa al successivo. Il ciclo continua finché non trova la password corretta.

Provalo tu

-- Inizializza le variabili
local password = ""
local correctPassword = "secure123"

-- Elenco dei tentativi di password
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1

-- TODO:
-- Usa un ciclo repeat-until per:
-- 1. Assegnare al tentativo corrente il testo esatto delle istruzioni
-- 2. Stampare la password tentata
-- 3. Passare al tentativo successivo
-- Fermarsi quando password corrisponde a correctPassword
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Lua online