next up previous contents index
Next: Exceptions Up: Quelques éléments de Caml Previous: Filtrage

Boucles

Les autres constructions impératives servent à l'itération, ce sont les boucles for et while. Dans les deux cas, le corps de la boucle est parenthésé par les mot clés do et done. La boucle for permet d'itérer, sans risque de non terminaison, avec un indice de boucle, un identificateur dont la valeur augmente automatiquement de 1 ou de -1 à chaque itération. Ainsi

 

for i = {\em $e_1$} to {\em $e_2$} do {\em $e$} done

évalue l'expression e avec i valant successivement e1, e1 + 1, ... jusqu'à e2 compris. Si e1 est supérieur à e2, le corps de la boucle n'est jamais évalué. De même

for i = {\em $e_1$} downto {\em $e_2$} do {\em $e$} done

itère de e1 à e2 en décroissant. Dans les deux cas, l'indice de boucle est introduit par la boucle et disparaît à la fin de celle-ci. En outre, cet indice de boucle n'est pas lié à une référence mais à un entier: sa valeur ne peut être modifiée par une affectation dans le corps de la boucle. Les seuls pas d'itération possibles sont 1 et -1. Pour obtenir d'autres pas, il faut multiplier la valeur de la variable de contrôle ou employer une boucle while.

On ne peut pas affecter l'indice de boucle d'une boucle for.

La construction while,  

while {\em $e_1$} do {\em $e$} done

évalue répétitivement l'expression e tant que la condition booléenne e1 est vraie. (Si e1 est toujours fausse, le corps de la boucle n'est jamais exécuté.)

Lorsque le corps d'une boucle while est vide, on la remplace par la valeur rien, (), qui joue alors le rôle d'une instruction vide. Par exemple,

while not button_down () do () done;

attend que le bouton de la souris soit enfoncé.


next up previous contents index
Next: Exceptions Up: Quelques éléments de Caml Previous: Filtrage

1/11/1998