Üdvözöl a(z) RedQueen
Főoldal Letöltések Cikkek Archívum Keresés
HTML JavaScript BIOS Dos Dreamweaver Turbo Pascal

Menü
· Főoldal
· Archívum
· Cikkek
· Dokumentumok
· Észrevételek
· Keresés
· Letöltések
· Nyomtatható

Keresés
Google


KeyGen Keresés


Ajánlat
RedQueen

06. Algoritmus elemek

(830 szó a szövegben)
(1422 olvasás)   Nyomtatható változat




5. Algoritmus elemek


5.1 Ciklusok - iterációk


Segítségével utasítás(ok) ismételten végrehajható(k). Részei az utasítást (utasításokat) tartalmazó ciklusmag és az ismételt folytatást vagy befejezést vezérlo rész.
A Pascal nyelv három ciklust definiál: két feltételes ciklust valamint egy eloírt lépésszámú (más néven számláló vagy lépteto) ciklust.

5.1.1 A WHILE ciklus


Az utasítás szintaktikája:
WHILE feltétel DO utasítás

Kezdofeltételes ciklus. Amíg a feltétel igaz, addig ismétli az utasítást, ha hamis, akkor a program következo utasítására ugrik. A feltétel egy logikai (boolean) kifejezés. Ha több utasítás szerepel a ciklus magjában, akkor Begin - End ún. utasítás zárójelet kell alkalmaznunk. Ha a feltétel már eloször sem teljesül, akkor a ciklusmag egyszer sem kerül végrehajtásra (üres ciklus), ha pedig a feltétel soha nem vesz fel hamis értéket, akkor a program végtelen ciklusba kerül.

Tipikus használata: a ciklus végrehajtása attól függ, hogy van-e még feldolgozandó adat, az ismétlések számát elore nem ismerjük, akár 0 is lehet.

Példa: Képezzük a billentyuzetrol érkezo pozitív számok összegét, a számsorozat végét a 0 vagy egy negatív szám jelezze.
Megoldás
Az ilyen típusú feladatok általános megoldási sémája:
- az elso adat eloállítása (pl. beolvasása)
- ciklusfej
- az adat feldolgozása
- a következo adat eloállítása (pl. beolvasása)
- ciklus vége

5.1.2 A REPEAT ciklus


Az utasítás szintaktikája:
REPEAT [utasítás [; utasítás...]] UNTIL feltétel

Végfeltételes ciklus. Az utasítás(ok) végrehajtását meg kell ismételni, ha a feltétel hamis. Ha a feltétel igaz, a program a ciklus utáni utasítással folytatódik.
A ciklusmag legalább egyszer végrehajtódik. A ciklusmagot a Repeat - Until kulcsszavak fogják közre, nem kell Begin - End utasítás zárójelet használnunk.

A While és a Repeat ciklust hasonló típusú feladatok megoldására használhatjuk. Esetleg az egyik egy kicsit kényelmesebb megoldást nyújt.

Az elozo fejezet (5.1.1) példájának megoldása Repeat-Until ciklus alkalmazásával.

5.1.3 A FOR ciklus


Az utasitás szintaktikája:
FOR ciklusváltozó := kezdoérték TO / DOWNTO végérték DO utasítás

ahol a ciklusváltozó sorszámozott típusú változó hivatkozás, a kezdoérték és a végérték pedig sorszámozott típusú kifejezések.
A ciklusváltozó a kezdoértéktol a végértékig egyesével no (To) vagy csökken (DownTo). Az utasítás (vagy a Begin - End utasítás zárójelek közé zárt utasításcsoport) a ciklusváltozó minden értékénél végrehajtódik. Elöltesztelo ciklus, így ha a kezdoérték > végérték (To esetén) vagy a kezdoérték < végérték (DownTo esetén), akkor a ciklusmag egyszer sem kerül végrehajtásra (üres ciklus).
A ciklusváltozó értékét a ciklusmagban felhasználhatjuk, de nem változtathatjuk meg (egy elrettento példa).

Tipikus használata: az ismétlések száma a ciklusba való belépés elott már ismert vagy kiszámítható.

Példák:
1. Írjunk ki N darab csillagot a képernyore!
Megoldás
2. Számoljuk ki N! értékét!
Megoldás

5.2 Elágazások - szelekciók


A ciklus mellett a másik alapveto algoritmus elem az elágazás vagy szelekció, amelyben lehetoség van több tevékenység közül egyet kiválasztani.


5.2.1 Az IF utasítás

Az utasítás szintaktikája:
IF feltétel THEN utasítás1 [ELSE utasítás2]

ahol a feltétel egy logikai kifejezés.
Ha a feltétel igaz, akkor az utasítás1 hajtódik végre, egyébként az utasítás2. Az Else ág elhagyható, ilyenkor az utasítás1 kimarad, a program a következo utasítással folytatódik. Egy ágon több utasítás is végrehajtható a Begin - End utasítás zárójelek alkalmazásával. Vigyázzunk, az Else elott a pontosvesszo szintaktikai hiba, mivel azzal lezárjuk a teljes If utasítást!

Példa:

ReadLn(Oszto);
ReadLn(Osztando);
if Oszto <> 0 then
Hanyados := Osztando / Oszto
else
WriteLn('0-val való osztás, nincs értelmezve.');
Akár az utasítás1 vagy az utasítás2 is lehet újabb If utasítás, és ezáltal többirányú elágazást is megvalósíthatunk.
Példák az If utasítások egymásba ágyazására.

5.2.2 A CASE utasítás

Az utasítás szintaktikája:
CASE szelektor OF
állandó [..állandó] [,állandó[..állandó]...] : utasítás;
[állandó [..állandó] [,állandó[..állandó]...] : utasítás;
[ELSE utasítás]
END

ahol a szelektor egy sorszámozott típusú kifejezés. Abban az ágban lévo utasítás (vagy Begin - End közé zárt utasításcsoport) hajtódik végre, ahol a szelektor értéke megegyezik az egyik állandóval vagy beleesik az egyik megadott tartományba. Ha ez egyik esetre sem teljesül, akkor az Else ágra kerül a vezérlés. Ez utóbbi elhagyható.

Példaprogram

  

[ Vissza: Turbo Pascal | Írások listája ]
RSS Hírek RSS Letöltések

Fõoldal | RedQueenről | Kapcsolat | Fórum | Észrevételek

Cikkek, információk a számítástechnika világából, illetve programok letöltése ingyen a RedQueen© portálon.
"Ingyen és Szabadon"

Oldalkészítés: 0.095 másodperc