While vagy repeat … until?
A Free Pascal kétféle tesztelős ciklust ismer, az előfeltételes While és a végfeltételes Repeat..Until ciklust. Mindkét ciklusfajta válhat végtelen ciklussá vagy üres ciklussá. A végfeltételes ciklus magja egyszer biztosan lefut. Ebből következően előfeltételes ciklusokat olyankor szoktunk használni, amikor a ciklusfeltétel már a ciklus kezdetekor kiértékelhető, míg végfeltételes ciklusokban a ciklusfeltétel gyakran csak az első lefutás közben válik kiértékelhetővé.
Az előfeltételes ciklusok gyakori alkalmazási területe a tömbök, fájlok, listák feldolgozása. Ezeknél a műveleteknél előfordulhat, hogy a vizsgált adatszerkezet üres, vagy elértünk benne egy kitüntetett szerepű elemet (pl. az elsőt, az utolsó, vagy épp a keresettet), így nem kell rajta semmilyen műveletet végrehajtani. A végfeltételes ciklusok egyik gyakori alkalmazási területe az irányított adatbevitel, amikor a felhasználótól valamilyen feltételnek megfelelő adatot várunk a billentyűzetről. Egyszer mindenképpen meg kell adnia ezt az adatot, és ha az nem felel meg a követelményeknek, akkor a bekérést mindaddig ismételjük, míg megfelelőt nem ír.
Olyan utasítás, amely segítségével iteráció valósítható meg a programban, melyben az ismétlések száma egy logikai kifejezés értékétől függ.
Az a ciklusfajta, melyben a ciklusmag minden egyes lefutása előtt kiértékelődik a ciklus vezérlőfeltétele, és a mag csak akkor hajtódik végre, ha a feltétel igaz. Amikor a feltétel hamis, akkor a vezérlés a ciklusmag utáni utasításra adódik. Válhat belőle üres-, vagy végtelen ciklus is.
Az a ciklusfajta, melyben a ciklusmag minden egyes lefutása után kiértékelődik a ciklus vezérlőfeltétele, és a mag csak akkor hajtódik ismét végre, ha a feltétel hamis. Amikor a feltétel igazzá válik, akkor a vezérlés a következő utasításra adódik. Mivel az első kiértékelés csak a mag első lefutása után történik meg, üres ciklus csak extrém esetekben válhat belőle, azonban könnyen válhat végtelen ciklussá.
Olyan ciklus, melyben a ciklusmag egyszer sem fut le.
Végtelen ciklus
Olyan ciklus, melyben a ciklusmag (elvben) végtelenszer lefut, vagyis az ismétlés sosem ér véget. Néhány programozási nyelvben elfogadott technika, hogy szándékosan végtelen ciklust hozunk létre, majd a végfeltétel bekövetkeztekor Break utasítással kiugrunk a ciklusból. A Free Pascal lehetőséget ad erre, de mégsem tanácsos, mert a forráskódot könnyen áttekinthetetlenné teheti, hasonlóan a Goto utasításhoz. Alkalmazzunk helyette logikai változókat, és feltételes elágazást, vagy jobban átgondolt algoritmust :)!
példa (végtelen ciklus):
While True Do
Begin
ReadLn(A);
If A=0
Then Break;
Inc(B,A)
End
helyette (logikai változó):
Vege:= False;
While Not Vege Do
Begin
ReadLn(A);
If A=0
Then Vege:=True;
In Not Vege
Then Inc(B,A)
End
Olyan ciklus, melyben a ciklusmag (elvben) végtelenszer lefut, vagyis az ismétlés sosem ér véget.