Corso di Visual Basic

Le strutture di controllo I

 

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,  all’interno della procedura di evento, le istruzioni vengono eseguite una dopo l’altra 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è un’espressione 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.
L’incremento 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 dall’utente.
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 all’utente 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 è l’elemento 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 un’altra struttura di controllo meno utilizzata.

L’istruzione Go To
Passa incondizionatamente a una riga specifica all'interno di una procedura (ma non al di fuori di essa) ed identificata da un’etichetta.
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