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 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