Google PageRank

 

Ciklusok

Ciklusokra a mindennapi életben példa az az unalmas dolog, hogy ismétlődésszerűen minden nap el kell menni az iskolába, vagy esetleg a munkába munkába.

Mi most három típusát vesszük itt a ciklusoknak - Turbo Pascal ezt a hármat ismeri:

  • az elöl tesztelő ciklust,

  • a hátul tesztelő ciklust és

  • a számláló ciklust.

Elöl tesztelő ciklus

Ezt while-ciklusnak is szokták nevezni, mert benne van az algoritmus kulcsszói között ez a kifejezés is. Így néz ki:

while feltetel do

begin

 esemeny1;

 esemeny2;

 esemenyn;

end;

A ciklus addig ismétlődik, amíg a feltétel teljesül. Mikor a feltétel már nem teljesül a ciklus megszakad és folytatódik a többi utasítással a program.

Akkor érdemes használni, mikor a feltételt hamarabb le szeretnéd ellenőrizni, mint ahogy az utasítást végrehajtani.

Érdekes jellemzője, hogy ha már az elején nem teljesül a feltétel, akkor egyszer sem hajtódnak végre az utasítások.

while feltetel do esemeny;

{Mivel itt csak egy végrehajtandó utasítás van, nem kell a begin-end szópáros.}

Hátul tesztelő ciklus

Ennek is van másik neve: repeat-until-ciklus. Szerepe pont az ellenkezője az előzőnek: addig ismétlődik, amíg a feltétel nem teljesül. Amikor a feltétel teljesült, akkor nem ismétlődik tovább, hanem továbblép. Az algoritmus a következő:

repeat

 esemeny1;

 esemeny2;

 esemenyn;

until feltetel;

Első ránézésre az egyik fölösleges. Sokszor másodikra is. A legtöbb amatőr a hátultesztelő ciklust szereti, mert kevesebb kulcsszót kell használni, ha több utasítást kell ismételni.

Ennek a cikusnak az a jellemzője, hogy legalább egyszer mindenféleképpen végrehajtódnak az utasítások. Elég sokszor lesz lehetőség erre.

Számláló ciklus

Ennek az angolosított neve: for-ciklus. A nevéből rá is lehet jönni, hogy valamit számol. Azt számolja, hogy hányadszor ismétlődött meg a ciklus. Ha azt írod be, hogy 14-szer ismételje az adott utasításokat, akkor 14-szer lefutnak, és közben számolja, hogy hányadik alkalommal futott le.

Erre két szintaxis létezik. Az egyik esetben mindig eggyel nő az érték, a második esetben mindig csökken.

Amikor nő az érték akkor a "to" kifejezést, amikor csökken, akkor a "downto"-t kell használni .

Példa az elsőre:

for valtozo:=kisebbik to nagyobbik do

begin

 muvelet1;

 muvelet2;

 utolso_muvelet;

end;

Példa a másodikra:

for valtozo:=nagyobbik downto kisebbik do

begin

 muvelet1;

 muvelet2;

 utolso_muvelet;

end;

Tanács: a "valtozo", a "nagyobbik" és a "kisebbik" értékét csak akkor változtasd a ciklus folyamán, ha biztosra tudod, hogy mit kérsz a programtól, mert nagyon könnyen előfordulhat, hogy végtelenciklust hozol létre, azaz lefagyasztod.

Ha már sikerült lefagyasztani a programot, akkor használd a Ctrl+Break billentyűkombinációt!

Demonstrációs programok

Az első programunk addig kéri a jelszót, amíg meg nem adod a helyeset.

program jelszo;

uses crt;

var jelszo1,jelszo2:string[20];

begin

clrscr;

jelszo1:='Halál a májra!';

write('Jelszó: '); readln(jelszo2);

while jelszo1<>jelszo2 do

begin

write('A jelszó hibás! Kérem próbálja újra: ');

readln(jelszo2);

end;

write('Köszönöm.');

readln;

end.

Forráskód letöltése

Program letöltése

A második program hatványt számol.

program hatvany;

uses crt;

var a,h,i,eredmeny:word;

{Ezután, ha kevés változót használunk, akkor az "i" lesz a for ciklus egyik lehetséges segédváltozója.}

begin

clrscr;

write('Szám, amit hatványozni szeretnél: '); readln(a);

write('Hatvány: '); readln(h);

eredmeny:=1;

{Ha nem adunk kezdeti értéket, akkor az bármennyi lehet és akkor az eredmény nagy valószínűséggel hibás lesz.}

for i:=1 to h do eredmeny:=eredmeny*a;

write(a,'^',h,'=',eredmeny);

{Sok helyen azzal a furcsa kalapszerű karakterrel jelölik a hatvány.}

readkey;

end.

Forráskód letöltése

Program letöltése

Az utolsó program egy elrettentő példa a végtelen ciklusokra.

program vegtelen_ciklus;

var a:byte;

begin

 a:=5;

 repeat

  write('*');

 until a=6;

end.

Forráskód letöltése

Program letöltése