====== Větvení programu - if a switch ======
===== Příkaz if =====
Jedná se o jeden z nejvíce užívaných příkazů. Java jej umožňuje použít jak v neúplné podmínce, tak v úplné podmínce.
=== Neúplná podmínka ===
if (logická_výraz)
příkaz1;
**Jak to funguje?**
Pokud je //logický_výraz// splněn provede se //příkaz//.
=== Úplná podmínka ===
if (logická_výraz)
příkaz1;
else
příkaz2;
**Jak to funguje?**
Pokud je //logický_výraz// splněn provede se //příkaz1//. Pokud splněn není provede se //příkaz2//.
Pokud je potřeba použití více příkazů, vkládají se do bloku odděleného složenými závorkami.
if (logický_výraz) {
příkaz1a;
příkaz1b;
příkaz1c;
} else {
příkaz2a;
příkaz2b;
}
Příkazy //if// lze do sebe vnořovat. V tomto případě se //else// vztahuje vždy k nejbližšímu //if//. Pokud potřebujeme //else// spárovat k jinému //if//, je nutno použít složené závorky.
if (logická_podmínka1) {
if (logická_podmínka2)
příkaz1;
příkaz2;
} else {
příkaz3a;
příkaz3b;
}
===== Příkaz switch =====
Jedná se o přepínač neboli příkaz pro vícenásobné větvení programu.
Syntaxe //switch// je následující:
switch (výraz) {
case hodnota1 : příkaz/y_pro_hodnotu1;
break;
case hodnota2 : příkaz/y_pro_hodnotu2;
break;
case hodnota3 : příkaz/y pro hodnotu3
break;
default : příkaz/y_pro_defaultHodnotu;
break;
}
**Jak to funguje?**
Výraz je rozdělen na jednotlivé hodnoty a pro ně se vykonávají příslušné //příkazy//. Hodnota //default// jsou všechny ostatní hodnoty, které může výraz nabývat a nejsou uvedeny v //case//. Příkaz //break// zajistí, že se vykonají //příkazy// pouze pro danou hodnotu.
Následující kód :
int vetev;
...
switch (vetev){
case 1 : System.out.println("Hodnota promenne vetev je jedna");
break;
case 2 : System.out.println("Hodnota promenne vetev je dve");
break;
case 3 : System.out.println("Hodnota promenne vetev je tri");
break;
default : System.out.println("Hodnota promenne vetev vice nez tri");
break;
}
vypíše slovně hodnotu proměnné //vetev// - buď to 1, 2,3 nebo vice nez 3.
**Vlastnosti switch:**
* Výraz může být pouze typu //char//, //byte//, //short// nebo //int//.
* Počet větví není omezen.
* V každé větvi může být více příkazů, které není nutné uzavírat do složených závorek.
* Pokud není větev ukončena příkazem //break// je dále zpracovávána další větev v pořadí a to až do dalšího //break// nebo do ukončení //switch//.