Lekce 1.12
Podmφnky v programu


p°edchozφ lekce (1.11) obsah kurzu nßsledujφcφ lekce (1.13)

Jak jsme ji₧ uvedli v ·vodu probφran²ch lekcφ, je programovßnφ vlastn∞ sestavovßnφ posloupnosti vykonßvan²ch akcφ. V n∞kter²ch p°φpadech musφme mφt ale mo₧nost n∞kterou z akcφ bu∩ vynechat, nebo provΘst akce jinΘ. Obojφ na zßklad∞ zadanΘ podmφnky. Nap°φklad pokud mßm v kapse vφce ne₧ dvacet korun, p∙jdu do kina, jinak p∙jdu dom∙ na televizi. Zadanß podmφnka by se dala v lidskΘ mluv∞ popsat nßsledujφcφm vztahem:

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:

Sub Main()
    hotovost = 10          '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 If
End Sub
Nejprve jsme definovali prom∞nnou se jmΘnem hotovost a p°i°adili ji urΦitou hodnotu. V podmφnce jsme potom zjiÜ¥ovali, zda odpovφdß hodnota 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..Then..Else, 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. UvΘst je p°itom mo₧nΘ v₧dy i n∞kolik p°φkaz∙. Viz nßsledujφcφ p°φklad:


Sub Main()
    ConsoleClear
    Writeln("M∙j plat je "+CStr(plat)+" KΦ.")
    If plat > 15000 then
       Writeln("Do prßce jezdφm autem.")
       Writeln("Bydlφm v rodinnΘm domku.")
       Writeln("Dovolenß u mo°e.")
    Else
       Writeln("Do prßce jezdφm vlakem.")
       Writeln("Bydlφm v panelßku.")
       Writeln("Dovolenß na koupaliÜti.")
    End If
End Sub
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₧
    =        rovnß se
    <>      nerovnß se
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
End If
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)

OZOGAN, 1 Mßje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz