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 conditionNota 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.
Sfida
FacileStai creando una semplice simulazione di convalida della password.
- Crea una variabile chiamata
passworde impostala su una stringa vuota (""). - Crea un’altra variabile chiamata
correctPassworde impostala su"secure123". - Crea una tabella chiamata
attemptsche contenga i seguenti tentativi di password, in ordine:"password""123456""admin""secure123"
- Crea una variabile chiamata
indexe impostala su1. La userai per tenere traccia del tentativo corrente. - Usa un ciclo
repeat-untilper:- Assegnare il tentativo corrente a
passwordusandoattempts[index]. In questo modo leggi dalla tabella l’elemento nella posizioneindex. - Stampare la
passwordcorrente. - Aumentare
indexdi 1 (ad esempio,index = index + 1) per passare al tentativo successivo.
- Assegnare il tentativo corrente a
- Il ciclo dovrebbe interrompersi solo quando
passwordè uguale acorrectPassword.
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 correctPasswordQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori 2: relazionali e logici
Operatori di uguaglianzaOperatori relazionaliL'operatore 'and'L'operatore 'or'L'operatore 'not'Valutazione short-circuitValori truthy e falsyRiepilogo: logica semplice7Logica condizionale di base
L'istruzione if-thenL'istruzione if-then-elseL'istruzione elseifRiepilogo - Il forziere del tesoro2Variabili e tipi di dati
Che cos'è una variabile?NumeriStringheValori booleaniIl valore 'nil'La funzione type()Convenzioni di denominazioneRiepilogo - Profilo del personaggio5Output di base
Stampare valori letteraliStampare variabiliStampare più valoriCombinare stringhe e variabiliLa funzione tostring()InputCastRipasso - Rapporto di statoRipasso - Fino a 1208Basi della manipolazione delle stringhe
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Riepilogo - Formatta il nome utente3Operatori 1: aritmetica e concatenazione
Operatori aritmeticiOperatore moduloOperatore di elevamento a potenzaConcatenazione di stringhePrecedenza degli operatoriRipasso: calcoli semplici6Progetto: visualizzazione delle statistiche del personaggio
Messaggio di benvenutoDichiara le statistiche del personaggio9Funzioni: nozioni di base
Dichiarare una funzioneChiamare una funzioneFunzioni con parametriFunzioni con più parametriL'istruzione 'return'Ripasso - Calcolatore di area12Fondamenti dei cicli
Il ciclo whileIl ciclo repeat-untilIl ciclo for numericoCiclo for con un passoL'istruzione 'break'Riepilogo - conto alla rovesciaEsercitati da solo: Compilatore Lua online