Condividi tramite


Istruzione Do...Loop (Visual Basic)

Aggiornamento: novembre 2007

Consente di ripetere un blocco di istruzioni fino a quando una condizione Boolean resta True o non diventa True.

Do { While | Until } condition
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop
-or-
Do
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop { While | Until } condition

Parti

  • While
    Obbligatoria a meno che non venga utilizzato Until. Ripetere il ciclo finché condition è False.

  • Until
    Obbligatoria a meno che non venga utilizzato While. Ripetere il ciclo finché condition è True.

  • condition
    Facoltativa. Espressione Boolean. Se condition è Nothing, Visual Basic la considera False.

  • statements
    Facoltativa. Una o più istruzioni ripetute finché la valutazione di condition resta o non diventa True.

  • Exit Do
    Facoltativa. Trasferisce il controllo al di fuori del ciclo Do.

  • Loop
    Obbligatoria. Consente di terminare la definizione del ciclo Do.

Note

Utilizzare una struttura Do...Loop per ripetere un insieme di istruzioni un numero indefinito di volte, finché non viene soddisfatta una condizione. Se si desidera ripetere le istruzioni un numero determinato di volte, in genere è più indicata l'istruzione For...Next.

La struttura Do...Loop offre maggiore flessibilità dell'Istruzione While...End While (Visual Basic) in quanto consente di scegliere se terminare il ciclo quando condition non è più True o quando diventa True. Essa consente inoltre di verificare condition all'inizio o alla fine del ciclo.

Regole

  • **Natura della condizione.**La condizione è in genere il risultato di un confronto tra due valori, ma può anche essere una qualsiasi espressione che restituisca un valore Tipo di dati Boolean (Visual Basic) (True o False). Sono compresi i valori di altri tipi di dati, come i tipi numerici, convertiti in Boolean.

  • Verifica della condizione. È possibile sottoporre a test condition soltanto una volta, all'inizio o alla fine del ciclo. È possibile utilizzare While o Until per specificare il parametro condition, ma non entrambi.

  • Numero di iterazioni. Se si esegue il test di condition all'inizio del ciclo, con l'istruzione Do, è possibile che il ciclo non venga mai eseguito, neanche una volta. Se invece si esegue il test alla fine del ciclo, mediante l'istruzione Loop, esso viene sempre eseguito almeno una volta.

  • NIdificazione di cicli. È possibile nidificare cicli Do inserendo un ciclo all'interno di un altro. È anche possibile nidificare diversi tipi di strutture di controllo l'una nell'altra. Per ulteriori informazioni, vedere Strutture di controllo nidificate.

  • Trasferimento all'esterno del ciclo. L'Istruzione Exit (Visual Basic) trasferisce il controllo immediatamente all'istruzione che segue l'istruzione Loop. È possibile uscire da un ciclo se si verifica una condizione che rende superfluo o impossibile continuare la ripetizione, come nel caso del rilevamento di un valore errato o di una richiesta di terminazione. È possibile inserire un numero qualsiasi di istruzioni Exit Do in qualsiasi punto del ciclo Do. L'istruzione Exit Do è spesso utilizzata dopo la valutazione di qualche condizione, ad esempio in una struttura If...Then...Else.

Cicli infiniti

L'istruzione Exit Do può essere utilizzata per eseguire un controllo su una condizione che potrebbe generare un ciclo infinito, vale a dire un ciclo che potrebbe essere eseguito per un numero di volte estremamente elevato o persino infinito. Se si rileva questa condizione, utilizzare l'istruzione Exit Do per interrompere il ciclo. In caso contrario, il ciclo continua.

Nell'esempio seguente, a number viene assegnato un valore che potrebbe determinare l'esecuzione del ciclo per più di 2 ^ 31 volte. L'istruzione If consente di verificare l'esistenza di questa condizione e, in caso affermativo, interrompe l'esecuzione del ciclo infinito.

Sub exitDoExample()
    Dim counter As Integer = 0
    Dim number As Integer = 8
    Do Until number = 10
        If number <= 0 Then Exit Do
        number -= 1
        counter += 1
    Loop
    MsgBox("The loop ran " & counter & " times.")
End Sub
Nota:

Per interrompere un ciclo infinito, premere ESC o CTRL+INTERR.

Esempio

Nell'esempio seguente vengono illustrate strutture Do...Loop nidificate, come pure l'utilizzo di While e Until e inoltre l'esecuzione del test all'inizio (istruzione Do) e alla fine (istruzione Loop) del ciclo.

Sub DoExample()
    Dim check As Boolean = True
    Dim counter As Integer = 0
    Do
        Do While counter < 20
            counter += 1
            If counter = 10 Then
                check = False
                Exit Do
            End If
        Loop
    Loop Until check = False
End Sub

Nell'esempio precedente, la struttura Do...Loop interna viene ripetuta 10 volte, imposta il valore del flag su False e termina in anticipo mediante l'istruzione Exit Do. Il ciclo esterno si conclude immediatamente dopo il controllo del valore del flag.

Vedere anche

Attività

Procedura: migliorare le prestazioni di un ciclo

Concetti

Strutture di ciclo

Strutture di controllo nidificate

Riferimenti

Istruzione For...Next (Visual Basic)

Tipo di dati Boolean (Visual Basic)

Istruzione Exit (Visual Basic)

Istruzione While...End While (Visual Basic)