- 1 1. Sissejuhatus
- 2 2. Mis on switch-lausung C-keeles?
- 3 3. switch-lausungi põhisüntaks
- 4 4. Näide switch-lausungi kasutamisest: menüü valik
- 5 5. Erinevused switch- ja if-lausungi vahel: kumbat kasutada?
- 6 6. Levinumad vead ja kuidas neid vältida
- 7 7. switch-lausungi ja enum-tüübi kooskasutamine
- 8 8. Kokkuvõte
1. Sissejuhatus
Programmeerimises sageli kasutatav “switch-lausung” on väga kasulik tööriist tingimuslike harude lihtsaks väljendamiseks. Ka C-keeles aitab “switch-lausungi” kasutamine mitme valiku korral koodi loetavamaks muuta ja vähendada vigade tekkimise võimalust. Selles artiklis selgitame C-keele “switch-lausungi” põhikasutust ja ka keerukamaid näiteid koos tegelike koodinäidetega.
2. Mis on switch-lausung C-keeles?
“switch-lausung” on süntaks, mis võimaldab võrrelda kindla muutuja väärtust mitme võimaliku väärtusega ja täita vastava koodiploki. See sobib eriti hästi olukordadesse, kus tingimused on määratletud arvude või loenditega (enum). Näiteks saab selle abil lihtsalt kirjutada programmi, mis harutab koodi vastavalt kasutaja valitud menüü numbrile.
switch (tingimus) {
case väärtus1:
// väärtus1 töötlemine
break;
case väärtus2:
// väärtus2 töötlemine
break;
default:
// töötlemine, kui ükski väärtus ei sobi
}
Selles süntaksis käivitatakse switch
-iga määratud avaldise väärtuse alusel vastav case
-plokk. Kui ükski case
ei vasta, siis täidetakse default
, mis võimaldab käsitleda ootamatuid väärtusi või vigu.

3. switch-lausungi põhisüntaks
Järgmisena tutvustame põhikasutuse näidet. Allolev programm kuvab sõnumi vastavalt täringu tulemusele.
int main(void) {
int dice = 3;
switch (dice) {
case 1:
printf("Tuli number 1.");
break;
case 2:
printf("Tuli number 2.");
break;
case 3:
printf("Tuli number 3.");
break;
case 4:
printf("Tuli number 4.");
break;
case 5:
printf("Tuli number 5.");
break;
case 6:
printf("Tuli number 6.");
break;
default:
printf("Tuli kehtetu number.");
break;
}
return 0;
}
Selles näites, kui dice
väärtus on 3, kuvatakse “Tuli number 3.”. Kui sisestatakse kehtetu väärtus, siis default
abil kuvatakse sõnum “Tuli kehtetu number.” ning viga käsitletakse vastavalt.

4. Näide switch-lausungi kasutamisest: menüü valik
Switch-lausung on eriti kasulik, kui on vaja täita erinevaid toiminguid vastavalt kasutaja sisendile. Järgmises näites kuvatakse sõnum vastavalt sellele, millise toidunumbri kasutaja valib.
int main(void) {
int choice;
printf("Menüü:");
printf("1. Hamburger");
printf("2. Pitsa");
printf("3. Pasta");
printf("Valige number: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Valisite hamburgeri.");
break;
case 2:
printf("Valisite pitsa.");
break;
case 3:
printf("Valisite pasta.");
break;
default:
printf("Kehtetu valik.");
break;
}
return 0;
}
Selles programmis kuvatakse erinev sõnum sõltuvalt sellest, millise menüüvaliku kasutaja teeb. Kasutades “switch-lausungit”, muutub kood lihtsamaks ja loetavamaks ning seda on kergem hooldada.

5. Erinevused switch- ja if-lausungi vahel: kumbat kasutada?
Zarówno switch- kui ka if-lausung võimaldavad tingimuslikku harutamist, kuid neil on erinev kasutusotstarve sõltuvalt olukorrast.
Millal switch-lausung sobib paremini:
- Kui võrreldavad väärtused on fikseeritud ja harutamine põhineb konkreetsetel väärtustel (nt menüüvalik, staatuse kood).
- Kui tingimus on lihtne ja soovite teostada tegevust konkreetsete väärtuste põhjal.
Millal if-lausung sobib paremini:
- Kui tuleb käsitleda keerulisemaid tingimusi (nt vahemikud või võrdlusoperaatorid nagu <, > jne).
- Kui tingimus põhineb loogilistel avaldistel või mitmel muutuval, mitte ainult arvudel.
Switch-lausung sobib hästi lihtsate ja konkreetsete väärtuste võrdlemiseks, samas kui if-lausung võimaldab suuremat paindlikkust keerukate tingimuste käsitlemisel. Õige valiku tegemine sõltub konkreetsest olukorrast.
6. Levinumad vead ja kuidas neid vältida
Siin tutvustame mõningaid levinumaid vigu, mida tehakse switch-lausungit kasutades, ning anname soovitusi nende vältimiseks.
1. break-lausungi puudumine, mis põhjustab läbivoolu (fallthrough)break
-lausungi unustamisel täidetakse mitte ainult määratud case
, vaid ka kõik sellele järgnevad juhtumid. Seda nimetatakse “fallthrough”-ks. Kui see ei ole teadlik otsus, tuleb igasse case
lõppu kindlasti lisada break
.
2. default-ploki puudumine
Kui kasutajasisend või muud ootamatud väärtused on võimalikud, on oluline lisada default
-plokk vigade käsitlemiseks. See aitab vähendada riski, et programm käitub ettearvamatult.

7. switch-lausungi ja enum-tüübi kooskasutamine
Üks viis switch-lausungi veelgi tõhusamaks kasutamiseks on enum-tüübi (loenditüübi) kasutamine. Enum võimaldab tingimusi hallata mitte lihtsalt arvudena, vaid tähendusrikaste nimedena, mis muudab koodi intuitiivsemaks ja kergemini mõistetavaks.
enum Fruit { APPLE, BANANA, ORANGE };
int main(void) {
enum Fruit fruit = BANANA;
switch (fruit) {
case APPLE:
printf("Valisite õuna.");
break;
case BANANA:
printf("Valisite banaani.");
break;
case ORANGE:
printf("Valisite apelsini.");
break;
default:
printf("Kehtetu valik.");
break;
}
return 0;
}
Selles näites määratletakse enum
-tüübiga võimalikud puuviljavalikud ning nende põhjal teostatakse switch-lausungis vastavad tegevused. Loenditüüpide kasutamine parandab koodi loetavust ja hooldatavust.
8. Kokkuvõte
C-keeles on switch-lausung
väga tõhus, kui tingimused põhinevad kindlatel väärtustel. Võrreldes if-lausungiga
sobib see paremini lihtsate väärtuspõhiste harude jaoks, võimaldades kirjutada loetavat ja tõhusat koodi. Kasutage tulevikus kindlasti switch-lausungit, et saavutada puhtam ja professionaalsem koodistruktuur.