Non sei registrato? Registrati subito cliccando QUI! E utilizza tutte le funzionalita' del sito!

2 - Strutture di controllo

Breve corso sul linguaggio di programmazione Lua, attraverso l'utilizzo della console interattiva e di LOVE,un nuovissimo tool per la creazione di applicazioni/giochi in 2D.

2 - Strutture di controllo

Messaggioda napco » 20/05/2010, 20:18

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 XD).
Podi raggiunti: | +
ImmagineClicca qui per ingrandireImmagineClicca qui per ingrandireImmagineClicca qui per ingrandire
Avatar utente
napco
Maker Viandante
Maker Viandante
 
Messaggi: 205
Iscritto il: 24/11/2009, 16:55
Località: Marte
Grazie dati: 0 volte
Grazie ricevuti: 0 volte
Ruolo: Scripter
Tool Preferito: C(++)ervello

Re: 2 - Strutture di controllo

Messaggioda Takobon » 20/05/2010, 21:46

Ottima lezione Brò! Come sempre!!
Ti ho fatto ritornare la "voglia"? xD
http://nexuseden.tumblr.com/

ImmagineClicca qui per ingrandire

Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:

NightEngine | +
Character System
   80%

Tile System
   38%

Battle System
   0%

Script System
   0%

Particle System
   0%

Physics System
   0%
Avatar utente
Takobon
Recensori
Recensori
 
Messaggi: 407
Iscritto il: 02/11/2009, 18:17
Grazie dati: 3 volte
Grazie ricevuti: 18 volte
Ruolo: Eventer
Tool Preferito: VS+C#+Xna(Con i quali nascerà Inferdaen)

Re: 2 - Strutture di controllo

Messaggioda napco » 20/05/2010, 22:44

Grazie! Si, dai (e un po' mi fa paura Ally...) XD
Podi raggiunti: | +
ImmagineClicca qui per ingrandireImmagineClicca qui per ingrandireImmagineClicca qui per ingrandire
Avatar utente
napco
Maker Viandante
Maker Viandante
 
Messaggi: 205
Iscritto il: 24/11/2009, 16:55
Località: Marte
Grazie dati: 0 volte
Grazie ricevuti: 0 volte
Ruolo: Scripter
Tool Preferito: C(++)ervello

Re: 2 - Strutture di controllo

Messaggioda Ally » 25/05/2010, 0:14

Gli esercizi,sono tutto riguardanto questa lezione?
ImmagineClicca qui per ingrandire
Spoiler: mostra
Figlio Illegittimo n°001 della:
ImmagineClicca qui per ingrandire
Avatar utente
Ally
Fondatori
Fondatori
 
Messaggi: 5354
Iscritto il: 09/08/2009, 16:07
Località: Genova
Grazie dati: 127 volte
Grazie ricevuti: 121 volte
Ruolo: Scripter
Progetto/i VX: Essence
Tool Preferito: RM2k/2k3

Re: 2 - Strutture di controllo

Messaggioda napco » 25/05/2010, 12:45

Riguardano questa e le lezioni precedenti ^^ Forse però li ho fatti un pochino tosti...
Podi raggiunti: | +
ImmagineClicca qui per ingrandireImmagineClicca qui per ingrandireImmagineClicca qui per ingrandire
Avatar utente
napco
Maker Viandante
Maker Viandante
 
Messaggi: 205
Iscritto il: 24/11/2009, 16:55
Località: Marte
Grazie dati: 0 volte
Grazie ricevuti: 0 volte
Ruolo: Scripter
Tool Preferito: C(++)ervello

Re: 2 - Strutture di controllo

Messaggioda Ally » 25/05/2010, 13:08

Credo un pochino,ma se trovo difficoltà,lo espongo ^^
ImmagineClicca qui per ingrandire
Spoiler: mostra
Figlio Illegittimo n°001 della:
ImmagineClicca qui per ingrandire
Avatar utente
Ally
Fondatori
Fondatori
 
Messaggi: 5354
Iscritto il: 09/08/2009, 16:07
Località: Genova
Grazie dati: 127 volte
Grazie ricevuti: 121 volte
Ruolo: Scripter
Progetto/i VX: Essence
Tool Preferito: RM2k/2k3


Torna a Programmare in Lua

SEO Search Tags

cicli lua      ciclo for in .lua      ciclo for in lua      ciclo if lua      lua cicli for do      rpg ciclo while      lua ciclo for do      lua ciclo for            ciclo for lua

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti