p°edchozφ lekce (1.11) | obsah kurzu | nßsledujφcφ lekce (1.13) |
POKUD hotovost > 20 POTOM
p∙jdu do kina
JINAK
budu se dφvat na televizi
KONEC
UvedenΘmu zßpisu se °φkß algoritmus a popisuje schematicky postup provßd∞n²ch akcφ.
Vztahu hotovost>20 se °φkß podmφnka. Podmφnka nßm tedy urΦuje, jakß akce se bude
provßd∞t. Zßpis algoritmu je nutnΘ pro poΦφtaΦ p°evΘst do programu. Nap°φklad
nßsledujφcφm zp∙sobem:
Program hotovost;
var
hotovost : Integer;
begin
hotovost := 15; {zadejte vaÜi hotovost}
if hotovost > 20 then
Writeln('Kino') {pokud je podmφnka spln∞na}
else
Writeln('Televize'); {pokud nenφ podmφnka spln∞na}
end;
end.
Nejprve jsme deklarovali prom∞nnou se jmΘnem hotovost. Dßle jsme jφ v programu
p°i°adili urΦitou hodnotu. V podmφnce jsme potom zjiÜ¥ovali, zda odpovφdß naÜim
po₧adavk∙m a podle toho jsme provedli urΦitou akci. Zkuste si zadat sami r∙znΘ hodnoty
stavu vaÜφ hotovosti.
Podmφnka se v programu zadßvß klφΦov²m slovem If, za kter²m musφ nßsledovat
vyhodnocovanß podmφnka. Za klφΦov²m slovem Then se uvede akce, kterß se provede
p°i spln∞nφ podmφnky. Po uvedenφ klφΦovΘho slova else je mo₧nΘ uvΘst akci, kterß se mß
provΘst v p°φpad∞ nespln∞nφ podmφnky. VÜimn∞te si, ₧e mezi then a else je mo₧nΘ uvΘst
pouze jeden p°φkaz, kter² nesmφ b²t navφc ukonΦen st°ednφkem. Pokud byste po₧adovali
uvΘst v rßmci podmφnky vφce p°φkaz∙, museli byste je uvΘst v bloku ohraniΦenΘm
klφΦov²mi slovy begin a end. Viz nßsledujφcφ p°φklad:
Unit podminka;
interface
implementation
var
plat : Integer;
begin
plat := 12000; {zadejte vaÜi hotovost}
IF plat > 15000 then
begin
Writeln('Do prßce jezdφm autem');
Writeln('Bydlφm v rodinnΘm domku');
Writeln('Dovolenß u mo°e');
end
else
begin
Writeln('Do prßce jezdφm vlakem');
Writeln('Bydlφm v panelßku');
Writeln('Dovolenß na koupaliÜti');
end;
end;
end.
VÜimn∞te si, ₧e jsme v programech u zßpisu podmφnky odsadili vykonßvanΘ p°φkazy
na °ßdku o t°i znaky. Tφm vynikla struktura podmφnky a na prvnφ pohled je viditelnΘ jejφ
rozΦlen∞nφ. Nenφ to sice nutnost, p°esto vÜak doporuΦujeme uvedenou grafickou podobu
zßpisu programu ve vlastnφm zßjmu dodr₧ovat.
Podmφnku p°edstavuje logick² v²raz, kter² udßvß, zda je podmφnka spln∞na nebo ne.
LogickΘ v²razy mohou mφt proto v²sledek pouze pravda nebo nepravda. V poΦφtaΦovΘ
terminologii True (pravda) nebo False (nepravda). Pokud byste cht∞li v²sledek
podmφnky deklarovat jako prom∞nnou, museli byste pou₧φt typ BOOLEAN. Logickß
podmφnka zpracovßvß nejΦast∞ji matematick² v²raz. M∙₧e to vÜak b²t i v²raz zpracovßvajφcφ
°et∞zce, to vÜak bude psßno a₧ se nauΦφme s °et∞zci d∙kladn∞ji pracovat.
MatematickΘ v²razy porovnßvajφ nejΦast∞ji n∞kolik hodnot. Ve v²razu se p°itom
m∙₧e takΘ pou₧φt libovolnΘho matematickΘho v²poΦtu, kter² je v jazyce definovßn.
MatematickΘ v²razy zpracovßvajφ aritmetickΘ operace. V²razy se sklßdajφ z operßtor∙
a operand∙. Operßtor je p°itom porovnßvanß hodnota a operand je zp∙sob porovnßnφ
hodnot. Operßtor m∙₧e p°edstavovat libovoln² matematick² v²poΦet, kter² je v jazyce
definovßn. Operand slou₧φ k vyhodnocenφ operßtor∙. Pou₧φvajφ se nßsledujφcφ dostateΦn∞
znßmΘ operandy:
> v∞tÜφ ne₧
>= v∞tÜφ nebo rovno ne₧
< menÜφ ne₧
<= menÜφ nebo rovno ne₧
= rovno
<> nerovno
Ve v²razu je samoz°ejm∞ mo₧nΘ pou₧φvat zßvorky. P°φklad v²raz∙ zpracovßvajφcφch
matematick² v²poΦet:
hotovost > 20
a/2 < 10
2*(a+b) = 2*a+2*b
V²razy m∙₧eme dßle v jednΘ podmφnce spojit logick²m operßtorem s dalÜφm v²razem a
vyhodnocovat tak slo₧enou podmφnku. Pou₧φvajφ se p°itom nßsledujφcφ logickΘ operßtory:
AND a zßrove≥ platφ
OR platφ jeden nebo druh² v²raz
NOT nenφ pravda, negace v²razu
V p°φpad∞ pou₧itφ logick²ch operßtor∙ majφ tyto ve vyhodnocovßnφ v²raz∙
p°ednost p°ed ostatnφmi operßtory. Dßle se vyhodnocujφ zßvorky a a₧ na konci
matematickΘ v²poΦty. Pokud budete chtφt zapsat v programu n∞kolik v²raz∙ spojen²ch
logick²m operßtorem, musφte umφstit v²razy do zßvorek. Nap°φklad pro zjiÜt∞nφ rozsahu
hotovosti od 10 KΦ do 30 KΦ pou₧ijete nßsledujφcφ zßpis:
if (hotovost >= 10) and (hotovost <= 30) then
Writeln('Kino') {pokud je podmφnka spln∞na}
else
Writeln('Televize'); {pokud nenφ podmφnka spln∞na}
V tΘto lekci jsme si probrali mimo mo₧nosti rozv∞tvenφ Φinnosti programu takΘ zp∙sob
zßpisu podmφnek v programu. Podmφnky se v programu pou₧φvajφ i v dalÜφch p°φkazech.
Nap°φklad pro zadßnφ poΦtu opakovßnφ zvolenΘ Φßsti programu, jak si ukß₧eme v
nßsledujφcφ lekci.
p°edchozφ lekce (1.11) | obsah kurzu | nßsledujφcφ lekce (1.13) |