Személyes eszközök
Keresés

 

A InfoWiki wikiből

Szelekció alapszint

Az imperatív programozás lényege az értékadó utasítok sorozatának végrehajtása, melynek során kifejezések segítségével részeredményeket képezünk. Ezen részeredmények képzése során egyre jobban közeledünk ahhoz, amit papíron kétszer alá szoktunk húzni, és eredménynek nevezzük. Ezen folyamatban számtalan ponton kell döntést hoznunk valamely részeredmény értéke alapján a további számítási módszerben.

Egyszerű eset, mikor a szám abszolút értékének meghatározását végezzük el elágazással:

ki: kérem írj be egy számot
 be: A
 HA A<0 AKKOR
    A := -1*A
 HVÉGE
 ki: a szám abszolút értéke = A

Gyakran használt módszer adatbekérés utáni ellenőrzésre is az elágazás:

ki: kérem írj be egy 1..5 közötti számot
 ki: és megadom a szám kétszeresét
 bekér: A
 HA 1<=A és A<=5 AKKOR
    ki: köszönöm
    ki: a szám kétszerese = A*2
 KÜLÖNBEN 
    ki: a beírt szám nem esik 1..5 közé
 HVÉGE


Erre az egyik leglátványosabb példa a másodfokú egyenlet gyökeinek kiszámítási módja. Szövegesen az alábbi leíró nyelvi megadás létezik:

bekér: A
 bekér: B
 bekér: C
 D := B^2-4*A*C
 HA D<0 AKKOR
    ki: nincs valós megoldás
 KÜLÖNBEN HA D=0 AKKOR
    ki: egy valós megoldás van
    ki: X = -B / (2*A)
 KÜLÖNBEN 
    ki: két különbözp megoldás van
    ki: X1 = (-B + gyök(D))/(2*A)
    ki: X1 = (-B - gyök(D))/(2*A)
 HVÉGE

A fenti apró kis algoritmus három ágra szakad a diszkrimináns (D-vel jelölt érték) kiszámítása után, attól függően, milyen a D értéke.

A fenti példákban közös, hogy minden egyes elágazási ágat egy logikai típusú (igaz/hamis végeredményű) ún. védőfeltétel, őrzőfeltétel ellenőríz. Az elágazási ágban lévő utasítások csak akkor hajtódnak végre, ha az őrzőfeltételük teljesül.

Az első esetet hívhatjuk egyszerű vagy egyágú elágazásnak. Az értékadó utasítás csak akkor hajtódik végre, ha a védőfeltétel ezt megengedi. Figyeljük meg,hogy a négyzetgyök kiszámítása csak akkor következik be, ha a D értéke pozitív szám. Negatív esetben a gyök nem kiszámítható, a program futási hibával leállna. Ezt előzzük meg a vizsgálattal.

A feltételes elágazások használhatóak arra, hogy bizonyos utasításokat csak akkor hajtsunk végre, ha az biztonságos. Amennyiben a végrehajthatóságot előzetes vizsgálatokkal ellenőríztük (és jól ellenőríztük), úgy a programunk nem állhat le futási hibával.


A futási hibákat jellemzően a helytelen értékek okozzák, melyek kívülről érkeznek (input adatok). A kívülről érkező adatokhoz nem elég kiírni milyen jellemzővel kell bírjanak - de azt le is kell ellenőríznünk!

ki: írj be egy pozitív számot
 bekér: A
 ki: a gyöke = gyök(A)

Egy ilyen esetben nem kihagyható a vizsgálat. Később, a ciklusoknál megvizsgáljuk hogyan lehet a bekérést addig ismételni, amíg a bekért szám tényleg megfelel az előírásnak. Jelenleg csak odáig tudjuk vinni az esetek kezelését, hogy a hibát megelőzzük:

ki: írj be egy pozitív számot
 bekér: A
 HA A<0 AKKOR
    ki: ez nem pozitív szám!
 KÜLÖNBEN
    ki: a gyöke = gyök(A)
 HVÉGE


Hernyák Zoltán
A lap eredeti címe: „http://wiki.ektf.hu/wiki/Mp1/page220
Nézetek
nincs sb_3.136.154.103 cikk