for ... to ... do
For To Do permet de définir des boucles utilisant un itérateur numérique entier.
for [var] <loopVariable> := <startBound> {to|downto} <endBound> [step <stepValue>] do
L'exécution de la boucle peut être interrompue ou modifiée par break et continue.
La variable de boucle (i dans l'exemple ci-dessus) doit nécessairement être une variable locale de type Integer.
Cette variable n'est pas modifiable par le code à l'intérieur de la boucle.
Croissante ou descendante
Deux formes sont possibles, selon si la boucle est croissante ou décroissante:
for i := 10 downto 1 do ... // i va partir de 10 et se décrémenter de 1 en 1 jusqu'à 1
Les bornes basses et hautes, ainsi que le pas, sont évaluées uniquement à l'entrée de la boucle, si les bornes ne sont pas cohérentes, par exemple une borne haute inférieure à la borne basse pour une boucle ascendante, la boucle ne sera pas entrée.
Pas de boucle
L'utilisation de step est optionnelle :
- si absent, la valeur par défaut est 1
- si présent, il doit spécifier une valeur entière strictement positive.
for i := 10 downto 1 step 2 do ... // i va partir de 10 et se décrémenter de 2 en 2 jusqu'à 2
Déclaration combinée
A partir de Qubes 6.1 il est possible de combiner la déclaration de variable de boucle avec la boucle en débutant par for var:
- le type de la variable ainsi créée est déduit automatiquement, et la variable n'est accessible qu'au sein de la boucle.
for var i := 2 to 10 do ...; // OK
Print(i); // ERREUR!
- le nom de la variable de boucle ainsi déclarée ne doit pas exister dans la portée locale.
for i := functionCall() to i+5 do ... // ERREUR!
- il est possible d'utiliser la variable pour calculer l'expression to/downto.