Le funzioni in Visual Basic

Per scrivere una funzione in Visual Basic utilizzo l'istruzione Function

Function nome(parametri) As tipo
...
End Function

I parametri in input sono separati tra loro da virgole.

Una funzione può avere zero, uno o più parametri.

Posso specificare il tipo di dato dei parametri tramite la chiave “As tipo”.

Function nome(par1 As tipo1, par2 As tipo2) As tipo

Il tipo alla fine della funzione è invece il tipo di dato del valore di ritorno.

Function nome(parametri) As tipo

Se non documento il tipo di output della funzione è Integer di default.

La chiamata della funzione avviene per nome, indicando il passaggio dei parametri in input dentro le parentesi tonde.

nome(par1, par2)

Una volta invocata la funzione restituisce il valore di ritorno in output.

Un esempio pratico

Esempio 1

Questa semplice funzione riceve in input due parametri e calcola la somma tra numeri interi.

Function Somma(a,b) As Integer
Dim c As Integer
c = a+b
Return c
End Function

oppure in forma alternativa ridotta

Function Somma(a,b) As Integer
Return (a+b)
End Function

Il valore di ritorno della funzione è di tipo Integer (numero intero)

Per chiamare la funzione scrivo l'invocazione passandogli come parametri i numeri 2 e 3.

Dim y As Integer
y =Somma(2,3)

La funzione restituisce il valore di ritorno 5 in output.

5

Esempio 2 (tipo dei parametri)

Posso definire il tipo di dato di ogni parametro della funzione inserendo il tipo con la chiave As dopo il nome della variabile di input

Function Somma(a As Integer, b As Integer) As Integer
Return (a+b)
End Function

E' la strada preferibile perché riduce la possibilità di errore del runtime.

Inoltre, definisce meglio la signature (firma) della funzione e permette l'overloading.

La chiamata della funzione avviene allo stesso modo.

Dim y As Integer
y =Somma(2,3)

E il risultato è sempre 5.

I parametri opzionali

In Visual Basic è possibile definire dei parametri facoltativi nella funzione tramite il prefisso Optional.

Function nome(par1 As tipo1, Optional par2 As tipo2 = valore)

Quando un valore opzionale non è presente nell'invocazione, assume un valore di default indicato nella dichiarazione della funzione.

Attenzione. I valori opzionali devono trovarsi sempre alla fine della lista dei parametri.

Esempio

Questa funzione ha due parametri.

Function Somma(a As Integer, Optional b As Integer = 0) As Integer
Return (a+b)
End Function

Il secondo parametro è opzionale e ha un valore di default pari a 0.

Quando invoco la funzione con un solo valore a=2

Dim y As Integer
y =Somma(2)

La funzione considera b=0, restituendo la somma 2+0 senza andare in errore.

I parametri nominali

Nell'invocazione posso inserire i parametri anche in forma nominale, senza seguire l'ordine della signature.

nomefunzione(par1:=val1, par2:=val2)

Dopo il nome di un argomento digito il simbolo := e il valore assegnato.

Esempio

Questa funzione riceve due parametri in input nell'ordine a e b

Function Somma(a,b) As Integer
return (a+b)
End Function

La invoco usando i parametri nominali, indicando prima b e poi a.

In pratica, l'ordine inverso rispetto alla dichiarazione.

num = Somma(b:=3, a:=2)

Poiché si tratta di parametri nominal, VB non segue l'ordine dei parametri ma il nome.

Quindi, la funzione assegna a=2 e b=3.

Il passaggio dei parametri per valore e riferimento

In Visual Basic posso decidere se passare i valori numerici

1] Per valore (byvalue)

Alla routine invocata viene passata una copia della variabile tramite la parola chiave ByVal.

function nome ( ByVal a, ByVal b) As Integer

Quindi, qualsiasi modifica alla variabile da parte della routine chiamata, non si propaga anche alla routine chiamante.

Se la variabile è di tipo reference (es. stringhe), il riferimento diventa non riassegnabile.

2] Per riferimento (byreference)

Alla routine invocata viene passato il riferimento, ossia l'indirizzo di memoria, tramite la parola chiave ByRef.

function nome ( ByRef a, ByRef b) As Integer

In questo caso, qualsiasi modifica alla variabile da parte della routine chiamata si propaga anche alla routine chiamante.

Se la variabile è di tipo reference (es. stringhe), il riferimento è riassegnabile.

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Visual Basic .NET

Il linguaggio di programmazione

Visual Studio