Jump to content
Rpg²S Forum
  • 0

Alcune delucidazioni


Blaze Razgriz
 Share

Question

ok, come da topic, necessito di alcune delucidazioni,

il comando return so che viene utilizzato per uscire da un metodo, e quello che viene scritto dopo return è il valore che viene dato a quel metodo, quindi se abbiamo il seguente metodo

 

def boh(larghezza,altezza)

a = larghezza*altezza

return a

end

 

praticamente il return, non solo interrompe il metodo, ma dà il valore di "a" a Boh, sbaglio?

 

in un metodo, è possibile usare variabili di classe come argomenti? se per esempio

 

class Palloncini

@colore=6

@brillantezza=7

def Tipodipalloncino(@colore,@brillantezza)

unless @brillantezza<=@colore

@brillantezza +=1

print "diventa più brillante!"

else

print "è brillante abbastanza"

return (e qui, cosa potrei scriverci? e perchè?)

end

 

sto return mi dà un sacco di problemi di comprensione, so a cosa serve ma in alcuni casi non so proprio cosa fare.

 

grazie in anticipo. ^^

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Mi piace che tu stia imparando ad usare gli script quindi ti voglio aiutare ^^

Allora 1: return come dici tu ritorna uno ed un solo valore(sempre se vuoi altrimenti puoi non mettercelo e non ti ritorna nulla) questo valore viene restituito quando richiami il metodo.

se per esempio io adesso facessi a = boh(5,4) dentro ad a andrebbe a finire 20

 

2)Il passaggio di parametri va fatto con variabili locali, altrimenti che senso avrebbe passargliele se gia le può leggere da se?

cerca di non usare troppe variabili d'istanza(quelle con la @) a meno che non ti servano per tutta la classe.

Il return non va messo per forza, lo devi mettere solo se ti serve il ritorno di un valore o se vuoi uscire prima dal metodo, che ne so faccio un esempio stupido:

 

def divisione(n,d)

if d == n

return 1

end

return n/d

end

 

In questo caso se io chiamassi divisione(5,5) il metodo mi restituirebbe direttamente 1 senza neanche farmi l'operazione (ovviamente è molto più comodo fargli fare l'operazione e basta ma era un esempio)

 

invece un esempio di return per uscire dal metodo anticipatamente può essere

 

def prova(a,b)

if a == b

return

end

a = a-b

a = a*a

end

 

in questo caso se a e b sono uguali il metodo finisce anticipatamente e ti ritorna il nulla

altrimenti continua e fa le sue operazioni

 

Mi rendo conto che spiego male però se non capisci qualcosa o hai altri dubbi chiedi io ti rispondo ^^

