Istruzione For...Next

Ripete le istruzioni incluse nel blocco For...Next per il numero di volte specificato.

Sintassi:

For contatore=inizio To fine [Step passo]

blocco istruzioni

[Exit For]

blocco istruzioni

Next [contatore]

Variabili:

Contatore: inizialmente, al contatore del ciclo viene assegnato il valore a destra del segno di uguale (inizio). Sono ammesse solo variabili numeriche. Il valore del contatore del ciclo aumenta o diminuisce in base alla variabile Step, finché non viene passato il valore finale.

Inizio: variabile numerica che definisce il valore iniziale del ciclo.

Fine: variabile numerica che definisce il valore finale del ciclo.

Step: imposta il valore di cui deve essere aumentato o diminuito il contatore del ciclo. Se la variabile Step non è specificata, il contatore del ciclo viene incrementato di 1. In questo caso, il valore finale deve essere maggiore di quello iniziale. Se volete che il valore del contatore diminuisca, dovete impostare un valore finale minore di quello iniziale e assegnare alla variabile Step un valore negativo.

Il ciclo For...Next ripete tutte le istruzioni del ciclo per il numero di volte specificato dai parametri.

A mano a mano che la variabile del contatore diminuisce, LibreOffice Basic controlla se sia stato raggiunto il valore finale. Non appena il contatore supera il valore finale, il ciclo termina automaticamente.

Le istruzioni For...Next possono essere annidate. Se non specificate una variabile dopo l'istruzione Next, quest'ultima si riferisce automaticamente all'istruzione For più recente.

Se specificate un incremento di 0, le istruzioni tra For e Next vengono ripetute continuamente.

Nel conteggiare a ritroso la variabile del contatore, LibreOffice Basic controlla gli eventuali overflow o underflow. Il ciclo termina quando il contatore supera il valore finale (valore Step positivo) o scende al di sotto del valore finale (valore Step negativo).

Per uscire dal ciclo in modo incondizionato, usate l'istruzione Exit For. Questa istruzione deve trovarsi all'interno di un ciclo For...Next. Usate l'istruzione If...Then per provare la condizione di uscita come segue:

For...

istruzioni

If condizione = True Then Exit For

istruzioni

Next

Nota: nei cicli For...Next annidati, l'uscita incondizionata da un ciclo con Exit For ha effetto su un solo ciclo.

Esempio

L'esempio seguente utilizza due cicli annidati per ordinare una matrice di stringhe con 10 elementi ( sVoce() ) precedentemente riempita con vari tipi di contenuto:

Sub ExampleSort

Dim sEntry(9) As String

Dim iCount As Integer

Dim iCount2 As Integer

Dim sTemp As String

    sVoce(0) = "Gianni"

    sVoce(1) = "Patrizia"

    sVoce(2) = "Carlo"

    sVoce(3) = "Tommaso"

    sVoce(4) = "Michele"

    sVoce(5) = "Davide"

    sVoce(6) = "Caterina"

    sVoce(7) = "Susanna"

    sVoce(8) = "Edoardo"

    sVoce(9) = "Cristina"

    For iCount = 0 To 9

        For iCount2 = iCount + 1 To 9

            If sEntry(iCount) > sEntry(iCount2) Then

                sTemp = sEntry(iCount)

                sEntry(iCount) = sEntry(iCount2)

                sEntry(iCount2) = sTemp

            End If

        Next iCount2

    Next iCount

    For iCount = 0 To 9

        Print sEntry(iCount)

    Next iCount

End Sub