Alamiy matematika




Download 1,81 Mb.
Pdf ko'rish
bet16/33
Sana07.06.2024
Hajmi1,81 Mb.
#261447
1   ...   12   13   14   15   16   17   18   19   ...   33
Bog'liq
e6077933-4123-4774-8cff-1eae13c7f186

 
Switch operatori: 
Shart operatorining yana bir ko‘rinishi switch 
tarmoqlanish operatori bo‘lib, uning sintaksisi quyidagacha: 
switch (

case
1
> : 
1
>; break;
case
2
> : 
2
>;break; 
… 
case
n
> : 
n
>; break; 
default::
1

n
>; 



Bu operator quyidagicha amal qiladi: birinchi navbatda qiymati 
hisoblanadi, keyin bu qiymat case kalit so‘zi bilan ajratilgan i

bilan solishtiriladi. Agar ular ustma-ust tushsa, shu qatordagi ‘:’ belgisidan boshlab, 
toki break kalit so‘zigacha bo‘lgan i
> bajariladi va boshqaruv 
tarmoqlanuvchi operatordan keyingi joylashgan operatorga o‘tadi. Agar  
birorta ham i
> bilan mos kelmasa, qurilmaning default qismidagi 
1

n
> bajariladi. Shuni qayd etish kerakki, qurilmada default kalit 
so‘zi faqat bir marta uchrashi mumkin. 
Misol uchun, kirish oqimidan “Jarayon davom etilsinmi?” so‘roviga 
foydalanuvchi tomonidan javob olinadi. Agar ijobiy javob olinsa, ekranga “Jarayon 
davom etadi!” xabari chop etiladi va programma o‘z ishini tarmoqlanuvchi 
operatordan keyingi operatorlarni bajarish bilan davom ettriladi, aks holda “Jarayon 
tugadi!” javobi beriladi va programma o‘z ishini tugatadi. Bunda, foydalanuvchining 
‘y’ yoki ‘Y’ 
javoblari jarayonni davom ettirishni bildiradi, boshqa belgilar esa tugatishni 
anglatadi. 
#include  
int main() 

 
char javob=’ ‘; 
cout<<’’jarayon davom etsinmi?(‘y’,’Y’):’’; 
cin>>javob; 
switch(javob) 

case ‘y’: 
case ‘Y’: 
cout<<’’jarayon davom etadi!\n‘’; 
break; 
default: 
cout<<’’jarayon tugadi!\n‘’; 
return 0; 



 
…//jarayon 
 
return 0; 
 
}
Umuman olganda, tarmoqlanuvchi operatorda break va default kalit ishlatish 
shart emas. Lekin bu holda operatorning mazmuni mumkin. Masalan, default qismi 
bo‘lmagan holda, agar birorta i
> bilan ustma-ust 
tushmasa, operator hech qanday amal bajarmasdan boshqaruv tarmoqdanuvchi 
operatordan keyingi operatorga o‘tadi. Agar break bo‘lmasa, birorta 
i
> bilan ustma-ust tushgan holda, unga mos keluvchi operatorlar 
guruhini bajaradi va «to‘xtamasdan» keyingi qatordagi operatorlar guruhini 
bajarishga o‘tib ketadi. Masalan, yuqoridagi misolda break operatori bo‘lmasa va 
jarayonni davom ettirishni tasdiqlovchi (‘Y’) javob bo‘lgan taqdirda ekranga 
Jarayon davom etadi! 
Jarayon tugadi! 
Xabarlari chiqadi va programma o‘z ishini tugatadi (return operatorining bajarilishi 
natijasida). 
Tarmoqlanuvchi operator sanab o‘tiluvchi turdagi o‘zgarmaslar bilan 
birgalikda ishlatilganda samara beradi. Quyidagi programmada ranglar gammasini 
toifalash masalasi yechilgan. 
#include  
int main() 

enum Ranglar{qizil, tuq_sariq,sariq,yashil,kuk,zangori,binafsha}; 
Ranglar rang; 
//... 
switch(rang) 

case qizil: 
case tuq_sariq: 
case sariq; 
cout<<’’Issiq gamma tanlanadi. \n’’; 
break; 


