ccpp:vetvenicase

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.

switch (selektor)
{
  case hodnota1 : prikaz1;break;
  case hodnota2 : prikaz2;break;
  ...
  case hodnotan : prikazn;break;
  default: prikazD;break;
}
  • 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)
  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
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;
}
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);
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;
}
  • ccpp/vetvenicase.txt
  • Poslední úprava: 2021/11/22 12:50
  • autor: bures