13.4. Ciklusok

Az algoritmusok tulnyomó része igényli adott utasítássorozat többszöri végrehajtását. A legegyszerűbb esetben előre ismert az ismétlések száma. Ezekben az esetekben az alábbi szerkezeteket használjuk:

– for ciklusváltozó = kezdőérték to végérték do ciklusmag

– for ciklusváltozó = kezdőérték downto végérték do ciklusmag

Az első esetben a kezdőérték kisebb vagy egyenlő mint a végérték, második esetben fordítva. Ha ez nem teljesül, a ciklusmag nem hajtódik végre. Ha viszont teljesül, akkor a ciklusváltozó először felveszi a kezdőértéket s ezzel végrehajtódik a ciklusmag, majd eggyel nagyobb értéket, s azzal is végrehajtódik, s így tovább, míg végül a végértékkel is lefut a ciklusmag. Például az alábbi részlet outputja a 2 3 4 5 6 7 lesz.

for i = 2 to 7 do print "i" 

Hasonlóan a for ciklust használtuk a gráfok esetén is. Ebben az esetben ha a forall the ciklusváltozó 2 halmaz do ciklusmag szerkezet szerepel, a ciklusváltozó felveszi a halmaz minden elemének az értékét, s azokkal sorra lefuttatja a ciklusmagot. Ugyanez a helyzet a forall the (u,v) in E do szerkezet esetén is, itt az u, v változók sorra megkapják az élek végpontjainak az értékét minden él esetén. A halmaz elemeinek sorrendje esetleges, ám pár ciklus esetén az algoritmus megköveteli, hogy speciális sorrendben vegyük figyelembe az elemeket. Erre a ciklusok mellett szereplő zölddel írt megjegyzések hívják fel a figyelmet.

Ha előre nem ismert az utasítás vagy utasítássorozat végrehajtásának száma, akkor használhatjuk a while feltétel do ciklusmag alakú ciklust, melyben a ciklusmag mindaddig végrehajtódik, amíg a feltétel igaz. Ennek megfelelően a while IGAZ do utasítás ciklus soha nem ér véget, végtelen ciklus lesz.

A while ciklus esetén a ciklusmag végrehajtása előtt a feltételnek teljesülnie kell. Ezért is hívják ezt a fajta ciklust előltesztelősnek. A repeat utasítások until feltétel szerkezetnél az utasítások végrehajtása után kell megvizsgálni, hogy a feltétel teljesül-e. Ha nem, akkor újra és újra végre kell hajtani az utasításokat, s csak akkor lehet kilépni a ciklusból, ha a feltétel teljesül. Ennek megfelelően a repeat utasítások until HAMIS szerkezet valósítja meg a végtelen ciklust.