Pascal pro začátečníky 4 - Podmínkové příkazy
Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: Kub@z
Datum: 13.4.2004
Hodnocení/Hlasovalo: 1.73/26
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...
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