Podmínky

Ve všech programech, které jsme až dosud napsali, bylo vždy od začátku do konce jasně dáno, který příkaz se provede...


Ve všech programech, které jsme až dosud napsali, bylo vždy od začátku do konce
jasně dáno, který příkaz se provede jako další. Jakmile jsme program spustili,
neměli jsme už sebemenší možnost pořadí příkazů měnit. Ve skutečnosti se ale
velmi často stává, že je potřeba o dalším chování programu rozhodnout až na
základě nějaké podmínky. Stejné to je i v životě. Představte si, že byste měli
naprogramovat svou cestu z domova do zaměstnání. Dejme tomu, že použijete
příkazy jako ZamkniDveře OdBytu, VyjdiNaUlici, JdiPoChodníku, PřejdiUlici,
PozdravVrátného, NastupDoVýtahu, VyjeďVýtahemDo5Patra a posaďSeVKanceláři.
Při troše představivosti je možné uvěřit, že pomocí uvedených příkazů byste se
dokázali do své kanceláře dopravit. Ovšem kdybyste tyto příkazy napsali jen tak
za sebe, jako jsme to dělali dosud, nedopadlo by to vůbec dobře. V lepším
případě byste pozdravili vrátného, který si právě odskočil koupit noviny, v
horším případě by vás cestou přejelo při přecházení vozovky auto. Jednotlivé
příkazy není možné plnit bezhlavě, ale až po ověření určitých podmínek. Dveře
od bytu zamknete, jen jestli odcházíte jako poslední, po chodníku půjdete, jen
jestli na něm zrovna není výkop, a ulici přejdete až v okamžiku, kdy po ní nic
nejede.
V C# je k vyhodnocování podmínek určen příkaz if. Za příkaz if se zapisuje v
závorkách podmínka. Pokud je splněna, provedou se příkazy, které jsou uvedeny
za if ve složených závorkách, například takto:
if (barvaNaSemaforu == zelena) { Response.Write("Na semaforu svítí zelená,
můžeme jet!"); rozjezd(); }
Konstrukce if else
Velmi často nestačí, že se při splněné podmínce provede nějaký příkaz, ale je
potřeba, aby se v opačném případě provedl nějaký jiný příkaz. Pak je možné k
příkazu if přidat větev else, obsahující příkazy, které se provedou pouze
tehdy, když podmínka uvedená za if není splněna. Například takto:
if (barvaNaSemaforu == zelena) { Response.Write("Na semaforu svítí zelená,
můžeme jet!"); rozjezd(); } else { Response.Write("Musíme počkat na zelenou!"); brzdi(); }
Vnořené podmínky
Uvnitř jednotlivých větví příkazu if mohou být další podmínky, takže je možné
je dále zpřísňovat. Vše si ukážeme na rozšířeném příkladu z minulého dílu.
Jestliže je návštěvníkem muž, je oslovení jasné. V případě, že je návštěvnicí
dáma, může to být buď paní, nebo slečna. V takovém případě musí přijít ke slovu
další podmínka:

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Používání podmínek


den "; string osloveni; if (jeNavstevnikZena) { if (jeVdana) { osloveni =
"paní"; } else { osloveni = "slečno"; } } else { osloveni = "pane"; }
Response.Write(pozdrav + osloveni + "!
"); %>


Do nové verze příkladu jsme přidali jednu proměnnou a ternální operátor jsme
nahradili příkazem if. Jestliže je návštěvníkem muž (obsah proměnné
jeNavstevnikZena je false), můžeme do proměnné osloveni hned vložit správnou
hodnotu. V opačném případě je potřeba zjistit, zda je příchozí dáma vdaná či
nikoli. Na základě této vnořené podmínky vybereme správné oslovení. Vícenásobné
větvení
Při používání podmínek velmi brzy zjistíte, že dvě větve příkazu if často
nestačí a je potřeba vybírat z mnohem více možností. Pochopitelně je možné
použít kombinaci několika vnořených podmínek, ale takové řešení je pracné,
nepřehledné a náchylné na chyby. Proto je v C# k dispozici příkaz switch, s
jehož pomocí lze program větvit do několika částí.
Za příkaz switch se napíše jméno řídicí proměnné a složené závorky. Mezi nimi
se definují všechny větve, jimiž program může projít. Konkrétní větev se pak
vybere automaticky podle aktuální hodnoty řídicí proměnné. Každá větev začíná
klíčovým slovem case, za kterým je uvedena hodnota, k níž daná větev patří. Za
dvojtečkou se pak vypíší všechny potřebné příkazy. Jako poslední příkaz musí
být v každé větvi uvedeno klíčové slovo break. Jako poslední může být u
přepínače uvedena větev začínající klíčovým slovem default, která se provede
tehdy, pokud má řídicí proměnná jinou hodnotu, než jaké jsou uvedeny u
předchozích větví.
Použití přepínače switch si ukážeme na následujícím příkladu. V něm
naprogramujeme stránku, která umí převést školní známky z jejich číselné podoby
do slovního vyjádření. Zde je její zdrojový kód:

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Přepínač switch

"Výborně"; break; case 2: popis = "Velmi dobře"; break; case 3: popis =
"Dobře"; break; case 4: popis = "Dostatečně"; break; case 5: popis =
"Nedostatečně"; break; default: popis = "Taková známka neexistuje"; break; }
Response.Write(popis); %>


V souvislosti s přepínačem switch je důležité vědět, že řídicí proměnná může
být pouze celočíselného typu nebo typu enum (více se o tomto typu dozvíte v
jednom z následujících dílů).(pat) 6 1370









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.