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

[RGSS/RGSS2]Cicli

Guida ai corsi dell'RGSS/RGSS2.

[RGSS/RGSS2]Cicli

Messaggioda Ally » 17/12/2009, 20:54

ImmagineClicca qui per ingrandire


Eccoci all'ultima lezione che spiega le basi dell'RGSS ^^
Vi ricordo che con queste lezioni non diventerete degli scripter,ma vi costruite delle basi su cui poter partire,e capirete anche,come funzionano gli script.

Bene.
In quest'ultima lezione,tratteremo l'argomento relativo ai cicli.

Cosa sono i cicli?
I cicli sono 'strutture' che consentono di ripetere lo stesso pezzo di codice più volte.

Cicli: loop
Iniziamo con una struttura fondamentale:il loop.
Il loop permette di creare un codice che verrà ripetuto di continuo.
Vediamo subito un esempio pratico:
 Codice: Seleziona tutto
var = 1
loop do
print var
var += 1
end

Se utilizziamo questo codice,visualizzeremo una finestra con valori sempre diversi.
Ovviamente,possiamo anche rompere il ciclo in qualsiasi momento:
 Codice: Seleziona tutto
var = 1
loop do
print var
if var == 10
break
else
var += 1
end
end

Fondamentalmente,questo codice valuterà ogni volta,se la variabile ha il valore 10.
Se lo fa,richiama poi il comando 'break'(pausa),che interromperà il ciclo.
In caso contrario,aggiunge un valore di 1 alla varibile.

Un'altra parola chiave è "next",che serve per interrompere il ciclo senza fermarlo del tutto. Praticamente il giro attuale si interrompe e il ciclo riprende dal giro successivo.
Per esempio qui faremo saltare il ciclo in cui var è 4 facendolo arrivare direttamente a 5:
 Codice: Seleziona tutto
var = 1
loop do
print var
if var == 10
break
else
if var == 3
var += 2
next
end
var += 1
end
end

In questo modo tutto quello che viene dopo "next" non viene eseguito e il ciclo continua normalmente col seguito.
P.S.: Avremmo potuto scrivere anche var += 1 al posto del 2 ed evitare il next, tanto il valore arriva lo stesso a 5.
Era però utile a livello di esempio fare in questo modo.

Possiamo prendere esempio anche qui,dai cicli di rpgmaker ^^

Cicli: while
Forse una delle strutture che mi piace di più :P
Prendete l'esempio del codice messo in loop,siamo in grado di ridurlo in questo modo:
 Codice: Seleziona tutto
var = 1
while var <= 10
print var
var += 1
end

Leggiamo quello che abbiamo fatto con il mini codice:
-mentre il valore della variabile è inferiore o uguale a 10,mostra il valore della variabile e aggiungi 1 al suo valore.

Cicli: until
Questo ciclo,potremmo definirlo come 'fino a..'.
Prendiamo l'esempio del codice postato su while,ma scriviamolo con until:
 Codice: Seleziona tutto
var = 1
until var == 11
print var
var += 1
end

Possiamo notare subito una differenza:il numero che ho utilizzato,è l'11.
Voi vi chiederete,perchè?
Per evitare possibili confusioni,possiamo dire che "until" è il contrario di "while" e,cioè,che mentre "while" continua il ciclo se la condizione ("var <= 10" in questo caso) risulta vera,"until" si ferma non appena la condizione è vera,quindi continua il ciclo mentre è falsa,quindi quando il valore arriverà a 11,il codice dentro il ciclo non verrà più eseguito,in quanto la condizione è vera(discorso contort?XD)
Se avessimo messo "var <= 10",sarebbe stata vera fin dall'inizio e il ciclo non sarebbe proprio partito.

Cicli: for
Il ciclo for, a differenza degli altri, viene eseguito per un numero di volte prestabilito, cioè definito come numero e non come condizione. Faccio un esempio:
 Codice: Seleziona tutto
for var in 1..10
print var
end

