Rozhodovací struktury

Přehled informací

Rozhodovací struktura if .. else

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.

Syntaxe příkazu if .. else

  if (podmínka)
  {
    [příkazy]
  }
  [else
  {
    else_příkazy
  }
  ]

Argumenty příkazu if .. else

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.

Příklad použití struktury if .. else

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";

Příklad deklarace proměnné v příkazu if

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átory

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ů.

Syntaxe příkazu ternární operátor

  (proměnná) = (booleovský výraz) ? (operand_true) : (operand_false);

Argumenty příkazu ternární operátor

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.

Příklad použití podmíněného ternárního výrazu

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;

Podmíněný příkaz switch

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++.

Syntaxe příkazu switch

  switch (testovaný_výraz)
  {
    [case konstanta :
      [příkazy-n;]
      [break;]
    ]
    [default :
      [default_prikazy;]
      [break;]
    ] 
  }

Argumenty příkazu switch

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.

  • číslo (př. 5)
  • znaky (př. 'h')
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.

Příklad použití podmíněného příkazu switch

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.