Corso di Visual Basic

Procedure e funzioni II

 

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 un’ordine 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 quest’ultimo concetto.

E’ possibile passare dei parametri alle procedure ed alle funzioni in due modi:
- passaggio per riferimento (ByRef ), si utilizza quando  all’interno 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 all’interno 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 l’aliquota IVA sia corretta ed in caso contrario dovrà restituire alla procedura chiamante l’aliquota 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 nell’evento 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 l’aliquota è 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 l’esistenza 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 l’aliquota 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 l’iva al 4% sarà sufficiente specificare l’importo:
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
L’ambito 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 un’area di memoria alla quale si assegna un nome ed un valore che non potrà cambiare durante l’esecuzione del programma.
Il caso classico è quello del valore del pi-greco per calcolare circonferenza ed area di un cerchio. Può essere comodo, all’inizio 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 all’interno 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