Obsah

Větvení do více větví

Příkaz switch umožňuje větvit program na základě nějakého selektoru. Selektorje proměnná nebo výraz datového typu celé číslo, znak nebo výčet.

Syntaxe příkazu switch

switch (selektor)
{
  case hodnota1 : prikaz1;break;
  case hodnota2 : prikaz2;break;
  ...
  case hodnotan : prikazn;break;
  default: prikazD;break;
}

Poznámky

Průběh rozhodovacího příkazu

  1. vyhodnocení selektoru
    • * porovnání hodnoty selektoru s hodnotou1
      1. selektor se rovná hodnotě1
        • *vykonání druhé skupiny příkazů za else pokud je uvedeno break, příkaz končí jinak dojde k vykonávání dalších příkazů v dalších větvích
      2. selektor se nerovná hodnotě1
        • * porovnání hodnoty selektoru s hodnotou2

Selektor větvení je celočíselný

int znamka = 2; 
switch (znamka) //selektor větvení
{
    case 1:
      printf("Vyborny\n");
      break;
    case 2:
      printf("Chvalitebny\n");
      break;
    case 3:
      printf("Dobry\n");
      break;
    case 4:
      printf("Dostatcny\n");
      break;
    case 5:
      printf("Nedostatcny\n");
      break;
    default:
      printf("Chybny vstup!\n");
      break;
}

Selektor větvení je znak

char rimska = 'D';
int arabsky;
switch (rimska) //selektor větvení
{
    case 'I':
      arabsky = 1;
      break;
    case 'V':
      arabsky = 5;
      break;
    case 'X':
      arabsky = 10;
      break;
    case 'L':
      arabsky = 50;
      break;
    case 'C':
      arabsky = 100;
      break;
    case 'D':
      arabsky = 500;
      break;
    case 'M':
      arabsky = 1000;
      break;
    default:
      printf("Neznama cislice\n");
      arabsky = 0;
      break;
}
printf("Rimska cislice %c je %i\n", rimska, arabsky);

Selektor větvení je typu výčet

enum tyden { pondeli, utery, streda, ctvrtek, patek, sobota, nedele };
enum tyden dnes = streda;
switch (dnes) //selektor větvení
{
   case pondeli:
   case patek:
   case utery:printf("13 - 18");break;
   case streda:printf("12 - 20");break;
   case ctvrtek:printf("8 - 12");break;        
   case sobota:
   case nedele:printf("zavreno");break;
}