Il passaggio di parametri
Nella scorsa lezione abbiamo visto cosa sono le procedure, le funzioni
ed i parametri, in particolare avevamo detto che i parametri hanno
unordine posizionale, vanno elencati separati da virgola,
devono rispettare il tipo di dato specificato nella dichiarazione
e possono essere passati come valori fissi o tramite
variabili.
Cerchiamo di approfondire meglio questultimo concetto.
E possibile passare dei parametri alle procedure ed alle funzioni
in due modi:
- passaggio per riferimento (ByRef ), si utilizza quando
allinterno della procedura (o funzione) il valore del parametro
viene modificato e, alla procedura chiamante, serve il valore
di ritorno modificato;
- passaggio per valore (ByVal), il valore del parametro,
ritorna alla procedura chiamante con il suo valore originale, anche
se viene modificato allinterno della procedura (o funzione).
Il passaggio per valore è più
sicuro, ma lavora su una copia del valore del parametro, e dunque
occupa più memoria. E per questo motivo che il passaggio di
default (ovvero quello scelto da VB se non specificato diversamente)
è quello per riferimento
anche se si dice che nella prossima
versione di VB non sarà esattamente così
J
Esempio
Supponiamo di migliorare la funzione scritta la volta precedente:
la nuova funzione dovrà verificare che laliquota IVA sia corretta
ed in caso contrario dovrà restituire alla procedura chiamante laliquota
con valore 0.
Function IVA(Importo As
Long, ByRef Aliquota As Single) As Long
If (Aliquota <> 4) And (Aliquota <> 20) Then
Aliquota = 0
Exit Function
End If
IVA = Importo * Aliquota / 1000
End Function
La funzione IVA verrà richiamata
nellevento click del pulsante Command1:
Private Sub Command1_Click()
Dim Aliquota As Single
AliquotaIva = 5
Call IVA(100000, Aliquota)
If AliquotaIva = 0 Then
MsgBox "L'aliquota iva è sbagliata"
Else
MsgBox "L'aliquota iva rientra in quelle specificate"
End If
End Sub
In questo caso la variabile AliquotaIva assumerà il valore 0 in
seguito alla chiamata della funzione IVA permettendoci di capire
che laliquota è sbagliata.
Sostituendo la parola chiave ByVal nella funzione IVA:
Function IVA(Importo As Long, ByRef Aliquota As Single) As
Long
..
Otterremo un risultato differente, la variabile AliquotaIva varrà
5 anche al ritorno dalla chiamata alla funzione Iva.
In generale, i parametri per i quali ci serve un valore di ritorno
sono detti parametri di output, mentre gli altri sono detti
parametri di input o di input/output.
I parametri opzionali
Nel caso in cui volessimo utilizzare alcuni parametri senza obbligare
chi utilizza le nostre procedure ad utilizzarli, potremmo dichiararli
come opzionali.
Per dichiarare un parametro opzionale è sufficiente indicare prima
la parola chiave Optional con il seguente accorgimento: se
viene utilizzata, anche tutti gli argomenti successivi devono essere
facoltativi e dichiarati con la parola chiave Optional.
E possibile associare un valore di default al parametro mancante
oppure controllarne lesistenza con la funzione di VB IsMissing
(la quale però funziona solo con tipi di dati variant).
Torniamo sempre al nostro solito esempio, potremmo permettere al
nostro utilizzatore di specificare laliquota IVA solo nel
caso in cui sia diversa da 4.
Function IVA(Importo As
Long, Optional Aliquota As Single = 4) As Long
IVA = Importo * Aliquota / 1000
End Function
Dunque per calcolare liva al 4% sarà sufficiente specificare
limporto:
MsgBox IVA(100000)
La stessa funzione la si può
riprodurre utilizzando la funzione IsMissing, ovvero verificando
se il valore del parametro è stato specificato e, in caso contrario,
assegnarvi un valore di default.
Function IVA(Importo As
Long, Optional Aliquota) As Long
If IsMissing(Aliquota) Then
Aliquota = 4
End If
IVA = Importo * Aliquota / 1000
End Function
Validità delle funzioni
Lambito di validità delle procedure e funzioni e simile a
quello visto per le variabili: possono essere pubbliche o private
(Private o Public) e possono appartenere ad una FORM oppure ad un
modulo .BAS.
Nel primo caso, anche se pubbliche, per poterle richiamare occorre
specificare prima il nome della FORM di appartenenza.
Le costanti
Anche il concetto di costante è molto importante per un programmatore,
in quanto è presente in tutti i linguaggi di programmazione.
La costante non è altro che
una sorta di variabile costante ovvero unarea
di memoria alla quale si assegna un nome ed un valore che non potrà
cambiare durante lesecuzione del programma.
Il caso classico è quello del valore del pi-greco per calcolare
circonferenza ed area di un cerchio. Può essere comodo, allinizio
del programma, dichiarare una costante denominata PIGRECO (solitamente
il nome delle costanti è maiuscolo per convenzione) avente il valore
3,1415..
Non sarà indispensabile ricordarsi ogni volta il valore completo
ma sarà sufficiente utilizzare la costante PIGRECO.
La dichiarazione è simile a quella delle variabili utilizzando la
parola chiave CONST, naturalmente con PRIVATE per le costanti riservate
ad un modulo e PUBLIC per quelle pubbliche con la particolarità
che le costanti dichiarate allinterno di un form non possono
essere pubbliche
Private Const PIGRECO =
3.141592
E la prossima lezione? Inizieremo a studiare le principali funzioni
fornite da Visual Basic. Non mancate!!
Torna all'indice Generale del corso di Corso di Visual Basic di Software Planet