Pascal programozás alap és haladó szinten!

Mindenkinek akit kicsit is érdekel ,de tudni akar! AZ övék ez a honlap!

Ciklusok a Pascalban

A programokban gyakran van szükség utasítások ismételt végrehajtására. Az ilyen feladatok megoldására szolgálnak a ciklusok. A Pascalban három féle ciklus található: a for, a while és a repeat-until.

A for ciklusutasítást akkor használjuk, ha pontosan ismerjük az ismétlések számát. A for ciklust két féle képen lehet használni: növekvő vagy csökkenő ciklusként. A for ciklusutasítás csak egyetlen utasítás végrehajtására vonatkozik (ha több utasítás, akkor blokk).

A for utasítás alakja növekményes ciklus esetén:

for ciklusváltozó:=kezdőérték to végérték do utasítás;

a végrehajtáshoz fontos hogy teljesüljön:kezdőérték < végérték kezdeti feltétel. A fentieket mindig az alábbi formában kérem (növekményes):

for ciklusváltozó:=kezdőérték to végérték do
begin
   utasítás;
end;

A for utasítás alakja csökkenő ciklus esetén, vagyis ha kezdőérték > végérték
for ciklusváltozó:=kezdőérték downto végérték do utasítás;

A fentieket mindig így kérem (csökkenő):

for ciklusváltozó:=kezdőérték downto végérték do
begin
   utasítás;
end;

A FOR ciklus folyamatábrája:

A növekményes for ciklus a hozzá szükséges változók deklarációjával:

 

Var i, kezd, veg : integer;

Begin

{kezd értékének beállítása }

{veg értékének beállítása}

 

For i:= kezd to veg do

Begin

            <tevékenység>

End;

End.

A növekményes ciklus akkor fog a ciklusmagba belépni, vagyis a vezérlés akkor kerül a tevékenység-re ha a kezd<veg kezdeti feltétel teljesül. A FOR ciklus estén a ciklusmagban leírt utasításban felhasználhatjuk az i ciklusváltozó értékét, de azt tilos megváltoztatni![1] A kezd és veg értékének beállítása lehet a billentyűzetről, vagy valamely értékadó utasítással. A kezd és veg értékének ismertnek kell lennie mielőtt a vezérlés a ciklusfejre kerül!

Az alábbi példa egész szám kiírását végzi 1-től 6-ig! A ciklusmag egy szám kiírásából áll!

Program kiir1_6;

Var i, kezd, veg : integer;

Begin

kezd:=1;

veg:=6;

 

For i:= kezd to veg do

Begin

            Write(i);

End
Readln;

End.

N db csillag a képernyőn, képernyőtörléssel és a szükséges crt unit meghívásával:

program Csillag;
uses Crt;      {biztosítja a képernyő kezelést a programban}
var i, n: byte;
begin
  ClrScr;      {képernyőt közöl}
  ReadLn(n);
  for i := 1 to n do
    Write('*');
  ReadLn
end.

A deklaráció miatt n legfeljebb 255 lehet.

Az alábbi példa két billentyűről megadott érték közti számokat írja ki növekvő sorrendben:

 

Program kiir_tol_ig;

Var i, kezd, veg : integer;

Begin

Write(’Add meg hol kezdjem a számlálást:”);

Readln(kezd);

Write(’Add meg a számlálás végértékét:’);

Readln(veg);

 

For i:= kezd to veg do

Begin

            Write(i:4); {1-1  kiíráshoz 4 karakternyi helyet használ fel}

End
Readln;

End.

