====== 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//.