C Switch (Tanlash Operatori)

Kalit bo’yicha tanlash operatori. Kalit bo’yicha tanlash switch operatori umumiy ko’rinishi quyidagicha:

switch(<ifoda>) {
case <1-qiymat>:<1-operator> …
break; …
default: <operator> …
case: <n-operator>; }

Bu shunday ishlaydi:

  • Ifoda switch bir marta baholanadi.
  • Ifodaning qiymati har birining qiymatlari case bilan taqqoslanadi.
  • Agar mos keladigan bo'lsa, tegishli kod bloki bajariladi.
  • Bayonot switch break blokidan chiqib ketadi va bajarilishini to'xtatadi.
  • Bayonot ixtiyoriy bo'lib, agar katta-kichik holat mos kelmasa, ba'zi bir kodni belgilaydi. Ya'ni defaultga berilgan holatlar mos kelmagan taqdirda boshqa holatni chiqar deb buyruq berishimiz mumkin.

Oldin qavs ichidagi butun ifoda hisoblanadi va uning qiymati hamma variantlar bilan solishtiriladi. Biror variantga qiymat mos kelsa shu variantda ko’rsatilgan operator bajariladi. Agar biror variant mos kelmasa default orqali ko’rsatilgan operator bajariladi. Uzish break operatori ishlatilmasa shartga mos kelgan variantdan tashqari keyingi variantdagi operatorlar ham avtomatik bajariladi. Quyidagi default, break va belgilangan variantlar ixtiyoriy tartibda kelishi mumkin. Umuman default yoki break operatorlarini ishlatish shart emas. Belgilangan operatorlar bo’sh bo’lishi ham mumkin. Misol tariqasida bahoni son miqdoriga qarab aniqlash dasturini ko’ramiz.

#include <stdio.h> 
int main()
{
    int baho;
    scanf("%d", &baho);
    switch(baho)
    {
        case 2: printf("\n yomon"); break;
        case 3: printf("\n o'rta"); break;
        case 4: printf("\n yahshi"); break;
        case 5: printf("\n alo"); break;
        default: printf("\n noto'g'ri kiritilgan"); 
    };
 return 0;
}

Keyingi misolda kiritilgan simvol unli harf ekanligi aniqlanadi:

#include <stdio.h>
int main()
{
    char c;
    scanf("%c", &c); switch(c)
    {
        case 'a':
        case 'u':
        case 'o':
        case 'i':
        printf("\n Simvol unli");break;
        default: printf("\n Simvol unli emas");
        }
  return 0;
}