Scrivere una Funzione: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 94: | Riga 94: | ||
<BR>Risultato (differenza) di ritorno dalla funzione = 1 | <BR>Risultato (differenza) di ritorno dalla funzione = 1 | ||
==Scrivere ed invocare una Funzione in un Modulo== | |||
La scrittura e la successiva invocazione di una Funzione in un ''Modulo'' segue la procedura normale. | |||
Facciamo un semplissimo esempio. | |||
Nella Classe principale avremo il seguente codice: | |||
'''Public''' Sub Form_Open() | |||
Dim by As Byte | |||
<FONT color=#006400>' ''Invochiamo la funzione nel Modulo e le passiamo un valore di tipo Byte (in questo esempio: 6 ).'' | |||
' ''Essa, a sua volta, ci passerà un valore che inseriremo nella variabile "by":''</font> | |||
by = Module1.alibaba(6) | |||
Print by | |||
'''End''' | |||
Nel Modulo avremo: | |||
'''Public''' Function alibaba(a As Byte) As Byte ' Riceve dalla funzione chiamante un valore, ed un valore di tipo Byte a sua volta restituirà | |||
Dim b As Byte | |||
b = 2 | |||
<FONT color=#006400>' ''La Funzione effettua l'operazione per la quale è stata concepita:''</font> | |||
b = b * a | |||
<FONT color=#006400>' ''Restituisce, quindi, alla funzione chiamante il risultato dell'operazione:''</font> | |||
Return b | |||
'''End''' | |||
Versione delle 10:39, 17 mar 2013
Una Funzione |1| |2| è 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 '|3|
' 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 (quindi 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)
' Nel secondo campo dell'array inseriamo il valore contenuto dalla variabile Integer "differenza":
doppiorisultato.Add(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
In console avremo coerentemente:
Risultato (somma) di ritorno dalla funzione = 5
Risultato (differenza) di ritorno dalla funzione = 1
Scrivere ed invocare una Funzione in un Modulo
La scrittura e la successiva invocazione di una Funzione in un Modulo segue la procedura normale.
Facciamo un semplissimo esempio.
Nella Classe principale avremo il seguente codice:
Public Sub Form_Open() Dim by As Byte ' Invochiamo la funzione nel Modulo e le passiamo un valore di tipo Byte (in questo esempio: 6 ). ' Essa, a sua volta, ci passerà un valore che inseriremo nella variabile "by": by = Module1.alibaba(6) Print by End
Nel Modulo avremo:
Public Function alibaba(a As Byte) As Byte ' Riceve dalla funzione chiamante un valore, ed un valore di tipo Byte a sua volta restituirà
Dim b As Byte
b = 2
' La Funzione effettua l'operazione per la quale è stata concepita:
b = b * a
' Restituisce, quindi, alla funzione chiamante il risultato dell'operazione:
Return b
End
Note
[1] «La "funzione" di una cosa è ciò che la sola cosa può compiere.» (Platone, La Repubblica)
[2] Si rinvia anche a Wikipedia per una definizione più ampia della Funzione.
[3] La tipologia delle variabili aF e bF è stata già dichiarata all'interno dei parametri della Funzione: (aF As Integer, bF As Integer).