Boucles et décisions : répéter des instructions un certain nombre de fois

Fréquemment vous devrez répéter un ensemble d'instructions pour un nombre connu à l'avance de répétitions. Cela s'effectue en utilisant une boucle, et la plus appropriée pour ce type de tâche est la boucle For...Next. Elle est appelée boucle For...Next parce que ces mots-clés sont utilisés pour indiquer le début et la fin de la boucle.

Les mots-clés For, To et Next

La structure de base d'une boucle For...Next est présentée ci-dessous :
For <variable> = <expression 1> To <expression 2>
    ; Instructions
Next

Dans une boucle For...Next vous utilisez une variable numérique comme compteur et mettez le nom de cette variable à la place de <variable> dans la structure ci-dessus. La variable compteur est définie à la valeur de l'expression 1 avant le début de la boucle. La boucle commence en comparant la valeur courante de la variable compteur à la valeur de l'expression 2 (qui est la valeur jusqu'à laquelle il faut compter). Si le compteur a dépassé la valeur de l'expression 2 alors la boucle se termine et le programme continue de s'exécuter à partir de la première instruction suivant le mot-clé Next.

Si la variable compteur n'a pas atteint la valeur de l'expression 2 alors les instructions situées entre les mots-clés For et Next sont exécutées. La variable compteur est ensuite incrémentée d' un et le programme reprend son exécution à partir du début de la boucle (où il vérifie la valeur de la variable).

Notez que le compteur doit dépasser la valeur de l'expression 2 pour que la boucle s'arrête. Cela signifie que les instructions de la boucle seront exécutées lorsque la variable compteur aura la même valeur que l'expression 2.

L'exemple ci-dessous présente une utilisation simple de la boucle For...Next. Vous pouvez également obtenir le source ici :

If OpenConsole()

    a_l_autre = 10
    For d_une_chose=1 To a_l_autre
        PrintN("L'indice courant de la boucle est "+Str(d_une_chose))
    Next
    
    PrintN("Appuyez sur ENTREE pour quitter le programme.")
    Input()
    CloseConsole()
EndIf
End

Sortie (Output) de l'exemple de boucle For...Next 1 Comme vous pouvez le constater si vous exécuter l'exemple (et comme le montre la sortie (output) de l'exemple à droite de ce paragraphe) au premier passage dans la boucle, la valeur de la variable d_une_chose (qui est utilisée comme compteur) est 1. C'est la valeur de la première expression (qui est simplement la constante numérique un).

A chaque itération (autre terme habituel pour indiquer une répétition) de la boucle vous pouvez voir que la valeur d_une_chose est incrémentée d'un. Enfin, la boucle est bouclée quand la valeur du compteur est 10 - c'est la même valeur que la variable a_l_autre, qui est utilisée comme seconde expression, pour contrôler la fin de la boucle.

Le mot-clé Step

Jusqu'ici la boucle For...Next s'est avéré utile pour compter d'une valeur à l'autre. Mais comment faire pour compter à rebours, ou utiliser différents incréments à la fin de chaque itération de la boucle ? La réponse à tout ceci est d'utiliser le mot-clé Step (pas), qui s'insère à l'intérieur de la structure de boucle For...Next comme ceci :
For <variable> = <expression 1> To <expression 2> [Step <expression 3>]
    ; Instructions
Next
Il apparaît entre crochets pour indiquer qu'il s'agit d'un élément facultatif de la commande (et évidemment, en l'omettant vous utilisez la boucle For...Next de la même manière qu'en haut de cette page). Cependant, quand vous utilisez le mot-clé Step la valeur de l'expression 3 est la valeur qui est ajoutée à la variable compteur. Par exemple, si vous utilisez "Step -1" alors la boucle For...Next comptera à rebours. Si vous utilisez "Step 10" alors elle comptera dans l'ordre croissant par pas de 10.

Cet exemple présente l'utilisation du mot-clé Step dans des boucles For...Next. Vous pouvez également l'obtenir à partir d'ici:

If OpenConsole()

    PrintN("Debut de la premiere boucle")
    
    l_autre = 1
    For d_une_chose=10 To l_autre Step -1
        PrintN("L'indice courant de la boucle est "+Str(d_une_chose))
    Next
    
    PrintN("")
    PrintN("Debut de la seconde boucle")

    For d_une_chose=1 To 10 Step 2
        PrintN("L'indice courant de la boucle est "+Str(d_une_chose))
    Next
        
    PrintN("Appuyez sur ENTREE pour quitter le programme.")
    Input()
    CloseConsole()
EndIf
End

Sortie (Output) de l'exemple du mot-clé Step
Comme vous pouvez le constater sur la sortie (output), la valeur de la variable d_une_chose est incrémentée par la valeur de l'expression 3 à chaque fois qu'elle est affichée, dans les deux boucles (dans le premier cas l'incrémentation par un nombre négatif équivaut à décrémenter).

Dans la deuxième boucle vous remarquerez que 10, la valeur de fin pour la boucle, n'est jamais affichée. C'est parce que la valeur de la variable d_une_chose est 9 et lorsqu'on lui ajoute 2 cela donne 11. La valeur de fin de la boucle est dépassée, donc la boucle se termine ici.