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

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
ccpp:vetvenicase [2019/10/10 15:14] 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.1570713275.txt.gz
  • Poslední úprava: 2019/10/10 15:14
  • autor: durdilova