( non subito perchè ho problemi con il pc :( )

Link to comment
Share on other sites

  • 0

nono ho capito tutto, GRAZIE! :D

sto facendo esercizi riguardanti le classi, del tipo

 

class Umano

def initialize(capelli,occhi,mani,piedi)

@arti = mani+piedi

@capelli = capelli

@occhi = occhi

@dita = (mani+piedi)*5

end

 

def arti

return @arti

end

def capelli

return @capelli

end

def occhi

return @occhi

end

def dita

return @dita

end

end

 

 

paolo=Umano.new("Neri","Castani",2,2)

francesco=Umano.new("Castani","Celesti",2,2)

paolo.arti

paolo.capelli

paolo.occhi

paolo.dita

francesco.arti

francesco.capelli

francesco.occhi

francesco.dita

print paolo.capelli

print paolo.occhi

print francesco.capelli

print francesco.occhi

 

il print l'ho messo come auto verifica, ho notato che se io, cerco di printare direttamente una variabile di istanza che ne so, @capelli, mi dà nil, invece (come è logico che sia) quando printo l'istanza relativa al metodo capelli (print palo.capelli) mi dà la risposta esatta, cioè Neri, questo ovviamente perchè ho ritornato il risultato della variabile al metodo capelli. ho capito tutto il meccanismo, ma vorrei un ulteriore delucidazione sul perchè, perchè quel nil, ci sono vicino ma mi sfugge... attendo risposta :D grazie in anticipo.

Link to comment
Share on other sites

  • 0

be se fai print @capelli fuori dalla classe ( cio dopo class Umano ) è ovvio che ti da nil ( nulla, vuoto o come la vuoi interpretare tu ) poichè le variabili d'istanza sono globali solo per quella classe se invece vuoi un variabile globale che tutti possono leggere indiscriminatamente devi sostituire @ con $.

Mi piace che tu ti cimenti in questa impresa, hai già studiato qualche linguaggio di programmazione?

Se si stai un passo vanti in quanto alla fine si somigliano tutti, se invece fai come me che te lo impari dal nulla è un po più difficile ma si può comunque fare XD

 

Se hai altri problemi esponili pure mi raccomando ^^

Link to comment
Share on other sites

  • 0

Scusate se m'intrometto, ma visto che mi sembrate tutti e due piuttosto ferrati, e siccome ho un paio di dubbi da chiarire, vorrei evitare di aprire un nuovo topic... spero che a Blaze non dispiaccia. ^^

 

Usando l'RGSS2:

1) è possibile utilizzare ovunque le contrazioni tipo questa (riprendo la classe "divisione" di Sleeping Leonhart):

 

def divisione(n,d)

return ( n == d ? 1 : n/d)

end

 

Io le ho viste usate solo per chiamare dei metodi, ma se fosse possibile usarle ovunque sarebbe mooolto utile...

 

2) è possibile usare la ricorsione all'interno di un metodo? Per esempio una cosa del genere può funzionare?

 

def prova (a)

if a > 1

return (prova(a-1))

else

return 1

end

end

 

Questo perché sebbene i cicli for, while, ecc. siano molto comodi, ho notato che sono anche molto "pesanti", specie se nidificati. Se fosse possibile sarebbe utile poter usare le ricorsioni al loro posto...

 

3) Ho letto che Sleeping Leonhart dice di evitare di usare le variabili d'istanza @. Come mai? Io le ho sempre trovate molto comode, usando quelle si può evitare di passare i valori tramite metodo.

 

Scusate se vi ho scassato, sono un po' ignorante in materia... :biggrin:

Screen Contest (by Sakura & Shuuchan):

http://rpg2s.net/gif/SCContest3Oct.gif http://rpg2s.net/gif/SCContest3Oct.gif http://rpg2s.net/gif/SCContest2Oct.gif

 

http://i67.servimg.com/u/f67/13/37/20/58/th/gc_r2s10.gif

Bacheca Premi

http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_grafica3.gif http://www.rpg2s.net/gif/GC_grafica1.gif http://www.rpg2s.net/gif/GC_programmazione3.gif http://www.rpg2s.net/gif/GC_programmazione1.gif http://www.rpg2s.net/gif/GC_musica2.gif http://www.rpg2s.net/gif/GC_bestoftool1.gif

 

http://www.rpg2s.net/gif/GC_premio3.gif 3° classificato "Premio BS"

 

http://www.rpg2s.net/gif/GC_premio3.gif 3° classificato "Premio innovazione"

 

http://www.rpg2s.net/gif/GC_grafica3.gif 3° classificato "Miglior Grafica in assoluto"

 

http://www.rpg2s.net/gif/GC_grafica1.gif 1° classificato "Miglior Grafica RmVX"

 

http://www.rpg2s.net/gif/GC_programmazione3.gif 3° classificato "Miglior Programmazione in assoluto"

 

http://www.rpg2s.net/gif/GC_programmazione1.gif 1° classificato "Miglior Programmazione RmVX"

 

http://www.rpg2s.net/gif/GC_musica2.gif 2° classificato "Miglior Colonna Sonora"

 

