while toistoehto do lausePascal ym. kielet jäljittelivät ideaa.
Perinteisesti toistot oli ohjelmoitu hyppykäskyin tyyliin
10: if not ehto goto 20;
lause;
goto 10;
20:
Tämä tyyli tarjosi mahdollisuuden "vaikka mihin", ja oikeutetusti
alettiin huolestua ohjelmien oikean toiminnan varmistamisesta.
Esimerkki:
10: if ehto1 goto 20;
lause1;
15: if ehto2 goto 30;
20: lause2;
if ehto4 goto 40;
lause3;
goto 10;
30: lause4;
if ehto5 goto 20;
40: ...
Ehdollisilla toistolauseilla on kaksi tyypillistä muotoa,
alkuehtoinen ja loppuehtoinen:
while toistoehto do repeat TAI do
lause lause lause
until lopetusehto while toistoehto
Toisinaan algoritmin logikka on selvimmin ilmaistavissa ns.
"puolitoistakertaisella luupilla", toistorakenteella, joka
voidaan lopettaa keskellä toistettavaa alialgoritmia. Keksittiin
rakenteita, joissa toistettavan alialgoritmin voi lopettaa
muuallakin kuin vain alussa tai lopussa, tyyliin:
loop // alkuehtoinen // loppuehtoinen
lause1; loop loop
when ehto1 exit; when ehto exit; lause;
lause2; lause; when ehto exit;
when ehto2 exit; end_loop end_loop
lause3;
...
end_loop
Vertaa Javan rakenteeseen:
while (true) {
lause1;
if ehto1 break;
lause2;
if ehto2 break;
lause3;
}
Myös yhden toistokerran keskeyttäminen ja toistotasojen ylittäminen
keskeyttämisessä tai koko toiston lopettamisessa on mahdollista
joissakin kielissä. Esim. Javassa:
ulompi: while (ehto1) {
...
sisempi: while (ehto2) {
...
if (ehto3) break sisempi;
...
if (ehto4) continue ulompi;
...
} // sisempi loppuu
...
} // ulompi loppuu