case yashil: 
case kuk: 
case zangori: 
case binafsha: 
cout<<’’Sovuq gamma tanlandi.\n’’; 
break; 
default: 
cout<<’’Kamalak bunday rangga ega emas. \n’’; 

return 0; 

Programma bajarilishida boshqaruv tarmoqlanuvchi operatorga kelganda, 
rang qiymati qizil yoki tuq_sariq yoki sariq bo‘lsa, “Issiq gamma tanlandi’’ xabari, 
agar rang qiymati yashil yoki kuk yoki zangori yoki binafsha bo‘lsa, ekranga “Sovuq 
gamma tanlandi” xabari, agar rang qiymati sanab o‘tilgan qiymatlardan farqli bo‘lsa, 
ekranga “Kamalak bunday rangga ega emas “ xabari chop etiladi va programma o‘z 
ishini tugatadi. 
Switch operatorida e’lon operatorlari ham uchrashi mumkin. Lekin switch 
operatori bajarilishida «sakrab o‘tish» holatlari bo‘lishi hisobiga blok ichidagi ayrim 
e’lonlar bajarilmasligi va buning oqibatida programma ishida xatolik ro‘y berishi 
mumkin: 
//… 
int k=0,n=0; 
 
cin>>n; 
switch (n) 

int=10; //xato,bu operator hech qachon bajarilmaydi
case 1: 
int j=20; //agar n=2 bo‘lsa,bu e’lon bajarilmaydi
case 2: 
k+=i+j; //xato, chunki i,j o‘zgaruvchilar noma’lum 


 

 
cout<
//… 
Masala
. Quyida, sanab o‘tiluvchi turlar va shu turdagi o‘zgaruvchilar 
e’lon qilingan: 
enum Birlik{detsimetr, kilometr, metr, millimetr, santimetr} 
float y; Birlik r; 
Birlikda berilgan x o‘zgaruvchisining qiymat metrlarda chop qilinsin. 
#include  
int main() 

enum Birlik {detsimetr, kilometr, metr, millimetr, santimetr}; 
float x,y; 
Birlik r; 
cout<<’’uzunlikni kiriting: x=’’; 
cin>>x; 
cout<<’’ uzunlik birliklari\n’’; 
cout<<’’ 0-detsimetr\n’’; 
 
cout<<’’1-kilometr\n’’; 
 
cout<<’’2-metr\n’’; 
 
cout<<’’3-millimetr\n’’; 
 
cout<<’’4-santimetr\n’’; 
 
cout<<’’uzunlikni birligini tanlang; r=’’; 
cin>>r; 
switch(r) 

case detsimetr:y=x/10; break; 
case kilometr: y=x*1000; break; 
case metr: y=x; break; 


case millimetr: y=x/1000; break; 
case santimetr: y=x/100; break; 
default: 
 
cout<<’’uzunlik birligi noto’g’ri kiritildi!’’; 
 
return o; 

cout<
return 0; 

Programma bajarilishini boshqarishning boshqa bir kuchli mexanzmlaridan 
biri – takrorlash operatorlari hisoblanadi. 
Takrorlash operatori «takrorlash sharti» deb nomlanuvchi ifodaning rost 
qiymatida programmaning ma’lum bir qismidagi operatorlarni (takrorlash tanasini) 
ko‘p marta takror ravishda (itarativ jarayon). 
9-rasm. Takrorlash operatorining blok sxemasi 
Takrorlash o‘zining kirish va chiqish nuqtalariga ega, lekin chiqish nuqtasining 
bo‘lmasligi mumkin. Bu holda takrorlashga cheksiz takrorlash deyiladi. Cheksiz
takrorlash uchun takrorlashni davom ettirish sharti doimo rost bo‘ladi. 
Takrorlash shartini tekshirish takrorlash tanasidagi operatorlarni bajarishdan 
oldin tekshirilishi mumkin (for, while takrorlashlari) yoki takrorlash tanasidagi 
operatorlari bir marta bajarilgandan keyin tekshirilishi mumkin (do-while). 
Takrorlash operatorlari ichma-ich joylashgan bo‘lishi mumkin. 

Download 1,81 Mb.
1   ...   12   13   14   15   16   17   18   19   ...   33




Download 1,81 Mb.
Pdf ko'rish