-
Notifications
You must be signed in to change notification settings - Fork 10
Le strutture di controllo in Lua
Una struttura di controllo permette di decidere se e quante volte una parte di codice viene eseguita.
Lua fornisce le seguenti strutture di controllo:
- while/do/end
- repeat/until
- if/then/(elseif/then)/(else)/end
- for (in due versioni)
Un ciclo while prosegue fino a che una determinata condizione ha valore true.
Sintassi:
while(condizione) do
-- codice da eseguire
end
Quando la condizione diventa falsa, il programma passa direttamente al codice che segue end
Nota: è possibile che il codice non venga mai eseguito.
Un ciclo repeat/until è simile al precedente (while), ma il controllo viene eseguito dopo che il blocco di codice è stato eseguito.
Sintassi:
repeat
-- codice da eseguire
until (condizione)
Nota: il codice viene sempre eseguito almeno una volta.
La struttura if permette di eseguire o non eseguire una parte di codice a seconda delle condizioni imposte.
Sintassi:
if (condizione_1) then
-- codice da eseguire
elseif (condizione_2) then
-- codice da eseguire
...
elseif (condizione_n) then
-- codice da eseguire
else
-- codice da eseguire
end
Un ciclo for viene ripetuto un numero predefinito di volte. Esistono due tipi di ciclo for:
- numerico
- generico
Il ciclo numerico ripete un blocco di codice secondo una progressione numerica.
Sintassi:
for variabile = valore_iniziale, valore_finale, passo do
-- codice da eseguire
end
Gli elementi valore_iniziale, valore_finale e passo vengono calcolati all'inizio del ciclo e non variano.
Se il valore passo non viene inserito, viene utilizzato un valore pari a 1.
La variabile può essere utilizzata all'interno del blocco (è quindi un valore locale).
Il ciclo for generico sfrutta delle funzioni chiamate iteratori, ad esempio ipairs():
for indice, valore in ipairs(tabella) do
-- codice da eseguire
end
Un altro esempio è pairs(), simile al precedente, ma che itera su una coppia chiave, valore:
for chiave, valore in pairs(tabella) do
-- codice da eseguire
end
Le strutture qui presentate possono essere innestate una all'interno dell'altra.
Un ciclo può essere interrotto tramite il comando:
break
E' possibile creare un ciclo (volutamente o per errore) che prosegue in modo indefinito.
Ad esempio:
while(true) do
-- codice da eseguire
end
Introduzione allo Sviluppo di Progetti Videoludici - 2017 - marcosecchi.it