http://www.rpg2s.net/gif/GC_bestoftool1.gif 1° classificato "Miglior Gioco RmVX"

http://i87.servimg.com/u/f87/13/37/20/58/banner10.png

Scarica la demo ver. 0.2:

RTP non incluse (19 MB) - richiede RMVX ver. 1.02 - Download

Versione completa (52 MB) - Download

Link to comment
Share on other sites

  • 0

Se a Sleeping Leonhart non dispiace posso rispondere io ad alcune domande di shuuchan...

 

1) Le contrazioni si possono usare ovunque c'è da ricordare però che contrazioni di quel tipo sono limitate a una sola istruzione (quella che hai postato è un "If compresso") e non possono quindi essere usate per gestire blocchi di istruzioni più complessi

 

2)Nessuno vieta la ricorsione dove è possibile, è questione di scelta ricorda però che se con i cicli hai un problema di lentezza con la ricorsione presenti un problema di memoria che dipende direttamente dal numero di volte che effettui la ricorsione

 

3)Spero di non fare una gaff nella risposta a questo punto, variabili di istanza (o di classe) restano vive finchè esiste l'istanza della classe e va quindi a occupare memoria. Se si abusa delle variabili di istanza si finisce per occupare memoria inutilmente (andando ad appesantire l'esecuzione del programma (o del gioco in questo caso) per evitare ciò è spesso più utile utilizzare variabili temporanee di metodo che esistono solo per il breve momento di esecuzione del metodo.

per l'uso delle variabili c'è da tenere conto di questi piccoli accorgimenti:

 

- Variabile Globale (da usare il meno possibile) solo se deve essere accessibile ovunque nel programma

- Variabile di Classe solo se strettamente necessario per la definizione della classe stessa (solitamente sono quelle variabili che vanno a definire la classe)

- Variabili temporanee sono utilizzabili ovunque e hanno vita molto breve (si usano spesso all'interno di metodi per i calcoli al volo)

 

Spero che sia tutto chiaro (e se sbaglio correggetemi)

Edited by Nemius Loireag

http://team.ffonline.it/imgpersonaggio/vincent_it.jpg

Progetto in preparazione:

Dead God Tales

Tool: RPG Maker VX

Post del Progetto: Dead God Tales

Demo: Demo - Dead God Tales

Screenshot: Nel Post del Progetto

Link to comment
Share on other sites

  • 0
umh ho capito il perchè ora, cmq Sleeping Leonhart, sono nella tua stessa barca, in quanto nn conosco altri linguaggi di programmazzione :D, piano piano mi sto esercitando e fidati, che avere qualcuno a cui chiedere (voi) è veramente una manna dal cielo, cmq shuuchan non preoccuparti :D tanto sempre di ruby si parla ^^ anzi dai tuoi dubbi e dalle risposte di nemius ne ho ricavato altro sapere :D grazie ragazzi ^^
Link to comment
Share on other sites

  • 0

Grazie a voi! ^^

Ci vorrebe un bel topic in cui si parla SOLO ed esclusivamente di problemi tipo questi: altro che tutorial, si imparerebbero un sacco di cose nel giro di 4 o 5 post...

 

@Nemius: ma allora sei davvero un Signor Scripter!! ^^

Allora ne approfitto: riprendendo la mia domanda n° 2), a questo punto ho un altro dubbio --> se con i cicli ho problemi di di lentezza e con le ricorsioni di memoria, cosa conviene usare? Da quel che ho capito RPGVX usa un bel po' di risorse (sia a livello di processore che di memoria)...

Altra cosa riguardo le variabili: è possibile nell'RGSS2 assegnare delle variabili "a riferimento"? (non so se mi sono spiegato: intendo delle variabili in cui non venga "inserito" un determinato valore, ma che facciano "riferimento" ad un valore in memoria, con una specie di "puntatore", dimodoché se modifico quel valore in memoria, modifico anche il contenuto della variabile che vi fa riferimento... oddio, che casino, :wink: spero che si riesca a capire cosa intendo...).

