Avevamo già anticipato nella
lezione 9 cosa sono le strutture di controllo ed in particolare
avevamo visto la struttura di controllo IF.
La struttura decisionale o di controllo (o costrutto) è un elemento
del linguaggio che permette di controllare il flusso delle istruzioni.
Le istruzioni, in Visual Basic vengono eseguite se si verifica
un certo evento, e, allinterno della procedura di evento,
le istruzioni vengono eseguite una dopo laltra a meno che
si faccia uso di questi strumenti.
Le strutture quindi modificano la sequenza delle istruzioni eseguite
in base al verificarsi di un certa condizione oppure permettono
di ripetere un certo numero di istruzioni.
La struttura decisionale
IF
Il costrutto IF permette di eseguire una o più istruzioni in
seguito al verificarsi di una condizione.
If <condizione> Then
<istruzioni da eseguire se la condizione è vera>
[Else
<istruzioni da eseguire se la condizione è falsa>]
End If
La condizione può essere rappresentata da una espressione logica,
cioè unespressione che dà come risultato vero o falso.
Se essa è verificata viene eseguito il blocco di istruzioni indicato
fra le parole chiave Then e Else. In caso contrario,
è eseguito il secondo gruppo di istruzioni. Si noti che quest'ultimo
può anche essere assente. In tal caso, la parola chiave Else
non va utilizzata e non è eseguito alcun codice in caso di mancata
verifica della condizione.
La frase End If delimita la struttura.
Esempio
Per visualizzare un messaggio diverso a seconda che un saldo
sia positivo o negativo:
Private Sub CmdVediSaldo_Click()
IF Saldo > 0 then
MsgBox Saldo positivo
else
MsgBox Saldo negativo
End If
End Sub
Ciclo For.. Next
Il costrutto FOR .. NEXT consente di ripetere un gruppo di istruzioni
per il numero di volte specificato.
For contatore = inizio To fine [Step incremento]
[istruzioni]
[Exit For]
[istruzioni]
Next [contatore]
Quando ci può servire un ciclo
di questo tipo? Quando dobbiamo ripetere un certo numero di volte
una stessa istruzione. Per definizione, nel costrutto FOR, dobbiamo
utilizzare una variabile numerica intera (denominata contatore)
che si incrementa ad ogni esecuzione del ciclo. Il contatore parte
dal valore indicato dopo il simbolo = fino ad arrivare ad un valore
massimo indicato dopo la parola chiave TO.
Lincremento solitamente è 1, se serve un passo diverso (ad
esempio 2) occorre aggiungere STEP 2 dopo il numero massimo.
La fine del ciclo è identificata dalla parola chiave NEXT, immediatamente
dopo si può indicare anche il nome della variabile contatore. Non
è necessario, anche se solitamente è bene metterlo se si usano cicli
FOR annidati (Suggerimento: nelle sintassi dei linguaggi
solitamente la parentesi quadra indica parti opzionali!!).
Esempio: il seguente ciclo visualizza i primi dieci numeri. E
stata dichiarata una variabile che fa da contatore partendo dal
numero 1 fino al numero 10
Dim
Conta as integer
For Conta=0 to 10
Msgbox Str(Conta)
Next Conta
Esempio: calcolo del fattoriale di un numero N inserito dallutente.
Per definizione il fattoriale (si indica con il simbolo !) di un
numero N è uguale a 1* 2 * 3 *
. * N, in formule:
N! = 1* 2 * 3 *
. * N
I passi seguiti sono:
- richiesta del numero allutente attraverso la funzione InputBox
(vista nella lezione 11), memorizzato poi nella variabile N.
- dichiarazione di una variabile contatore I (perché il fattoriale
per definizione fa N moltiplicazioni, dunque il nostro ciclo dovrà
dunque essere ripetuto N volte).
- dichiarazione di una variabile Fattoriale, atta a contenere il
risultato finale e parziale di ogni moltiplicazione; notare che
occorre inizializzarla a 1 in quanto è lelemento neutro della
moltiplicazione.
Private
Sub CmdFatt_Click()
Dim N As Integer
Dim I As Integer
Dim Fattoriale As Long
Fattoriale = 1
N = InputBox("Inserisci il numero:", "Calcolo del
fattoriale")
For I = 1 To N
Fattoriale = Fattoriale * I
Next I
MsgBox "Il fattoriale di " & Str(N) & "
é " & Str(Fattoriale)
End Sub
La prossima volta vedremo un altro costrutto che permette di eseguire
dei cicli. Per il momento ci accontentiamo di assimilare il FOR
e terminiamo la lezione introducendo unaltra struttura di
controllo meno utilizzata.
Listruzione Go To
Passa incondizionatamente a una riga specifica all'interno di una
procedura (ma non al di fuori di essa) ed identificata da unetichetta.
Per definire un etichetta è sufficiente darle un nome (seguito
dai : ) e posizionarla nel punto desiderato.
GoTo etichetta
Esempio:
Private Sub CmdSaluta_Click()
Msgbox Adesso vi saluto
GoTo SALUTA
SALUTA:
Msgbox Ciao a tutti
End Sub
Suggerimento: la presenza di troppe istruzioni GoTo può rendere
difficile la lettura del codice. Quando possibile, è consigliabile
utilizzare istruzioni di controllo strutturate (Do...Loop, For...Next,
If...Then...Else, Select Case)
Torna all'indice Generale del corso di Corso di Visual Basic di Software Planet