Un des avantages des programmes sur les humains est qu'ils sont capables d'effectuer un traitement simple un très grand nombre de fois, rapidement et sans fatiguer. Pour en profiter, il nous faut une structure permettant de répéter un morceau de code un nombre de fois déterminé. Nous allons voir une première méthode pour ce faire, il s'agit de la boucle for
. Voici la bête :
for i = 1 to (...nombre de répétition...) do (...corps de la boucle for...) done;
Le corps de la boucle consiste en une succession d'instructions quelconques.
Fonctionnement de la boucle for
, utilisée pour répéter un bloc :
- La première ligne permet de préciser le nombre de fois qu'il faut répéter la boucle.
- Les bornes
do
etdone
délimitent le bloc qu'on va répéter. - Le corps de la boucle
for
sera copié autant de fois qu'indiqué à la première ligne. - L'ensemble de la structure, formant une grosse instruction, doit être terminé par un point-virgule.
Remarque : la syntaxe de la première ligne peut paraître bien compliqué pour ce que l'on veut faire, mais c'est dû au fait qu'il s'agit d'une syntaxe plus générale, comme on le verra peu après.
Par exemple le code suivant :
print_string "bonjour"; print_newline(); print_string "bonjour"; print_newline(); print_string "bonjour"; print_newline();
D'après la règle énoncée plus haut, ce code peut se condenser en :
for i = 1 to 3 do print_string "bonjour"; print_newline(); done;
On a la règle suivante.
Les déclarations réalisées à l'intérieur du corps de la boucle ont une portée limitée à ce corps.
Par exemple :
for i = 1 to 3 do let x = 8 in print_int x; done;
est en quelques sortes équivalent à :
begin let x = 8 in print_int x; end; begin let x = 8 in print_int x; end; begin let x = 8 in print_int x; end;
A chaque end
, l'association du x
à la valeur 8 se termine, et c'est un autre bloc qui commence. A la suite de tout ce code, x
n'est associé à rien.