<tt>
Le cycle For
</tt>

<ms>
Le cycle for est utile pour répéter l'exécution d'un bloc de code pour un numéro défini de fois. La construction du cycle FOR est la suivante:

- For x = 1 to 10
- ...
- EndFor

"x" est la variable de contrôle utilisée comme compteur. Suivi par l'opérateur d'attribution "=". Le numéro "1" est la valeur de départ du cycle, tandis que "10" est la valeur d'arrivée. Le mot clé "to" sépare la valeur de départ de celle d'arrivée.

Par exemple:
- For x = 1 to 10
- Circle(x*10, 50, 8)
- EndFor

Cet exemple réalise une ligne horizontale de dix cercles qui se coupent l'un dans l'autre. Comme vu, l'instruction FOR est utilisée quand un cycle doit être exécuté un nombre fixé de fois. La variable de contrôle "x" du cycle est initialisée, contrôlée et modifiée par les actions de l'instruction FOR. Elle peut être utilisée dans le corps du cycle, mais elle ne devrait jamais être modifiée. Les valeurs de départ et d'arrivée du cycle peuvent être ascendantes ou descendantes: c'est le rôle de l'interprète d'augmenter ou de diminuer la variable de contrôle.

Plusieurs cycles FOR peuvent être nichés entre eux. Par exemple, le code qui suit  imprime un graphique de cercles qui se coupent dans toute la feuille.
- For x = 1 to 10
-   For y = 1 to 10
-     Circle(x*10, y*10, 8)
-   EndFor
- EndFor

L'augmentation ou la diminution du cycle est établi habituellement par l'interprète à la valeur 1. Cela signifie que la variable de contrôle est augmentée ou diminuée d'une unité par itération. Le pas d'augmentation ou de diminution peut toutefois être défini explicitement en utilisant le mot clé  "Step". L'instruction "Step" est optionnelle.

Par exemple:
- For x = 1 to 10 step 2
-   Circle(x*10, 50, 8)
- EndFor

Nous avons changé le pas d'augmentation en le mettant explicitement sur 2. Pratiquement cela signifie qu'on va tracer 5 cercles, et non plus 10. La variable de contrôle "x" va être augmentée de deux unités, le cycle va donc être répété seulement cinque fois, plutôt que dix. La valeur Step peut être uniquement en positif, car l'interprète se chargera de l'utiliser soit comme augmentation que comme diminution de la variable de contrôle. Même si on voulait utiliser un numéro négatif, celui-ci serait reporté en positif avant l'usage.

Les valeurs de départ, d'arrivée et de pas peuvent être uniquement du type numérique. Le type numérique comprend tous les numéros entiers et avec virgule mobile. Dans le cycle FOR nous pouvons donc utiliser aussi des numéros avec virgule.

Par exemple:
- For x = 0 to 3.13 step 0.01
- ...
- EndFor

L'itération d'un cycle FOR peut être interrompue en utilisant l'instruction Break. Quand on rencontre l'instruction Break, l'exécution passe à exécuter l'instruction qui suit le corps du cycle.

Par exemple:
- For x = 1 to 10
-   If x > 5
-     Break
-   EndIf
-   Circle(x*10, 50, 8)
- EndFor

L'exemple est naturellement un non-sense, car l'instruction If interrompt le cycle quand la variable de contrôle "x" dépasse 5. Plus simplement le cycle peut arriver à 5 et terminer. L'instruction Break habituellement ne devrait pas être utilisée, ayant des outils plus adéquats  pour écrire un cycle. Toutefois, en cas de besoin, on pourra tolérer l'usage.

L'instruction Continue ha un effet semblable au Break sur l'exécution du cycle. Il est interrompu mais, différemment du Break, l'exécution retourne au début, la variable de contrôle est mise à jour et, si nécessaire, le corps du cycle est réexécuté.

Par exemple:
- For x = 1 to 10
-   If (x >= 4) and (x <= 7)
-     Continue
-   EndIf
-   Circle(x*10, 50, 8)
- EndFor

Dans l'exemple il est tracée une ligne horizontale de cercles. Cependant le quatrième, cinquième, sixième et septième cercle ne seront pas dessinés, grâce à l'instruction  If qui fait repartir le cycle si la variable "x" est égale ou supérieure de 4 et inférieure ou égale à 7. Ainsi comme pour l'instruction Break, Continue peut être remplacée par des instructions plus performantes qui rendent le code plus lisible.
</ms>

<rl>
TBiblosBrailleGeometry.Language.While
TBiblosBrailleGeometry.Language
</rl>

<ck>
01GM9TTGKBXF24
</ck>

<in>
4039 0
</in>
