Řídící struktury - větvení

02-Větvení

Typy podmíněných

Konstrukce if

Příkaz if umožňuje zapsat v kódu příkaz (nebo blok příkazů), který se bude provádět pouze tehdy, pokud bude splněna zadaná podmínka. V příkazu lze definovat pomocí klíčového slova else také větev, jejíž příkazy se budou provádět při nesplnění podmínky. Příkaz if může být vnořen (tj. vyskytovat se v libovolné větvi jiného příkazu if).

if (x == 0) printf("Proměnná x je nula.\n");
if (x > 0) printf("x je kladné\n");
else printf("x není kladné\n");

Konstrukce switch

Příkaz switch slouží k větvení programu do libovolného počtu větví v závislosti na předaném výrazu základního datového typu. Jednotlivé větve tohoto příkazu se provádějí, má-li předaný výraz jim odpovídající hodnotu. Nelze zde tedy vytvářet libovolné podmínky. V konstrukci switch lze od selektoru definovat také default větev, která se bude provádět, pokud výraz nenabude žádné z uvedených hodnot.

switch (cislo){
  case 1: printf("cislo je 1\n");
          break;
  case 2: printf("cislo je 2\n");
          break;
 default: printf("neco jineho\n");
}

Vynecháním příkazů break na konci jednotlivých větví je možné vytvořit také větev pro více hodnot daného výrazu. Z toho vyplává, že pokud má case 1 i 2 stejnou funkci není potřeba je oddělovat příkazem break; a po volbě prvního se automaticky provede kód v druhém casu.

switch (cislo){
  case 1:
  case 2: printf("cislo je 1 nebo 2\n");
          break;
 default: printf("neco jineho\n");
}

Ternární operátor

má stejný význam jako příkaz if-else, jen syntaxe je jiná. V některých případech je lepší použít ternární operátor kvůli kratšímu zápisu na jeden řádek. Ternární, protože má jako jediný operátor 3 operandy.
Ternární operátor má následující syntaxe:

vyraz_podm ? vyraz_1 : vyraz_2;
i = (a != 0) ? 5 : 10;
  // Pokud je a ruzne od 0, i bude rovno 5
  // V opacnem pripade bude i rovno 10

Grafický zápis

  • Úplná
  • Neúplná
  • Vícenásobná

Grafický zápis vývojového diagramu je dán státní normou. Pokud je větvení neúplné, pak na straně, kde podmínka neplatí je prázdno.