Syntaxe
Répète un bloc pendant qu'un compteur va d'une valeur de départ à une valeur de fin, en ajoutant le pas après chaque tour.
FOR <var> = <start> TO <end> [STEP <step>]
<statements>
NEXT [<var>]S’écrit aussi : TO, STEP, NEXT
Les éléments
| <var> | Le compteur, une variable numérique ordinaire (un sigil comme # est permis). Après NEXT, le nom est facultatif ; s'il est donné, ce doit être ce compteur. |
|---|---|
| <start> | La première valeur du compteur. |
| <end> | La dernière valeur que le compteur peut prendre. Lue une seule fois, avant le premier tour. |
| <step> | Ce qui est ajouté au compteur après chaque tour. 1 par défaut. Négatif, il compte à rebours ; les décimales sont permises ; 0 arrête le programme. Lu une seule fois, avant le premier tour. |
| <statements> | Le corps de la boucle. |
À savoir
- Le signe du pas choisit le sens. Un pas positif tourne tant que le compteur est
<=fin ; un pas négatif tant qu'il est>=fin.FOR i = 5 TO 1ne tourne jamais. STEP 0arrête le programme avec l'erreur "BASIC FOR STEP cannot be zero". Ce n'est pas une boucle sans fin.- Après la boucle, le compteur garde sa dernière valeur : fin + pas si la boucle est allée au bout, sa valeur au moment de l'
EXITsi on l'a quittée avant, la valeur de départ si elle n'a jamais tourné. - Modifier dans la boucle une variable utilisée dans
<end>ou<step>ne change rien. Modifier le compteur lui-même, si : le tour suivant ajoute le pas à la nouvelle valeur. - Un
NEXT jqui ne nomme pas le compteur du FOR le plus intérieur est une erreur de compilation : "NEXT variable j does not match FOR variable i". - Une chaîne qui contient
TOouSTEPcasse la ligne FOR :FOR i = Len("A TO B") TO 8compile, mais le programme ne démarre pas. Calculez la valeur dans une variable avant la boucle. - Défaut connu : quand le compteur est lu après
NEXT, une FUNCTION qui s'appelle elle-même depuis cette boucle peut écourter la boucle extérieure. Copiez plutôt la valeur utile dans la boucle.
Exemple
total = 0FOR i = 1 TO 5 total = total + iNEXT iConsole(Str(total)) ' 15Console(Str(i)) ' 6FOR n = 10 TO 1 STEP -3 Console(Str(n)) ' 10, 7, 4, 1NEXTDans le manuel : Contrôle du flux