- 1 1. Sissejuhatus: Mis on C-keele tingimuslause?
- 2 2. switch-case lause põhistruktuur ja kasutamine
- 3 3. switch-case lause omadused ja tähelepanekud
- 4 4. if-else ja switch-case võrdlus: kumba valida?
- 5 5. Rakendusnäited: kuidas switch-case veel mugavamaks teha
- 6 6. Levinumad vead ja nende lahendused
- 7 7. Kokkuvõte ja järgmised sammud
1. Sissejuhatus: Mis on C-keele tingimuslause?
Tingimuslausete olulisus ja roll
Programmeerimises mängivad tingimuslaused väga olulist rolli. Erinevate tingimuste alusel erinevate tegevuste täitmine muudab programmi paindlikumaks ja tõhusamaks.
Tingimuslausete põhialused C-keeles
C-keeles kasutatakse tingimuslausete rakendamiseks peamiselt kahte meetodit:
- if-else lause
- switch-case lause
Nendest switch-case lause on eriti kasulik, kui on vaja hallata mitut selget valikut, kuna see võimaldab tingimusi efektiivselt töödelda.
switch-case lause roll ja kasutusjuhtumid
switch-case
on juhtlausete struktuur, mis harutab programmi käitumise lahti muutuja väärtuse alusel. Seda kasutatakse näiteks järgmistes olukordades:
- Menüüvaliku programmid
- Numbrite või tähtede põhjal tehtud klassifitseerimine
- Lihtne olekuhaldus
Näited kasutusjuhtumitest
Näiteks kujutame ette rakendust, mis käivitab erinevaid tegevusi sõltuvalt menüü numbrist. Kui kasutaja valib „1“, käivitub „Start“, kui ta valib „2“, siis „Lõpp“.
Miks õppida switch-case lauset?
- Kood jääb lühem ja paremini loetav
- Tingimuslaused on selgelt korrastatud, mis vähendab vigade tekkimise riski
- Parandab programmi töökindlust ja efektiivsust
Selles artiklis selgitame detailselt switch-case lause põhistruktuuri, praktilisi näiteid ja tähelepanekuid. Nii saad C-keele tingimuslausete olemusest sügavama arusaama ning omandad praktilised oskused.

2. switch-case lause põhistruktuur ja kasutamine
Põhistruktuur
Allpool on toodud switch-case
lause põhisüntaks.
switch (avaldis) {
case KONSTANT1:
// Tegevus 1
break;
case KONSTANT2:
// Tegevus 2
break;
default:
// Muud tegevused
}
Koodinäide: nädalapäeva tuvastamine
#include <stdio.h>
int main() {
int day;
printf("Sisesta nädalapäev numbrina (1–7): ");
scanf("%d", &day);
switch (day) {
case 1:
printf("Esmaspäev\n");
break;
case 2:
printf("Teisipäev\n");
break;
case 3:
printf("Kolmapäev\n");
break;
case 4:
printf("Neljapäev\n");
break;
case 5:
printf("Reede\n");
break;
case 6:
printf("Laupäev\n");
break;
case 7:
printf("Pühapäev\n");
break;
default:
printf("Vigane sisend\n");
}
return 0;
}
Selle näite põhipunktid
- Igas
case
-plokis kasutataksebreak
lauset, et juhtida programmi käiku õigesti. default
võimaldab käsitleda valesid sisendeid.
switch-case lause eelised
- Parem loetavus: Tingimuslause jääb lihtne ja arusaadav.
- Koodimaht väheneb: Sama muutuja mitme väärtuse kontrollimine on efektiivne.
- Vigade ennetamine: Lihtne lisada töötlus ootamatute sisendite jaoks.
3. switch-case lause omadused ja tähelepanekud
Omadus 1: lihtne ja hästi loetav
switch-case
lausega saab mitut tingimust lühidalt väljendada, mis parandab koodi loetavust.
Omadus 2: mõeldud täisarvude ja märkide kontrolliks
switch-case
on loodud töötama täisarvude (int) ja märkide (char) väärtustega.
Olulised tähelepanekud kasutamisel
1. Ära unusta break lauset
int num = 1;
switch (num) {
case 1:
printf("Üks\n");
case 2:
printf("Kaks\n");
default:
printf("Muu\n");
}
Väljund:
Üks
Kaks
Muu
Lahendus:
int num = 1;
switch (num) {
case 1:
printf("Üks\n");
break;
case 2:
printf("Kaks\n");
break;
default:
printf("Muu\n");
}
2. Ainult konstandid on lubatud
int x = 10;
switch (x) {
case x: // VIGA
printf("Viga\n");
break;
}
Parandatud versioon:
#define VALUE 10
switch (x) {
case VALUE:
printf("Õnnestus\n");
break;
}
4. if-else ja switch-case võrdlus: kumba valida?
Põhilised erinevused
1. Tingimuste hindamise viis
- if-else lause hindab loogilisi avaldisi (näiteks võrdlused või mitme tingimuse kombinatsioonid).
- switch-case lause kontrollib, kas väärtus vastab kindlale konstandile või märgile.
Võrdlustabel
Võrdluskriteerium | if-else | switch-case |
---|---|---|
Tingimus | Võimaldab kasutada loogikaavaldist ja vahemikke | Piiratud täisarvu või märgi kindlate väärtustega |
Loetavus | Keerulised tingimused võivad muuta koodi raskesti jälgitavaks | Mitme juhtumi selge esitamine muudab koodi arusaadavaks |
Kiirus | Mõnikord võib olla aeglasem | Kompilaator optimeerib, sageli kiire töötlemine |
Laiendatavus | Tingimusi saab paindlikult lisada | Piiratud ainult konstantsete väärtustega |
Kasutusala | Keeruliste või vahemikupõhiste tingimuste korral | Selgete väärtuspõhiste harude ja menüüvalikute korral |
Praktilised näited
if-else näide:
int score = 85;
if (score >= 90) {
printf("Suurepärane\n");
} else if (score >= 70) {
printf("Hea\n");
} else {
printf("Rahuldav\n");
}
switch-case näide:
int grade = 2;
switch (grade) {
case 1:
printf("Suurepärane\n");
break;
case 2:
printf("Hea\n");
break;
case 3:
printf("Rahuldav\n");
break;
default:
printf("Mitte arvestatud\n");
}
5. Rakendusnäited: kuidas switch-case veel mugavamaks teha
1. Mitme juhtumi ühendamine
char grade = 'A';
switch (grade) {
case 'A':
case 'B':
printf("Arvestatud\n");
break;
case 'C':
printf("Järeleksam\n");
break;
default:
printf("Mitte arvestatud\n");
}
2. Fall-through kasutamine
int score = 85;
switch (score / 10) {
case 10:
case 9:
printf("Suurepärane\n");
break;
case 8:
case 7:
printf("Hea\n");
break;
default:
printf("Mitte arvestatud\n");
}
3. Pesastatud switch-case
int menu = 1;
int subMenu = 2;
switch (menu) {
case 1:
switch (subMenu) {
case 1:
printf("Alammenüü 1-1\n");
break;
case 2:
printf("Alammenüü 1-2\n");
break;
}
break;
case 2:
printf("Menüü 2\n");
break;
}
6. Levinumad vead ja nende lahendused
1. break lause unustamine
int num = 1;
switch (num) {
case 1:
printf("Üks\n");
case 2:
printf("Kaks\n");
default:
printf("Muu\n");
}
Lahendus:
int num = 1;
switch (num) {
case 1:
printf("Üks\n");
break;
case 2:
printf("Kaks\n");
break;
default:
printf("Muu\n");
}
2. Muutuja kasutamine case sildina
int x = 10;
switch (x) {
case x: // VIGA
printf("Väärtus on 10\n");
break;
}
Parandatud versioon:
#define VALUE 10
switch (x) {
case VALUE:
printf("Õnnestus\n");
break;
}
3. default haru väljajätmine
int num = 5;
switch (num) {
case 1:
printf("Üks\n");
break;
case 2:
printf("Kaks\n");
break;
}
Lahendus:
switch (num) {
case 1:
printf("Üks\n");
break;
case 2:
printf("Kaks\n");
break;
default:
printf("Muu\n");
}

