Сайфиев ж. Ф. С++ тилига кириш услубий қўлланма


Download 3.45 Mb.
bet52/79
Sana18.10.2023
Hajmi3.45 Mb.
#1707139
1   ...   48   49   50   51   52   53   54   55   ...   79
Bog'liq
cpp buxoro

switch оператори


Олдинги мавзуларда биз if ва if/else операторлари билан танишган эдик. Лекин айрим масалаларни ечишда if оператори ичида кўп сондаги if операторларини қўллашга тўғри келади. Бу эса дастурни ёзишни ҳам, уни тушинишни ҳам мураккаблаштириб юборади. Бундай муаммони ечиш учун С++ тилида switch оператори қўлланилади. Бу операторнинг if операторидан асосий фарқи шуки, унда бир йўла бир нечта шарт текширилади. Натижада дастурни тармоқланиши нисбатан самаралироқ бўлади. switch операторининг синтаксиси қуйидагичадир.
switch(ифода)
{
case Биринчи киймат: оператор;
break;

case Иккинчи киймат: оператор;


break;
.....
case N нчи киймат: оператор;
break;
defаult: оператор;
}
switch операторидан кейинги қавс ичида тилнинг конструкцияси нуқтаи–назаридан тўғри бўлган ихтиёрий ифодани ишлатиш мумкин. Оператор идентификатори ўрнида ҳам ихтиёрий оператор ёки ифода, ҳамда оператор ва ифодаларнинг кетма-кетлигини ишлатиш мумкин. Лекин бу ерда мантиқий операциялар ёки таққослаш ифодаларини ишлатиш мумкин эмас.

switch операторининг қўлланилиши.


switch операторининг қўлланилиш синтаксиси қуйидагича:
switch(ифода)
{
сase 1-нчи қиймат: ифода;
сase 2-нчи қиймат: ифода;

сase n-нчи қиймат: ифода;
default : ифода;
}
switch оператори орқали дастурнинг тармоқланиши бир неча мумкин бўлган қийматларни қайтарувчи ифоданинг натижаси асосида ташкил этилади. switch операторидаги қавс ичида берилган ифоданинг қайтарган қиймати case операторидан кейинда кўрсатилган қиймат билан солиштирилади. Ифоданинг қиймати билан case операторидан кейинги қиймат мос келса танланган case операторидан кейинги барча сатрлар бажарилади. Бунда амалларни бажарилиши break операторигача давом этади.
Агарда case операторлари қийматидан бирортаси ҳам қайтарилган қийматга мос келмаса default операторидан кейинги дастур сатрлари бажарилади. Агарда бу оператор мавжуд бўлмаса бошқарув switch блоки танасидан чиқади ва кейинги дастур сатрларига берилади.
1-мисол.
switch(choice)
{
case 0:
cout<< “zero!”<< endl;
break;
case 1:
cout<< “оne!”<< endl;
breаk;
case 2:
cout<< “two! <break;
default:
cout<< “default!<}

2-мисол



switch (choice)
{
сase 0:
case 1:
case 2:
cout< “Less than 3!”<< endl;
break;
case 3:
cout<< Equals 3!” << endl;
break;
default:
cout<< Greater than3 ! ” << endl;}
Оператор ёки ифодалардан кейин break оператори қўлланилмаса жорий case операторидан кейинги case блокидаги барча ифодалар бажарилади. Кўп ҳолларда бундай ситуацияда хатолик рўй беради. Шунинг учун, break операторини тушириб қолдирсангиз бу амални тавсифловчи мос изоҳни(коментарийни) ёзишни унутманг.
switch операторининг қўлланилишига мисол 7.16.-листингда келтирилган.
7.16. – листинг. switch операторининг қўлланилиши
include
int main()
{
unsigned short int number;
cout<< “Enter a number between 1 and 5:”
сin>> number;
switch (number)
{
case 0: cout << “Small”;
break;
case 5: cout<< “Good job! \n”;
case 4: cout << “Nice Pick!\n” ;
case 3: cout<< “Excellent! \n”;
case 2: cout << “Master full! \n”
case 1: cout << Incredible!\n”;
break;
default: cout << “Big! \n”;
break;
}
cout<< “\n\n”;
return 0;
}


HАТИЖА:
Enter a number between 1 and 5: 3
Excellent!
Masterful!
Ineredible!
Enter a number between 1 and 5: 8
Big!
ТАҲЛИЛ
Дастур олдин сон киритишни сўрайди. Кейин эса киритилган сон switch оператори орқали текширилади. Агарда 0 киритилган бўлса унга мувофиқ равишда экранга 9 – сатрда ёзилган kichik son хабари чиқарилади. Ва ундан кейин ёзилган break оператори switch конструкциясини бажарилишини якунлайди. Агарда 5 сони киритилса бошқарув 11 – сатрга берилади ва унга мувофиқ хабар чиқарилади. Ундан кейинги токи break сўзигача барча сатрлар кетма – кет бажарилади.
Агарда дастурга 5 дан катта сон киритилса 17 – сатрдаги default бажарилади, яъни экранга Big хабари чиқарилади.

Download 3.45 Mb.

Do'stlaringiz bilan baham:
1   ...   48   49   50   51   52   53   54   55   ...   79




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling