Příkaz switch
Někdy program vybírá, co udělá, podle přesné hodnoty jedné proměnné: tlačítko 1 na automatu na nápoje udělá kávu, tlačítko 2 čaj a tak dále. Dalo by se to napsat pomocí else if, ale jazyk C na to má přehlednější příkaz switch (anglicky „přepnout“):
int den = 3;
switch (den) {
case 1:
printf("Pondělí\n");
break;
case 2:
printf("Úterý\n");
break;
case 3:
printf("Středa\n");
break;
default:
printf("Jiný den\n");
break;
}Tento kód vypíše:
Středaswitch vezme hodnotu v závorkách, tady hodnotu proměnné den, a skočí na case („případ“) se stejnou hodnotou. Za case následuje hodnota a dvojtečka a pod nimi příkazy, které se mají provést. break („přerušit“) příkaz switch ukončí: program pokračuje za jeho uzavírací závorkou. default („výchozí“) zachytí všechny hodnoty, které nemají vlastní case, stejně jako else na konci řady else if. Větev default je nepovinná a obvykle se píše jako poslední. V poslední větvi break potřeba není, protože tam switch končí tak jako tak, ale je dobrým zvykem psát ho do každé větve.
Na break si dejte pozor. Bez něj se program u dalšího case nezastaví: propadne dál a provede i příkazy následujících případů, dokud nenarazí na break nebo na konec příkazu switch:
int den = 2;
switch (den) {
case 1:
printf("Pondělí\n");
case 2:
printf("Úterý\n");
case 3:
printf("Středa\n");
default:
printf("Jiný den\n");
}Tento kód vypíše:
Úterý
Středa
Jiný denProgram skočil na case 2 a pak provedl všechno pod ním. Překladač nic neohlásí, takže když switch vypisuje víc, než má, hledejte chybějící break.
Někdy je propadnutí přesně to, co chcete: když má několik hodnot stejné příkazy. Jejich řádky s case pak napíšete pod sebe:
int den = 6;
switch (den) {
case 6:
case 7:
printf("Víkend\n");
break;
default:
printf("Pracovní den\n");
break;
}Tento kód vypíše:
Víkendswitch funguje jen s celými čísly a se znaky, například case 3: nebo case 'A':. Neumí zkontrolovat rozsah jako teplota > 25 a nefunguje s desetinnými čísly: na switch (cena) s proměnnou typu double překladač ohlásí chybu error: statement requires expression of integer type ('double' invalid). V takových případech použijte if a else if.
Jak psát:
Pokyny
Automat na nápoje má chybu: po stisku tlačítka 2 dá čaj i horkou čokoládu. Spusťte program a pak doplňte chybějící break, aby vypsal jen Čaj a Děkujeme!.
Na konec příkazu switch, pod poslední break, přidejte větev default, která vypíše Neznámé tlačítko.
Změňte tlacitko na 7 a spusťte program. Hodnotu 7 nemá žádný case, a tak program vypíše Neznámé tlačítko a Děkujeme!.
Začněte programovat zdarma
11/12