![]()
Základní rozhodovací strukturou v C++ je rozhodovací struktura If .. else. Tato struktura zajišťuje podmínečné provedení skupiny příkazů závisející na hodnotě výrazu.
if (podmínka)
{
[příkazy]
}
[else
{
else_příkazy
}
]
| podmínka | ||
|
Povinná. Výraz typu bool, nebo výraz, který lze převést standardními konverzemi na bool. Může obsahovat deklaraci. |
||
| příkazy | ||
|
Povinné - jeden nebo více příkazů. Vykonají se, když je podmínka vyhodnocena jako True. Jednotlivý příkaz musí být ukončen středníkem. Blok příkazů musí být uzavřen ve složených závorkách a středník za ním nepíšeme. |
||
| else_příkazy | ||
|
Volitelné. Jeden nebo více příkazů, které se provedou v případě, kdy podmínka podmínka není vyhodnocena jako True. Jednotlivý příkaz musí být ukončen středníkem. Blok příkazů musí být uzavřen ve složených závorkách a středník za ním nepíšeme. |
||
![]()
Použití podmíněného výrazu je velice jednoduché, předpokládejme například, že potřebujete rozdělit uživatele do tří skupin podle věku. V první skupině budou uživatelé mladší 18 let, v druhé skupině uživatelé starší než 18 let. Uživatelé, kterým je právě 18 let budou mít zvláštní kategorii. Podmíněný výraz bude složený následujícího tvaru:
int vek = 0; // definice proměnné vek a její inicializace na 0
if (vek < 18) // je-li vek < 18 proveď
vekova_kategorie = "dite";
else if (vek > 18) // je-li vek < 18 proveď
vekova_kategorie = "dospely";
else // jinak
vekova_kategorie = "osmnactilety";
![]()
Proměnná deklarovaná v podmínce příkazu if je viditelná jak v příkazy tak i v části else_příkazy. Mimo příkaz if proměnná nebude existovat!
int x = 0; // definice proměnné x a její inicializace na 0
.....
if ((int vek = x) < 18)
// definice proměnné vek, její inicializace a porovnání
vekova_kategorie = "dite";
else if (vek > 18) // je-li vek < 18 proveď
vekova_kategorie = "dospely";
else // jinak
vekova_kategorie = "osmnactilety";
Podmíněný ternární operátor umožňuje jednoduchým způsobem otestovat booleovský výraz a podle výsledku uskuteční jeden ze dvou příkazů.
(proměnná) = (booleovský výraz) ? (operand_true) : (operand_false);
| booleovský výraz | ||
| Testovaný výraz, může nabývat hodnot true nebo false. | ||
| operand_true | ||
|
Operand přiřazený do proměnné proměnná v případě vyhodnocení výrazu booleovský výraz jako true. |
||
| operand_false | ||
| Operand přiřazený do proměnné proměnná v případě vyhodnocení výrazu booleovský výraz jako false. | ||
![]()
V následujícím příkladu podmíněný ternární výraz použijeme k vytvoření negace výrazu. Počáteční hodnota v proměnné logicka je true. V ternárním výrazu je testovaný výraz vyhodnocen jako true. Proto ternární výraz vrátí první hodnotu, která se rovná false. Vrácená hodnota je poté přiřazena do proměnné logicka.
boolean logicka = true; logicka = (logicka) ? false : true;
Příkaz switch umožňuje programu Javy otestovat jestli jedna proměnná nabývá více různých hodnot. Formát příkazu switch je totožný s formátem téhož příkazu v C/C++.
switch (testovaný_výraz)
{
[case konstanta :
[příkazy-n;]
[break;]
]
[default :
[default_prikazy;]
[break;]
]
}
| testovaný_výraz | ||
| Povinné. Může se skládat z libovolného číselného nebo výčtového výrazu. | ||
| konstanta | ||
|
Povinné, vyskytne-li se klauzule case. Celočíselné konstanty nebo konstanty výčtových typů, které budou porovány s hodnotou testovaný_výraz. Musí být navzájem různé. Po vyhodnocení testovaný_výraz program přejde na příkazy za návěštím case, jehož konstanta se shoduje s hodnotou testovaný_výraz.
|
||
| příkazy-n | ||
| Volitelné. Žádný, jeden nebo více příkazů vykonaných, jestliže testovaný_výraz odpovídá libovolné části z konstanta. Skupina příkazů je zakončena příkazem break; | ||
| default | ||
| Volitelné. Jeden nebo více příkazů vykonaných, jestliže testovaný_výraz neodpovídá žádné klauzuli z case. | ||
![]()
V následujícím příkladu příkaz switch určí hodnotu cena_vozu v závislosti na hodnote stáří vozu. Je-li stáří vozu rovné 2 nebo 3 rokům bude cena vozu stejná. Je-li auto starší než 5 let je cena_vozu rovna 1000.
switch (stari_vozu)
{
case 1 :
cena_vozu = 300000;
break;
case 2 :
case 3 :
cena_vozu = 200000;
break;
case 4 :
cena_vozu = 100000;
break;
case 5 :
cena_vozu = 10000;
break;
default :
cena_vozu = 1000;
break;
}
V příkladě si zejména všimněte použití příkazu break. U hodnoty stari_vozu = 2 není příkaz break uveden, pokud bude hodnota vybrána, budou se provádět příkazy až do doby než narazí program na příkaz break. To znamená přiřadí se hodnota cena_vozu = 200000.
![]()