Le procedure e le funzioni

Dopo aver parlato di tipi di dati, costanti e variabili, e prima di dedicarci alla programmazione vera e propria, dobbiamo ancora illustrare brevemente le procedure e le funzioni. In entrambi i casi si tratti di una sorta di “raggruppamento” di istruzioni che svolgono un’operazione comune. Come vedremo meglio più avanti, praticamente tutto il codice di un programma Visual Basic è contenuto all’interno di funzioni e procedure (chiamate genericamente routine). La differenza fondamentale tra procedure e funzioni è che le seconde possono restituire dei valori, ad esempio il risultato di un’elaborazione oppure un valore di ritorno che determina se la routine ha avuto successo, mentre le procedure no. Iniziamo a vedere la dichiarazioni di una procedura:

Sub ([Parametro As , …])
End Sub

Tutte le dichiarazioni di procedura iniziano con la parole chiave Sub. Segue il nome della routine, che deve rispettare le convenzione analizzate precedente a proposito delle costanti. Il nome deve essere seguito da parentesi, al cui interno è possibile inserire i parametri (opzionali) richiesti della procedura; non c’è limite al numero di parametri che si possono definire. Tali parametri possono essere visti come variabili (ritorneremo tra poco su questo punto). End Sub sono parole riservate di VB che indicano la fine di una procedura. Vediamo ora un esempio di procedura, anche per illustrare meglio l’utilizzo dei parametri. Supponiamo di dover calcolare l’area di un cerchio: la formula è sempre la stessa, quello che cambia è solo la misura del raggio. Per tale motivo, invece di riscrivere ogni volta la formula, possiamo scrivere una procedura che richieda come parametro proprio la lunghezza del raggio:

Sub AreaCerchio(Raggio As Double)
End Sub

Supponiamo ancora di voler scrivere un programma che chiede all’utente la lunghezza del raggio e sulla base di questa calcola l’area del cerchio. Dopo aver definito la procedura come sopra descritto, ci basterà richiamarla passandogli come argomento la lunghezza del raggio; ad esempio:

AreaCerchio 5.4
AreaCerchio 11
AreaCerchio 6.9

Queste sono tre chiamate alla procedura con parametri diversi. Nel primo caso, Raggio varrà 5.4, nel secondo 11 e nel terzo 6.9. Ecco quindi come potrebbe risultare la procedura AreaCerchio completa:

Sub AreaCerchio(Raggio As Double) MsgBox Raggio * Raggio * 3.14 End Sub

In questo esempio è stata usata la funzione MsgBox, che visualizza un messaggio in una finestra di dialogo e attende che l’utente prema un tasto.

 

Passiamo ora ad analizzare le funzione, osservando che per esse vale la maggior parte delle considerazioni che già si sono fatte per le procedure. La dichiarazione di una funzione è questa:

Function ([Parametro As , …]) [As ]
End Function

Come si vede, in questo caso invece della parola chiave Sub si usa Function. La cosa nuova, cui si è già accennato, è che le funzioni possono restituire un valore. Nella dichiarazione, infatti, possiamo notare che, dopo l’elenco (opzionale) dei parametri c’è un ulteriore argomento opzionale, ancora una volta As : esso indica il tipo di dato restituito dalla funzione. Come si è già visto per le variabili, se non viene specificato tale parametro il valore restituito sarà di tipo Variant. Riprendiamo l’esempio di prima e trasformiamo la procedura AreaCerchio in una funzione:

Function AreaCerchio(Raggio As Double) As Double
AreaCerchio = Raggio * Raggio * 3.14
End Function

Quando si richiama questa funzione, AreaCerchio contiene il valore dell’area del cerchio. Vediamo ora come si utilizzano le funzioni, basandoci come sempre sull’esempio.

Dim Area1 As Double, Area2 As Double, Area3 As Double
Area1 = AreaCerchio(5.4) ‘Area1 vale 91,5624
Area2 = AreaCerchio(11) ‘Area2 vale 379,94
Area3 = AreaCerchio(6.9) ‘Area3 vale 149,4954

Innanzi tutto sono state dichiarate tre variabili, Area1, Area2, Area3, che dovranno contenere i valori dell’area. Ad esse è stato poi assegnato il valore restituito dalla funzione AreaCerchio. Di fianco ad ogni istruzione è stato posto un commento; per inserire un commento in VB è necessario digitare un apice (‘): tutto quello che verrà scritto sulla stessa riga a destra dell’apice verrà considerato, appunto, come un commento, pertanto non verrà eseguito. Se adesso noi scrivessimo queste tre istruzioni:

MsgBox Area1
MsgBox Area2
MsgBox Area3

otterremo lo stesso risultato che è stato mostrato prima, cioè le tre finestre di messaggio contenenti rispettivamente 91,5624, 379,94 e 149,4954.

Both comments and pings are currently closed.

Comments are closed.