Pascal programozás alap és haladó szinten!

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

CIKLUSOK

A ciklusokról általában

Általánosságban bármilyen ismétlődő tevékenységet ciklusnak nevezünk, strukturális programozásban szokásos elnevezése az iteráció. Az ismétlés kapcsán meg kell mondanunk, hogy a tevékenységet

-         hányszor hajtsuk végre, vagy

-         meddig tartson az ismétlés, vagy

-         mikor hagyjuk abba az ismétlést.

Ha előre tudjuk, hogy hány alkalommal kell a tevékenységet végrehajtani, akkor számláló ciklusról beszélünk. A számláló (vagy számlálós) ciklus esetén tehát megadjuk, hogy mit kell elvégezni és hogy hány alkalommal. Az általunk vett programnyelvben ennek megvalósítása a FOR kulcsszóhoz kapcsolódik, ezért ezt gyakran For ciklusnak is nevezzük. Mivel a Pascal nem ad lehetőséget a lépésköz megválasztására, ezért itt az általásosságok közt sem tárgyaljuk ezt az esetet.

Adott számszor ismétlődő tevékenység pl: Lépj előre hetet! Számolj le 10db 1000 forintost! Tapsolj ötöt! Nagyon fontos, hogy az ismétlődő mozzanat mindig egy elemi tevékenység, amit megfelelő számszor ugyanúgy végzünk el, hajtunk végre. (De bármit tekinthetünk elemi tevékenységnek pl: Építs 10 házat!) Ezért a For ciklusnál is mindig alkalmazzuk majd a Begin End párt annak az elemi tevékenységnek a kijelölésére, amire az ismétlés vonatkozik.!

A „Tapsolj ötöt!”, esetén a tapsolás az elemi tevékenység, az ötöt (vagyis ötször) az ismétlés száma. Ez egy számlálós típus lesz, melyet többféle képpen meg lehet valósítani. Egy kicsit formalizálva a leírást:

Ismétlés ötször

Taps

formában írhatjuk ezt le a „Tapsolj ötöt” utasítást[1]. Tehát előbb megadjuk, hogy hányszor, aztán hogy mit is kell ismételten végrehajtani, milyen utasítást. Egy kicsit másként leírva megadjuk, hogy mettől meddig számlálva kell minden egyes szám elhangzása után tapsolni.

1-től 5-ig számlálva minden egyes számra

taps.

Mely végrehajtva így néz ki:

1 és taps

2 és taps

3 és taps

4 és taps

5 és taps

A számlálást tetszőéleges helyen kezdhetjük, lehetne például 2-től 6-ig, de a természetes 1-től 5-ig.

A programnyelvek (egy része) megkövetelik, hogy megadjuk mi menjen, változzon, számláljon 1-től 5-ig. Azt a változót ami 1-től 5-ig változik ciklusváltozónak nevezzük.  A leírás így történik:

Ismétlés i :=1 –től 5-ig

            Taps

Másképpen leírva:

Ciklus i :=1 –től 5-ig

            Taps

Tehát i a ciklusváltozó. Az i ciklusváltozó változik 1-től 5-ig. Az i kezdeti értéke 1 lesz és egyesével fog 5-ig (azt is felvéve) változni, növekedni. Az i minden egyes értékére történik egy taps. Tehát i felveszi a kezdőértéket, ez 1, utána taps, aztán i értéke 2 lesz, utána taps….végül i értéke 5 lesz utána taps. Amikor i felvette a végértékét befejeződik a ciklus és más tevékenység következik. A ciklusból kilépve a ciklus utáni utasítás következik végrehajtásra. Az i ciklusváltozó értéke az egyes nyelvekben a ciklusból kilépve eltérhet a megjelölt végértéktől, sőt van ahol nem is tudjuk i-t tovább használni, tehát szokjuk meg, hogy már most sem használjuk tovább az i-t, csak a ciklus vezérlésére. Az i ciklusváltozó szerepe a ciklus vezérlése, értéke a ciklusban használható, utána már nem.

