Switch operatori. if-else-if yordami bilan bir necha shartni test qilishimiz
mumkin. Lekin bunday yozuv nisbatan o`qishga qiyin va ko`rinishi qo`pol bo`ladi.
Agar shart ifoda butun son tipida bo`lsa yoki bu tipga keltirilishi mumkin bo`lsa,
biz switch (tanlash) ifodalarini ishlata olamiz. Switchning umumiy ko`rinishi:
Switch() {
Case <1-qiymat>:<1-operator>
…
break;
…
235
default: …
case: ; }
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.
Break operatori ishlatilmasa shartga mos kelgan
variantdan tashqari keyingi variantdagi operatorlar ham avtomatik bajariladi.
Default; break va belgilangan variantlar ixtiyoriy tartibda kelishi mumkin.
Default yoki
break operatorlarini ishlatish shart emas. Belgilangan operatorlar bo`sh
bo`lishi ham mumkin.
Switch strukturasi bir necha
case etiketlaridan (label) va majburiy bo`lmagan
default etiketidan iboratdir. Etiket bu bir nomdir. U dasturning bir nuqtasida
qo`yiladi. Programmaning boshqa yeridan ushbu etiketga o`tishni bajarish
mumkin. O`tish yoki sakrash goto bilan amalga oshiriladi, switch blokida ham
qo`llaniladi.
5 lik sistemadagi bahoni so`zlik bahoga o`tkizadigan blokni yozaylik.
8-listing.
Output:
int baho = 4;
switch (baho) {
case 5: cout << "A`lo"; break;
case 4: cout << "Yaxshi"; break;
case 3: cout << "Qoniqarli"; break;
case 2:
case 1: cout << " Qoniqarsiz"; break;
default: cout << "Baho xato kiritildi!"; break; }
Yaxshi
Switch ga kirgan o`zgaruvchi (yuqorigi misolda baho) har bir
case etiketlarining qiymatlari bilan solishtirilib chiqiladi. Shartdagi qiymat etiketdagi
qiymat bilan teng bo`lib chiqqanda ushbu
case ga tegishli ifoda yoki ifodalar bloki
236
bajariladi. So`ng
break sakrash buyrug`i bilan
switch ning tanasidan chiqiladi.
Agar
break qo`yilmasa, keyingi etiketlar qiymatlari bilan solishtirish bajarilmasdan
ularga tegishli ifodalar ijro ko`raveradi.
default etiketi majburiy emas. Lekin shart
chegaradan tashqarida bo`lgan qiymatda ega bo`lgan hollarni tahlil qilish uchun
kerak bo`ladi.
case va etiket orasida bo`sh joy qoldirish shartdir. Chunki, masalan, case 4:
ni case4: deb yozish oddiy etiketni vujudga keltiradi, bunda sharti test qilinayotgan
ifoda 4 bilan solishtirilmay o`tiladi.
Misol tariqasida bahoni son miqdoriga qarab aniqlash dasturini ko`ramiz.
9-listing.
Output:
Include void main( )
{ int baho; cin>> baho;
switch(baho)
{case 2:cout <<“\n yomon”;break;
case 3:cout <<“\n o`rta”;break;
case 4:cout <<“\n yaxshi”;break;
case 5:cout <<“\n a`lo”;break;
default: cout <<“\n baho no`to`gri kiritilgan”; };}
Misol tariqasida kiritilgan simvol unli harf ekanligi aniqlanadi:
10-listing.
Output:
#Include void main( )
{char c;
cin >> c;
switch(c)
{case `a`:
case `u`:
237
case `o`:
case `i`:
cout <<“\n Kiritilgan simvol unli harf” ;break;
default: cout <<“\n Kiritilgan simvol unli harf emas”;} ; }