Egy FOR-os progi (melyet a szokásos módon át kell, hogy írj!

program  FOR_TEST;
        var      s, j, k, i, l : integer;
        begin
                 s := 0;
                 for  j:= 1 to 5 do
                 begin
                     write( j );
                     s := s + j
                 end;
                 writeln( s );
                 for  k := 0 to 1 do write( k );
                 for  i := 10 downto 1 do writeln( i );
                 j := 3; k := 8; l := 2;
                 for  i := j to k do  writeln( i + l )
        end.


A kezdő és a vég érték lehet negatív is, csak az kell a tényleges kiíráshoz, hogy kezd<veg feltétel teljesüljön.

Az elöl tesztelő ciklus a Pacalban, a while ciklus

Ciklusaink lehetnek adott számszor lefutók, vagy előre nem ismert alkalommal lefutók. A nem ismert alkalommal lefutó ciklus lefutási feltételét tehetjük az ismétlődő tevékenység elé vagy mögé. Ha az ismétlés feltétele az ismétlődő utasítás előtt áll elöl tesztelő ciklusról beszélünk.

A while ciklus általános alakja:

while logikai kifejezés do utasítás;

A fenti ciklust mindig az alábbi módon kell leírni:

while (logikai kifejezés) do

begin

 utasítás;

end;

 Szokjuk  meg, hogy a feltételt zárójelbe tesszük.

A folyamatábra:

A while utasítás legegyszerűbb alkalmazása, az mikor egy számláló ciklust átírunk elöl tesztelővé. Nézzük az alábbi példát:

For i:=1 to 6 do

Begin

write(i);

End;

Az i kezdőértéke 1 és végértéke 6, az i értéke egyesével növekszik. Tehát i kezdőértéke 1, vagyis i:=1; minden i-re igaz, hogy i<=6, vagyis a while-os megoldás:


i:=1;

while i<= 6 do

begin

write(i);

            i:=i+1; {figyelem, nem FOR-os ciklus, ez biztosítja a kilépést}

end;


Egy tipikusan elöl tesztelő ciklussal megoldandó feladat az alábbi:

Kérdezze meg a gyerek az apját, mit gondol, hogy ma hányast kapott? A gyerek ma is egy szép jelest hozott. Míg az apa rossz jegyet, azaz 5-től eltérőt mond addig a gyerek újra kérdezi. Az ismétlésre akkor kerül sor, ha az apa nem találta el a kapott jegyet.


Be: jegy

Ciklus míg jegy<>5

            Be: jegy

Ciklus vége


A lényeges rész kódja:


Readln(jegy);

While (jegy<>5) do

Begin

            Readln(jegy);

End;

A fenti tevékenység az alapja az úgynevezett előolvasásos végjeles bekérésnek, mely adatok, adatsorok bevitelénél nagy szerepet játszik.

A repeat-until ciklus hasonló a while ciklushoz. Az ismétlést itt is egy logikai kifejezés vezérli. A különbség az, hogy a repeat-until ciklus egyszer mindenképpen végrehajtódik, mert a feltétel (a logikai kifejezés) a ciklus végén kerül kiértékelésre. A ciklusmag addig hajtódik végre, amíg a logikai kifejezés hamis, és akkor fejeződik be, amikor a logikai kifejezés igazzá válik. Ebben az esetben a logikai kifejezést kilépési feltételnek hívjuk. Az utasítás általános formája:

repeat ciklusmag; until logikai kifejezés;

A ciklusmag több utasításból is állhat. Itt nincs szükség a begin-end kulcsszavak használatára, mert a repeat-until kulcsszavak helyettesítik azokat.
A példa:

repeat
  Osszeg:=Osszeg+Szam;
  Szam:=Szam+1;
until Szam=21;

Az utasítás folyamatábrája:

 


Összefoglalóan a ciklusokról:

A ciklus fajtája

A futások száma

Legkevesebb hányszor fut le?

Feltételes

Elöl tesztelő

előre nem ismert

lehet, hogy egyszer sem

Hátul tesztelő

előre nem ismert

legalább egyszer

Számlálós

előre ismert

lehet, hogy egyszer sem

A ciklus utasításokkal utasítás(ok) ismételt végrehajtását lehet előírni. Az ismétlések számáról rendelkezésre álló információ alapján dönthetjük el, melyik ciklusszervező utasítást alkalmazzuk.

·                                 Ha előre ismert az ismétlések száma:

for ciklusváltozó:=kezdőérték to/downto végérték do utasítás;

·                                 Ha a végrehajtási feltétel a belépés előtt ismert (előltesztelő):

while logikai kifejezés do utasítás;

·                                 Ha a feltételvizsgálat előtt egyszer végre kell hajtani (hátultesztelő):

repeat ciklusmag until logikai kifejezés;

 

 



[1] Mi lenne a Ciklus i:= 1 –tő 5-ig i:=i-1;  ciklus értelme?


Weblap látogatottság számláló:

Mai: 3
Tegnapi: 13
Heti: 102
Havi: 65
Össz.: 153 416

Látogatottság növelés
Oldal: Ciklusok a Pascalban
Pascal programozás alap és haladó szinten! - © 2008 - 2024 - kerigseoszt.hupont.hu

A HuPont.hu-nál a honlap készítés egyszerű. Azzal, hogy regisztrál elkezdődik a készítés!

ÁSZF | Adatvédelmi Nyilatkozat

X

A honlap készítés ára 78 500 helyett MOST 0 (nulla) Ft! Tovább »