Vai al contenuto


Toggle Chat RM - Chat Apri la Chat in un popup

E' severamente vietato richiedere supporto su RPG Maker in chat!
@  NoxChibi : (18 May 2012 - 01:54 PM) http://rpgmkr.net/fo...4025#entry24025
@  Abadon : (18 May 2012 - 10:08 AM) saaalveee
@  Melosx : (17 May 2012 - 09:51 PM) Cambiato Avatar,,, premete CTRL + F5 se vedete ancora Roxas ^.^
@  NoosiTD : (17 May 2012 - 08:42 PM) evvai
@  kekkorider : (17 May 2012 - 08:40 PM) @NoosiTD eccoti accontentato
@  Melosx : (17 May 2012 - 08:30 PM) E7: Astral Ocean è bellisimo... e come lo subbavano i Nostrano non lo subba nessuno... devo vedere gli anime magic se sono buoni o no
@  NoosiTD : (17 May 2012 - 08:26 PM) e voglio i risultati del contest
@  NoosiTD : (17 May 2012 - 08:24 PM) Il problema è che non ne ho mai capito un accidenti
@  NoosiTD : (17 May 2012 - 08:24 PM) lo guardavo anch'io E7
@  Melosx : (17 May 2012 - 08:23 PM) non puoi capire...
@  Melosx : (17 May 2012 - 08:23 PM) un capolavoro distrutto
@  NoosiTD : (17 May 2012 - 08:21 PM) ma calmino
@  Melosx : (17 May 2012 - 08:21 PM) minchia quanto sono incazato
@  Melosx : (17 May 2012 - 08:20 PM) devo provare l'ultimo che riamane
@  Melosx : (17 May 2012 - 08:20 PM) gli altri subber subbano a cachio di cane morto
@  Melosx : (17 May 2012 - 08:20 PM) gli omoshiroi ci stanno secoli per subbare quegli episodi... oltretutto sbagliano pure il nome di una ragazza
@  Melosx : (17 May 2012 - 08:19 PM) subbato come si deve??
@  Melosx : (17 May 2012 - 08:19 PM) dove lo scarico ora E7:AO
@  Melosx : (17 May 2012 - 08:19 PM) ma chissene di soul eater
@  NoosiTD : (17 May 2012 - 08:17 PM) io facevo così quando mi accorgevo che Soul Eater era finito

2 - Strutture di controllo


  • Per cortesia connettiti per rispondere
5 risposte a questa discussione

#1 OFFLINE   napco

napco

    Maker Viandante

  • Utenti RM
  • 205 Messaggi:
  • LocalitàMarte
  • Tool:
    C(++)ervello

Inviato 20 May 2010 - 08:18 PM

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).
Podi raggiunti
Spoiler

#2 OFFLINE   Takobon

Takobon

    Recensori

  • Recensori
  • 415 Messaggi:
  • Tool:
    VS+C#+Xna(Con i quali nascerà Inferdaen)

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
http://nexuseden.tumblr.com/Immagine inseritaSono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
Spoiler

#3 OFFLINE   napco

napco

    Maker Viandante

  • Utenti RM
  • 205 Messaggi:
  • LocalitàMarte
  • Tool:
    C(++)ervello

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   Ally

Ally

    Fondatori

  • Amministratori
  • 5558 Messaggi:
  • Localitàrpgmkr
  • Ruolo:
    Scripter
  • Progetto VX:
    Essence
  • Tool:
    RM2k/2k3

Inviato 25 May 2010 - 12:14 AM

Gli esercizi,sono tutto riguardanto questa lezione?
Immagine inserita
Spoiler

#5 OFFLINE   napco

napco

    Maker Viandante

  • Utenti RM
  • 205 Messaggi:
  • LocalitàMarte
  • Tool:
    C(++)ervello

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   Ally

Ally

    Fondatori

  • Amministratori
  • 5558 Messaggi:
  • Localitàrpgmkr
  • Ruolo:
    Scripter
  • Progetto VX:
    Essence
  • Tool:
    RM2k/2k3

Inviato 25 May 2010 - 01:08 PM

Credo un pochino,ma se trovo difficoltà,lo espongo ^^
Immagine inserita
Spoiler




1 utente(i) stanno leggendo questa discussione

0 utenti, 1 ospiti, 0 utenti anonimi