Hlavní strana -> Programování v C -> 09. Switch

09. Switch

Dneska to bude příkaz switch.

Příkaz switch se používá tehdy, pokud je třeba vybrat jednu z mnoha možností. Šlo by to samozřejmě udělat také pomocí příkazu if, jenomže potom by došlo k výraznému zpomalení programu a mohlo by to být hodně omezující. Příkaz switch se tedy používá pro vícenásobný výběr. Hodnota je testována podle zadaných celočíselných nebo znakových konstant a v případě shody se provedou příkazy spojené s touto konstantou. Obecně vypadá takto:

switch(hodnota){
    case konstanta1:
        prikazy;
        break;
    case konstanta2:
        prikazy;
        break;
    .
    .
    .
    default:
        prikazy;
        break;
}

Vždy, když program dorazí na příkaz switch se porovnávají hodnota a konstanta. Je-li nalezena shoda, pak se provedou příkazy spojené s danou konstantou a končí se příkazem break. Default se provede v případě, že nebyla nalezena shoda. Default není povinný. Příkaz switch lze použít pouze pro hodnoty typu char nebo int a nelze tedy použít hodnoty s pohyblivou řádovou čárkou. Case konstant podle ANSI je možno použít nejméně 257. Příkazy switch lze také do sebe zanořovat a to do hloubky nejméně 15 úrovní. Přitom hodnoty konstant je možno použít stejné a nebudou se ovlivňovat.

Příklad příkazu switch, který bude vypisovat zadaná čísla jako slova. Máme proměnnou i typu int, do které necháme uživatelem zadat nějaké číslo a potom se vypíše jeho slovní ekvivalent.

switch(i){
    case 1:
        printf("Jedna");
        break;
    case 2:
        printf("Dve");
        break;
    case 3:
        printf("Tri");
        break;
    case 4:
        printf("Ctyri");
        break:
    case 5:
        printf("Pet");
        break;
    default:
        printf("Neznam takove cislo");
        break;
}

Zpracování příkazu switch pokračuje vždy až do příkazu break. Pokud by v předchozím příkladu chyběly příkazy break u case 2 až case 5, pak pokud by uživatel zadal 1 program by vypsal Jedna. Pokud by ale zadal 2, tak by vypsal DveTriCtyriPetNeznam takove cislo. Tohoto jevu se dá také využít pokud bychom potřebovali, aby více různých case provádělo stejnou činnost. Potom by nebylo zapotřebí několikrát opisovat ty samé příkazy. Př.: tento program nám vypíše, jestli zadané číslo je v intervalu 1-5.

switch(i){
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("Cislo je v intervalu 1-5");
        break;
    default:
        printf("Cislo v intervalu 1-5 neni");
        break;
}

Příkaz switch je tedy vhodný pro snadné rozhodování mezi více možnostmi. Je to jednoduché a efektivní. Tímto končím. K.

Zpět

Programování v C | CZ 175/477 | Mapa stránek
Bc. Petr Klimánek, student Ostravské univerzity v Ostravě