A fenti leírást bizonyos esetekben helyettesíthetjük például azzal, hogy

Ciklus i:=2-től 6-ig

            Taps

Ha a ciklus belsejében fontos i értéke, akkor a kezdő és végérték fontos. Ha az a feladatunk, hogy egy szövegben a 7. betűtől írjunk ki még 5 betűt egyenként akkor feltétlenül 7-től kell 11-ig futtatni a ciklusváltozó érétkét.

A fenti esetekben tárgyalt számláló ciklust abban az esetben, ha a kezdőérték kisebb mint a végérték néha növekményes ciklusnak is nevezik.

 

Ciklus i:=1-től 6-ig

            Kiír: i

egy növekményes ciklus, i értéke 1-gyel kezdődően 6-ig, azzal bezárólag egyenként megjelenik a monitoron. Az i kezdőértéke 1 és végértéke 6. Tehát az íráskép

123456

vagy valami ilyesmi lesz.

Ha a ciklusváltozó kezdeti értéke nagyobb mint a végérték azt csökkenő (nem csökkeményes) ciklusnak nevezzük. A csökkenés tényét külön jelezni kell!

Ciklus i:=5 –től 1-ig csökkenő

            Kiír: i

Az íráskép a monitoron ekkor

            54321

vagy valami ilyesmi, de ezzel a tartalommal lesz.

 

A számlálós ciklus algoritmusát mindig az alábbi forma alapján írd!

Növekvő esetén:
Ciklus i:=k-tól v-ig
    ciklusmag
 Ciklus vége
 

Csökkenő esetén:

Ciklus i:=k-tól v-ig [csökkenő]
    ciklusmag
 Ciklus vége

 

Tehát kölező jelezni, hogy ciklusról van szó, ezt követi a ciklusváltozó neve (i), majd, hogy mi a kezdőváltozó neve (k), vagy értéke és mi a végérték, vagy annak neve (v). A ciklus végét is feltétlenül jelezni kell! Ügyelj a struktúrált írásra, a ciklusmag mindig kerüljön beljebb!

 

A számlálós ciklus után térjünk át az elöl tesztelő ciklusra! Ha tudjuk hogy meddig tartson a tevékenység (tehát nem hányszor) akkor, úgy kell leírni az ismétlést, ciklust, hogy előbb megadjuk, hogy meddig, mely feltétel igaz értékéig akarunk ismételni, majd megadjuk, hogy mi az a tevékenység amit ismételni akarunk. Amíg bírod addig táncolj. Amíg éhes vagy addig egyél! Amíg van mit enni addig egyél! (A mondatok a magyar nyelv sajátságai miatt másként is hangozhatnának pl: „Egyél, amíg van mit!”. De ezekben a formákban a mi szempontunknak kevésbé felelnek meg. A mondatainkat mindig alakítsuk át az előbbi, talán egy kicsit kicsavart, de a célnak jobban megfelelő formára!) 

A „Míg van kedved, addig tapsolj!” mondatban a tapsolás az elemi tevékenység az ismétlés számát azonban nem tudjuk előre. Ha van kedvem tapsolni, akkor tapsolok egyet, s ha a tapsolás után még mindig van kedvem, akkor újabbat tapsolok. Minden tapsolás után átgondolom, van-e kedvem tovább tapsolni? Az fontos, hogy a tapsolás, tehát az ismétlődő elemi tevékenység elvégzése befolyásolja a tapsoláshoz való kedvemet. (Egyszer csak elmegy a kedvem a tapsolástól, mert elkezd fájni a tenyerem, vagy elfáradok.) Formálisan leírva

Míg van kedved

Taps

Utalva az ismétlésre a tevékenységgel kapcsolatban inkább így kell írnunk:

Ciklus míg van kedved

            Taps

