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 lutilità di utilizzare
un procedura, ma se avessimo usato Saluta molte volte allinterno
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 (allinterno 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. Lordine
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 lesempio 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 nellesempio :
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 dellelenco dei parametri), lindicazione 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
limporto dellIVA al 4% su un imponibile . Limponibile
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 lesempio possiamo rendere parametrico anche
laliquota IVA, con il seguente risultato:
Function IVA(Importo As Long, Aliquota As Single) As Long
IVA = Importo * Aliquota / 1000
End Function
Unapprofondimento:
abbiamo detto che per richiamare una procedura occorre elencare
i parametri senza utilizzare le parentesi.
Esiste un altro modo: utilizzare listruzione Call:
Call Saluta(Carlo)
In tal caso le parentesi vanno utilizzate!!
Tutto chiaro? Per il momento è tutto anche se largomento 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