Alato Posted December 3, 2006 Share Posted December 3, 2006 Allora, vediamo.Questo ? il primo abbozzo del Laboratorio, un posto in cui gli utenti possono lavorare su piccolli script proposti dall'insegnante di turno e in generale fare esercizio. Era un po' che pensavo di aprirlo ma mi mancava un argomento da cui partire: vista l'assenza, almeno per ora, di una lezione che spieghi l'utilizzo degli Array, proprio questi saranno il nostro primo argomento!Il Grado 1 sta ad indicare il livello che bisogna avere per partecipare, poich? questo ? un servizio esclusivo per gli Studenti del Campus. Laboratorio di RGSS - Array e Ciclo forOra cercher? di darvi una breve infarinatura dei concetti di base per poter metterci subito al lavoro.Concetti di base"Un array (o matrice) ? un gruppo di locazioni di memoria che hanno lo stesso nome e si distinguono le une dalle altre attraverso un indice" questa ? la sua definizione.Ma andiamo ad analizzarne il significato: considerando che le variabili sono etichette associate a locazioni di memoria, si capisce che gli array in pratica sono un insieme di variabili con lo stesso nome.Per poterle distinguere l'una dall'altra si utilizza un indice che viene inserito all'interno di due parentesi quadre subito dopo il nome. L'indice parte da 0 e va aumentando.Vediamo questo esempio: @array[0] = 10Che cosa abbiamo fatto? @array ? un array, e abbiamo inserito il valore 10 nella suo primo elemento. Ogni elemento funziona esattamente come una qualunque variabile.Quindi: @array[0] @array[1] @array[2]sono tutte considerabili come variabili differenti accomunate dallo stesso nome.Probabilmente vi starete chiedendo perch? bisogna utilizzarli se funzionano esattamente come le variabili: ora non ? chiaro perch? abbiamo pochi elementi, ma immaginate di avvere un array con migliaia di elementi, la comodit? di poterli richiamare semplicemente tramite un indice ? enorme!Per creare un array ci sono diversi modi: @array = [] @array = Array.newQuesti creano un array generico, insomma non sappiamo qual ? il numero di elementi e cosa contengono.Possiamo invece scrivere: @array = [10, 15, 20]per ottenere un array di tre elementi che contengono rispettivamente i valori 10, 15 e 20.Continuando sulla falsariga di quest'ultimo esempio, immaginiamo di voler stampare il contenuto dei tre elementi dell'array. print @array[0] print @array[1] print @array[2]Come vedete l'indice parte sempre da 0 e non da 1, quindi se volete richiamare il secondo elemento dell'array dovete mettere un 2 tra le quadre.Ora pensate che ci sono comandi che permettono di fare la stessa azione 'n' volte: capirete che potrete in poche righe applicare un comando a centinaia di elementi di un array.Uno di questi comandi, il pi? comodo per questo utilizzo, ? il for. @array = [] for i in 0..3 @array[i] = 10 * i endAnalizziamo questo pezzettino di codice: il for ? un ciclo che ripete l'azione contenuta tra for ed end e ad ogni giro aumenta la variabile i di 1, variabile che si pu? utilizzare per qualunque operazione. Questo lo fa partendo dal primo numero dopo l'in fino al numero dopo i puntini: in questo caso quindi parte da 0 e va fino a 3.ATTENZIONE: non lasciatevi ingannare dallo zero, il ciclo viene ripetuto 4 volte e non 3 come sembrerebbe a prima vista; infatti i valori di i ad ogni giro saranno 0, 1, 2 e 3 quindi il ciclo far? 4 giri.In questo caso ? possibile fare la stessa operazione senza utilizzare for: @array = [] @array[0] = 10 * 0 @array[1] = 10 * 1 @array[2] = 10 * 2 @array[3] = 10 * 3In questo caso gli elementi erano solo quattro, ma se per esempio fosse stato for i in 0.. 2700 evidentemente sarebbe stato impossibile farlo senza l'utilizzo degli array e di for.Un po' d'esercizioInvito chi gi? conosceva l'argomento ad evitare di partecipare, per dare spazio a chi ha pi? bisogno di aiuto. Col passare del tempo baster? controllare il Grado ma per ora conto sul vostro buonsenso. ;POra proviamo a fare qualcosa, cominciando da qualcosa di semplice:Create 5 diversi array ognuno con un nome di un attributo: Forza, Destrezza, Agilita(non metteteci l'accento che non lo accetta), Intelligenza e Costituzione.Ovviamente cercate nel limite del possibile di fare da soli, altrimenti ? tempo perso. ^^ o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Sclero Fritz Posted December 3, 2006 Share Posted December 3, 2006 Create 5 diversi array ognuno con un nome di un attributo: Forza, Destrezza, Agilita(non metteteci l'accento che non lo accetta), Intelligenza e Costituzione. ecco, i nomi... ma come/dove devo metterlo il nome? XD @arrayDestrezza, @array.destrezza, @destrezza.array... oppure semplicemente al posto di array mettiamo il nome e dopo le [n] tipo @Destrezza = [n] o @Destrezza = Array.new? Per il resto, è tutto chiaro il ciclo di for lo conosco piuttosto bene, non servono spiegazioni su quello :b XD http://img221.imageshack.us/img221/7225/minilogoew1.pnghttp://img406.imageshack.us/img406/9168/plingbannerbx6.gif Link to comment Share on other sites More sharing options...
Zerathul Posted December 3, 2006 Share Posted December 3, 2006 Oltre a quotare sclero e ringraziare per la lezione, vorrei chiedere una cosa....cosa significa "10 * i" oppure " 10 * 2"? inserisci il valore 10 in quella cella di memoria dell'array? se così fosse, in @array[1] = 10 * 1, se tra parentesi quadre c'era già 1, che bisogno c'è di ripeterlo dopo *? O_______________________________________________________O(metà delle cose che fanno le faccio anch'io zizi) (sto qua invece è un mostro....) Link to comment Share on other sites More sharing options...
Alato Posted December 3, 2006 Author Share Posted December 3, 2006 Per quanto riguarda i nomi: @array era un nome qualsiasi, potete metterci quello che vi pare. @pippo = [] @pluto = [] ... Non dovete assolutamente usare il '.' e per quanto riguarda le regole sui nomi utilizzabili sono le stesse relative alle variabiliRispondendo a Zerathul, quel 10 * i significa "dieci moliplicato per i" quindi ad ogni giro cambiando i cambia anche il valore inserito nell'elemento dell'array. Infatti nella versione "svolta" in ognuno ho messo il valore che ha i all'interno dell'indice. o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Sclero Fritz Posted December 3, 2006 Share Posted December 3, 2006 ok, grazie. Penso di aver capito. Provo a fare l'interrogazione B adesso ;) http://img221.imageshack.us/img221/7225/minilogoew1.pnghttp://img406.imageshack.us/img406/9168/plingbannerbx6.gif Link to comment Share on other sites More sharing options...
Zerathul Posted December 3, 2006 Share Posted December 3, 2006 (edited) Per quanto riguarda i nomi: @array era un nome qualsiasi, potete metterci quello che vi pare. @pippo = [] @pluto = [] ... Non dovete assolutamente usare il '.' e per quanto riguarda le regole sui nomi utilizzabili sono le stesse relative alle variabiliRispondendo a Zerathul, quel 10 * i significa "dieci moliplicato per i" quindi ad ogni giro cambiando i cambia anche il valore inserito nell'elemento dell'array. Infatti nella versione "svolta" in ognuno ho messo il valore che ha i all'interno dell'indice.Ok grazie ho capito....al posto del valore numerico si può inserire una variabile? Il numero tra [ ] può essere a de sempio " i-1 " ? Edited December 3, 2006 by Zerathul O_______________________________________________________O(metà delle cose che fanno le faccio anch'io zizi) (sto qua invece è un mostro....) Link to comment Share on other sites More sharing options...
Lord Bel Posted December 3, 2006 Share Posted December 3, 2006 si. ~ R²S ~ - '°•o Realizing Random Scrips o•°' Link to comment Share on other sites More sharing options...
Alato Posted December 4, 2006 Author Share Posted December 4, 2006 Sì, però l'esercitazione proseguiva, chi vuole partecipare lo faccia. ;O; o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Maverik Posted December 6, 2006 Share Posted December 6, 2006 Questa cosa sembra abbastanza semplice cosi com'è spiegata (thx alato ^^) quindi se ho ben capito dovrebbe essere: @Forza = [] for i in 0..99 @Forza[i] = 3 + i end @Destrezza = [] for i in 0..99 @Destrezza[i] = 2 + i end @Abilita = [] for i in 0..99 @Abilita[i] = 2 + i end @Inteligenza = [] for i in 0..99 @Inteligenza[i] = 2 + i end @Costituzione = [] for i in 0..99 @Costituzione[i] = 5 + i end Ora so che da 0 a 99 in base all'array ho che per ogni valore cambia il risultato!Non so se mi sono spiegato comunque spero sia tutto corretto e di aver capito! ^^ The Italian Scripter Teamhttp://img57.imageshack.us/img57/654/istminibannerqe2wo7.jpg<[blake]> (e le giustificazioni, se serve, le falsifico)<Iryka> bravo ma questo e warez Link to comment Share on other sites More sharing options...
Alemix Posted December 6, 2006 Share Posted December 6, 2006 piccolo dubbio io ho capito che gli array sono delle variabili che contengono un valore, però gli array non sono delle variabili. Ok come hai detto forse ora non ne se ne capisce la differenza però a me sembrano identiche, poi la cosa più complicata è questo (cioè quella che non ho capito) se te fai @array=1+i per un ciclo for non riesco a capire cosa aumenta cioè aumenta 1 2 3 4 5 ecc.. fino a che non finisce il for oppure prende la variabili da qualche parte perchè mi sa che non ho capito un passaggio e ora non so quanto può valere! http://img212.imageshack.us/img212/7639/betaew0.jpg Progetti in fase di costruzione: Guida all'uso di RPG MAKER XP link Link to comment Share on other sites More sharing options...
DaD Posted December 6, 2006 Share Posted December 6, 2006 piccolo dubbio io ho capito che gli array sono delle variabili che contengono un valore, però gli array non sono delle variabili. Ok come hai detto forse ora non ne se ne capisce la differenza però a me sembrano identiche, poi la cosa più complicata è questo (cioè quella che non ho capito) se te fai @array=1+i per un ciclo for non riesco a capire cosa aumenta cioè aumenta 1 2 3 4 5 ecc.. fino a che non finisce il for oppure prende la variabili da qualche parte perchè mi sa che non ho capito un passaggio e ora non so quanto può valere!Non ho capito molto di quello che hai detto comunque ...A differenza delle variabili gli array al loro interno contegono piu' di un valore, infatti come tu saprai una variabile può contenere un solo valore che può essere elaborato durante il programma ma di certo non aggiunto ad un altro.L'array quindi metaforicamente è un contenitore come le variabili che però possono contenere piu' valori al suo interno. for i in 0..3 @array[i] = 10 * i endIn pratica moltiplico la i[index] per 10 per 4 volte fino a che il ciclo non si conclude.Non capisco cosa tu voglia dire con questo; "oppure prende la variabili da qualche parte perchè mi sa che non ho capito un passaggio e ora non so quanto può valere!" Cioè non hai capito dove prende il valore i[index]? la i è una variabile normale che viene inserita all'interno dell'array (@array), e poi viene moltiplicata per 10 volte tutto qua ... TPC Radio Site | Blog | Big-Bughttp://img102.imageshack.us/img102/4332/slackware2userbarok0.gifhttp://img141.imageshack.us/img141/1571/nokappams1cf8.png http://i29.tinypic.com/2vijdlh.jpg Link to comment Share on other sites More sharing options...
Alemix Posted December 6, 2006 Share Posted December 6, 2006 grazie dad per la spiegzione ma io intendevo solamente dire che la i fa da contatore cioè ogni volta che si va il ciclo aumenta di uno cioè, perchè almeno capisco meglio scrivere il for in c++ cioè for(i=0;i=3;i++)oppure scrivere in Rubyfor i in 0. .3 la i è la stessa cosa giusto?spero di essermi spiegato bene questa volta http://img212.imageshack.us/img212/7639/betaew0.jpg Progetti in fase di costruzione: Guida all'uso di RPG MAKER XP link Link to comment Share on other sites More sharing options...
DaD Posted December 7, 2006 Share Posted December 7, 2006 Forse sono io duro di comprendonio ma ... non capisco cosa vuoi dire OoChe intendi dire con "La i è la stessa cosa?" Oo TPC Radio Site | Blog | Big-Bughttp://img102.imageshack.us/img102/4332/slackware2userbarok0.gifhttp://img141.imageshack.us/img141/1571/nokappams1cf8.png http://i29.tinypic.com/2vijdlh.jpg Link to comment Share on other sites More sharing options...
Alemix Posted December 7, 2006 Share Posted December 7, 2006 allora diciamola così i aumenta ad ogni ciclo o no? http://img212.imageshack.us/img212/7639/betaew0.jpg Progetti in fase di costruzione: Guida all'uso di RPG MAKER XP link Link to comment Share on other sites More sharing options...
DarkSchneider Posted December 7, 2006 Share Posted December 7, 2006 ... Ora pensate che ci sono comandi che permettono di fare la stessa azione 'n' volte: capirete che potrete in poche righe applicare un comando a centinaia di elementi di un array.Uno di questi comandi, il più comodo per questo utilizzo, è il for.@array = [] for i in 0..3 @array[i] = 10 * i end Analizziamo questo pezzettino di codice: il for è un ciclo che ripete l'azione contenuta tra for ed end e ad ogni giro aumenta la variabile i di 1, variabile che si può utilizzare per qualunque operazione. Questo lo fa partendo dal primo numero dopo l'in fino al numero dopo i puntini: in questo caso quindi parte da 0 e va fino a 3.ATTENZIONE: non lasciatevi ingannare dallo zero, il ciclo viene ripetuto 4 volte e non 3 come sembrerebbe a prima vista; infatti i valori di i ad ogni giro saranno 0, 1, 2 e 3 quindi il ciclo farà 4 giri. ... si la i aumenta ad ogni ciclo The Lotus Eater Link to comment Share on other sites More sharing options...
Keroro Posted December 7, 2006 Share Posted December 7, 2006 [suggerimento]per qualcosa di piu' creativo potete fare le stats come successioni, cioe' fissati 1 o piu' semi (aka valori base) definite la vostra funzione @str = Array.new @str[0]= 5 for j in 1..99 @str[j] = @str[j-1]+j*7 end I Miei Script:Salva Schermata (3 Aprile 2012)Attacco Personalizzabile (2 Aprile 2012)Keyboard Input (Porting) (17 Marzo 2012)Continua... Link to comment Share on other sites More sharing options...
Alato Posted December 7, 2006 Author Share Posted December 7, 2006 Quello che dice Keroro è una possibile formula per la curva di apprendimento (utilizzando le successioni), poi ovviamente anche quelle di Maverick sono possibili formule anche se un po' più lineari. La mia idea era appunto di farvi partire da quegli array e tirar su qualche formula di battaglia, però volevo capire bene chi è che stava seguendo l'esercitazione.Mi pare che comunque i dubbi siano venuti fuori lo stesso e hanno ottenuto pronta risposta. :nn: Tra poco torno a proseguire l'esercitazione. o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Alemix Posted December 9, 2006 Share Posted December 9, 2006 @str = Array.new @str[0]= 5 for j in 1..99 @str[j] = @str[j-1]+j*7 endscusa ma str è una variabile giusto? e te gli dici per prima cosa che gli venga assegnato Array.new e che poi l'array valga 5 e poi gli dici per i=... e fin qua penso di averlo capito!però scusa ma il primo pasaggio non è inutile cioè non puoi partire con @str[0]= 5 e andare avanti? http://img212.imageshack.us/img212/7639/betaew0.jpg Progetti in fase di costruzione: Guida all'uso di RPG MAKER XP link Link to comment Share on other sites More sharing options...
Keroro Posted December 9, 2006 Share Posted December 9, 2006 non so se funziona anche senza la prima riga, cmq abitudine da programmatore, prima dichiarazione e poi assegnamento (o nella stessa riga) I Miei Script:Salva Schermata (3 Aprile 2012)Attacco Personalizzabile (2 Aprile 2012)Keyboard Input (Porting) (17 Marzo 2012)Continua... Link to comment Share on other sites More sharing options...
DaD Posted December 10, 2006 Share Posted December 10, 2006 Bon funge solo se si dichiara prima l'array quindi anche così @str = [], o come ha detto Kero :] TPC Radio Site | Blog | Big-Bughttp://img102.imageshack.us/img102/4332/slackware2userbarok0.gifhttp://img141.imageshack.us/img141/1571/nokappams1cf8.png http://i29.tinypic.com/2vijdlh.jpg Link to comment Share on other sites More sharing options...
DarkSchneider Posted December 10, 2006 Share Posted December 10, 2006 @str = [5] è l equivalente delle prime due righe The Lotus Eater Link to comment Share on other sites More sharing options...
Valn Posted July 14, 2007 Share Posted July 14, 2007 Vediamo se faccio una cosa giusta XD cmq @Forza = [20,15,10,10] for i in 0..3 @Forza[i] = @forza[i] / 5 end @Destrezza = [10,20,15,15] for i in 0..3 @Destrezza[i] = @Destrezza[i] / 5 end @Agilita = [5,20,10,15] for i in 0..3 @Agilita[i] = @Agilita[i] / 5 end @Intelligenza = [5,10,20,20] for i in 0..3 @Intelligenza[i] = @Intelligenza[i] / 5 end @Costituzione = [20,15,10,10] for i in 0..3 @Costituzione[i] = @Costituzione[i] / 5 end cn questo coso ho impostato le statistike dei quattro personaggi dovrebbero essere [guerriero,ladro,stregone,mago ke cura] poi le ho divise x 5 x ottenere un modificatore x quella caratteristica (so ke forse una semplice divisione è un pò banale x creare un modificatore x una caratteristica però nn sapevo ke mettere XD)va bn o ho fatto male tutto XD Link to comment Share on other sites More sharing options...
Alato Posted July 14, 2007 Author Share Posted July 14, 2007 Tecnicamente è ttto giusto, voglio dire lo script fnziona etc. Solamente ti dico che, in genere, viene utilizzato in modo differente. Nel senso che all'indice dell'array si fa corrispondere il livello del personaggio (quindi crei un array generico senza definirne subito il contenuto) poi si fa un ciclo for, dal livello più basso al più alto (es. 1..99) per inserire i valori all'interno dell'array, tramite una formula qualsiasi (tipo @str = 10 * i indica che a livello 73 avrà forza 730).Poi le differenze tra le classi le inserisci successivamente tramite dei modificatori. Ovvio che poi puoi organizzartela come ti pare, però questo è il metodo più comodo secondo me. ^^ o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Valn Posted July 14, 2007 Share Posted July 14, 2007 si ho capito cosa vuoi dire questo lo ho fatto solo x provare a fare qualcosa di diverso se mi viene qualcosa in mente ne creo un altro qnd secondo te ho recepito bn il significato dall'array? Link to comment Share on other sites More sharing options...
Goofy ! Posted February 28, 2008 Share Posted February 28, 2008 Allora, ma bisogna essere iscritti in qualche lista per partecipare ??? Perchè io ho guardato ma mi pare che non ci sono topic di iscrizione. Comunque : #esercitazione con gli array #verranno valori sproporzionati, lol la 1°volta che maneggio uno script ! @ i == 5 @forza = [ ] for i in 0... 100 @array[i] = (10 * i) + 2 end @destrezza = [ ] for i in 0... 100 @array[i] = (10 * i) + 1 end @agilita = [ ] for i in 0... 100 @array[i] = (((10 * i) * 2) / 5) % end @intelligenza = [ ] for i in 0... 100 @array[i] = (10 - i) % 4 end @Costituzione = [ ] for i in 0... 100 @array[i] = (10 * i) + 1 end Io per prima cosa, seguendo la lezione II ho dato un valore alla variabile "i", e poi ho combinato un macello con gli operatori, non so se va bene . Link to comment Share on other sites More sharing options...
Recommended Posts