Screen Contest (by Sakura & Shuuchan):

http://rpg2s.net/gif/SCContest3Oct.gif http://rpg2s.net/gif/SCContest3Oct.gif http://rpg2s.net/gif/SCContest2Oct.gif

 

http://i67.servimg.com/u/f67/13/37/20/58/th/gc_r2s10.gif

Bacheca Premi

http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_grafica3.gif http://www.rpg2s.net/gif/GC_grafica1.gif http://www.rpg2s.net/gif/GC_programmazione3.gif http://www.rpg2s.net/gif/GC_programmazione1.gif http://www.rpg2s.net/gif/GC_musica2.gif http://www.rpg2s.net/gif/GC_bestoftool1.gif

 

http://www.rpg2s.net/gif/GC_premio3.gif 3° classificato "Premio BS"

 

http://www.rpg2s.net/gif/GC_premio3.gif 3° classificato "Premio innovazione"

 

http://www.rpg2s.net/gif/GC_grafica3.gif 3° classificato "Miglior Grafica in assoluto"

 

http://www.rpg2s.net/gif/GC_grafica1.gif 1° classificato "Miglior Grafica RmVX"

 

http://www.rpg2s.net/gif/GC_programmazione3.gif 3° classificato "Miglior Programmazione in assoluto"

 

http://www.rpg2s.net/gif/GC_programmazione1.gif 1° classificato "Miglior Programmazione RmVX"

 

http://www.rpg2s.net/gif/GC_musica2.gif 2° classificato "Miglior Colonna Sonora"

 

http://www.rpg2s.net/gif/GC_bestoftool1.gif 1° classificato "Miglior Gioco RmVX"

http://i87.servimg.com/u/f87/13/37/20/58/banner10.png

Scarica la demo ver. 0.2:

RTP non incluse (19 MB) - richiede RMVX ver. 1.02 - Download

Versione completa (52 MB) - Download

Link to comment
Share on other sites

  • 0

Beh non mi definisco uno scripter anche perchè Ruby non lo conosco così bene (mi ci sto avvicinando da poco) però sono un programmatore che sa sviluppare in Java e altri linguaggi, per questo ti so rispondere....

 

2) Il fatto se usare o meno un ciclo o una ricorsione dipende unicamente dal numero di volte che devi eseguire quelle istruzioni...

di base se è sempre un numero limitato (e piccolo) di volte (e quindi di cicli) meglio usare la ricorsione per maggiore velocità

se il numero di cicli è fisso in base al fatto se è un numero di cicli piccoli o meno puoi decidere a scelta di usare ricorsione o cicli (meglio i For)

se il numero di cicli è variabile e imprecisato di solito è meglio usare cicli while volendo nessuno vieta, in caso di cicli nidificati, di fare un mix di ricorsione e di cicli tenendo conto di quando si usa uno e quando l'altro...

 

Sinceramente non conosco così bene Ruby per risponderti sui puntatori, però trattandosi di programmazione ad oggetti di solito i puntatori non si usano proprio..

http://team.ffonline.it/imgpersonaggio/vincent_it.jpg

Progetto in preparazione:

Dead God Tales

Tool: RPG Maker VX

Post del Progetto: Dead God Tales

Demo: Demo - Dead God Tales

Screenshot: Nel Post del Progetto

Link to comment
Share on other sites

  • 0
Sinceramente non conosco così bene Ruby per risponderti sui puntatori, però trattandosi di programmazione ad oggetti di solito i puntatori non si usano proprio..

 

Grazie comunque, anche per le risposte sulla ricorsione! ^^

É bello poter contare su qualcuno che conosce anche altri linguaggi...

Ancora, grazie mille.

Screen Contest (by Sakura & Shuuchan):

