ccpp:vetvenicase

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
ccpp:vetvenicase [2019/10/10 15:09] – vytvořeno durdilovaccpp:vetvenicase [2021/11/22 12:50] (aktuální) bures
Řádek 1: Řádek 1:
-****Větvení do více větví****+===== 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 ===== 
 +<code c> 
 +switch (selektor) 
 +
 +  case hodnota1 : prikaz1;break; 
 +  case hodnota2 : prikaz2;break; 
 +  ... 
 +  case hodnotan : prikazn;break; 
 +  default: prikazD;break; 
 +
 +</code> 
 + 
 +==== 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ý ==== 
 +<code c> 
 +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; 
 +
 +</code> 
 + 
 +==== Selektor větvení je znak ==== 
 +<code c> 
 +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); 
 +</code> 
 + 
 +==== Selektor větvení je typu výčet ==== 
 +<code c> 
 +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; 
 +
 +</code>
  • ccpp/vetvenicase.1570712940.txt.gz
  • Poslední úprava: 2019/10/10 15:09
  • autor: durdilova