Ha egyáltalán nincs kedved tapsolni, akkor azt el sem kezded. Tehát lehet, hogy az ilyen, az ismétlés feltételét elől tarlamazó, elöl tesztelő ciklus egyszer sem hajtódik végre. Itt is igaz, hogy az elemi tevékenység bármi lehet és annak jelzésére a programban kötelező használni a Begin End zárójel párt.

Ennél a ciklusfajtánál a logikai kifejezés a ciklusmag végrehajtása előtt kerül kiértékelésre. Ha az eleve hamis, akkor a ciklus egyszer sem kerül végrehajtásra. Ezért ezt a logikai kifejezést belépési feltételnek is hívjuk. Az egyetlen utasításból álló ciklusmag (ha több utasítás, akkor blokk) addig kerül végrehajtásra, amíg a logikai kifejezés igaz. A logikai kifejezésben szereplő változókat a kiértékelés előtt értékkel kell ellátni. A ciklus belsejében zajló tevékenység a logikai kifejezésben levő változó értékét kell, hogy változtassa!

(Mivel a hátultesztelő ciklusokat az egyes programnyelvek másképpen értelmezik, akár egymással ellentétes logikával, így nem foglalkozunk velük.  A programozás alapjainak elsajátítása után más programnyelvi környezetben majd tanulunk a hátultesztelő ciklusról.)

 

Mindkét ciklusfajtánál (igazán mindháromnál) felfedezhetünk közös elemeket. Mindkettő megvizsgál valamilyen feltételt, amit ciklusfeltételnek nevezünk. Döntenünk kell az ismétlésről vagy az ismétlés befejezéséről. A ciklusfeltételt tartalmazó rész a ciklus fej. Mindkét ciklus tartalmaz olyan utasítás(oka)t, amit(ket) ismételni kell. Az ismétlődő utasítás a ciklus belsejét alkotja, ez a ciklusmag vagy ciklustörzs. Az elöl tesztelő és a számláló ciklusok felépítése tehát:

Ciklus fej

ciklus törzs

 

Mindkét ciklusnál  előbb tesztelünk és csak utána hajtjuk végre a ciklusmagot.A számláló ciklus teszje, hogy a ciklusváltozó értéke elérte-e a végértéket[2]. Az elöl tesztelő ciklus esetén a teszt a feltétel teljesülésének, igaz voltának a vizsgálata.

Megjegyzések, feladatok:

A magyar nyelv, vagy agy egy ismétlődő tevékenység esetén általában nem a folytatásának hanem a befejezésének feltételét adja meg. Ezek tipikusan hátultesztelő ciklusok lesznek. A hátul tesztelő ciklusnál a tevékenység egyszer mindenképp végrehajtódik. Ilyenek az alábbi mondatok:

Keverd, míg fokhagyma szagú nem lesz! (Keverés után, ha megcsap a fokhagyma szag, abbahagyom.)

Főzd, míg elég sűrűvé nem válik! (Főzés után, ha megáll benne a kanál abbahagyom.)

Húzd, míg el nem szakad! (Húzom, ha elszakadt nem húzom tovább.)

Persze van mondásunk az elöl tesztelőre is:

Addig üsd a vasat, amíg meleg! (Előbb megnézem meleg-e, s ha igen, ütöm, egyet ütök, majd újra nézem meleg-e még?!.) A mondást így kell átírni, értelmezni: Amíg meleg a vas addig üsd!

Próbálj önállóan ilyen mondatokat, mondásokat gyűjteni és elemzni, leírni a vett módon!

 



[1] Vegyük észre, hogy az utasítás fogalma igen rugalmas. Ha egy utasítást tovább már nem bonthatunk az lesza z elemi utasítás pl egy szorzás a mi programnyelvünkben.

[2] A tesztelést a program automatikusan végzi, mi nem is tudjuk hogyan. (A forráskódok általában nem nyiltak.)


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

Mai: 3
Tegnapi: 31
Heti: 89
Havi: 52
Össz.: 153 403

Látogatottság növelés
Oldal: CIKLUSOK
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 »