Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyVýpočetní matematické systémy Výuka jazyka R Programování v R Podmíněné příkazy

Logo Matematická biologie

Podmíněné příkazy

Do této chvíle jsme sestavovali programy, které vyhodnocovaly pouze jednoduché příkazy nebo jejich posloupnosti uzavřené ve složených závorkách. Často ovšem potřebujeme provést sérii příkazů až na základě výsledku nějaké podmínky/nějakých podmínek.

if (podminka) {prikaz}
provede prikaz v případě, že podminka je vyhodnocena jako TRUE. V případě vyhodnocení podmínky jako FALSE se žádné příkazy neprovedou.

> x <- 5
> if (x > 3) {"Podminka splnena."}
[1]    "Podminka splnena."

if (podminka) {prikaz1}
else {prikaz2}

V případě vyhodnocení podmínky podminka jako TRUE je proveden prikaz1, v opačném případě je proveden prikaz2.

> if (x > 3) {"Podminka splnena."}
+ else {"Podminka nesplnena."}
[1]    "Podminka splnena."

Podmínka vrací buď hodnotu TRUE nebo FALSE. Jestliže podmínka vrací logický vektor o více než jednom prvku, jako výsledek vyhodnocení podmínky je ovšem brán pouze jeho první prvek. Součástí výstupu je i hlášení:

> x <- c(-2, 0, 3, 1)
> if (x > 0) {"vetsi nez 0"}
+ else {"mensi nebo rovno 0"}
[1]   "mensi nebo rovno 0"
Warning message:
In if (x > 0) { :
the condition has length > 1 and only the first element will be used
MATLAB by v tomto případě vyhodnotil podmínku vracející vektor o hodnotách TRUE jako TRUE, v případě jediné hodnoty FALSE jako FALSE.

Alternativou k příkazu if - else může být příkaz
ifelse(podminka, prikaz1, prikaz2),
která v případě podmínky vyhodnocené jako TRUE provede příkaz prikaz1, v opačném případě provede prikaz2.

> ifelse(x > 3, "Podminka splnena.", "Podminka nesplnena.")
> "Podminka splnena."

if (podminka1) {prikaz1}
else if (podminka2) {prikaz2}
else if (podminka3) {prikaz3}
else {prikaz4}

Vysvětlení těchto podmíněných příkazů je zachyceno na následujícím obrázku.

Obr. 25. Diagram vysvětlující příkaz f - else if - else
> x <- 3
> if (x == 1) {"cervena - stat!"}
+ else if (x == 2) {"oranzova - pripravit se"}
+ else if (x == 3) {"zelena - muzeme jet"}
+ else {"zadna jina barva na semaforu neexistuje"}
[1]    "zelena - muzeme jet"

Příkaz
switch(vyraz, prikazy, prikazy_jine)
slouží také k větvení programu. Jestliže vyraz je celé číslo, na výstupu je vrácena hodnota odpovídajícího prvku prikazy. Pokud nedojde ke spojení hodnoty vyraz s prvkem prikazy, funkce vrací hodnotu NULL.
Pro textový řetězec musí být název vyraz použit ke spojení s příslušným prvkem posloupnosti prikazy. Pokud nedojde ke spojení s některým z prvků posloupnosti prikazy, můžeme definovat prikazy_jine, které budou v tomto případě provedeny. prikazy_jine můžeme definovat pouze pro vyraz typu textový řetězec.
Syntaxe příkazu bude názornější z následujících příkladů:

> switch(2, "vyborne", "velmi dobre", "dobre", "uspokojive",
+ "dostatecne", "nedostatecne")
[1]    "velmi dobre"
> switch(7, "vyborne", "velmi dobre", "dobre", "uspokojive",
+ "dostatecne", "nedostatecne")
[1]    NULL
> switch("vyborne", vyborne="znamka A", velmi_dobre="znamka
+ B", dobre="znamka C", uspokojive="znamka D", dostatecne="znamka E",
+ neuspokojive="znamka F", "znamka neexistuje")
[1]    "znamka A"
> switch("chvalitebne", vyborne="znamka A",
+ velmi_dobre="znamka B", dobre="znamka C", uspokojive="znamka D",
+ dostatecne="znamka E", neuspokojive="znamka F", "znamka neexistuje")
[1]    "znamka neexistuje"

 

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