30
cout<<‖Dastur tugadi!‖;
return 0; }
6.2. C+tilida ifodalar.
Berilganlarni qayta ishlash uchun C++ tilida amallarning
juda keng majmuasi aniqlangan. Amal – bu qandaydir harakat bo‘lib, u bitta (unar) yoki
ikkita (binar) operandlar ustida bajariladi, hisob natijasi
uning qaytaruvchi qiymati
hisoblanadi.
Tayanch arifmetik amallarga qo‘shish (+), ayirish (–), ko‘paytirish (*), bo‘lish (/) va
bo‘lishning qoldig‘ini olish (%) amallarini keltirish mumkin. Qo‘shish, ayirish,
ko‘paytirish, bo‘lish amallarini butun va haqiqiy turdagi sonli berilganlar bilan ishlatish
mumkin. Bo‘lishning qoldig‘ini olish amalini esa faqat butun turdagi sonli berilganlar
bilan ishlatiladi. Shuningdek, bo‘lish amalini butun sonli
berilganlar ustida amalga
oshirilsa, natija sifatida bo‘lishning butun qismi qaytariladi.
a. -5
b. 8 - 7
c. 3 + 4
d. 2 + y * 5
e. 5.6 + 6.2 * 3
f. x + 2 *5 + 6 / y
Namunalarda ―x‖ va ―y‖ noma‘lum sonlar. Arifmetik ifoda arifmetik operatorlar
(amallar) va sonlardan tuziladi. Ifodada qatnashgan sonlar (noma‘lum sonlar ham) operand
deb ataladi. ―a‖ namunada ―–‖ amali 5 sonining manfiyligini aniqlash uchun
ishlatilmoqda. Bu ifodada bitta operand mavjud. Faqatgina bitta operandi bor bo‘lgan
arifmetik operator (amal) unar operator deb ataladi. ―b‖ namunada ―–‖ amali sakkiz
sonidan etti sonini ayirish uchun ishlatilmoqda. Bu arifmetik ifodada ―–‖ amalining ikkita
operandi bor – 8 va 7. Ikkita operandi mavjud operatorlar binar operatorlar deyiladi.
#include
using namespace std;
int main()
{cout << "2 + 5 = " << 2 + 5 << endl;
cout << "13 + 89 = " << 13 + 89 << endl;
cout << "34 - 20 = " << 34 - 20 << endl;
cout << "45 - 90 = " << 45 - 90 << endl;
cout << "2 * 7 = " << 2 * 7 << endl;
cout << "5 / 2 = " << 5 / 2 << endl;
cout << "14 / 7 = " << 14 / 7 << endl;
cout << "34 % 5 = " << 34 % 5 << endl;
cout << "4 % 6 = " << 4 % 6 << endl;
cout << "5.0 + 3.5 = " << 5.0 + 3.5 << endl;
cout << "3.0 + 9.4 = " << 3.0 + 9.4 << endl;
cout << "16.3 - 5.2 = " << 16.3 - 5.2 << endl;
cout << "4.2 * 2.5 = " << 4.2 * 2.5 << endl;
cout << "5.0 / 2.0 = " << 5.0 / 2.0 << endl;
cout << "34.5 / 6.0 = " << 34.5 / 6.0 << endl;
cout << "34.5 / 6.5 = " << 34.5 / 6.5 << endl;
return 0; }
Natija:
31
2 + 5 = 7
13 + 89 = 102
34 - 20 = 14
45 - 90 = -45
2 * 7 = 14
5 / 2 = 2
14 / 7 = 2
34 % 5 = 4
4 % 6 = 4
5.0 + 3.5 = 8.5
3.0 + 9.4 = 12.4
16.3 - 5.2 = 11.1
4.2 * 2.5 = 10.5
5.0 / 2.0 = 2.5
34.5 / 6.0 = 5.75
34.5 / 6.5 = 5.30769
5/2 arifmetik ifodada ikkala operand ham butun son bo‘lgani uchun bo‘lish
amali
bo‘lish natijasining butun qismini olish uchun ishlamoqda. Agar natija sifatida haqiqiy
sonni qaytarish kerak bo‘lsa, operandlarning kamida bittasi haqiqiy son turida bo‘lishi
kerak, 5.0/2.0, 5./2, 5/2. ko‘rinishlarida ishlatish mumkin. Agar sonning kasr qismi
bo‘lmasa, lekin uni haqiqiy son sifatida ishlatish kerak bo‘lsa, 5.0 yoki 5. Ko‘rinishida
yozish mumkin. Shu sababli ham natija ikki chiqqan. 34%5 ifodasida esa, 34 sonini 5
soniga bo‘lganda 6 butun son va 4 qoldiq son chiqadi, % amali qoldiq qismini qaytarishini
inobatga olgan holda natija sifatida 4 soni ekranga chiqarilgan. Bo‘lishning qoldig‘ini
olish amalini manfiy sonlar bilan ishlatayotganda juda ehtiyotkor bo‘lish kerak.
Arifmetik ifodada bir nechta operatorlar (amallar)
qatnashganda kompilyator
amallar ketma-ketligini ularning ustunligiga qarab bajaradi. Avval ko‘paytirish, bo‘lish,
bo‘lishning qoldig‘ini olish amallariYU so‘ngra qo‘shish va ayirish amallari bajariladi.
Masalan: 3 * 7 - 6 + 2 * 5 / 4 + 6 ifodasi uchun amallarning bajarilish ketma-ketligini
quyidagicha tushunish mumkin:
3 * 7 - 6 + 2 * 5 / 4 + 6
= (((3 * 7) – 6) + ((2 * 5) / 4 )) + 6 (* bajariladi)
= ((21 – 6) + (10 / 4)) + 6 (/ bajariladi. Operandlar
butun sonligini hisobga
olingan holda)
= ((21 – 6) + 2) + 6
(– bajariladi)
= (15 + 2) + 6
(birinchi + bajariladi)
= 17 + 6
(+ bajariladi)
= 23
Agar ifodadagi barcha operandlar butun sonlardan tashkil topgan bo‘lsa, bu ifoda
butun sonli ifoda deyiladi. Agar ifoda operandlari haqiqiy sonlardan tashkil topgan bo‘lsa,
haqiqiy sonli yoki suzuvchi nuqtali sonli ifoda deyiladi.
2 + 3 * 5
3 + a - b / 7
a + 2 * (b - c) + 18
12.8 * 17.5 - 34.50
x * 10.5 + y - 16.2
32
Agar
ifodada ham butun turdagi, ham haqiqiy turdagi sonlar yoki o‘zgaruvchilar
qatnashsa bunday ifoda aralash ifoda deyiladi.
2 + 3.5
6 / 4 + 3.9 – a / b
5.4 * 2 - 13.6 + 18 / 2
Aralash ifodada har bir operatorlar (amallar) alohida qism ifoda sifatida qarab
hisoblanadi. Agar qism ifoda operandlari bir xil turda bo‘lsa, natija ham Shu turda bo‘ladi,
agar operandlari turlari farqli bo‘lsa, natija haqiqiy son ko‘rinishida bo‘ladi.
#include
using namespace std;
int main()
{cout << "3 / 2 + 5.5 = " << 3 / 2 + 5.5 << endl;
cout << "15.6 / 2 + 5 = " << 15.6 / 2 + 5 << endl;
cout << "4 + 5 / 2.0 = " << 4 + 5 / 2.0 << endl;
cout << "4 * 3 + 7 / 5 - 25.5 = " << 4 * 3 + 7 / 5 - 25.5<< endl;
return 0;}
Natija:
3 / 2 + 5.5 = 6.5
15.6 / 2 + 5 = 12.8
4 + 5 / 2.0 = 6.5
4 * 3 + 7 / 5 - 25.5 = -12.5
Aralash ifodada ifodaning natijasi kompilyator tomonidan hisoblanadi. Butun sonli
qiymatlar kasr qismi nolga teng bo‘lgan haqiqiy songa aylantiriladi. Bu jarayon bir turni
boshqa turga keltirish deyiladi. C++ tilida bir turni boshqa turga keltirishning oshkor va
oshkormas yo‘llari mavjud.
Umuman olganda, turni boshqa turga oshkormas keltirish ifodada har xil turdagi
o‘zgaruvchilar qatnashgan hollarda amal qiladi (aralash turlar arifmetikasi). Ayrim
hollarda, xususan tayanch turlar bilan bog‘liq turga keltirish amallarida xatoliklar yuzaga
kelishi mumkin. Masalan, hisoblash natijasidagi sonning xotiradan vaqtincha egallagan
joyi uzunligi, uni o‘zlashtiradigan o‘zgaruvchi uchun ajratilgan joy uzunligidan katta
bo‘lsa, qiymatga ega razryadlarni yo‘qotish holati yuz beradi.
Oshkor ravishda turga keltirishda, o‘zgaruvchi oldiga qavs ichida boshqa tur nomi
yoziladi:
#include
using namespace std;
int main()
{int Integer_1=54;
int Integer_2;
float Floating=15.854;
Integer_1=(int)Floating;
// oshkor keltirish
Integer_2=Floating;
// oshkormas keltirish
cout << ―Yangi Integer(Oshkor): ‖<cout << ―Yangi Integer(Oshkormas):‖ <return 0; }
Dastur natijasi quyidagi ko‘rinishida bo‘ladi:
Yangi Integer(Oshkor): 15