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 1 ne tourne jamais.
  • STEP 0 arrê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'EXIT si 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 j qui 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 TO ou STEP casse la ligne FOR : FOR i = Len("A TO B") TO 8 compile, 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, 1NEXT
Dans le manuel : Contrôle du flux