C++ da funksiya va toifasida strukturaviy ma’lumotlarini soha bo’yicha ishlatgan holda dastur tuzish


Download 303.58 Kb.
bet7/7
Sana13.02.2023
Hajmi303.58 Kb.
#1192814
1   2   3   4   5   6   7
Bog'liq
C da funksiya va protseduralar-fayllar.org

оператори. Мультишахобланишни ташкил этиш оператори бўлиб, кўп ўтишлилик оператори - switch оператори хизмат қилади. Унинг формати
}
Бу операторда учта хизматчи сўз switch, case ва default лар
ишлатилган. Биринчиси, яъни switch хизматчи сўзи шахсан
кўп ўтишлилик оператори ҳисобланади. Иккинчи сўз case бу
ерда қандайдир маънода метка ўрнида ишлатилади. Бу
константалар бутун ѐки символли ва уларнинг ҳар бири ҳар
хил бўлиши керак. Default хизматчи сўз алоҳида меткани
ифода этади. Қуйидаги 1-расмдаги операторлар бажарилиши
switch
дан кейинги ифодалар ҳисобланади ва
уларни
қийматлари кетма-кет равишда case даги константалар билан
солиштирилади. Биринчи устма-уст тушишда бу метка билан
белгиланган меткадан кейинги операторлар бажарилади. Агар
бажарилган
операторлар
орасида
қандайдир
ўтиш
операторлари (яъни улар орасида goto, return, exit( ), break
лардан бирортаси бўлмаса) учрамаса, у ҳолда кейинги
вариантлардаги барча операторлар бажарилиши ўтиш
оператори учрамагунча ѐки switch тугамагунча давом этади.
Кўп ўтишлилик (switch) а) да алтернатив танлаш б) да келтирилган а: - агар ифода МК га тенг бўлса, у ҳолда
қуйидаги операторлари бажарилади, б - агар
ифода LK га тенг бўлса, у ҳолда фақат Sk оператори бажарилади.
Sk , Sk 1,...,Sn , S
default дан кейинги операторлар бажарилади, қачонки switch дан
кейинги қавс ичидаги ифоданинг қиймати case дан кейинги
константаларнинг ҳеч бирини қийматлари билан устма-уст
тушмаса. Умуман олганда кўп ўтишлилик операторида default
меткаси қатнашмаслиги ҳам мумкин. Бу ҳолда switch дан
кейинги қавс ичидаги ифоданинг қийматлари константаларнинг
(case дан кейинги) қийматлари билан устма-уст тушмайди ва
натижада switch оператори ҳеч қандай амални бажармайди.
default билан белгиланган операторлар switch операторининг
охирига
тушиши
шарт
эмас.
Аниқлаштириб
шуни
таъкидлаймизки, default ва “case константа” одатдаги маъно
бўйича метка эмас. Масалан, уларга goto ни ишлатиб бўлмайди.
1-расмда кўп ўтишлилик схемаси (1-а расм) ва алтернатив
танлаш ѐки селектор операторлари (1-б расмда) келтирилган.
Кейинги, яъни селектор Си тилида йўқ.
2-расмда алтернатив танлаш схемаси кўп ўтишлилик ва
S1,S2,…,Sn
қўшимча
операторлар ѐрдамида реализация
қилинган.
Кўп ўтишлилик ишини иллюстрация қилиш учун ўнлик рақамни ўқиб, уни
экранга чиқарадиган дастурни кўриб чиқиш.
#include
void main( )
{
int i; while(1) {
printf("\n O’nlik raqamni kiriting: ");
scanf("%d",Јi);
printf("\t\t"); switch( i )
{
case 1: printf("%d –bir \n",i); break; case 2: printf ("%d – ikki \i)",i) ; break; case 3: printf("%d - uch \n",i); break; case 4: printf("%d – to’rt \n",i); break; . case 5: printf("%d - besh \n",i); break; case 6: printf("%d - olti \n",i); break;
case 7: printf("%d - yetti \n",i); break; case 8: printf("%d - sakkiz \n",i); break; case 9: printf("%d – to’qqiz \n",i); break; case 0: printf("%d - nol \n",i); break;
default: printf("%d – bu raqam emas! \n",i); return; } /* Ko’p o’tishlilik tugadi */ }
/* Sikl tamom */
}
Дастур бажарилиши натижаларига мисол. O’nlik raqamni kiriting : 3
3 – uch
O’nlik raqamni kiriting : 8
8 – sakkiz
O’nlik raqamni kiriting : -7
-7 – bu raqam emas.
Бу дастур ўз ишини тугатади, қачонки рақамдан фарқли бўлган символ киритилса. Бу ерда дастурни тугалланишини return оператори таэминлайди, яъни у main() функциясида чиқиш бошқаришни операциясига узатади.
Кўп ўтишлилик операторлар набори билан бир қаторда break оператори алтернатив танлашни мазкур дастурда бажаради. Агар бу ердаги барча break лар олиб ташланса, у ҳолда 1-а расмдаги ҳол бўлади.
Таъкидлаш лозимки, switch ичида бир нечта “case” меткасига 1 та оператор ҳам мос келиши мумкин.
http://fayllar.org

Download 303.58 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




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