Corso di Visual Basic

Procedure e funzioni

 

Finalmente siamo oggi riusciamo ad approfondire il concetto di procedura e funzione che abbiamo dovuto anticipare piu’ volte.

Procedure e funzioni (sottoprogrammi) servono per raccogliere un gruppo di istruzioni per dare maggiore leggibilità al programma o per evitare di ripetere in più punti le stesse istruzioni.
La differenza sostanziale tra le due è che le funzioni restituiscono un valore, mentre le procedure no.

Procedure
Una procedura in Visual Basic  prende il nome di Sub.

La sintassi di dichiarazione di una procedura è la seguente
Sub NomeProcedura([param1 as …, param2 as…])
   istruzioni
End Sub

Ad esempio, se vogliamo creare una procedura che visualizza una frase di saluto:
Sub Saluta()
    Msgbox “Ciao”
End Sub

Per utilizzarla è sufficiente scrivere il nome della procedura:

Private Sub Command1_Click()
    Saluta
End Sub


In questo caso non appare evidente l’utilità di utilizzare un procedura, ma se avessimo usato Saluta molte volte all’interno del nostro codice e ad un certo punto si presentasse la necessità di cambiare la frase “Ciao” per tradurla in inglese “Hello”, sarebbe sufficiente cambiarla una sola volta (all’interno della procedura).
I parametri
Nella sintassi di dichiarazione della procedura compaiono degli elementi racchiusi tra parentesi quadre: sono i parametri o argomenti, che già avevamo dovuto anticipare nelle prime lezioni.
Non è obbligatorio utilizzarli (ed è per questo motivo che sono indicati tra parentesi quadre), ma sono molto utili in quanto a volte si vuole rendere “parametrica” la procedura (o la funzione).
Occorre dare un nome ad ogni parametro e specificare il tipo di dato che conterrà (proprio come le variabili), se ne indichiamo più di uno occorre elencarli di seguito separati da virgola. L’ordine posizionale è anche quello che ci servirà per riferirci ad essi quando utilizziamo la procedura.

Ad esempio potremmo rendere parametrica Saluta mettendo come argomento il nome della persona che vogliamo salutare:

Sub Saluta(Nome as string)
    Msgbox “Ciao ” + Nome
End Sub


In questo caso, per richiamarla occorrerà specificare anche il valore del parametro dopo il nome della procedura separato da spazio:

Private Sub Command1_Click()
    Saluta “Carlo”
End Sub


Ampliando l’esempio a due parametri:

Sub Saluta(Nome as string, Cognome as string)
    Msgbox “Ciao ” + Nome + “ “ + Cognome
End Sub


I parametri possono essere passati direttamente con il loro valore oppure utilizzando una variabile, come nell’esempio :

Private Sub Command1_Click()
Dim Surname as string
    Surname =”Rossi”
    Saluta “Carlo”, Rossi
End Sub

Funzioni
La funzione è analoga alla procedura, con la sola differenza che restituisce un valore.
La sua dichiarazione è analoga a quella della Sub, ma occorre specificare la parola chiave Function ed indicare,  dopo la parentesi tonda (alla fine dell’elenco dei parametri), l’indicazione del tipo di dato che restituirà.
Function NomeFunction(param1 as …, ...) as ...
   Istruzioni
   NomeFUnction=
End Function

P.S.Poiché essa restituisce un valore sarà opportuno che tra le istruzioni che contiene ve ne sia almeno una che assegna alla funzione stessa il valore risultante!!

Supponiamo, ad esempio di voler creare una funzione che calcola l’importo dell’IVA al 4% su un imponibile . L’imponibile sarà il nostro parametro ed il risultato sarà restituito dalla funzione stessa.

Function IVA(Importo As Long) As Long
   IVA = Importo * 0.04
End Function

Per richiamare la funzione si usano le stesse regole della procedura, ma attenzione; i parametri vanno elencati tra parentesi !!.

Dim ValoreIva As Long
    ValoreIva = IVA(100000)
    MsgBox "L'IVA al 4% su L.100.000 è:" + Str(ValoreIva)
End Sub


Per migliorare l’esempio possiamo rendere parametrico anche l’aliquota IVA, con il seguente risultato:
Function IVA(Importo As Long, Aliquota As Single) As Long
   IVA = Importo * Aliquota / 1000
End Function

Un’approfondimento:
abbiamo detto che per richiamare una procedura occorre elencare i parametri senza utilizzare le parentesi.
Esiste un altro modo: utilizzare l’istruzione Call:
Call Saluta(“Carlo”)
In tal caso le parentesi vanno utilizzate!!

Tutto chiaro? Per il momento è tutto anche se l’argomento “Procedure e Funzioni” ci riserverà ancora qualche sorpresa: alla prossima, non mancate!

 

Torna all'indice Generale del corso di Corso di Visual Basic di Software Planet