Ciao a tutti! Mi scuso per il ritardo, e approfitto del tempo libero derivato dal mio piccolo infortunio per riprendere le lezioni sul Lua a partire da uno degli argomenti più importanti del linguaggio stesso: le strutture di controllo. Per poter comprendere appieno la lezione consiglio di leggere/rileggere gli argomenti precedenti.
Introduzione:
"La vita è fatta di scale: c'è chi scende e c'è chi sale..."
Nella maggior parte dei programmi il codice non seguirà mai un andamento lineare. Occorrerà ripetere determinate istruzioni, oppure eseguirne altre solamente se si è in presenza di determinate condizioni. Ma come fare? La soluzione è utilizzare le strutture di controllo!
if:
Questa struttura di controllo permette di eseguire la porzione di codice che racchiude soltanto se verranno verificate determinate condizioni. La sintassi di questa struttura di controllo è:
if espressione then
-- inserisco qui il mio codice
end
Affinchè il blocco di codice racchiuso tra "if" ed "end" venga eseguito, "espressione" deve avere un valore diverso da "nil" o "false". Espressione puo essere qualsiasi cosa: una variabile, una chiamata a funzione o, addirittura, una vera e propria espressione aritmetica o logica.
Se volessimo eseguire del codice nel caso in cui l'espressione non risulti vera possiamo aggiungere un blocco "else" prima di "end":
if espressione then
-- questo codice viene eseguito solamente se l'espressione è valida
else
-- questo codice verrà eseguito solamente se l'espressione NON è valida
end
while:
A differenza di "if", questa struttura di controllo valuta un'espressione ed esegue continuamente il codice racchiuso al suo interno finchè risulterà valida:
while espressione do
-- attenzione, verrò eseguito fintanto che "espressione" non risulterà nil o false!
end
Attenzione, se non vorrete che il vostro programma "cada" all'interno di un loop infinito dovrete utilizzare un'espressione il cui valore potrà essere modificato direttamente dall'interno del ciclo while!
i = 0
while i < 20 do
i = i + 1 -- eseguito 20 volte, finchè i non sarà 20 e l'espressione darà come risultato false
end
Un'alternativa all'utilizzo di un'espressione "dinamica", per uscire da un ciclo potenzialmente infinito, è l'uso del comando "break". L'uso di break interromperà immediatamente il ciclo all'interno del quale viene utilizzato:
while true do
break -- termina il ciclo prematuramente (sarebbe stato un ciclo infinito!
end
for:
Il ciclo for si comporta in maniera simile al ciclo while, ma presenta una sintassi leggermente diversa che ne permette usi differenti:
for nome_variabile = valore_iniziale, valore_finale do
-- verrò eseguito, proprio come per while, finchè espressione risulterà vera
end
Ad inizio ciclo verrà inizializzata una variabile "temporanea" ad un valore iniziale. Il corpo del ciclo verrà ripetuto finchè la variabile temporanea non sarà pari al valore finale. Non preoccupatevi di incrementare la variabile temporanea dall'interno del ciclo. Lua lo farà direttamente per voi!
for i = 0, 20 do
-- verrò eseguito la bellezza di 20 volte!
end
Come per il ciclo while, sarà possibile interrompere l'esecuzione di un ciclo for semplicemente utilizzando il comando "break".
Esercizi:
-Esercizio 1: Realizzare un programma che inizializza una variabile di tipo stringa al valore di "". Finchè la stringa non sarà uguale ad "aaaaa" il programma dovrà concatenare alla variabile precedentemente creata il carattere "a" (per la concatenazione utilizzare l'operatore ".."). Utilizzare un ciclo iterativo.
-Esercizio 2: Realizzare un programma che inizializza una variabile di tipo stringa ad un valore a scelta. Il programma deve poi controllare se la stringa sarà uguale a "napco", "Ally", "Takobon" o "3xter". In caso affermativo, il programma dovrà stampare un messaggio opportuno, ed idem nel caso in cui la stringa sia diversa. Per realizzare il programma in modo ottimale si consiglia di utilizzare un annidamento di "if".
-Esercizio 3: Lavorate di fantasia creando un programma che sfrutta almeno due tra le strutture di controllo descritte in questa lezione (Possibilmente cercate di dare un senso al programma http://rpgmkr.net/fo...tyle_emoticons/default/xd.gif).
Toggle Chat
RM - Chat
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 - Strutture di controllo
Iniziato da
napco
, May 20 2010 08:18 PM
5 risposte a questa discussione
#1 OFFLINE
Inviato 20 May 2010 - 08:18 PM
Podi raggiunti
Spoiler
#2 OFFLINE
Inviato 20 May 2010 - 09:46 PM
Ottima lezione Brò! Come sempre!!
Ti ho fatto ritornare la "voglia"? http://rpgmkr.net/fo...tyle_emoticons/default/xd.gif
Ti ho fatto ritornare la "voglia"? http://rpgmkr.net/fo...tyle_emoticons/default/xd.gif
http://nexuseden.tumblr.com/
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
Spoiler
#3 OFFLINE
Inviato 20 May 2010 - 10:44 PM
Grazie! Si, dai (e un po' mi fa paura Ally...) http://rpgmkr.net/fo...tyle_emoticons/default/xd.gif
Podi raggiunti
Spoiler
#4 OFFLINE
Inviato 25 May 2010 - 12:14 AM
Gli esercizi,sono tutto riguardanto questa lezione?
Spoiler
#5 OFFLINE
Inviato 25 May 2010 - 12:45 PM
Riguardano questa e le lezioni precedenti ^^ Forse però li ho fatti un pochino tosti...
Podi raggiunti
Spoiler
#6 OFFLINE
Inviato 25 May 2010 - 01:08 PM
Credo un pochino,ma se trovo difficoltà,lo espongo ^^
Spoiler
1 utente(i) stanno leggendo questa discussione
0 utenti, 1 ospiti, 0 utenti anonimi














