Istruzione While...End While (Visual Basic)
Esegue una serie di istruzioni purché una determinata condizione sia True
.
Sintassi
While condition
[ statements ]
[ Continue While ]
[ statements ]
[ Exit While ]
[ statements ]
End While
Parti
Termine | Definizione |
---|---|
condition |
Obbligatorio. Espressione Boolean . Se condition è Nothing , Visual Basic lo considera come False . |
statements |
Facoltativo. Una o più istruzioni che seguono While , che vengono eseguite ogni volta condition che è True . |
Continue While |
Facoltativo. Trasferisce il controllo all'iterazione successiva del blocco While . |
Exit While |
Facoltativo. Trasferisce il controllo fuori dal blocco While . |
End While |
Obbligatorio. Termina la definizione del blocco While . |
Osservazioni:
Usare una struttura While...End While
quando si desidera ripetere un set di istruzioni un numero illimitato di volte, purché una condizione rimanga True
. Se si vuole una maggiore flessibilità con la posizione in cui si testa la condizione o il risultato per cui si esegue il test, è consigliabile scegliere l’Istruzione Do...Loop. Se si desidera ripetere le istruzioni un numero di volte impostato, l'istruzione For...Next è in genere una scelta migliore.
Nota
La parola chiave While
viene usata anche nell’Istruzione Do...Loop, Clausola skip while e Clausola Take while.
Se condition
è True
, tutti gli oggettistatements
vengono eseguiti fino a quando non viene rilevata l'istruzione End While
. Il controllo torna quindi all'istruzione While
, e condition
viene nuovamente controllato. Se condition
è ancora True
, il processo viene ripetuto. Se è False
, il controllo passa all'istruzione che segue l'istruzione End While
.
L'istruzione While
controlla sempre la condizione prima di avviare il ciclo. Il ciclo continua mentre la condizione rimane True
. Se condition
è False
quando si immette per la prima volta il ciclo, non viene eseguito nemmeno una volta.
condition
in genere deriva da un confronto di due valori, ma può essere qualsiasi espressione che restituisce un valore tipo di dati booleano (True
o False
). Questa espressione può includere un valore di un altro tipo di dati, ad esempio un tipo numerico, convertito in Boolean
.
È possibile annidare i cicli While
inserendo un ciclo all'interno di un altro. È anche possibile annidare diversi tipi di strutture di controllo tra loro. Per altre informazioni, vedere Strutture di controllo annidate.
Exit While
L'istruzione Exit While può fornire un altro modo per uscire da un ciclo di While
. Exit While
trasferisce immediatamente il controllo all'istruzione che segue l'istruzione End While
.
In genere si usa Exit While
dopo la valutazione di alcune condizioni, ad esempio in una struttura If...Then...Else
. È possibile uscire da un ciclo se si rileva una condizione che rende superfluo o impossibile continuare l'iterazione, ad esempio un valore errato o una richiesta di terminazione. È possibile usare Exit While
quando si testa una condizione che potrebbe causare un ciclo infinito, ovvero un ciclo che potrebbe eseguire un numero estremamente elevato o persino infinito di volte. È quindi possibile usare Exit While
per eseguire l'escape del ciclo.
È possibile inserire qualsiasi numero di istruzioni Exit While
in qualsiasi punto del ciclo di While
.
Se usato all'interno di cicli While
annidati, Exit While
trasferisce il controllo all'esterno del ciclo più interno e nel successivo livello superiore di annidamento.
L'istruzione Continue While
trasferisce immediatamente il controllo all'iterazione successiva del ciclo. Per altre informazioni, vedere Istruzione Continue.
Esempio 1
Nell'esempio seguente le istruzioni nel ciclo continuano a essere eseguite fino a quando la variabile index
non è maggiore di 10.
Dim index As Integer = 0
While index <= 10
Debug.Write(index.ToString & " ")
index += 1
End While
Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10
Esempio 2
Nell'esempio seguente viene illustrato l'uso delle istruzioni Continue While
e Exit While
.
Dim index As Integer = 0
While index < 100000
index += 1
' If index is between 5 and 7, continue
' with the next iteration.
If index >= 5 And index <= 8 Then
Continue While
End If
' Display the index.
Debug.Write(index.ToString & " ")
' If index is 10, exit the loop.
If index = 10 Then
Exit While
End If
End While
Debug.WriteLine("")
' Output: 1 2 3 4 9 10
Esempio 3
Nell'esempio seguente vengono lette tutte le righe di un file di testo. Il metodo OpenText apre il file e restituisce un oggetto StreamReader che legge i caratteri. Nella condizione While
il metodo Peek di StreamReader
determina se il file contiene caratteri aggiuntivi.
Private Sub ShowText(ByVal textFilePath As String)
If System.IO.File.Exists(textFilePath) = False Then
Debug.WriteLine("File Not Found: " & textFilePath)
Else
Dim sr As System.IO.StreamReader = System.IO.File.OpenText(textFilePath)
While sr.Peek() >= 0
Debug.WriteLine(sr.ReadLine())
End While
sr.Close()
End If
End Sub