Vezérlő utasítások
A program menete: az utasítások sorban, egymás után hajtódnak végre. Legtöbb esetben a feladat megkívánja a program strukturáltságát, előfordul, hogy egy utasítást vagy utasításcsoportot ismételni akarunk többször, vagy addig, míg valamely feltétel be nem következik. A vezérléseket szolgálja az úgynevezett vezérlő utasítások. Vezérlések: elágazások ismétlések ugrálások Program felépítése: - szekvencia: összetett uatsítás: BEGIN, END - szelekció (elágazások): IF, CASE - iterációk (ciklusok): WHILE, REPEAT, FOR, feltétel nélküli vezérlésátadás: GOTO
1. Elágazások (szelekció) Egy programot előre felkészítünk a lehetséges esetekre, majd futtatáskor az aktuális állapottól függően a program különböző ágaira folyik a vezérlés. A szelekció, elágazás válogatást jelent. Előre elgondoljuk, hogy milyen esetek következhetnek be és minden esetre megadunk egy tevékenységet vagy tevékenységsorozatot, melyet a program végrehajt, majd ezután a program újra összefolyik és egy közös tevékenységgel folytatódik. Az esetek száma szerint megkülönböztetünk: egyágú elágazást kétágú elágazást többágú elágazást Az elágazások egymásba ágyazhatók, így bonyolultabb választási lehetőségeket is betudunk programozni.
1.1. Feltételes elágazások: IF a) Egyágú elágazás: IF … THEN jelentése: HA … AKKOR Ha igaz a megadott feltétel, akkor a hozzá kapcsolódó tevékenységet kell végrehajtani, egyébként azt ki kell kerülni és a programot az azt követő közös tevékenységgel folytatjuk. Folyamatábrája: Pascal kód: IF F1 then U1; F1 U1 Igaz Hamis
IF F1 then Begin U1; U2; … Un; End; Ha az igaz ágon több utasítást akarunk végrehajtani, akkor a végrehajtandó utasításokat a BEGIN- END blokkba zárjuk. Ha nem zárjuk a Begin és End közé akkor csak az első utasítást fogja figyelembe venni, a többit nem. IF F1 then Begin U1; U2; … Un; End; 1.feladat: Olvassunk be két egész számot: a és b. Írj programot amely kiírja a nagyobbik számot! Ha a>b, akkor írja ki max:= a és min:=b.
Ha az a>b, tehát ha megfelel a feltételvizsgálat. Ha nem teljesült a feltételvizsgálat, nem csinál semmit, kilép.
IF F1 then U1 ELSE U2; b) Kétirányú feltételes elágazás: IF …THEN …ELSE jelentése: HA …AKKOR … EGYÉBKÉNT Ha igaz a megadott feltétel, akkor a hozzá kapcsolodó tevékenységet kell végrehajtani, egyébként egy másikat. Az elágazás után a program összefolyik egy közös utasítás végrehajtására. Folyamatábrája: Pascal kódja: F1 U1 Igaz Hamis U2 IF F1 then U1 ELSE U2;
Ha az F1 feltétel igaz, akkor az U1 tevékenység kerül végrehajtásra, egyébként (ha F1 hamis) az U2. itt is lehet az U1 és U2 utasítás is összetett utasítás, tehát akkor Begin és End közé kell zárjuk. ! Az ELSE előtt soha nem teszünk pontosvesszőt ; hibaüzenetet fogunk kapni. 2.feladat: Kérjetek be a felhasználótól két számot, majd írassátok ki a nagyobbikat.
3.feladat: Kérjetek be a felhasználótól két számot, majd írassátok ki a nagyobbikat (max) és a legkisebbet (min). Ha a<b, akkor min=a és max=b másképpen min=b és max=a.
IF F1 THEN U1 ELSE IF F2 THEN U2; c) Egymásba ágyazott feltételes elágazás: Ha egy If- Then- Else ágon van egy másik If- Then- Else, akkor figyelnünk kell arra, hogy mindegyik else , a hozzá legközelebb álló If- then utasításhoz tartozik. Folyamatábrája: Pascal kódja: Igaz F1 Hamis IF F1 THEN U1 ELSE IF F2 THEN U2; F2 Igaz Hamis U1 U2
4. feladat: Olvassunk be három egész számot: a, b, c 4.feladat: Olvassunk be három egész számot: a, b, c. Írassátok ki a legnagyobbat közülük. Először meg kell tervezni a programot, milyen lépések hogyan fogják követni egymást. Start a,b,c igaz hamis a > b igaz igaz hamis hamis a > c b > c a c b c Stop
Feladatok: 1. Készíts egy olyan programot amely kiszámítja a kör vagy a téglalap területét, de ez előtt kérdezze meg a felhasználótól, hogy mit szeretne hogy kiszámoljon neki a program. Kör esetén a pi ismert, tehát konstansként használjátok és kérjétek be a sugár hosszát. Téglalap esetén pedig az oldalak hosszát, végül írassa ki a terület értékét a megfelelő szöveg kíséretében. 2. Döntsétek el három egész számról, a, b, c, hogy képezhetik- e egy háromszög oldalait. Ha igen akkor számolja ki a területét, ellenkező esetben pedig adjon egy rövidke kis hangot. 3. Döntsétek el egy háromszögről, hogy milyen típusú. Persze mindenek előtt, hogy képezhet- e háromszöget. 4. Adott három beolvasott szám. Írassátok őket csökkenő sorrendbe. 5. Olvassatok be két nevet, majd helyezzétek őket abc sorrendbe. 6. Döntsétek el egy egész számról, hogy osztható- e egyszerre a három különböző számmal. (a, b, c) 7. Írj programot, mely bekér két valós számot, majd megkérdi a felhasználót, hogy mit szeretne kiszámolni, a számtani vagy mértani középarányosát és ennek függvényében végzi a számításokat.
8. Írj egy programot, mely bekér egy számot 1- től 7- ig és ha ez a szám pl. 1 akkor kiírja azt hogy hétfő. Tehát a hét napjaihoz számot rendel. Ha nagyobb számot ad mint 7, vagy kissebet mint 1, akkor írja ki hogy Tévedés. 9. Olvassatok be egy karaktert! Írassátok ki ennek nagybetűs formáját. Ha a beolvasott karakter nagybetű, akkor alakítsátok kisbetűssé még a kiírás előtt. Még több feladat: Agster Erzsébet: Progr. tankönyv 158 oldalán
1.2. Többirányú feltételes elágazás: CASE CASE: jelentése ESET, amely esetszétválasztásra utal. A Case segítségével egy adott kifejezés (szelektor) vagy változó értékeiből válogathatunk. Csak sorszámozott típusú kifejezés használható, valós számok esetén a case nem alkalmazható. Formája: Működési elve: CASE kifejezés OF érték1: utasítás1; érték2: utasítás2; … ELSE utasításn; END; - megadjuk a kifejezés értékét - ha az érték megfelel valamelyiknek a felsoroltak közül, akkor végrehajtódik a neki megfelelő utasítás, ellenkező esetben az else ág utasítása hajtódik végre.
5.feladat: Olvassunk be egy nem negatív egész számot, valakinek az életkorát jelképezi. Kortól függően írjuk ki a megfelelő üzenetet. 0 – 13 évig: Gyerek 14- 17 évig: Fiatal korú 18- 23 évig: Ifjú 24- 59 évig: Felnőtt 60 évtől: Idős
Összefoglaló feladatok: A billentyűzetről beolvasunk egy karaktert. Írjatok egy programot amely eldönti, hogy mi ez a karakter, betű, szám, operátor (művelet) vagy egyenlőség jel. Írjatok egy programot, amely a billentyűzetről beírt számnak megfelelően kiírja, hogy milyen évszakról van szó. Oldjátok meg IF elágazással és Case elágazással is. Döntsétek el egy adott évszámról, hogy szökőév-e vagy sem. (szökőév, ha az adott szám osztható 4- el, és nem osztható 100-al, vagy osztható 400- al.) Billentyűzetről megadott x értékére számoljuk ki az f(x) függvény értékét, tudván, hogy: f(x)= x*x + 1 , ha x<= - 3 x – 2 , ha x Є (-3, 3) x * x – 4*x + 5 , ha x>=3
Adott két ember magassága, rendezzétek növekvő sorrendbe. Olvassatok be egy hónap és egy nap értékét. Írjátok ki, hogy a beolvasott dátum jó- e. (a februárt vegyük 28 naposnak) Adott két szám és a négy alapművelet. Döntse el , hogy melyik műveletet hajtsa végre. Pl. ha + ütnek le akkor összegzi a két számot és így tovább. Oldjátok meg mind a két típusú elágazással. Adott két ember magassága, rendezzétek növekvő sorrendbe. Döntsétek el egy számról hogy pozitív- e vagy negatív, vagy 0. Rendezzétek három ember testmagasságát. Döntsétek el egy havi bérről hogy alacsony, átlagos vagy magas. Döntsétek el egy számról, hogy -30 és +40 között van- e? Legyen egy szám amely osztható 5-el és 7-el, de nem osztható 3-mal és 11- el. Döntsétek el milyen négyszögről van szó. További feladatok: Angster Erzsébet: Prog. Tankönyv I. 158 oldal