C++ dasturlash tilida ifodalar va operatorlar
![C++ dasturlash tilida ifodalar va operatorlar
R e j a
KIRISH.
I. C++ TILIDA IFODALAR VA OPERATORLAR
1.1. Ifodalar
1.2. Bloklar va kompleks ifodalar
1.3. Amallar, Operatorlar
1.4. O'zlashtirish operatori. Matematik operatorlar
1.5. Butun songa bo'lish va qoldiqni olish operatorlari
1.6. Inkrement va dekrement
1.7. Prefiks va postfiks
1.8. Operatorlar prioriteti. Ichki qavslar
1.9. Munosabat operatorlari. if operatori
1.10. Mantiqiy operatorlar. Mantiqiy ko'paytirish operatori
II. AMALIY MASALA
2.1. Masalaning quyilishi va tahlili
2.2. Algoritm blok - sxemasi
2.3. Algoritm dasturiiy kodi va natijalar
Xulosa
Foydalanilgan adabiyotlar](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_1.png)
![KIRISH
Hozirgi kunda respublikamizdagi texnika oliy o`quv yurtlarida
“Telekommunikatsiya” va “Informatika va axborot texnologiyalari” yo`nalishi va
mutaxassisliklariga turli xil dasturlash tillarini o`rgatish mo`ljallangan. Bizga
ma`lumki, dasturlash tillarining yuzdan ortiq ko`rinishlari mavjud, lekin
qo`llanilishi ko`lamiga qarab C/C++ va C# dasturlash tillari yuqori dasturlash
sinfiga mansubdir.
Mutaxassislarning fikriga ko`ra C++ dasturlash tili Assembler dasturlash
tiliga eng yaqin bo`lib, tezlik jihatidan 10 % ortda qolar ekan.
Keyingi yillarda amaliy dasturchilarga juda ko`p integratsion dastur tuzish
muhitlari taklif etilmoqda. Bu muhitlar u yoki bu imkoniyatlari bilan bir–biridan
farq qiladi. Aksariyat dasturlashtirish muhitlarining fundamental asosi C / C ++ tiliga
borib taqaladi.
Ushbu kurs ishi hozirgi kunda komp’yuterda berilgan masalalarni
dasturlash tillari orqali echih va dasturda ifodalar va operatorlar o`zgaruvchi,
funksiya, va protsedura tushunchalaridan foydalanish kabi vazifalarni o`rg anishga
olib keladi .](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_2.png)
![Ifodalar
Dastur biror bir aniqlangan ketma - ketlikda bajariluvchi komandalar
to'plamidan iborat. .
C++ tilida ifodalar biror bir hisoblash natijasini qaytaruvchi boshqa ifodalar
ketma-ketligini boshqaradi yoki hech nima qilmaydi (nol ifodalar).
C++ tilida barcha ifodalar nuqtali vergul bilan yakunlanadi. Ifodaga misol
qilib o'zlashtirish amalini olish mumkin.
x=a+b;
Algebradan farqli ravishda bu ifoda x a+v ga teng ekanligini anglatmaydi. Bu
ifodani quyidagicha tushinish kerak:
a va v o'zgaruvchilarni qiymatlarini yig'ib natijasini x o'zgaruvchiga beramiz
yoki x o'zgaruvchiga a+v qiymatni o'zlashtiramiz. Bu ifoda birdaniga ikkita amalni
bajaradi, yig'indini hisoblaydi va natijani o'zlashtiradi. Ifodadan so'ng nuqtali
vergul qo'yiladi. (=) operatori o'zidan chap tomondagi operandga o'ng tomondagi
operandlar ustida bajarilgan amallar natijasini o'zlashtiradi.
Bo'sh joy (probel) belgisi.
Bo'sh joy belgilariga nafaqat probel, balki yangi satrga o'tish va tabulyasiya
belgilari ham kiradi. Yuqorida keltirilgan ifodani quyidagicha ham yozish
mumkin:
x = a+ b ;
Bu variantda keltirilgan ifoda ko'rimsiz va tushunarsiz bo'lsa ham to'g'ridir.
Bo'sh joy belgilari dasturning o'qilishliligini ta'minlaydi.](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_3.png)
![Bloklar va kompleks ifodalar.
Ba'zan dastur tushunarli bo'lishi uchun o'zaro mantiqiy bog'langan ifodalarni
blok deb ataluvchi komplekslarga birlashtirish qulaydir. Blok ochiluvchi figurali
qavs ({) bilan boshlanadi va yopiluvchi figurali qavs (}) bilan tugaydi. Blok
ochilganda va yopilganda nuqtali vergul qo'yilmaydi.
{
temp= a;
a = b;
b = temp;
}
Bu blok xuddi bir ifodadek bajariladi, u a va v o'zgaruvchilar qiymatlarini
almashtiradi.
Amallar.
Bajarilishi natijasida biror bir qiymat qaytaradigan barcha ifodalar C++ tilida
amallar deyiladi. Amallar albatta biror bir qiymat qaytaradi. Masalan, 3+2 amali 5
qiymatni qaytaradi.
Operatorlar.
Operator - bu qandaydir amalni bajarish tug'risida kompilyatorga uzatiladigan
literaldir. Operatorlar operandlarga ta'sir qiladi. C++ da operandlar deb alohida
literallar va butun ifodalar tushuniladi.
C++ tilida ikki ko'rinishdagi operatorlar bor:
o'zlashtirish operatorlari
matematik operatorlar
O'zlashtirish operatori .](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_4.png)
![O'zlashtirish operatori (=) o'zidan chap tomonda turgan operand qiymatini
tenglik belgisidan o'ng tomondagilarni hisoblangan qiymatiga almashtiradi.
Masalan,
x = a+b;
ifodasi x operandga a va v o'zgaruvchilarni qiymatlarini qo'shishdan hosil
bo'lgan natijani o'zlashtiradi.
O'zlashtirish operatoridan chapda joylashgan operand adresli operand yoki
l–kiymat (chap-chap so'zidan olingan) deyiladi. O'zlashtirish operatoridan o'ngda
joylashgan operand operasion operand yoki r–kiymat deyiladi.
O'zgarmaslar faqatgina r–kiymat bo'lishi mumkin va hech qachon adresli
operand bo'la olmaydi, chunki dasturning bajarilishi jarayonida o'zgarmas
qiymatini o'zgartirib bo'lmaydi.
35 = x // notugri!
l–kiymat esa r–kiymat bo'lishi mumkin.
Matematik operatorlar .
C++ tilida 5 ta asosiy matematik operatorlar ko'llaniladi: qo'shish (+), ayirish
(-), ko'paytirish (*), butun songa bo'lish (\) va modul bo'yicha bo'lish (%)(qoldiqni
olish).
Ishorasiz butun sonlarni ayirishda, agarda natija manfiy son bo'lsa g'ayrioddiy
natija beradi.
Ayirish natijasida butun sonni to'lib qolishiga misol
# include < iostream.h >
int main()
{
unsiegned int ayirma](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_5.png)
![unsisgned int kattaSon = 100;
unsigned int kichikSon = 50;
ayirma = kattaSon – kichikSon;
cout << “Ayirma“:<< ayirma<< “ ga teng\n”;
ayirma = kichikSon - kattaSon ;
cout << “Ayirma“:<< ayirma<< “ ga teng\n”;
endl;
return 0;
}
NATIJA:
Ayirma: 50 ga teng
Ayirma: 4294967246 ga teng](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_6.png)
![Butun songa bo'lish va qoldiqni olish operatorlari .
Butun songa bo'lish odatdagi bo'lishdan farq qiladi. Butun songa bo'lishdan
hosil bo'lgan bo'linmaning faqatgina butun qismi olinadi. Masalan, 21 sonini 4 ga
bo'lsak 5 soni va 1 qoldiq hosil bo'ladi. 5 butun songa bo'lishni qiymati, 1 esa
qoldiqni olish qiymati hisoblanadi.
Inkrement va dekrement.
Dasturlarda o'zgaruvchiga 1 ni qo'shish va ayirish amallari juda ko'p hollarda
uchraydi. C++ tilida qiymatni 1 ga oshirish inkrement, 1 ga kamaytirish esa
dekrement deyiladi. Bu amallar uchun maxsus operatorlar mavjuddir.
Inkrement operatori (++) o'zgaruvchi qiymatini 1 ga oshiradi, dekrement
operatori (--) esa o'zgaruvchi qiymatini 1 ga kamaytiradi. Masalan, s
o'zgaruvchisiga 1 qiymatni qo'shmoqchi bo'lsak quyidagi ifodani yozishimiz lozim.
C++ //s o'zgaruvchi kiymatini 1 ga oshirdik.
Bu ifodani quyidagicha yozishimiz mumkin edi.
s=s+1;
Bu ifoda o'z navbatida quyidagi ifodaga teng kuchli:
s+=1;](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_7.png)
![Prefiks va postfiks.
Inkrement operatori ham, dekrement operatori ham ikki variantda ishlaydi:
prefiksli va postfiksli. Perefiksli variantda ular o'zgaruvchidan oldin (++Age),
postfiksli variantda esa o'zgaruvchidan keyin (Age++) yoziladi.
Oddiy ifodalarda bu variantlarni qo'llanishida farq katta emas, lekin bir
o'zgaruvchiga boshqa o'zgaruvchining qiymatini o'zlashtirishda ularning
qo'llanilishi boshqacha xarakterga ega. Perefeksli operator qiymat
o'zlashtirilguncha, postfiksli operator esa qiymat o'zlashtirilgandan keyin
bajariladi. Buni quyidagi listingdan ko'rishimiz mumkin:
Prefiksli va postfiksli operatorlarni qo'llanishi.
# include < iostream. h >
int main()
{
int myAge = 39;
int yourAge = 39;
cout << “Men” << MyAge <<”yoshdaman \n”;
cout << “Siz” << yourAge <<“yoshdasiz \n”;
myAge++ ; // postfiksli inkrement
++yourAge; // prefeksli inkrement
cout << “Bir yil o`tdi …\ n”;
cout << “Men” << MyAge <<”yoshdaman \n”;
cout << “Siz” << yourAge <<“yoshdasiz \n”;
cout << “Yana bir yil o`tdi \n”;
cout <<” Men”<< myAge++ <<“yoshdaman \n”;
cout <<”Siz”<<++yourAge<<“yoshdasiz \n”;
cout << “Ma`lumotlarni qaytadan”
cout << “chiqaraylik \n”;
cout <<” Men”<< myAge<<“yoshdaman \n”;](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_8.png)
![cout <<”Siz”<<yourAge<<“yoshdasiz \n”;
return 0;
}
NATIJA:
Men 39 yoshdaman
Siz 39 yoshdasiz
Bir yil o`tdi …
Men 40 yoshdaman
Siz 40 yoshdasiz
Yana bir yil o`tdi …
Men 40 yoshdaman
Siz 41 yoshdasiz
Ma`lumotlarni qaytadan chiqaraylik
Men 41 yoshdaman
Siz 41 yoshdasiz
Operatorlar prioriteti.
Murakkab ifodalarda qaysi amal birinchi navbatda bajariladi, qo'shishmi yoki
ko'paytirishmi? Masalan:
x=5+3*8;
ifodada agarda birinchi qo'shish bajarilsa natija 64 ga, agarda ko'paytirish
birinchi bajarilsa natija 29 ga teng bo'ladi.
Har bir operator prioritet qiymatiga ega. Ko'paytirish qo'shishga nisbatan
yuqoriroq prioritetga ega. Shuning uchun bu ifoda qiymati 29 ga teng bo'ladi.
Agarda ikkita matematik ifodaning prioriteti teng bo'lsa, ular chapdan o'ngga
qarab ketma – ket bajariladi.](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_9.png)
![Demak
x=5+3+8*9+6*4
ifodada birinchi ko'paytirish amallari chapdan o'ngga qarab bajariladi 8*9=72
va 6*4=24. Keyin bu ifoda soddaroq ko'rinish hosil qiladi.
x=5+3+72+24
Endi qo'shishni ham xuddi shunday chapdan unga qarab bajaramiz:
5+3=8; 8+72= 80; 80+24=104;
Lekin, barcha operatorlar ham bu tartibga amal qilmaydi. Masalan,
o'zlashtirish operatori o'ngdan chapga qarab bajariladi.
Ichki qavslar
Murakkab ifodalarni tuzishda ichki qavslardan foydalaniladi. Masalan, sizga
sekundlarning umumiy soni keyin esa barcha qaralayotgan odamlar soni, undan
keyin esa ularning ko'paytmasini hisoblash kerak bo'lsin.
TotalPersonSeconds=((NumMinutesToThink+
NumMinutesToType)*60*(PeopleInTheOffice+ PeopleOnVocation ))
Bu ifoda quyidagicha bajariladi. Oldin NumMinutesToThink
o'zgaruvchisining qiymati NumMinutesToType o'zgaruvchisi qiymatiga qo'shiladi.
Keyin esa hosil qilingan yig'indi 60 ga ko'paytiriladi. Bundan keyin
PeopleInTheOffice o'zgaruvchi qiymati PeopleOnVocation qiymatiga qo'shiladi.
Keyin esa sekundlar soni kishilar soniga ko'paytiriladi.
Munosabat operatorlari
Bunday operatorlar ikkita qiymatni teng yoki teng emasligini aniqlash uchun
ishlatiladi. Taqqoslash ifodasi doimo true (rost) yoki false (yolg'on) qiymat
qaytaradi. Munosabat operatorlarining ko'llanilishiga oid misol 4.1. jadvalda
keltirilgan.
Munosabat operatorlari.
Nomi](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_10.png)
![Operator
Misol
Qaytaradigan qiymat
Tenglik
==
100==50
50==50
false
true
Teng emas
!=
100!=50
50!=50
true
false
Katta
>
100>50
50>50
true
false
Katta yoki teng
>=
100>=50
50>=50
true](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_11.png)
![true
Kichik
<
100<50
50<50
true
false
Kichik yoki teng
<=
100<=50
50<=50
false
true
I F operatori
Odatda dastur satrma–satr tartib bilan bajariladi. If operatori shartni
tekshirish (masalan, ikki o'zgaruvchi tengmi) va uning natijasiga bog'liq ravishda
dasturni bajarilish tartibini o'zgartirish imkonini beradi. If operatorining oddiy
shakli quyidagi ko'rinishdadir:
if (shart)
ifoda;
Qavs ichidagi shart ixtiyoriy ifoda bo'lishi mumkin. Agarda bu ifoda false
qiymatini qaytarsa undan keyingi ifoda yoki blok tushirib qoldiriladi. Agarda shart
true qiymat qaytarsa navbatdagi ifoda bajariladi. Quyidagi misolni qaraymiz:
If (kattaSon>kichikSon)
KattaSon=kichikSon;](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_12.png)
![Bu erda kattaSon va kichikSon o'zgaruvchilari taqqoslanayapti. Agarda
kattaSon o'zgaruvchisi qiymati katta bo'lsa, bu navbatdagi qatorda unga qiymat
sifatida kichikSon o'zgaruvchisining qiymati o'zlashtiriladi.
if operatorida figurali qavs ichiga olingan ifodalar blokini ham ishlatish
mumkin.
If (shart)
{
- ifoda
- ifoda
- ifoda
}
Quyida ifodalar blokining qo'llanilishiga oid misol keltirilgan
if(kattaSon>kichikSon)
{ kattaSon=kichikSon
cout<<”kattaSon:”<<kattaSon << “/n”;
cout<<”kichikSon:”<<kichikSon<< “/n”;
}
Bu holda kattaSon o'zgaruvchisiga nafaqat kichikSon o'zgaruvchisi
o'zlashtirilayapti, balki ekranga bu haqida axborot ham chiqarilayapti.
Munosabat operatorining qo'llanilishi orqali tarmoqlanishga misol
munosabat operatori
// bilan birgalikda if instruksiyasining
// ko'llanilishi namoyish etilgan
# include <iosrteam.h>
int main( )
{](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_13.png)
![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)
{](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_14.png)
![cout<<“Buxoro yutishini oldindan bilgan”
<<“ edim! Shuning uchun qayta so`radim\n”;
cout<< “Yashasin Buxoro!”;
if (BuxoroGol<PaxtakorGol)
{
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;
}
NATIJA:
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 kalit so'zi](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_15.png)
![Dasturlarda ko'p hollarda biror bir shartning bajarilishiga (ya'ni bu shart true
qiymat qaytarsa) bog'liq ravishda bir blok, uning bajarilmasligiga asosan esa
(ya'ni bu shart false qiymat qaytarsa) boshqa bir blokning bajarilishi talab qilinadi.
4.3. – listingda birinchi tekshirish (BuxoroGol>PaxtakorGol) true qiymat qaytarsa
ekranda bir xabar, false qiymatida esa boshqa bir xabar chiqariladi.
Bunday masalalarni yuqorida ko'rsatilgan usul, ya'ni qator shartlarni tekshirish
uchun bir nechta if operatorini qo'llash orqali hal qilish mumkin, lekin bu
tushunish uchun biroz murakkabroqdir. Dasturning soddaligini ta'minlash uchun
else kalitli so'zidan foydalanish mumkin.
If (shart)
Ifoda;
Else
Ifoda;
else kalitli so'zining ishlatilishi.
If va else kalit so'zlarini
// ishlatilishiga oid misol
# include <iostream.h>
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](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_16.png)
![cout << “\n Ikkinchisi katta son-ku!”;
return 0;
}
NATIJA:
Katta sonni kiriting: 10
Kichik sonni kiriting: 12
Ikkinchisi katta son - ku!
if operatori orqali murakkab konstruksiyalarni hosil qilish
If–else konstruksiyasida ifodalar blokida ixtiyoriy operatorlarni ishlatishda
hech qanday chegara yo'q. Shu jumladan, ifodalar bloki ichida yana if–else
operatorlarini ishlatish mumkin. Bu holda bir nechta if operatoridan iborat ichma
– ich konstruksiya hosil bo'ladi.
if (1–shart)
{
if (2–shart)
1–ifoda
else
{
if (3–shart)
2–ifoda
else
3–ifoda
} }
else
4–ifoda;
Ushbu bir nechta if operatoridan tashkil topgan konstruksiya quyidagi tartibda
ishlaydi: agarda 1–shart va 2–shart rost bo'lsa 1–ifoda bajariladi. Agarda 1–shart
rost va 2–shart yolg'on natija qaytarsa, u holda 3–shart tekshiriladi va agarda bu](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_17.png)
![shart rost bo'lsa 2–ifoda, yolg'on bo'lsa esa 3–ifoda bajariladi. Va eng oxiri, agarda
1–shart yolg'on bo'lsa 4–ifoda bajariladi. Bunday murakkab konstruksiyaga misol
keltirilgan.
if operatori ichki bo'lgan murakkab konstruksiya
If operatori ichki
// bo'lgan murakkab konstruksiyaga misol
# include < iostream.h>
{
// Ikkita son kiritamiz.Ularni BirinchiSon
//va IkkinchiSon o'zgaruvchilariga beramiz
//Agarda KattaSon kiymati KichikSon
// kiymatidan katta bo'lsa katta son
//kichigiga koldiksiz bo'linishini tekshira-
// miz. Agarda u koldiksiz bo'linsa ular
//teng yoki teng emasligini tekshiramiz.
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”;](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_18.png)
![}
else
cout<<“Ikkinchi son katta!\n”
return 0;
}
NATIJA
Ikkita son kiriting
Birinchisi: 9
Ikkinchisi: 3
Birinchi son ikkinchisiga karrali!](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_19.png)
![Mantiqiy operatorlar
Dasturlashda bir emas balki bir nechta shartli ifodalarni tekshirish zaruriyati
juda ko'p uchraydi. Masalan, x o'zgaruvchisi y o'zgaruvchisidan, y esa o'z
navbatida z o'zgaruvchisidan kattami sharti bunga misol bo'la oladi. Bizning
dasturimiz mos amalni bajarishdan oldin bu ikkala shart rost yoki yolg'onligini
tekshirishi lozim.
Quyidagi mantiq asosida yuqori darajada tashkil qilingan signalizasiya
sistemasini tasavvur qiling. Agarda eshikda signalizasiya o'rnatilgan bo'lsa VA kun
vaqti kech soat olti VA bugun bayram YoKI dam olish kuni BO'LMASA polisiya
chaqirilsin. Barcha shartlarni tekshirish uchun C++ tilining uchta mantiqiy
operatori ishlatiladi.
Mantiqiy operatorlar
Operator
Belgi
Misol
VA
&&
1ifoda && 2ifoda
YoKI
||
1ifoda||2ifoda
INKOR
!
!ifoda
Mantiqiy ko'paytirish operatori](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_20.png)
![Mantiqiy ko'paytirish operatori ikkita ifodani hisoblaydi, agar ikkala ifoda
true qiymat qaytarsa VA operatori ham true qiymat qaytardi. Agarda sizning
qorningiz ochligi rost bo'lsa VA sizda pul borligi ham rost bo'lsa siz supermarketga
borishingiz va u erdan o'zingizga tushlik qilish uchun biror bir narsa xarid
qilishingiz mumkin. Yoki yana bir misol, masalan,
if(x==5)&&(y==5)
mantiqiy ifodasi agarda x va u o'zgaruvchilarini ikkalasining ham qiymatlari
5 ga teng bo'lsagina true qiymat qaytaradi. Bu ifoda agarda o'zgaruvchilardan
birortasi 5 ga teng bo'lmagan qiymat qabul qilsa false qiymatini qaytaradi.
Mantiqiy ko'paytirish operatori faqatgina o'zining ikkala ifodasi ham rost
bo'lsagina true qiymat qaytaradi.
Mantiqiy ko'paytirish operatori && belgi orqali belgilanadi.
Mantiqiy qo'shish operatori
Mantiqiy qo'shish operatori ham ikkita ifoda orqali hisoblanadi. Agarda
ulardan birortasi rost bo'lsa mantiqiy qo'shish operatori true qiymat qaytaradi.
Agarda sizda pul yoki kredit kartochkasi bo'lsa, siz schyotni to'lay olasiz. Bu holda
ikkita shartning birdaniga bajarilishi: pulga ham va kredit kartochkasiga ham ega
bo'lishingiz shart emas. Sizga ulardan birini bajarilishi etarli. Bu operatorga oid
yana bir misolni qaraymiz. Masalan,
if(x==5)||(y==5)
ifodasi yoki x o'zgaruvchi qiymati, yoki u o'zgaruvchi qiymati, yoki ikkala
o'zgaruvchining qiymati ham 5 ga teng bo'lsa rost qiymat qaytaradi.
Mantiqiy inkor operatori
Mantiqiy inkor operatori tekshirilayotgan ifoda yolg'on bo'lsa true qiymat
qaytaradi. Agarda tekshirilayotgan ifoda rost bo'lsa inkor operatori false qiymat
qaytaradi. Masalan,
(if!(x==5))](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_21.png)
![ifodasining qiymati, agarda x o'zgaruvchisi 5 ga teng bo'lmasa true qiymat
qaytaradi. Bu ifodani boshqacha ham yozish mumkin:
if(x!=5)](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_22.png)
![Masalaning quyilishi va tahlili
2 ta matrisa berilgan. Ularni o'zaro ko'paytirib yangi matrisa hosil qilish. Bu
erda 1-matrisaning ustunlar soni 2-matrisaning satrlar soniga teng bo'lishi kerak.
Algoritm blok-sxemasi.
Algoritm dasturiiy kodi va natijalar boshlash
kiritish
tamom](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_23.png)
![# include <iostream.h>
# include <conio.h>
# include <stdlib.h>
# include <time.h>
void main ( )
{
{ srand ( time (0));
int a[3][3], b[3][3],c[3][3], i, j, k;
cout<<"\n";
cout<<"Hosil bo'lgan yangi matrisa elementlari";
cout<<"\n";
for (i=0; i<3; i++)
for (j=0; j<3; j++)
a[i][j] = rand ( );
for (i=0; i<3; i++)
for (j=0; j<3; j++)
b[i][j] = rand ( );
for (i=0; i<3; i++)
{ for (j=0; j<3; j++)
{ c[i][j] = 0;
cout<<"\n";
for (k=0; k<3; k++)
c[i][j] = c[i][j] + a[i][k]*b[k][j];
cout <<" c="<<c[i][j]<<"\t"; }
cout << endl; }
cout<<"\n";
cout<<"Davom etirish uchun ixtiyoriy klavishni bosing . . ."<<endl;
cout<<"\n";
system("pause");
}](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_24.png)
![}
Dastur ishga tusirib natija oladigan bo`lsak kompyuter ekranida quyidagini olamiz](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_25.png)
![XULOSA
Xulosa qilib aytganda, C++ dasturlash tili va unda o`zgarmaslar,
o`zgaruvchilar toifalari, hamda ifodalar va operatorlar bilan ishlash xaqida umumiy
ma’lumotlarga ega bo`ldim. Borland C++ Builder - Windows muhitida
ishlaydigan dastur tuzish uchun qulay bo`lgan vosita bo`lib, komp’yuterda dastur
yaratish ishlarini avtomatlashtiradi, xatoliklarni kamaytiradi va dastur tuzuvchi
mehnatini engillashtiradi. Borland C++ dastur zamonaviy vizual loyihalash
texnologiyasi asosida ob`ektga yo`naltirilgan dasturlash nazariyasini hisobga olgan
holda tuziladi.
Borland C++ Builder 6 sistemasi C++ tilining rivoji bo`lgan ob`ektga
yo`naltirilgan Object C / C # dasturlash tillarini ishlatadi. Borland C++ Builder
sistemasi dasturni loyihalash va yaratish vaqtini kamaytiradi, hamda Windows
muhitida ishlovchi dastur ilovalarini tuzish jarayonini osonlashiradi.
Men C++ dasturi strukturasi xaqida, belgilar bayoni, algoritm va dastur
tushunchasi, ma’lumotlarni kiritish va chikarish operatorlari xamda dasturda
ishlatiladigan toifalar, ifodalar va operatorlar hamda sinflar va funksiya bilan
ishlash xaqida bilim va kunikmalarga ega bo`ldim.](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_26.png)
![Foydalanilgan adabiyotlar.
1. Sh.А.Nаzirоv, R.V.Qobulоv «Оb’еktgа mo‘ljаllаngаn dаsturlаsh »
2. Xaldjigitov A.A., Madraximov Sh. F., Adambayev U.E., Eshboyev E.A.,
Informatika va programmalash. T.:O`zMU, 2005, -148.
3. Гради Буч. Объектно –ориентированной анализ и проектирование с
примерами приложений на С++. Невский диалект, 560 стр, 2001 г.
4. Грехем И. Объектно ориентированные методы. Принципы и практика.
Вильямс. 879 стр, 2004 г.
5. Иванова Г.С. Объектно ориентированное программирование. Учебник.
МГТУ им Баумана. 320 стр, 2003 г.
6. www.ziyonet.uz
7. www.tuit.uz
8. www.tuit.kf.uz
9. www.referat.uz
10. www.intuit.ru](/data/documents/2c10db32-ca6d-4f69-a190-4a65648f2016/page_27.png)
C++ dasturlash tilida ifodalar va operatorlar R e j a KIRISH. I. C++ TILIDA IFODALAR VA OPERATORLAR 1.1. Ifodalar 1.2. Bloklar va kompleks ifodalar 1.3. Amallar, Operatorlar 1.4. O'zlashtirish operatori. Matematik operatorlar 1.5. Butun songa bo'lish va qoldiqni olish operatorlari 1.6. Inkrement va dekrement 1.7. Prefiks va postfiks 1.8. Operatorlar prioriteti. Ichki qavslar 1.9. Munosabat operatorlari. if operatori 1.10. Mantiqiy operatorlar. Mantiqiy ko'paytirish operatori II. AMALIY MASALA 2.1. Masalaning quyilishi va tahlili 2.2. Algoritm blok - sxemasi 2.3. Algoritm dasturiiy kodi va natijalar Xulosa Foydalanilgan adabiyotlar
KIRISH Hozirgi kunda respublikamizdagi texnika oliy o`quv yurtlarida “Telekommunikatsiya” va “Informatika va axborot texnologiyalari” yo`nalishi va mutaxassisliklariga turli xil dasturlash tillarini o`rgatish mo`ljallangan. Bizga ma`lumki, dasturlash tillarining yuzdan ortiq ko`rinishlari mavjud, lekin qo`llanilishi ko`lamiga qarab C/C++ va C# dasturlash tillari yuqori dasturlash sinfiga mansubdir. Mutaxassislarning fikriga ko`ra C++ dasturlash tili Assembler dasturlash tiliga eng yaqin bo`lib, tezlik jihatidan 10 % ortda qolar ekan. Keyingi yillarda amaliy dasturchilarga juda ko`p integratsion dastur tuzish muhitlari taklif etilmoqda. Bu muhitlar u yoki bu imkoniyatlari bilan bir–biridan farq qiladi. Aksariyat dasturlashtirish muhitlarining fundamental asosi C / C ++ tiliga borib taqaladi. Ushbu kurs ishi hozirgi kunda komp’yuterda berilgan masalalarni dasturlash tillari orqali echih va dasturda ifodalar va operatorlar o`zgaruvchi, funksiya, va protsedura tushunchalaridan foydalanish kabi vazifalarni o`rg anishga olib keladi .
Ifodalar Dastur biror bir aniqlangan ketma - ketlikda bajariluvchi komandalar to'plamidan iborat. . C++ tilida ifodalar biror bir hisoblash natijasini qaytaruvchi boshqa ifodalar ketma-ketligini boshqaradi yoki hech nima qilmaydi (nol ifodalar). C++ tilida barcha ifodalar nuqtali vergul bilan yakunlanadi. Ifodaga misol qilib o'zlashtirish amalini olish mumkin. x=a+b; Algebradan farqli ravishda bu ifoda x a+v ga teng ekanligini anglatmaydi. Bu ifodani quyidagicha tushinish kerak: a va v o'zgaruvchilarni qiymatlarini yig'ib natijasini x o'zgaruvchiga beramiz yoki x o'zgaruvchiga a+v qiymatni o'zlashtiramiz. Bu ifoda birdaniga ikkita amalni bajaradi, yig'indini hisoblaydi va natijani o'zlashtiradi. Ifodadan so'ng nuqtali vergul qo'yiladi. (=) operatori o'zidan chap tomondagi operandga o'ng tomondagi operandlar ustida bajarilgan amallar natijasini o'zlashtiradi. Bo'sh joy (probel) belgisi. Bo'sh joy belgilariga nafaqat probel, balki yangi satrga o'tish va tabulyasiya belgilari ham kiradi. Yuqorida keltirilgan ifodani quyidagicha ham yozish mumkin: x = a+ b ; Bu variantda keltirilgan ifoda ko'rimsiz va tushunarsiz bo'lsa ham to'g'ridir. Bo'sh joy belgilari dasturning o'qilishliligini ta'minlaydi.
Bloklar va kompleks ifodalar. Ba'zan dastur tushunarli bo'lishi uchun o'zaro mantiqiy bog'langan ifodalarni blok deb ataluvchi komplekslarga birlashtirish qulaydir. Blok ochiluvchi figurali qavs ({) bilan boshlanadi va yopiluvchi figurali qavs (}) bilan tugaydi. Blok ochilganda va yopilganda nuqtali vergul qo'yilmaydi. { temp= a; a = b; b = temp; } Bu blok xuddi bir ifodadek bajariladi, u a va v o'zgaruvchilar qiymatlarini almashtiradi. Amallar. Bajarilishi natijasida biror bir qiymat qaytaradigan barcha ifodalar C++ tilida amallar deyiladi. Amallar albatta biror bir qiymat qaytaradi. Masalan, 3+2 amali 5 qiymatni qaytaradi. Operatorlar. Operator - bu qandaydir amalni bajarish tug'risida kompilyatorga uzatiladigan literaldir. Operatorlar operandlarga ta'sir qiladi. C++ da operandlar deb alohida literallar va butun ifodalar tushuniladi. C++ tilida ikki ko'rinishdagi operatorlar bor: o'zlashtirish operatorlari matematik operatorlar O'zlashtirish operatori .
O'zlashtirish operatori (=) o'zidan chap tomonda turgan operand qiymatini tenglik belgisidan o'ng tomondagilarni hisoblangan qiymatiga almashtiradi. Masalan, x = a+b; ifodasi x operandga a va v o'zgaruvchilarni qiymatlarini qo'shishdan hosil bo'lgan natijani o'zlashtiradi. O'zlashtirish operatoridan chapda joylashgan operand adresli operand yoki l–kiymat (chap-chap so'zidan olingan) deyiladi. O'zlashtirish operatoridan o'ngda joylashgan operand operasion operand yoki r–kiymat deyiladi. O'zgarmaslar faqatgina r–kiymat bo'lishi mumkin va hech qachon adresli operand bo'la olmaydi, chunki dasturning bajarilishi jarayonida o'zgarmas qiymatini o'zgartirib bo'lmaydi. 35 = x // notugri! l–kiymat esa r–kiymat bo'lishi mumkin. Matematik operatorlar . C++ tilida 5 ta asosiy matematik operatorlar ko'llaniladi: qo'shish (+), ayirish (-), ko'paytirish (*), butun songa bo'lish (\) va modul bo'yicha bo'lish (%)(qoldiqni olish). Ishorasiz butun sonlarni ayirishda, agarda natija manfiy son bo'lsa g'ayrioddiy natija beradi. Ayirish natijasida butun sonni to'lib qolishiga misol # include < iostream.h > int main() { unsiegned int ayirma