vykonať príkaz len pri splnení nejakej podmienky (ak je pekne vyvenči psa)
ak je splnená podmienka vykonaj jeden príkaz ak nie je vykonaj iny (ak je rano daj si kavu inak si daj caj)
Na tvorbu podmienok budeme v pascale často používať relačné (porovnávacie) operátory
< - menší
<= - menší alebo rovný
> - väčší
>= - väčší alebo rovný
= - rovný
<> - rôzny (nerovný)
Porovnávať môžme čísla (celé aj desatinné) znaky (porovnajú sa poradové čísla znakov v ASCII tabuľke) a texty (string)
Napríklad
'A' < 'G'
'M' < 'm' ... veľké písmena sú pred malými (teda sú menšie)
'5' < 'p' ... číslice sú pred písmenami
medzera < '2' ... medzera je pred všetkými bežnými znakmi
'Pavol' < 'Peter'
'Jano' < 'Janosik'
Príkaz IF - krátky
Syntax - ako sa to píše
if podmienka then príkaz;
podmienka
logický výraz (návratová hodnota je buď TRUE alebo FALSE). Najčastejšie tvoríme pomocou relačných operátorov.
Príkl: a>=5
príkaz
ľubovoľný pascalský príkaz (môže byť aj opäť if). Ak chceme pri splnení podmienky vykonať viac príkazov
zabalíme ich do BEGIN ... END; čím vznikne jeden zložený príkaz a ten celý sa podľa podmienky buď vykoná alebo nevykoná.
Sémantika - ako to pracuje
Počítač najprv vyhodnotí podmienku,
ak je pravdivá (TRUE) príkaz sa vykoná (ak je nepravdivá nevykoná sa nič)
pokračuje v programe ďalšími príkazmi
Príkaz IF - úplný
Syntax - ako sa to píše
if podmienka then príkaz1 else príkaz2;
podmienka
logický výraz (návratová hodnota je buď TRUE alebo FALSE). Najčastejšie tvoríme pomocou relačných operátorov.
Príkl: a>=5
príkaz1, príkaz2
ľubovoľný pascalský príkaz (môže byť aj opäť if). Ak chceme pri splnení/nesplnení podmienky vykonať viac príkazov
zabalíme ich do BEGIN ... END; čím vznikne jeden zložený príkaz a ten celý sa podľa podmienky buď vykoná alebo nevykoná.
Sémantika - ako to pracuje
Počítať najprv vyhodnotí podmienku,
ak je pravdivá (TRUE) príkaz1 sa vykoná, inak sa vykoná príkaz2
pokračuje v programe ďalšími príkazmi
Príklad
Načítaj celé číslo a zisti a vypíš, či je väčšie ako 0.
Nacitaj 2 celé čísla a vypočítaj ich podiel
uses crt;
Var a: integer;
Begin
Write('Zadaj cislo: '); Readln(a);
if a>0 then writeln('je vacsie') else writeln('nie je vacsie');
readln;
End.
uses crt;
Var a.b: integer;
Begin
Write('Zadaj 2 cisla: '); Readln(a,b);
if b<>0 then writeln('podiel:', a/b:0:2) else writeln('podiel: ERROR');
readln;
End.
Príkaz if nám umožňuje vetvenie na dve možnosti (TRUE, FALSE) ak chceme rozraďovač na viac možností je použitie príkazu if trochu
komplikované a je vhodnejšie použiť príkaz CASE.
Príkaz CASE
Tento príkaz nám umožňuje vetvenie na ľubovoľný počet príkazových ciest (niečo ako zuby hrablí) navyše nám umožňuje zadávať intervaly.
Syntax - ako sa to píše
case ordinálny_výraz of prípad_1 : príkaz_1;
prípad_2 : príkaz_2;
...
prípad_n : príkaz_n;
else prikaz;
end
ordinálny_výraz
celočíselný, znakový alebo logický výraz (logické sa nepoužíva)
prípad
konštanty: číslo, znak (napr. 5, 'A', '-', #27,...)
zoznam z konštánt a intervalov (1..5,20,100..2000)
Vetva else je nepovinná.
Sémantika - ako to pracuje
Počítač najprv vyhodnotí zadaný výraz
odhora hľadá prípad, ktorý obsahuje vypočítanú hodnotu, ak nájde - vykoná odpovedajúci príkaz a CASE končí
ak nenájde taký prípad vykoná vetvu else ak tam je (ak nie je nevykoná nič) a tiež CASE končí
Na ulici sú čísla 1-200, naši známy bývajú na číslach 50,65,66,158 Nacitaj číslo a vypíš, či je to náš známy
uses crt;
Var a: integer;
Begin
Write('Zadaj cislo: '); Readln(a);
case a of
50,65,66,158: writeln(a,' je nas znamy');
1..200 : writeln(a,' nie je nas znamy');
else writeln(a,' nie je z nasej ulice');
end;
readln;
END.
Úlohy
Načítaj znak a vypíš či ide o malú samohlásku, veľkú samohlásku, spoluhlásku, číslicu alebo niečo iné