Co je to podmínka? To je snad jasné. Prostě pokud něco platí,
něco dalšího se vykoná. Vše předvedu na jednoduchém příkladu:
var cislo: integer;
begin
cislo := 5;
if cislo = 5 then write('Ahoj');
end.
Do proměnné číslo se přiřadí hodnota 5 a pokud je
hodnota proměnné "cislo" 5, tak se vypíše "Ahoj".
Tu podmínku zajišťuje klíčové slovo "
if". Takže
kdyby tam bylo "
cislo := 6", tak by se nic nevypsalo.
Úplně stejně lze porovnávat textové řetězce:
var txt: string;
begin
readln(txt);
if txt = 'ahoj' then write('Cau');
end.
Pokud chceme, aby se vykonalo více příkazů, nemusíme
tam psát podmínku "if" několikrát, ale použijeme další
"
begin" a "
end":
var txt: string;
begin
readln(txt);
if txt = 'ahoj' then begin (* když uživatel zadal "ahoj" *)
write('Cau');
write(':-)');
end;
end.
Podmínkové operátory jsou:
Operátor | Význam |
= | Rovná se |
<> | Není rovno |
>= | Je větší nebo rovno |
<= | Je menší nebo rovno |
> | Je menší |
< | Je větší |
Teď je vhodná chvíle, abych se zmínil o spojování více
podmínek pomocí dalších operátorů. Jsou to operátory
"
and", "
or", "
xor" a "
not".
Použití operátorů:
Operátor | Význam |
And | Pokud platí obě podmínky |
Or | Pokud platí alespoň jedna podmínka |
Xor | Pokud platí pouze jedna podmínka |
Not | Pokud podmínka neplatí |
Příklad:
var cislo: integer;
begin
cislo := 5;
if (cislo >= 2) and (cislo < 4) then write('Ahoj');
if not (cislo = 1) then write('Cislo neni jedna');
end.
Jak vidíme, ahoj se nevypíše, protože podmínka splněna není.
Pozor! Podmínky je nutné uzavírat do závorek, jinak by to bylo
bráno jako bitová operace s čísly, ale tím se teď zabývat nebudu.
Operátor not znamená negaci, tzn. že zápis "not (cislo = 1)"
znamená to samé jako "
cislo <> 1". Podmínky lze utvářet
i složitější a to pomocí závorek:
var cislo: integer;
begin
cislo := 5;
if ((cislo > 2) and (cislo < 7)) or (cislo = 10) then write('Ahoj');
end.
Ahoj se tedy vypíše, pokud je "cislo" větší než 2 a menší než 7, nebo je 10.
V souvislosti s "if" se musím zmínit ještě o příkazu "
else".
Všechno co je za příkazem "else" se vykoná, pokud předcházející
podmínka nebyla splněna:
var cislo: integer;
begin
cislo := 4;
if cislo = 5 then write('Cislo je pet')
else write('cislo je nejake jine');
end.
Pozor! U posledního příkazu před else se nepíše středník.
Pokud se má za else vykonat více příkazů, je samozřejmě nutné
je uvést mezi "begin" a "end".
Pascal má ještě jeden typ podmínky, a to "
case". Case se
používá místo více podmínek. Použití je následující:
var cislo: integer;
begin
cislo := 5;
case cislo of (* zjistíme hodnotu *)
1: write('cislo je jedna');
2: write('cislo je dva');
5: write('cislo je tri');
7: begin
write('cislo je sedm');
cislo := 15;
end;
else write('cislo je jine');
end;
end.
Tedy "
case proměnná of" určuje proměnnou, ze které se má zjišťovat
hodnota, následuje výčet hodnot. Za každou hodnotou je uvedena
dvojtečka a příkaz, který se má vykonat. Pokud chceme vykonat
více příkazů, uzavřeme je mezi "begin" a "end". Pokud žádná hodnota
neplatí, vykoná se příkaz za "else". Výčet hodnot končí slovem "end".
Příkaz case je bohužel možné použít pouze na číselné proměnné.
V souvislosti s podmínkami bych měl zmínit datový typ "boolean",
který nabývá hodnot "
true" (pravda) a "
false" (nepravda). Tento
typ může být uveden místo podmínky. Příklad:
var plati: boolean;
begin
plati := true;
if plati then write('Podminka plati');
end.
Hodnota přiřazená do tohoto typu může být i výsledkem výrazu
vracejícího logickou hodnotu:
var plati: boolean;
begin
plati := 5 > 3;
if plati then write('Podminka plati');
end.
Teď zde uvedu ještě jednu funkci, která sice s podmínkami
nesouvisí, ale je velice užitečná. Je to funkce "
random".
Tato funkce vrátí náhodné číslo v určitém rozsahu a to je
vymoženost asi pouze Pascalu. Zde je příklad použití:
var cislo: integer;
begin
randomize; (* inicializuje generátor náh. čísel *)
cislo := random(15); (* Do proměnné se přiřadí náhodná *)
(* hodnota od 0 do 14 *)
writeln(cislo); (* číslo vypíšeme *)
end.
Jak vidíte, ještě se nám zde objevilo jakési "
randomize".
Inicializuje to generátor náhodných čísel a je vhodné to
uvést třeba na začátku programu. Se znalostmi, které jste
do teď získali a se znalostí cyklů (6. lekce) už dokážete
naprogramovat třeba hru, kde uživatel bude hádat náhodné číslo
a program mu zahlásí třeba něco ve stylu "zadej větší".
Kub@z