Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyAlgoritmizace a programování Návrh algoritmů I Vývojové diagramy Větvení

Logo Matematická biologie

Větvení

Program se větví na několik částí. Která z těchto částí se vykoná, závisí na podmínce. Pokud je tedy podmínka splněna, provede se něco jiného, než když podmínka splněna není. Podmínky mají tvar kosočtverce s jedním vstupem a dvěma výstupy. Rozhodování, kterým výstupem se má program dále ubírat, je dán právě tou podmínkou (zapsanou uvnitř symbolu). Jedná se o rozhodování platí/neplatí – označení ANO/NE nebo 1/0 nebo +/−. Jedním výstupem program pokračuje v případě, že je podmínka splněna. Takový výstup budeme označovat +. Druhým výstupem pokračuje program v případě, že podmínka není splněná. Takový výstup budeme označovat −.

Do podmínky se nejčastěji vstupuje shora (vstup). Výstupy mohou být různě kombinované, jak je vidět na následujícím obrázku. Proto je nutné označovat výstupy, protože v zájmu přehlednosti diagramu můžeme použít kterýkoliv z těchto zápisů.

Jak tedy podmínka funguje? Řekněme, že si děláme plán na odpoledne a máme připravené dvě varianty. Když bude hezky, půjdeme na plovárnu, a když nebude hezky, tak se půjdeme do restaurace. Jaké bude odpoledne počasí, to se teprve uvidí, ale jednu věc můžeme říci již teď: provedeme pouze jednu z těchto činností. Uděláme pouze jednu z činností – vždy projdeme pouze jednu větev za podmínkou. Na otázku, která to bude, můžeme odpověď až ve chvíli, kdy budeme testovat podmínku. Tak jako v našem příkladu musíme čekat až do odpoledne.

Pro zápis podmínky můžeme použít textový zápis ale použití relačních operátorů vede k rychlejšímu a často i přesnějšímu zápisu a hlavně je tento zápis velmi blízký programovacímu jazyku. Relační operátory jsou operátory, které známe z matematiky. Jejich funkcí je zjistit (porovnat) vztah mezi dvěma operandy. Když třeba napíšeme podmínku: "Je Y nula?" S pomocí relačního operátoru bychom napsali: "Y == 0" (pro test rovnosti budeme používat dve rovntka "==", protože jedno rovnítko se používá pro přiřazení např. hodnoty do proměnné).

Nyní si uvedeme nejběžnější relační operátory:

==      ……      rovno  - X == Y: Je X rovno Y?
>         ……       větší než - X > Y: Je X větší než Y?
<         ……       menší než - X < Y: Je X menší než Y?
<>      ……       nerovno - X <> Y: Je X různé od Y? nebo Není X rovno Y?
!=       ……       nerovno (ekvivalentní zápis) - X != Y: Je X různé od Y? nebo Není X rovno Y?
>=      ……       větší nebo rovno - X >= Y: Je X větší nebo rovno Y?
<=      ……       menší nebo rovno - X <= Y: Je X menší nebo rovno Y?

Často se stává, že rozhodnutí, kterou větví se budeme ubírat, závisí na více okolnostech. Musíme proto provádět více testů, tj. více podmínek. První možností je zapsat každou jednu podmínku do samostatného objektu a postupně ošetřovat jednotlivé větve. Nebo použijeme tzv. spojovací operátor. Spojovací operátory jsou dva:

AND – tento spojovací operátor říká, že musí být splněny obě podmínky, které spojuje, aby byla podmínka vyhodnocena jako splněná; operátor se může značit slovem a, anglickým překladem and, případně značkou ,

OR – tímto operátorem se říká, že musí být splněna alespoň jedna ze dvou spojovaných podmínek, aby byl celek vyhodnocen jako splněný; operátor se může značit slovem nebo, anglickým překladem or, případně značkou

Spojovací operátor má ekvivalentní zápis dle následujícího obrázku. Jedná se o podmínky, které jsou řazeny za sebou a všechny musí být splněny, aby výsledkem byla splněná podmínka. Spojovací operátor má tedy pouze jeden úspěšný scénář, ale více neúspěšných. Jinak řečeno, musí být splněny všechny části, aby byla celá podmínka splněná. V programovacích jazycích je to většinou tak, že při první nesplněné části je podmínka označena za nesplněnou (tzv. líné vyhodnocování).

 

Spojovací operátor má ekvivalentní zápis dle obrázku. Jedná se o podmínky, které jsou řazeny za sebou a musí být splněna pouze jedna, aby výsledkem byla splněná podmínka. Spojovací operátor má tedy více úspěšných scénářů a jeden neúspěšný. Jinak řečeno, musí být splněna alespoň jedna část, aby byla celá podmínka splněná. V programovacích jazycích je to většinou tak, že při první splněné části je podmínka označena za splněnou.

 

Úplná alternativa

Program se větví do dvou částí: pokud je podmínka splněna, provede se jedna část kódu, pokud ne, provede se druhá část. Příklad: Pokud je součet zadaných čísel vyšší nebo roven nule, vytiskni, že je výsledek kladný, pokud je ale výsledek menší než nula, vytiskni, že je výsledek záporný.

 

Neúplná alternativa

Jak je vidět na obrázku, neliší se tento případ příliš od předchozího, jen je jedna jeho větev prázdná. Znamená to, že pokud se podmínka splní, provede se zadaný kód a pak program pokračuje dalším příkazem. Pokud podmínka pravdivá není, pokračuje se za kódem podmínky v provádění dalšího kódu. Příklad: Pokud proměnná x není prázdná, program ji vyprázdní, pokud je prázdná, program pokračuje dál.

 

Několikanásobná alternativa

Poslední způsob větvení, kterým se budeme zabývat, je několikanásobné větvení. Podle toho, čemu se rovná porovnávaná proměnná, se provede určitý kód. Např.: Dejme tomu, že po uživateli vyžadujeme, ať zadá nějaké písmeno, a podle toho, jaké písmeno zadal, provedeme to, co uživatel chce. Právě v tomto případě se nám bude hodit tato několikanásobná alternativa.

Uvedené způsoby se dají libovolně kombinovat.

 

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity