Skip to content
This repository has been archived by the owner on Feb 27, 2020. It is now read-only.

Le strutture di controllo in Lua

Marco Secchi edited this page Mar 24, 2017 · 8 revisions

Le strutture di controllo

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)

Ciclo while

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

Esempio su Repl.it

Nota: è possibile che il codice non venga mai eseguito.

Ciclo repeat/until

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.

Esempio su Repl.it

Controllo if

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

Esempio su Repl.it

Ciclo for

Un ciclo for viene ripetuto un numero predefinito di volte. Esistono due tipi di ciclo for:

  • numerico
  • generico

Ciclo for numerico

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).

Esempio su Repl.it

Ciclo for generico

Il ciclo for generico sfrutta delle funzioni chiamate iteratori, ad esempio ipairs():

for indice, valore in ipairs(tabella) do
    -- codice da eseguire
end

Esempio su Repl.it

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

Note

Innestare le strutture

Le strutture qui presentate possono essere innestate una all'interno dell'altra.

Interrompere un ciclo

Un ciclo può essere interrotto tramite il comando:

break

Loop infinito

E' possibile creare un ciclo (volutamente o per errore) che prosegue in modo indefinito.

Ad esempio:

while(true) do
  -- codice da eseguire
end

Esempio su Repl.it