Condividi tramite


Istruzione For...Next (Visual Basic)

Aggiornamento: novembre 2007

Consentono di ripetere un gruppo di istruzioni per il numero di volte specificato.

For counter [ As datatype ] = start To end [ Step step ]
    [ statements ]
    [ Exit For ]
    [ statements ]
Next [ counter ]

Parti

  • counter
    Obbligatorio nell'istruzione For. Variabile numerica. Variabile di controllo disponibile per il ciclo.

  • datatype
    Obbligatoria se counter non è già dichiarato. Tipo di dati di counter.

  • start
    Obbligatorio. Espressione numerica. Valore iniziale di counter.

  • end
    Obbligatorio. Espressione numerica. Valore finale di counter.

  • step
    Facoltativo. Espressione numerica. Valore dell'incremento di counter a ogni iterazione del ciclo.

  • statements
    Facoltativo. Una o più istruzioni inserite tra For e Next ed eseguite per il numero di volte specificato.

  • Exit For
    Facoltativo. Trasferisce il controllo all'esterno del ciclo For.

  • Next
    Obbligatorio. Termina la definizione del ciclo For.

Note

Per ripetere un set di istruzioni per il numero di volte specificato, utilizzare una struttura For...Next.

Una struttura Istruzione While...End While (Visual Basic) o Istruzione Do...Loop (Visual Basic) è utile quando non si conosce in anticipo quante volte sarà necessario eseguire le istruzioni nel ciclo. Se invece si prevede di eseguire il ciclo per un numero specifico di volte, si consiglia di utilizzare For...Next. Il numero di iterazioni viene definito la prima volta che si entra nel ciclo.

Dal valore di step, che può essere positivo o negativo, dipende il tipo di elaborazione del ciclo come illustrato di seguito:

Valore di Step

Il ciclo verrà eseguito se

Positivo o zero

counter <= end

Negativo

counter >= end

Se omessa, viene automaticamente impostato il valore 1.

Regole

  • Tipi di dati. Il tipo di dati di counter è generalmente Integer, tuttavia è accettato qualsiasi tipo che supporti gli operatori maggiore di o uguale a (>=), minore di o uguale a (<=), di addizione (+) e di sottrazione (-). È anche possibile utilizzare un tipo di dati definito dall'utente, purché supporti tutti gli operatori menzionati.

    Le espressioni start, end e steprestituiscono di norma un valore di tipo Integer ma possono restituire qualsiasi tipo di dati ampliabile al tipo della variabile in counter. Se per counter si utilizza un tipo definito dall'utente, potrebbe essere necessario definire l'operatore di conversione CType per convertire i tipi di start, end o step nel tipo di counter.

  • Dichiarazione. Se counter non è stato dichiarato al di fuori del ciclo, è necessario dichiararlo nell'istruzione For. In questo caso, l'ambito di counter è il corpo del ciclo. Non è tuttavia possibile dichiarare counter all'interno e all'esterno del ciclo.

  • Numero di iterazioni. In Visual Basic i valori delle iterazioni start, end e step vengono restituiti solo un volta, prima dell'inizio del ciclo. Se nel blocco di istruzioni end o step cambiano, le modifiche non avranno alcun effetto sulla ripetizione del ciclo.

  • Cicli nidificati. È possibile nidificare i cicli For inserendo un ciclo all'interno di un altro ma dotando ciascuno di essi di una variabile counter univoca. Di seguito è riportato un esempio di costruzione corretta:

    For i As Integer = 1 To 10
        For j As Integer = 1 To 10
            For k As Integer = 1 To 10
                ' Insert statements to operate with current values of i, j, and k.
            Next k
        Next j
    Next i
    

    È anche possibile nidificare diversi tipi di strutture di controllo all'interno di un'altra. Per ulteriori informazioni, vedere Strutture di controllo nidificate.

    Nota:

    Se viene rilevata un'istruzione Next di un livello di nidificazione esterno prima che di un livello interno, il compilatore restituisce un errore. Tuttavia, il compilatore può rilevare questo errore di sovrapposizione solo se si specifica counter in ogni istruzione Next.

  • **Identificazione della variabile di controllo.**Se lo si desidera, è possibile specificare counter nell'istruzione Next Ciò consente di migliorare la leggibilità del programma, soprattutto se i cicli For sono nidificati. È necessario specificare la stessa variabile presente nell'istruzione For corrispondente.

  • Trasferimento all'esterno del ciclo. L'Istruzione Exit (Visual Basic) trasferisce immediatamente il controllo all'istruzione che segue l'istruzione Next. È possibile uscire da un ciclo se si rileva una condizione che rende inutile o impossibile continuare a scorrere, quale un valore erroneo o una richiesta di interruzione. Inoltre, se viene intercettata un'eccezione in una struttura Try...Catch...Finally, è possibile utilizzare Exit For alla fine del blocco Finally.

    È possibile inserire un numero qualsiasi di istruzioni Exit For nella posizione desiderata all'interno del ciclo For. L'istruzione Exit For viene spesso utilizzata dopo la restituzione di alcune condizioni, ad esempio in una struttura If...Then...Else.

  • Cicli senza termine. Uno degli utilizzi di Exit For consiste nella verifica di una condizione che potrebbe provocare un ciclo senza termine, vale a dire un ciclo che potrebbe essere eseguito un numero di volte estremamente grande o infinito. Se si rileva una simile condizione, è possibile utilizzare Exit For per interrompere l'esecuzione del ciclo. Per ulteriori informazioni, vedere Istruzione Do...Loop (Visual Basic).

