Differenze tra le versioni di "Scrivere una Funzione"

Da Gambas-it.org - Wikipedia.
Riga 23: Riga 23:
 
  '' <FONT color=#006500>' La routine Funzione contiene il proprio nome ed i parametri come variabili dei valori passati dalla routine chiamante,
 
  '' <FONT color=#006500>' La routine Funzione contiene il proprio nome ed i parametri come variabili dei valori passati dalla routine chiamante,
 
  '' ' e non prevede l'aggiunta della parola ''Sub''.
 
  '' ' e non prevede l'aggiunta della parola ''Sub''.
  '' ' Essa, poiché restituisce - in questo nostro esempio - un valore Integer, termina la dichiarazione con: As Integer.</font>
+
  '' ' Essa, poiché restituisce - in questo nostro esempio - un valore Integer, termina la propria dichiarazione con: As Integer.</font>
 
  '''Public Function''' funzione_chiamata(aF As Integer, bF As Integer) As Integer
 
  '''Public Function''' funzione_chiamata(aF As Integer, bF As Integer) As Integer
 
   
 
   
 
   Dim somma As Integer
 
   Dim somma As Integer
 
   
 
   
     somma = aF + bF{[[#Note|1]]}
+
     somma = aF + bF <FONT color=#006500>' {[[#Note|1]]}</font>
 
   
 
   
 
  ''<FONT color=#006500>' Viene restituito il risultato alla routine chiamante:''</font>
 
  ''<FONT color=#006500>' Viene restituito il risultato alla routine chiamante:''</font>
Riga 38: Riga 38:
 
<BR>Risultato di ritorno dalla funzione = 5
 
<BR>Risultato di ritorno dalla funzione = 5
  
 +
 +
===...e se la Funzione deve restituire due o più risultati ?===
 +
 +
Per ottenere da una medesima Funzione due o più risultati senza dover utilizzare una variabile globale, possiamo utilizzare un array.
 +
 +
Facciamo un esempio di una Funzione che restituisce un duplice risultato:
 +
 +
'''Public''' Sub Button1_Click() ''<FONT color=#006500>' routine principale chiamante''</font>
 +
 +
Dim risultato_di_ritorno As Integer[]
 +
Dim a, b As Integer
 +
 +
a = 2
 +
b = 3
 +
 +
  ''<FONT color=#006500>' Chiama la Funzione, e le passa i due valori, affinché li elabori.
 +
'' ' Alla fine la Funzione restituirà il risultato che riempirà la variabile integer[] "risultato_di_ritorno":</font>
 +
    risultato_di_ritorno = funzione_chiamata(a, b)
 +
 +
  ''<FONT color=#006500>' Mostriamo il primo risultato (la somma) in console:</font>
 +
    Print "Risultato (somma) di ritorno dalla funzione = "; risultato_di_ritorno[0]
 +
 +
  ''<FONT color=#006500>' Mostriamo il secondo risultato (la differenza) in console:</font>
 +
    Print "Risultato (differenza) di ritorno dalla funzione = "; risultato_di_ritorno[1]
 +
 +
'''End'''
 +
 +
 +
'' <FONT color=#006500>' La routine Funzione, poiché restituisce - in questo nostro esempio - un valore Integer[],
 +
'' ' termina la propria dichiarazione con: As Integer[].''</font>
 +
'''Public Function''' funzione_chiamata(aF As Integer, bF As Integer) As Integer[]
 +
 +
  Dim somma As Integer
 +
  Dim differenza As Integer
 +
  Dim doppiorisultato As New Integer[]
 +
 +
    somma = aF + bF
 +
    differenza = bF - aF
 +
 +
'' <FONT color=#006500>' Nel primo campo dell'array inseriamo il valore contenuto dalla variabile Integer "somma":''</font>
 +
    doppiorisultato.Add(somma)
 +
    doppiorisultato[0] = somma
 +
 +
'' <FONT color=#006500>' Nel secondo campo dell'array inseriamo il valore contenuto dalla variabile Integer "differenza":''</font>
 +
    doppiorisultato.Add(differenza)
 +
    doppiorisultato[1] = differenza
 +
 +
 +
  ''<FONT color=#006500>' Dunque ora la variabile Integer[] "doppiorisultato" contiene due valori.
 +
'' ' Tale duplice contenuto di questa variabile Integer[] viene restituito alla routine principale chiamante:''</font>
 +
    Return doppiorisultato
 +
 +
'''End'''
  
  

Versione delle 16:17, 12 feb 2012

Una Funzione è una routine, chiamata da una routine principale, alla quale è delegato il compito di svolgere una serie di operazioni, e delle quali essa restituisce alla routine principale chiamante il risultato.

Esempio:

Public Sub Button1_Click() ' routine principale chiamante

Dim risultato_di_ritorno As Integer
Dim a, b As Integer

a = 2
b = 3

 ' Chiama la Funzione, e le passa i due valori, affinché li elabori.
 ' Alla fine la Funzione restituirà il risultato che riempirà la variabile integer "risultato_di_ritorno":
    risultato_di_ritorno = funzione_chiamata(a, b)

 ' Mostriamo il risultato in console:
    Print "Risultato di ritorno dalla funzione = "; risultato_di_ritorno

End


 ' La routine Funzione contiene il proprio nome ed i parametri come variabili dei valori passati dalla routine chiamante,
 ' e non prevede l'aggiunta della parola Sub.
 ' Essa, poiché restituisce - in questo nostro esempio - un valore Integer, termina la propria dichiarazione con: As Integer.
Public Function funzione_chiamata(aF As Integer, bF As Integer) As Integer

 Dim somma As Integer

   somma = aF + bF ' {1}

' Viene restituito il risultato alla routine chiamante:
   Return somma

End

In console avremo coerentemente:
Risultato di ritorno dalla funzione = 5


...e se la Funzione deve restituire due o più risultati ?

Per ottenere da una medesima Funzione due o più risultati senza dover utilizzare una variabile globale, possiamo utilizzare un array.

Facciamo un esempio di una Funzione che restituisce un duplice risultato:

Public Sub Button1_Click() ' routine principale chiamante

Dim risultato_di_ritorno As Integer[]
Dim a, b As Integer

a = 2
b = 3

 ' Chiama la Funzione, e le passa i due valori, affinché li elabori.
 ' Alla fine la Funzione restituirà il risultato che riempirà la variabile integer[] "risultato_di_ritorno":
    risultato_di_ritorno = funzione_chiamata(a, b)

 ' Mostriamo il primo risultato (la somma) in console:
    Print "Risultato (somma) di ritorno dalla funzione = "; risultato_di_ritorno[0]

 ' Mostriamo il secondo risultato (la differenza) in console:
    Print "Risultato (differenza) di ritorno dalla funzione = "; risultato_di_ritorno[1]

End


 ' La routine Funzione, poiché restituisce - in questo nostro esempio - un valore Integer[],
 ' termina la propria dichiarazione con: As Integer[].
Public Function funzione_chiamata(aF As Integer, bF As Integer) As Integer[]

 Dim somma As Integer
 Dim differenza As Integer
 Dim doppiorisultato As New Integer[]

   somma = aF + bF
   differenza = bF - aF

 ' Nel primo campo dell'array inseriamo il valore contenuto dalla variabile Integer "somma":
   doppiorisultato.Add(somma)
   doppiorisultato[0] = somma

 ' Nel secondo campo dell'array inseriamo il valore contenuto dalla variabile Integer "differenza":
   doppiorisultato.Add(differenza)
   doppiorisultato[1] = differenza


 ' Dunque ora la variabile Integer[] "doppiorisultato" contiene due valori.
 ' Tale duplice contenuto di questa variabile Integer[] viene restituito alla routine principale chiamante:
   Return doppiorisultato

End



Note

[1] La tipologia delle variabili aF e bF è stata già dichiarata all'interno dei parametri della Funzione: (aF As Integer, bF As Integer).