Toto je starší verze dokumentu!
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; } switch (selektor) { case hodnota1 : prikaz1;break; case hodnota2 : prikaz2;break; ... case hodnotan : prikazn;break; default: prikazD;break; }
Poznámky
- selektor větvení je proměnná nebo výraz ordinálního datového typu (v některých jazycí může být typu string)
- jednotlivé větve pro hodnoty výrazu jsou definovány pomocí klíčového slova case.
- hodnoty v jednotlivých větvích jsou stejného datového typu jako je selektor větvení
- jedna hodnota nemůže být ve dvou větvích
- část default je nepovinná a je provedena pouze, pokud selektor větvení nenabývá žádné z hodnot větví case
- tělo příkazu switch začíná a končí složenými závarkami
- příkaz break definitivně ukončí provádění příkazu switch
- příkaz goto umožňuje skok na jiný blok case uvnitř příkazu switch
- pokud chci provést určitý příkaz pro více hodnot, využiju tzv. propadávání (nenapíši break)
Průběh rozhodovacího příkazu
- vyhodnocení selektoru
- * porovnání hodnoty selektoru s hodnotou1
- 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
- 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("blbost\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("neznam");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 }; 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; }