7. switch

Oldingi bobda if va else yordamida shartlarni tekshirishni o‘rgandik.

Ba'zan bir nechta aniq qiymatdan birini tanlashimiz kerak bo‘ladi.

Masalan:

1 → Dushanba
2 → Seshanba
3 → Chorshanba

Bunday holatlarda switch ishlatish qulay.


switch nima?

switch biror qiymatni bir nechta variant bilan solishtiradi.

Oddiy ko‘rinishi:

switch (qiymat) {
    case 1:
        // kod
        break;

    case 2:
        // kod
        break;

    default:
        // kod
}

Oddiy misol

#include <iostream>

using namespace std;

int main() {
    int kun = 1;

    switch (kun) {
        case 1:
            cout << "Dushanba";
            break;

        case 2:
            cout << "Seshanba";
            break;

        case 3:
            cout << "Chorshanba";
            break;
    }

    return 0;
}

Natija:

Dushanba

Chunki kun qiymati 1.


case

case mumkin bo‘lgan qiymatni bildiradi.

Masalan:

case 1:

Bu:

Agar qiymat 1 bo‘lsa, quyidagi kodni bajar.

degan ma'noni anglatadi.


break

break juda muhim.

Masalan:

case 1:
    cout << "Dushanba";
    break;

break switch ni to‘xtatadi.

Agar break yozilmasa, C++ keyingi case larni ham bajarishi mumkin.

Shuning uchun hozircha har bir case oxirida break yozishga odatlaning.


default

Agar hech qaysi case mos kelmasa, default ishlaydi.

Masalan:

int kun = 10;

switch (kun) {
    case 1:
        cout << "Dushanba";
        break;

    case 2:
        cout << "Seshanba";
        break;

    default:
        cout << "Bunday kun yo'q";
}

Natija:

Bunday kun yo'q

Foydalanuvchidan qiymat olish

switch ni cin bilan birga ishlatish mumkin.

Masalan:

#include <iostream>

using namespace std;

int main() {
    int tanlov;

    cout << "1 - Salom" << endl;
    cout << "2 - Xayr" << endl;

    cout << "Tanlang: ";
    cin >> tanlov;

    switch (tanlov) {
        case 1:
            cout << "Salom!";
            break;

        case 2:
            cout << "Xayr!";
            break;

        default:
            cout << "Noto'g'ri tanlov.";
    }

    return 0;
}

Agar foydalanuvchi 1 kiritsa:

Salom!

Agar 2 kiritsa:

Xayr!

chiqadi.


Kalkulyator misoli

switch yordamida oddiy kalkulyator yaratish mumkin.

#include <iostream>

using namespace std;

int main() {
    double a, b;
    char amal;

    cout << "Birinchi son: ";
    cin >> a;

    cout << "Amalni kiriting (+, -, *, /): ";
    cin >> amal;

    cout << "Ikkinchi son: ";
    cin >> b;

    switch (amal) {
        case '+':
            cout << a + b;
            break;

        case '-':
            cout << a - b;
            break;

        case '*':
            cout << a * b;
            break;

        case '/':
            cout << a / b;
            break;

        default:
            cout << "Noto'g'ri amal.";
    }

    return 0;
}

Masalan:

Birinchi son: 10
Amalni kiriting: +
Ikkinchi son: 5

Natija:

15

switch va if farqi

if juda ko‘p turdagi shartlarni tekshira oladi.

Masalan:

if (yosh >= 18) {
    cout << "Voyaga yetgan";
}

switch esa ko‘proq aniq qiymatlarni tanlash uchun qulay.

Masalan:

switch (kun) {
    case 1:
        cout << "Dushanba";
        break;

    case 2:
        cout << "Seshanba";
        break;
}

Oddiy qilib:

if     → shartlarni tekshirish
switch → aniq qiymatlardan tanlash

Bir nechta case

Bir nechta case bir xil kodni bajarishi mumkin.

Masalan, dam olish kunlarini tekshiramiz:

int kun;

cin >> kun;

switch (kun) {
    case 6:
    case 7:
        cout << "Dam olish kuni.";
        break;

    default:
        cout << "Ish kuni.";
}

Agar 6 yoki 7 kiritilsa:

Dam olish kuni.

chiqadi.

Bu yerda ikkala case bitta kodga olib keladi.


switch qaysi qiymatlar bilan ishlaydi?

Boshlang‘ich darajada switch ni asosan:

int
char

kabi qiymatlar bilan ishlatamiz.

Masalan:

int son = 2;

yoki:

char belgi = 'A';

char bilan switch

Masalan:

char baho = 'A';

switch (baho) {
    case 'A':
        cout << "A'lo";
        break;

    case 'B':
        cout << "Yaxshi";
        break;

    case 'C':
        cout << "Qoniqarli";
        break;

    default:
        cout << "Noma'lum baho";
}

Natija:

A'lo

break ni unutmaslik

Quyidagi kodga qarang:

int son = 1;

switch (son) {
    case 1:
        cout << "Bir";

    case 2:
        cout << "Ikki";
}

break yo‘qligi sababli case 1 dan keyin case 2 ham bajarilishi mumkin.

Natija:

BirIkki

Shuning uchun:

case 1:
    cout << "Bir";
    break;

ko‘rinishida yozish kerak.


Amaliy mashqlar

1-mashq

Foydalanuvchidan 1 dan 3 gacha son oling.

Natijani chiqaring:

1 → Dushanba
2 → Seshanba
3 → Chorshanba

2-mashq

Foydalanuvchidan belgi oling:

A
B
C

Agar A bo‘lsa:

A'lo

Agar B bo‘lsa:

Yaxshi

Agar C bo‘lsa:

Qoniqarli

chiqaring.


3-mashq

Oddiy kalkulyator yozing.

Foydalanuvchi:

ikki son
amal

kiritsin.

Dastur +, -, *, / amallarini bajarsin.


4-mashq

Quyidagi menyuni yarating:

1 - Kitoblar
2 - Filmlar
3 - O'yinlar
4 - Chiqish

Foydalanuvchi tanloviga qarab tegishli xabar chiqaring.


Muhim narsalarni eslab qoling

switch bir nechta aniq qiymatdan tanlash uchun ishlatiladi.

case — mumkin bo‘lgan qiymat.

breakswitch ni to‘xtatadi.

default — hech qaysi case mos kelmaganda ishlaydi.

Oddiy tuzilishi:

switch (qiymat) {
    case 1:
        // kod
        break;

    case 2:
        // kod
        break;

    default:
        // kod
}

if murakkab shartlar uchun qulay.

switch esa aniq qiymatlar orasidan tanlash uchun qulay.