repeat <bloc d'instructions> until <expression>;
La boucle s'effectue tant que la valeur de expression est false. On s'arrête quand l'expression devient true. C'est le contraire de la boucle while.
Contrairement au while, il y a au moins un passage (1 boucle), même si l'expression est vraie au départ.
De même que pour le while, c'est le programmeur qui gère l'incrémentation.
program boucle_repeat;
var i:integer;
begin
repeat
writeln('le carré de ', i, ' est :', sqr(i));
i:=i+1; { incrémentation gérée par le programmeur }
until i>5;
writeln;
writeln('FIN.');
end.
Il faut examiner en particulier :
les conditions initiales,
les conditions d'arrêt,
l'incrémentation.
Avant de lancer le programme, il est conseillé de le faire "tourner" à la main (c'est-à-dire simuler l'exécution du programme pas à pas), en faisant évoluer les variables.
Les instructions contenues dans la boucle doivent permettre l'évolution de la valeur retournée par l'expression, sinon le programme peut rester bloqué dans une boucle infinie.