- O predmete
- Code week
- Materiály pre prvákov
- Materiály pre druhákov
- Materiály pre tretiakov
- Materiály pre maturantov
- Náhodné hodnoty a premenné
- Cyklus s pevným počtom opakovaní
- Podmienený príkaz
- Procedúry
- Textová informácia
- Bublinkové triedenie
- Súbory na stiahnutie
- ECDL
- Python a korytnačia grafika
- Dotazník
- ŠTART Python
- Podmienky
- Maturita
Podmienený príkaz
Vetvenie
Pri programovaní budeme často riešiť situácie, keď sa niektoré príkazy budú vykonávať len pri splnení istých podmienok.
Podmienkou budeme rozumieť taký výraz, ktorého výsledkom je buď pravda alebo nepravda. Podmienka je splnená, ak nadobúda hodnotu pravda, inak je podmienka nesplnená. Veľmi často to budú podmienky, v ktorých sa nejaké hodnoty porovnávajú, napr. na rovnosť, alebo ktorá hodnota je väčšia.
V Pascale na porovnávanie hodnôt máme k dispozícii tieto tzv. relačné operátory:
- = rovnaké hodnoty – rovnosť
- < > rôzne hodnoty – nerovnosť
- < prvá hodnota je menšia ako druhá
- < = prvá hodnota je menšia alebo rovná druhej
- > prvá hodnota je väčšia ako druhá
- > = prvá hodnota je väšia alebo rovná druhej
Takto vyzerajú zápisy niekoľkých jednoduchých podmienok:
- X > 100
- 1 mod 5 = 0
- I div 10 > = 1
- A > B
- Random(6) = 1
- Abs(X) < 0
- I + 1 = 2
Výsledok podmienky väčšinou závisí od nejakých premenných (napr. X > 100), ale niektoré podmienky sú vždy nepravdivé (napr. Abs(X) < 0), iné sú zas pravdivé vždy (napr. X < X + 1).
Teraz sa naučíme nový príkaz, tzv. príkaz vetvenia (hovoríme mu aj podmienený príkaz). Jeho zápis je nasledovný:
if podmienka then
príkaz1
else
príkaz2;
Grafický to môžeme znázorniť takto:
Tiež je veľmi dôležité formátovanie príkazu: zatiaľ vidíme, že príkaz1, else aj príkaz2 sú každé na novom riadku, else je na tej istej úrovni ako if a oba príkaz1 aj príkaz2 sú odsunuté vľavo o 2 medzery.
Podobne ako for-cyklus, aj tento príkaz v sebe obsahuje nejaké iné príkazy a v tomto prípade sú dva: príkaz1 a príkaz2. Vnorený príkaz1 sa vykoná jedine vtedy, keď výsledok podmienky je pravdivý inak sa vykoná len vnorený príkaz príkaz2. Po slovensky by sme mohli povedať:
ak je splnená podmienka, tak vykonaj príkaz1, inak vykonaj príkaz2;
Treba tomu rozumieť tak, že vždy sa vykoná len jeden z týchto dvoch príkazov a to buď iba príkaz1, ak bola podmienka splnená alebo iba príkaz2, ak bola podmienka nesplnená.
Treba si zapamätať to, že v príkaze vetvenia sa nesmie písať bodkočiarka za príkazom príkaz1 ešte pred else, ale bodkočiarku píšeme až za vnoreným príkazom príkaz2.
Príkaz if nemusí mať else vetvu. Potom to vyzerá takto:
if podmienka then
príkaz1;
Ak máme viac príkazov vo vetve použijeme zložený príkaz begin ... end, rovnako ako sme to urobili pri for-cykloch. Jeho zápis je nasledovný:
if podmienka then
begin
príkaz1a;
príkaz1b;
end
else
begin
príkaz2a;
príkaz2b;
end;
Všimnite si formátovanie podmieneného príkazu if: pravidlá sú rovnaké, s akými sme sa stretli pri formátovaní for-cyklu: ak je vnorený jeden príkaz, tak ten je odsunutý oproti if (resp. else) v predchádzajúcom riadku o 2 medzery vpravo, ak je vnorených viac príkazov (teda sme použili zložený príkaz), tak slová begin a end sú na rovnakej úrovni ako príslušný if a else a odsunuté sú až príkazy medzi begin a end.
Vnorené podmienené príkazy (if)
Program má vypísať správu o tom, či používateľ zadal (cez vstupný riadok) kladné číslo, záporné číslo alebo číslo rovné 0.
Riešenie si môžeme najprv nakresliť:
V prípade, že bola zadaná 0, sa už v programe nič netestuje. Ak bolo zdané nejaké kladné číslo, tak sa urobí ešte jeden test. Ak zadáme záporné číslo, tak sa tiež uskutočnia iba dva testy.
Tento program môžeme zapísať takto:
var
N: Integer;
begin
if N = 0 then
TextOut(50 ,50, 'na vstupe je nula')
else
if N < 0 then
TextOut(50 ,50, 'na vstupe je záporné')
else
TextOut(50 ,50, 'na vstupe je kladné')
end;
Takémuto príkazu if, ktorý je vo vnútri iného if-príkazu, hovoríme vnorený podmienený príkaz, a pri programovaní sa používa veľmi často.
Zostavovanie zložených podmienok (logické operácie)
V programovacom jazyku máme k dispozícii tieto 3 základné logické operácie:
podm1 and podm2 - otestovanie, či súčasne platia obe podmienky podm1 aj podm2
podm1 or podm2 - otestovanie, či platí aspoň jedna z podmienok podm1, podm2
not podm1 - otestovanie, či neplatí podmienka podm1, to znamená znegovanie podmienky
Pomocou týchto operácií môžeme skladať rôzne komplikované podmienky. Vtedy si treba uvedomiť, že operandy týchto logických operácií by mali byť výrazy (najčastejšie relačné), ktorých hodnota je pravda alebo nepravda.
Už vieme, že s prioritou operácií je to pri programovaní veľmi vážne a tieto tri operácie nám prinášajú nové komplikácie, preto parametre logických operácií väčšinou dávame do zátvoriek.
Zložený podmienený príkaz (case)
Pascal poskytuje ešte jeden iný príkaz vetvenia, ktorý netestuje hodnotu nejakej podmienky na pravda/nepravda, ale podľa hodnoty nejakého číselného výrazu, vykoná jeden z možných príkazov. Príkaz zapisujeme takto:
case výraz of
hodnota1: príkaz1;
hodnota2: begin
príkaz2a;
príkaz2b;
end;
hodnota3: príkaz3;
...
else
príkazE;
end;
Príkaz case nemusí mať else – vetvu, vtedy, ak ani jedna z možnosí nie je medzi uvedenými hodnotami, tak príkaz nespraví nič, podobne, ako príkaz if bez else vetvy.
Ak chceme, aby sa vykonalo viac príkazov pri nejakej hodnote, alebo v else vetve, vtedy musíme použiť zložený príkaz begin ...end.
Zdroj:RNDr. Andrej Blaho, RNDr. Ľubomír Salanci, PhD.: Programovanie 3
Príklady na stiahnutie Vetvenie_povinna_domaca_uloha_do_18.docx