Comportamento

  • Dall'esecuzione di un ciclo. All'inizio dell'esecuzione del ciclo For...Next, vengono restituiti i valori start, end e step solo la prima volta. Quindi start viene assegnato a counter. Prima dell'esecuzione del blocco di istruzioni, viene confrontato il valore di counter con quello di end. Se counter ha già superato il valore finale, il ciclo For termina e il controllo passa all'istruzione successiva all'istruzione Next. Atrimenti viene eseguito il blocco di istruzioni.

  • Iterazioni del ciclo. Ogni volta che si incontra un'istruzione Next, counter viene incrementato del valore rappresentato da step e si ritorna all'istruzione For. counter viene nuovamente confrontato con il valore end e in base al risultato viene rieseguito il blocco oppure terminato il ciclo. Il processo continua finché counter non passa end oppure non si raggiunge un'istruzione Exit For.

  • Terminazione del ciclo. Il ciclo termina solo dopo che counter passa end. Se counter è uguale a end, il ciclo continua. Il confronto che determina se eseguire il blocco è counter <=end se step è positivo e counter >= end se step è negativo.

  • Modifica dei valori di un'iterazione. Se si modifica il valore dell'argomento counter durante un ciclo, le operazioni di lettura e debug del codice potrebbero risultare più difficili. La modifica del valore start, end o step, invece, non influisce sui valori di iterazione definiti la prima volta che il ciclo è stato eseguito.

Esempio

Nell'esempio seguente vengono illustrate strutture For...Next nidificate con diversi valori step.

Dim words, digit As Integer
Dim thisString As String = ""
For words = 10 To 1 Step -1
    For digit = 0 To 9
        thisString &= CStr(digit)
    Next digit
    thisString &= " "
Next words

Nell'esempio precedente viene creata una stringa contenente 10 istanze dei numeri da 0 a 9. Le stringhe sono separate da uno spazio. Il ciclo esterno utilizza una variabile contatore del ciclo a ogni ciclo per ridurne il valore.

Vedere anche

Attività

Procedura: migliorare le prestazioni di un ciclo

Concetti

Strutture di ciclo

Strutture di controllo nidificate

Riferimenti

Istruzione While...End While (Visual Basic)

Istruzione Do...Loop (Visual Basic)

Istruzione Exit (Visual Basic)

Istruzione For Each...Next (Visual Basic)