===== 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 ====
* 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("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;
}