7. Kokkuvõte ja järgmised sammud
1. Artikli peamised punktid
- Põhistruktuur ja kasutamine
switch-case
on mugav juhtlause, mis harutab tegevused lahti kindlate väärtuste alusel.- Lihtne ja loetav süntaks sobib hästi selgete tingimuste korral.
- Omadused ja tähelepanekud
switch-case
töötab ainult täisarvu või märgikonstantidega.break
puudumisel võib tekkida soovimatu fall-through, seega õige süntaks on oluline.
- Võrdlus if-else lausega
- if-else sobib keeruliste ja vahemikupõhiste tingimuste jaoks, switch-case aga konkreetsete väärtuste eristamiseks.
- Tingimuste järgi õige valiku tegemine muudab programmi efektiivsemaks.
- Rakendusnäited ja tehnikad
- Mitme juhtumi ühendamine ja fall-through võimaldavad kirjutada paindlikumat koodi.
- Pesastatud
switch-case
või funktsioonidega kombinatsioon aitab hallata keerulisemaid süsteeme.
- Vead ja lahendused
- Tüüpilised vead (nt break puudumine või case sildi kordamine) ja nende lahendused aitavad debugimisel.
- Nende teadmiste rakendamine vähendab vigade riski ja parandab töökindlust.
2. Järgmised sammud
1. Praktiline programmeerimine
Kasuta õpitut ja loo järgmisi programme:
- Kalkulaator: nelja põhiaritmeetilise tehte käsitlemine
switch-case
abil. - Menüüvalikurakendus: mitmetasandiliste menüüde loomine ja juhtimine.
- Tulemuste haldussüsteem: hinnete automaatne liigitamine punktisumma järgi.
2. Seotud teemade õppimine
Edasijõudmiseks uuri ka järgmisi teemasid:
- if-else tehnikad: keerukamate tingimuslausete valdamine.
- Tsüklid (for, while): korduvate tegevuste kombineerimine tingimuslausete abil.
- Funktsioonid ja struktuurid: suuremate programmide tõhus haldamine.
3. Optimeerimine ja debugimine
- Debugimise tööriistad: vigade kiire leidmine ja parandamine.
- Koodireview: koodi jagamine teistega ja tagasiside saamine.
3. Kokkuvõte
switch-case
on võimas vahend C-keeles tingimuslausete tõhustamiseks. Põhialuste ja rakenduste mõistmine parandab programmi loetavust ja efektiivsust.
Kasutades seda artiklit juhisena ning kirjutades ise koodi, saad oma programmeerimisoskused kindlalt järgmisele tasemele viia. Proovi ka seotud teemasid, et teadmisi veelgi laiendada!