La creazione di un progetto da zero in Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Cicli Do
All'interno dell'ultima lezione abbiamo visto ed analizzato il comando Do While. Oggi andiamo un poco oltre studiando un altro ciclo necessario per processare i dati in Visual Basic: il ciclo Do Until.
Do Until:
il ciclo Do Until è fondamentalmente simile al precedente Do While salvo che per il fatto che le istruzioni all'interno del ciclo vengono stavolta processate finchè la condizione che viene ritornata dall'analisi di tali istruzioni è False. Dunque, quando la condizione passa a True il ciclo viene interrotto. Proprio come abbiamo visto per il ciclo Do While, il ciclo Do Until ha due forme, in base alla posizione della condizione. Posizione che può essere all'interno del comando Do (ed in questo caso la condizione è valutata prima che i comandi del ciclo vengano eseguiti), oppure all'interno del comando Loop. In quest'ultimo caso il ciclo viene eseguito almeno una volta prima che la condizione sia valutata. Bisogna usare una certa accortezza nella scelta della posizione della condizione: posizionarla nel comando Do può portare il programma a non eseguire mai il codice all'interno del ciclo. In caso contrario, posizionando la condizione in Loop, se la condizione al primo passaggio non è verificata, si potrebbe avere un messaggio di errore.
Vediamo adesso in pratica quali sono gli utilizzi di questi due tipi di ciclo Do Until. Per far questo facciamo riferimento al codice prenentato nella scorsa lezione (quando si parlava di cicli Do While). Tale esempio, utilizzando Do Until del primo tipo può essere modificato in questo modo:

'Preupposta l'esistenza nel progetto di una listbox contenente 5 elementi
'il seguente codice aggiunge alla listbox i 5 elementi:
'(NOTA: questa parte di codice non è stata modificata rispetto 'alla lezione precedente)
'
Private Sub Form_Load()
For i = 1 To 5
List1.AddItem "dato" & i
Next i
End Sub
'
'il seguente codice descrive il ciclo Do Until (1°tipo):
'
Private Sub Command1_Click()
n = 0
Do Until List1.ListCount = 0
'
'NOTA: il ciclo continua finchè la listbox non si svuota
'
MsgBox("Cancello" & List1.List(n), vbYes, "Delete")
List1.RemoveItem n
Loop
MsgBox "Dati terminati: la listbox è vuota"
End Sub

Ripetiamo per fugare ogni dubbio che con questa forma i comandi tra Do Until e Loop possono non essere mai eseguiti, se la condizione è vera (ossia se la lista è vuota già all'avvio) prima che il ciclo sia eseguito per la prima volta. Per poter ovviare a tale problema, permettendo al programma di mandare in esecuzione almeno una volta le istruzioni tra Until e Loop bisogna utilizzare la seconda forma posizionando la frase di condizione nell'istruzione Loop ossia alla fine del ciclo. Attenzione però: questa forma può generare un errore di Run-Time '5': chiamata di routine o argomento non valido, nel caso in cui la lista sia già vuota al momento dell'apertura del ciclo Vediamo l'esempio:

'Preupposta l'esistenza nel progetto di una listbox contenente 5 elementi 'NOTA: anche questa parte di codice non è mutata
'il seguente codice aggiunge alla listbox i 5 elementi:
'
Private Sub Form_Load()
For i = 1 To 5
List1.AddItem "dato" & i
Next i
End Sub
'
'il seguente codice descrive il ciclo Do Until (2°tipo):
'
Private Sub Command1_Click()
n=0
Do
MsgBox("Cancello " & List1.List(n), vbYes, "Delete")
List1.RemoveItem n
Loop Until List1.ListCount = 0
End Sub

Archivio:
Lezioni 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