http://rpg2s.net/gif/SCContest3Oct.gif http://rpg2s.net/gif/SCContest3Oct.gif http://rpg2s.net/gif/SCContest2Oct.gif

 

http://i67.servimg.com/u/f67/13/37/20/58/th/gc_r2s10.gif

Bacheca Premi

http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_grafica3.gif http://www.rpg2s.net/gif/GC_grafica1.gif http://www.rpg2s.net/gif/GC_programmazione3.gif http://www.rpg2s.net/gif/GC_programmazione1.gif http://www.rpg2s.net/gif/GC_musica2.gif http://www.rpg2s.net/gif/GC_bestoftool1.gif

 

http://www.rpg2s.net/gif/GC_premio3.gif 3° classificato "Premio BS"

 

http://www.rpg2s.net/gif/GC_premio3.gif 3° classificato "Premio innovazione"

 

http://www.rpg2s.net/gif/GC_grafica3.gif 3° classificato "Miglior Grafica in assoluto"

 

http://www.rpg2s.net/gif/GC_grafica1.gif 1° classificato "Miglior Grafica RmVX"

 

http://www.rpg2s.net/gif/GC_programmazione3.gif 3° classificato "Miglior Programmazione in assoluto"

 

http://www.rpg2s.net/gif/GC_programmazione1.gif 1° classificato "Miglior Programmazione RmVX"

 

http://www.rpg2s.net/gif/GC_musica2.gif 2° classificato "Miglior Colonna Sonora"

 

http://www.rpg2s.net/gif/GC_bestoftool1.gif 1° classificato "Miglior Gioco RmVX"

http://i87.servimg.com/u/f87/13/37/20/58/banner10.png

Scarica la demo ver. 0.2:

RTP non incluse (19 MB) - richiede RMVX ver. 1.02 - Download

Versione completa (52 MB) - Download

Link to comment
Share on other sites

  • 0
Mi spiace, non ne ho la più pallida idea... -_- ...forse gli altri lo sanno.

Screen Contest (by Sakura & Shuuchan):

http://rpg2s.net/gif/SCContest3Oct.gif http://rpg2s.net/gif/SCContest3Oct.gif http://rpg2s.net/gif/SCContest2Oct.gif

 

http://i67.servimg.com/u/f67/13/37/20/58/th/gc_r2s10.gif

Bacheca Premi

http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_grafica3.gif http://www.rpg2s.net/gif/GC_grafica1.gif http://www.rpg2s.net/gif/GC_programmazione3.gif http://www.rpg2s.net/gif/GC_programmazione1.gif http://www.rpg2s.net/gif/GC_musica2.gif http://www.rpg2s.net/gif/GC_bestoftool1.gif

 

http://www.rpg2s.net/gif/GC_premio3.gif 3° classificato "Premio BS"

 

http://www.rpg2s.net/gif/GC_premio3.gif 3° classificato "Premio innovazione"

 

http://www.rpg2s.net/gif/GC_grafica3.gif 3° classificato "Miglior Grafica in assoluto"

 

http://www.rpg2s.net/gif/GC_grafica1.gif 1° classificato "Miglior Grafica RmVX"

 

http://www.rpg2s.net/gif/GC_programmazione3.gif 3° classificato "Miglior Programmazione in assoluto"

 

http://www.rpg2s.net/gif/GC_programmazione1.gif 1° classificato "Miglior Programmazione RmVX"

 

http://www.rpg2s.net/gif/GC_musica2.gif 2° classificato "Miglior Colonna Sonora"

 

http://www.rpg2s.net/gif/GC_bestoftool1.gif 1° classificato "Miglior Gioco RmVX"

http://i87.servimg.com/u/f87/13/37/20/58/banner10.png

Scarica la demo ver. 0.2:

RTP non incluse (19 MB) - richiede RMVX ver. 1.02 - Download

Versione completa (52 MB) - Download

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...