Le variabili in Visual Basic Net? Le trovi su Opentraining.it Visual Basic Italia
Corso di Visual Basic:
Seconda lezione - le variabili in Visual Basic

Una cosa importante da tenere presente a proposito delle variabili è la loro area di visibilità: ciò deriva dal fatto che una variabile può essere dichiarata in punti diversi del codice, e cioè nella sezione dichiarazioni di un form oppure all'interno di una routine; nel primo caso, la variabile sarà visibile, e quindi potrà essere utilizzata, in tutto il form (si dice che è una variabile dichiarata a livello di modulo); nel secondo caso la variabile sarà visibile soltanto all'interno della routine in cui è dichiarata (si dice che è una variabile locale). Per capire bene la differenza proviamo ad aprire un nuovo progetto e a scrivere, nella sezione dichiarazioni del form:

Dim VarGen As Integer
Public Sub Prova()
Dim VarLoc As Integer
VarGen=1
VarLoc=1
End Sub

e, nella routine Load del form:

Private Sub Form_Load()
Prova
VarGen=2
VarLoc=2
Debug.Print VarGen, VarLoc
End Sub
Nota: il comando Debug.Print
viene utilizzato per visualizzare
il valore delle due variabili nella
finestra Immediata







In parole povere, abbiamo dichiarato una variabile di nome VarGen visibile in tutto il form, e una variabile di nome VarLoc visibile solo nella routine di nome Prova: all'interno di questa routine alle due variabili viene assegnato il valore 1, mentre quando il form viene caricato si verifica l'evento Load, durante il quale vengono eseguite le istruzioni che abbiamo appena inserito: dapprima viene eseguita la routine prova con le sue due istruzioni, dopodichè alle due variabili viene assegnato il valore 2; infine il valore delle due variabili viene visualizzato nella finestra "Immediata", di cui si parlerà più avanti. Per visualizzare la finestra basta andare sul menù "Visualizza" e scegliere la voce "Finestra Immediata".



Ora, proviamo a mandare in esecuzione il nostro progetto andando sul menu Esegui e scegliendo Avvia, oppure premendo il tasto F5: quello che succederà è l'interruzione del programma con la visualizzazione del seguente messaggio di errore:

variabile non definita

dove la variabile è quella evidenziata, cioè la variabile VarLoc. Questo succede proprio perché all'esterno della routine Prova la variabile locale VarLoc non esiste: infatti le variabili locali vengono create all'inizio della routine in cui sono dichiarate, e automaticamente distrutte quando la routine finisce di essere eseguita. La variabile VarGen, invece, è visibile sia nell'evento load del form, sia nella routine prova, proprio perché è stata dichiarata nella sezione delle dichiarazioni generali del form.
Faccio notare che se si prova a eliminare l'istruzione Option Explicit che, se avete seguito il mio suggerimento (v. lezione precente), dovrebbe essere inserita automaticamente, quando il progetto viene avviato non si verifica alcun errore e nella finestra immediata viene stampata la riga:

2 2

Questo succede perché senza l'istruzione Option Explicit durante l'esecuzione vengono create DUE variabili VarLoc: una dichiarata esplicitamente nella routine Prova e distrutta alla fine della routine, l'altra dichiarata implicitamente nell'evento load del form e a cui viene assegnato il valore 2, che viene poi correttamente visualizzato nella finestra immediata.

Dato che in una applicazione possono esserci ben più di un unico form, ci si può chiedere se le variabili dichiarate a livello di modulo in un certo form siano visibili anche negli altri form: la risposta è positiva solo se nella dichiarazione delle variabili si usa la parola chiave Public, ad es.:

Public VarGen As Integer

questa parola chiave specifica appunto che la variabile dichiarata è pubblica, cioè è visibile in tutta l'applicazione a cui appartiene il form in cui è dichiarata; utilizzando invece la parola chiave Private o la classica Dim, la variabile sarà privata e quindi visibile solo nel form in cui è dichiarata. Prima ho detto che le variabili locali vengono create all'inizio della routine in cui sono dichiarate e distrutte alla fine: da ciò deriva che se la stessa routine viene richiamata più volte, la variabile viene creata e distrutta altrettante volte, ed ogni volta la variabile creata non ha alcuna connessione con la variabile omonima creata la volta precedente. Se ad esempio modifichiamo la nostra routine Prova in questo modo:

Public Sub Prova ()
Dim VarLoc As Integer
VarLoc=VarLoc + 1
Debug.Print VarLoc
End Sub

E nell'evento Load scriviamo:

Private Sub Form_Load()
Prova
Prova
End Sub

e proviamo ad avviare il progetto, vedremo che nella finestra immediata viene scritto:

1 1

e non, come qualcuno si potrebbe aspettare:

1 2

Se si desidera che una variabile locale conservi il proprio valore tra una chiamata e l'altra della routine, bisogna dichiararla con la parola chiave Static:

Public Sub Prova()
Static VarLoc As Integer
VarLoc = VarLoc + 1
Debug.Print VarLoc
End Sub

Se proviamo ancora ad eseguire il progetto, vedremo che questa volta nella finestra Immediata appare scritto:

1 2

La variabile VarLoc viene quindi creata solo una volta (la prima volta che la routine viene eseguita) e viene distrutta solo quando chiudiamo l'applicazione (cliccando ovviamente sulla X in alto a destra nel form, come per qualunque altra finestra); tuttavia questa variabile è ancora una variabile locale, quindi non è utilizzabile all'esterno della routine. Il motivo per cui VarLoc assume il valore 1 dopo l'istruzione:

Varloc = Varloc + 1

è presto detto: in Visual Basic ogni variabile numerica viene automaticamente inizializzata al valore 0 quando viene creata; le variabili stringa, invece, vengono inizializzate con una stringa vuota, ossia con zero caratteri.

Nota: Nel caso in cui si assegnino nomi composti agli elementi del codice la cui denominazione è arbitraria (variabili, costanti, procedure, funzioni), è buona norma mantenere la prima lettera maiuscola di ciascun nome, in modo da operare una separazione intuitiva. Nel corso di questa lezione ad esempio si è trattata la variabile VarLoc il cui nome deriva dall'unione dei nomi Variabile Locale. Lo stesso vale per VarGen, unione di Variabile e Generale


Archivio:ndexed
Corso Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it