(ii) Mantiqiy ifoda
It may contain just one signed or unsigned variable or a constant, or it may have two or more variables orland constants, or two or more expressions connected by valid relational and 1 or logical operators. For example,
U oddiy bir ishorali yoki ishorasiz o‘zgaruvchi yoki o‘zgarmasdan iborat bo‘lishi, yoki u ikki yoki ko‘p o‘zgaruvchilar yoki/va o‘zgarmaslarga, yoki to‘g’ri taqqoslash va/yoki mantiqiy operatorlar bilan bog’langan ikki yoki ko‘p ifodalarga ega bo‘lishi mumkin. Masalan,
int a,b,c;
Endi to‘g’ri mantiqiy ifoda quyidagicha bo‘ladi:
a < b, (a-c) > = b, -c
(iii) Aralash Ifoda
U haqiqiy va butun ifodalar kombinatsiyasidan iborat bo‘ladi. Masalan,
int a=13, b=5, c;
float x = 4.0, y;
c = a*x;
y = b/x;37
Yuqoridagi ifoda bajarilish natijasida aralash o‘zgaruvchilardan foydalanilganligi uchun c ning qiymati 52 ga va y ning qiymati 1.25 ga teng bo‘ladi.
C++ tilida ifodani tasvirlash qoidalari:
1. Ishorali yoki ishorasiz o‘zgarmas yoki o‘zgaruvchi ifodadir
2. C++ to‘g’ri operatori yoki o‘zgarmas bilan bog’langan ifoda ifodadir.
3. Ikki yoki ko‘p ifodalar operator yoki operatorlar bilan bog’langanda boshqa ifodani tashkil etadi.
4. Ikki yoki ko‘p operatorlar ketma-ket kelmaydi.
Ifodalar operatorlaning asosiy ustunlik darajalariga ko‘ra chapdan o‘ngga qarab hisoblanadi.Shunga qaramay operatorlaning ustunlik darajalarini qavslardan foydalangan holda o‘zgartirish mumkin. Shunday qilib, ifodada qavs ichida qatnashgan tarkibiy ifodalar birinchi navbatda bajariladi. Shuni qayd qilish lozimki, xuddi shu ustunlik darajasiga ega bo‘lgan *, /, % kabi operatorlar chapdan o‘ngga qarab, ammo -, ++ kabi unar operatorlar o‘ngdan chapga qarab bajariladi.
Ifodalarni Hisoblash
C++ operatorlari ustunlik darajalariga ko‘ra ierarxik shaklda guruhlanadi. Yuqori ustunlik darajasiga ega bo‘lgan amallar boshqa quyi ustunlik darajasiga ega bo‘lgan amallarga nisbatan oldin bajariladi. Hisoblanishning tabiiy tartibi qavslar yordamida o‘zgartiriladi.
Boshqa muhim e’tiboga molik jihat shuki, amallar ketma-ketligi tartibida shu ustunlik darajasiga ega bo‘lganlarini alohida hisoblash mumkin. Bu holat assotsiativlik deyiladi.
C++ da ifoda avvalo ikkita operand va operatordan tashkil topgunga qadar tarkibiy-qismiy ifodalarga bo‘linadi. Hisoblash qoidalari qismiy ifodaga (zarur holda) tadbiq etiladi. Qismiy ifoda natijasi asosida keyingi yuqoriroq darajadagi ifoda hisoblanadi va uning turi hosil qilinadi. Bu jarayon oxirgi natija hosil bo‘lgunga qadar davom etadi. Masalan, quyidagi arifmetik ifodani qaraylik:
int i = 12, j =20, k= 7, result;
result = 6* ((i%5) * (9 + (j-3) / (k + 1)));
Bu ifoda quyidagicha bajariladi:
result = 6 * ((12%5) * (9 + (20 - 3) / (7 + 1)))
= 6 * (2 * (9 + (17/8)))
= 6 * (2 * (9 + 2))
= 6 * (2 * 11)
= 6*22
= 132
Bu odatda uzun arifmetik ifodani quyidagidek bir nechta mayda bo‘laklarga bo‘lish yaxshiroq: 38
int a = i%5;
int b = 9 + ( j - 3 ) / ( k + 1 ) ;
int result = 6*(a * b);
Bu ekvivalent ifoda katta ehtimol bilan asl uzun ifodaga ko‘ra to‘g’riroq yozilgan.
Do'stlaringiz bilan baham: |