Бундай операторлар иккита қийматни тенг ёки тенг эмаслигини аниқлаш учун ишлатилади. Таққослаш ифодаси доимо true (рост) ёки false (ёлғон) қиймат қайтаради. Муносабат операторларининг кўлланилишига оид мисол 4.1. жадвалда келтирилган.
4.1.жадвал. Муносабат операторлари.
Номи
|
Оператор
|
Мисол
|
Қайтарадиган қиймат
|
Тенглик
|
==
|
100==50
50==50
|
false
true
|
Тенг эмас
|
!=
|
100!=50
50!=50
|
true
false
|
Катта
|
>
|
100>50
50>50
|
true
false
|
Катта ёки тенг
|
>=
|
100>=50
50>=50
|
true
true
|
Кичик
|
<
|
100<50
50<50
|
true
false
|
Кичик ёки тенг
|
<=
|
100<=50
50<=50
|
true
true
|
if oператори
Одатда дастур сатрма–сатр тартиб билан бажарилади. If оператори шартни текшириш (масалан, икки ўзгарувчи тенгми) ва унинг натижасига боғлиқ равишда дастурни бажарилиш тартибини ўзгартириш имконини беради. If операторининг оддий шакли қуйидаги кўринишдадир:
if (шарт)
ифода;
Қавс ичидаги шарт ихтиёрий ифода бўлиши мумкин. Агарда бу ифода false қийматини қайтарса ундан кейинги ифода ёки блок тушириб қолдирилади. Агарда шарт true қиймат қайтарса навбатдаги ифода бажарилади. Қуйидаги мисолни қараймиз:
If (kattaSon>kichikSon)
KattaSon=kichikSon;
Бу ерда kattaSon ва kichikSon ўзгарувчилари таққосланаяпти. Агарда kattaSon ўзгарувчиси қиймати катта бўлса, бу навбатдаги қаторда унга қиймат сифатида kichikSon ўзгарувчисининг қиймати ўзлаштирилади.
if операторида фигурали қавс ичига олинган ифодалар блокини ҳам ишлатиш мумкин.
if (шарт)
{
- ифода
- ифода
- ифода
}
Қуйида ифодалар блокининг қўлланилишига оид мисол келтирилган
if(kattaSon>kichikSon)
{ kattaSon=kichikSon
cout<<”kattaSon:”<cout<<”kichikSon:”<}
Бу ҳолда kattaSon ўзгарувчисига нафақат kichikSon ўзгарувчиси ўзлаштирилаяпти, балки экранга бу ҳақида ахборот ҳам чиқарилаяпти.
4.3. – листинг. Муносабат операторининг қўлланилиши орқали тармоқланишга мисол
// 4.3. – листингда муносабат оператори
// билан биргаликда if инструкциясининг
// кўлланилиши намойиш этилган
# include
int main( )
{
int BuxoroGol, PaxtakorGol;
cout<<“Buxoro komandasi kiritgan to`plar”
<< “sonini yozing:”;
cin >> BuxoroGol;
cout<<“Paxtakor komandasi kiritgan”
<< “to`plar sonini yozing:”;
cin >> PaxtakorGol;
cout << “\n”;
if ( BuxoroGol>PaxtakorGol)
cout << “Yashasin Buxoro!\n”
if (BuxoroGol < PaxtakorGol)
{
cout << “Yashasin PaxtakorGol \n”
cout << “Bugun Toshkentda bayram!\n”;
}
if (BuxoroGol==PaxtakorGol)
{
cout << “Durrangmi? Yo-oq? Bo`lishi”<<
“ mumkin emas \n”;
cout <<“Paxtakorning kiritgan to`plari”
<< “haqida ma`lumotni qaytadan yozing\n”
cin >> PaxtakorGol;
if (BuxoroGol>PaxtakorGol)
{
cout<<“Buxoro yutishini oldindan bilgan”
<<“ edim! Shuning uchun qayta so`radim\n”;
cout<< “Yashasin Buxoro!”;
if (BuxoroGol
{
cout<<“Paxtakor yutishini oldindan bilgan”
<<“ edim! Shuning uchun qayta so`radim\n”;
cout<< “Yashasin Paxtakor!”;
cout << “Bugun Toshkentda bayram!\n”;
if (BuxoroGol==PaxtakorGol)
cout<<“Qoyil! Haqiqatan ham during ekan\n”;
}
cout<<“\n Ma`lumotingiz uchun rahmat\n”;
return 0;
}
НАТИЖА:
Buxoro komandasi kiritgan to`plar sonini yozing:3
Paxtakor komandasi kiritgan to`plar sonini yozing:3
Durrangmi? Yo-oq? Bo`lishi mumkin emas
Paxtakorning kiritgan to`plari haqida ma`lumotni qaytadan yozing: 2
Buxoro yutishini oldindan bilgan edim! Shuning uchun qayta so`radim
Yashasin Buxoro!
else калит сўзи
Дастурларда кўп ҳолларда бирор бир шартнинг бажарилишига (яъни бу шарт true қиймат қайтарса) боғлиқ равишда бир блок, унинг бажарилмаслигига асосан эса (яъни бу шарт false қиймат қайтарса) бошқа бир блокнинг бажарилиши талаб қилинади. 4.3. – листингда биринчи текшириш (BuxoroGol>PaxtakorGol) true қиймат қайтарса экранда бир хабар, false қийматида эса бошқа бир хабар чиқарилади.
Бундай масалаларни юқорида кўрсатилган усул, яъни қатор шартларни текшириш учун бир нечта if операторини қўллаш орқали ҳал қилиш мумкин, лекин бу тушуниш учун бироз мураккаброқдир. Дастурнинг соддалигини таъминлаш учун else калитли сўзидан фойдаланиш мумкин.
if (шарт)
Ифода;
else
Ифода;
4.4. – листинг. else калитли сўзининг ишлатилиши.
// 4.4. Листинг. If ва else калит сўзларини
// ишлатилишига оид мисол
# include
int main()
{
int BirinchiSon, IkkinchiSon;
cout << “Katta sonni kiriting:
cin >> BirinchiSon;
cout<<“\n Kichik sonni kiriting:”;
cin >> IkkinchiSon;
if (BirinchiSon > IkkinchiSon)
cout << “\n Rahmat! \n”;
else
cout << “\n Ikkinchisi katta son-ku!”;
return 0;
}
НАТИЖА:
Katta sonni kiriting: 10
Kichik sonni kiriting: 12
Ikkinchisi katta son - ku!
if оператори орқали мураккаб конструкцияларни ҳосил қилиш
if–else конструкциясида ифодалар блокида ихтиёрий операторларни ишлатишда ҳеч қандай чегара йўқ. Шу жумладан, ифодалар блоки ичида яна if–else операторларини ишлатиш мумкин. Бу ҳолда бир нечта if операторидан иборат ичма – ич конструкция ҳосил бўлади.
if (1–шарт)
{
if (2–шарт)
1–ифода
else
{
if (3–шарт)
2–ифода
else
3–ифода
} }
else
4–ифода;
Ушбу бир нечта if операторидан ташкил топган конструкция қуйидаги тартибда ишлайди: агарда 1–шарт ва 2–шарт рост бўлса 1–ифода бажарилади. Агарда 1–шарт рост ва 2–шарт ёлғон натижа қайтарса, у ҳолда 3–шарт текширилади ва агарда бу шарт рост бўлса 2–ифода, ёлғон бўлса эса 3–ифода бажарилади. Ва энг охири, агарда 1–шарт ёлғон бўлса 4–ифода бажарилади. Бундай мураккаб конструкцияга мисол 4.5 – листингда келтирилган.
4.5. – листинг. if оператори ички бўлган мураккаб конструкция
// 4.5. – Листинг. If оператори ички
// бўлган мураккаб конструкцияга мисол
# include < iostream.h>
{
// Иккита сон киритамиз.Уларни BirinchiSon
//ва IkkinchiSon ўзгарувчиларига beramiz
//Агарда KattaSon киймати KichikSon
// кийматидан катта бўлса катта сон
//кичигига колдиксиз бўлинишини текшира-
// миз. Агарда у колдиксиз бўлинса улар
//тенг ёки тенг эмаслигини текширамиз.
int BirinchiSon, IkkinchiSon;
cout<<“Ikkita son kiriting.\n Birinchisi: ”;
cin >> BirinchiSon;
cout << “\n Ikkinchisi:
cin >> IkkinchiSon;;
cout << “\n\n;
if (BirinchiSon>=IkkinchiSon;)
if ( (BirinchiSon%IkkinchiSon)==0)
{
if (BirinchiSon==IkkinchiSon;)
cout<< “Ular bir – biriga teng!\n”;
else
cout<< “Birinchi son ikkinchisiga”<<
“karrali!\n”;
}
else
cout<<“Ikkinchi son katta!\n”
return 0;
}
НАТИЖА
Ikkita son kiriting
Birinchisi: 9
Ikkinchisi: 3
Birinchi son ikkinchisiga karrali!
Мантиқий операторлар
Дастурлашда бир эмас балки бир нечта шартли ифодаларни текшириш зарурияти жуда кўп учрайди. Масалан, х ўзгарувчиси y ўзгарувчисидан, y эса ўз навбатида z ўзгарувчисидан каттами шарти бунга мисол бўла олади. Бизнинг дастуримиз мос амални бажаришдан олдин бу иккала шарт рост ёки ёлғонлигини текшириши лозим.
Қуйидаги мантиқ асосида юқори даражада ташкил қилинган сигнализация системасини тасаввур қилинг. Агарда эшикда сигнализация ўрнатилган бўлса ВА кун вақти кеч соат олти ВА бугун байрам ЁКИ дам олиш куни БЎЛМАСА полиция чақирилсин. Барча шартларни текшириш учун С++ тилининг учта мантиқий оператори ишлатилади. Улар 4.2 – жадвалда келтирилган
4.2 – жадвал. Мантиқий операторлар
Оператор
|
Белги
|
Мисол
|
ВА
|
&&
|
1ифода && 2ифода
|
ЁКИ
|
||
|
1ифода||2ифода
|
ИНКОР
|
!
|
!ифода
|
Мантиқий кўпайтириш оператори
Мантиқий кўпайтириш оператори иккита ифодани ҳисоблайди, агар иккала ифода true қиймат қайтарса ВА оператори ҳам true қиймат қайтарди. Агарда сизнинг қорнингиз очлиги рост бўлса ВА сизда пул борлиги ҳам рост бўлса сиз супермаркетга боришингиз ва у ердан ўзингизга тушлик қилиш учун бирор бир нарса харид қилишингиз мумкин. Ёки яна бир мисол, масалан,
if(x==5)&&(y==5)
мантиқий ифодаси агарда х ва у ўзгарувчиларини иккаласининг ҳам қийматлари 5 га тенг бўлсагина true қиймат қайтаради. Бу ифода агарда ўзгарувчилардан бирортаси 5 га тенг бўлмаган қиймат қабул қилса false қийматини қайтаради. Мантиқий кўпайтириш оператори фақатгина ўзининг иккала ифодаси ҳам рост бўлсагина true қиймат қайтаради.
Мантиқий кўпайтириш оператори && белги орқали белгиланади.
Do'stlaringiz bilan baham: |