Vediamo di spiegare tutto in dettaglio.
"1..10" è il numero di volte che deve essere eseguito il codice,10 volte in questo caso.
"var" è una variabile che viene creata e gestita dal ciclo for.
Vediamo infatti che,all'interno del ciclo,viene usata senza essere stata prima creata e che manca il codice per farla aumentare di valore;se eseguiamo il codice, però, darà gli stessi risultati che hanno dato gli altri cicli.
Ad ogni giro, quindi, il ciclo for assegna alla variabile "var" il numero del giro,in questo caso specifico (vedremo gli altri casi).
Il valore di "var" sarà perciò prima 1 poi 2 poi 3 fino ad arrivare a 10.
Potevamo anche mettere altri numeri, ad esempio "5..20" e, sarebbe partita da 5 fino ad arrivare a 20. Possiamo usare anche numeri negativi, ma l'importante è che il secondo deve essere maggiore del primo.
Da notare che il 10 dell'esempio viene eseguito. Se mettiamo tre puntini anzichè due (potete vedere molti esempi negli script), l'ultimo numero non viene eseguito e il ciclo si ferma a 9. Questa cosa è utile soprattutto in casi del genere:
 Codice: Seleziona tutto
array = ["1º Valore", "2º Valore", "3º Valore", "4º Valore"]
for i in 0..array.size - 1
  print array[i]
end

"array.size" restituisce 4, cioè il numero di elementi dentro l'array. Noi sappiamo però che gli elementi degli array vanno dal numero 0 al numero 3 e quindi il 4 che ci viene restituito deve essere scalato di 1. Possiamo usare i tre puntini in questo modo:
 Codice: Seleziona tutto
array = ["1º Valore", "2º Valore", "3º Valore", "4º Valore"]
for i in 0...array.size
  print array[i]
end

e ottenere lo stesso risultato.
In questo esempio abbiamo scritto "array" per far apparire la stringa contenuta. Con il ciclo for, però, possiamo usare un altro metodo:
 Codice: Seleziona tutto
array = ["1º Valore", "2º Valore", "3º Valore", "4º Valore"]
for valore in array
  print valore
end

così come:
 Codice: Seleziona tutto
for valore in ["1º Valore", "2º Valore", "3º Valore", "4º Valore"]
  print valore
end

La variabile "valore",anzichè il numero,conterrà in questo caso direttamente il valore di ogni elemento dell'array,che può essere passato come variabile (1° caso) o specificato direttamente (2° caso).


Bene,con questa lezione abbiamo finite di spiegare le basi per introdurvi nel mondo dell'RGSS ::P:
Vi ricordo che non è molto difficile imparare le basi,ma bisogna avere pazienza e voglia ^^
Vi lascio all'esercizio(che si son fatti sempre più difficili),sull'argomento :sorr3:

Esercizio 6:
- Dato l'array:
 Codice: Seleziona tutto
a = [4, 6, 7, 4, 7, 2]

creare un ciclo for che dimezzi i valori e li rimetta nell'array.
- Creare un ciclo a scelta le cui condizioni porteranno a non farlo eseguire (cioè scriverlo correttamente a livello di sintassi ma che anziche ciclare per un determinato numero di volte, dovrà ciclare esattamente 0 volte)



La lezione è stata scritta interamente da Ally e mikb89,pertanto,ne è vietata la copia senza l'autorizzazione da parte degli autori.
Copyright © [RGSS/RGSS2]Cicli 2011. All Rights Reserved.
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: [RGSS/RGSS2]Cicli

Messaggioda kekkorider » 17/12/2009, 22:29

quanto tempo che non si vedeva una lezione xD

bravu ally,domani me la leggo bene a modo :D
Avatar utente
kekkorider
Amministratore
Amministratore
 
Messaggi: 396
Iscritto il: 12/08/2009, 13:59
Grazie dati: 4 volte
Grazie ricevuti: 1 volte
Ruolo: Eventer
Progetto/i 2k/2k3: Valya - Eden Divide
Progetto/i XP: Restricted - Project 15

Re: [RGSS/RGSS2]Cicli

Messaggioda Ally » 18/12/2009, 17:11

Grazie =D
Le prossime lezioni saranno meno difficili xD
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 Scripting

SEO Search Tags

cicli for rgss      ciclo for next ripetuto non continuo      ciclo for rgss2      rgss while ciclo      print variables rgss2      cicli che si ripete rpg maker xp      rgss loop do      ciclo loop rgss

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

cron