4.6. Mantiqiy operatorlar Key Point. Mantiqiy operatorlar (!, && va | | )dan qo`shma mantiqiy ifodalar hosil qilishda foydalanish mumkin. Ba’zida dasturlash davomida hisoblashlarni amalga oshirish uchun bir nechta shartlar kombinatsiyasini qo`llashga to`g`ri keladi. Ushbu kombinatsiyalarni qo`llash uchun mantiqiy operatorlardan foydalanish mumkin. Mantiqiy operatorlar shuningdek, Boolean operatorlar deb ham tanilgan. U Boolean qiyatlar ustida operatsiya bajarib, yangi Boolean qiymat hosil qiladi. 4.3-jadvalda mantiqiy operatorlar ro`yxati keltirilgan. 4.4-jadvalda yo`q (!) operatori tasvirlangan. Yo`q (!) operatori true ni false ga, false ni esa true ga o`zgartirib ta’minlaydi. 4.5-jadvalda va (&&) operatori tavsiflangan. Bunda har ikkala mantiqiy operandlar bir vaqtda true qiymatga ega bo`lsagina true qiymat qabul qiladi. 4.6-jadvalda yoki (||) operatori tasvirlangan. Bu operator ikki operandning ixtiyoriy bittasi true qiymatga ega bo`lsa true qiymat qabul qiladi.
4.3-jadval. Mantiqiy operatorlar
(number % 2 == 0 && number % 3 == 0) ko`rsatma satrida (10-satr) number ning 2 ga va 3 ga qoldiqsiz bo`linishi sharti tekshirilgan. 13-satr ((number % 2 == 0 || number % 3 == 0))da esa number ning 2 yoki 3 ga qoldiqsiz bo`linishi tekshirilgan.
2-ma’ruza bo`yicha mustaqil topshiriqlar Quyidagi tushunchalarga qisqacha izohlar yozing:
shart
tanlash
mantiqiy ifoda
taqqoslash
tarmoqlangan dastur
Test savollariga javob bering
“kichik yoki teng” taqqoslash operatori “___” deb yoziladi.
<
<=
=<
<<
!=
“tenglik” taqqoslash operatori “___” deb yoziladi.
< >
!=
= =
^=
true – __________.
C++ ning kalit so`zi
Mantiqiy qiymat
1 bilan bir xil qiymatga ega
0 bilan bir xil qiymatga ega
A, B, C javoblar
1+1+1+1+1 == 5 qanday qiymatni oladi?
true
1.0 + 1.0 + 1.0 + 1.0 + 1.0 == 5.0 ifoda true qiymat olishiga kafolat yo`q
Quyidagi kodlarning qaysi biri agar radius musbat bo`lsa doira yuzasini chiqarish uchun ishlaydi?
if (radius != 0) cout << radius * radius * 3.14159;
if (radius <= 0) cout << radius * radius * 3.14159;
Faraz qilaylik engYaxshi – o`zgaruvchi. Uning rost qiymat (true) qiymat qabul qilishini tekshirish qaysi ko`rsatma satrida to`g`ri keltirilgan?
if (engYaxshi = true)
if (engYaxshi == true)
if (engYaxshi)
if (!engYaxshi = false)
if (!engYaxshi == false)
Quyidagi kod qanday natija chiqaradi?
int x = 0;
if (x < 4)
{
x = x + 1;
}
cout << "x = " << x << endl;
x = 0
x = 1
x = 2
x = 3
x = 4
Quyidagi kodni tahlil qiling:
bool juft = false;
if (even)
{
cout << "Juft son";
}
Kod Juft son so`zini chiqaradi.
Kod hech narsa chiqarmaydi.
Kodda xatolik bor. Unda if (even) ni if (even == true) bilan almashtirish kerak.
Kodda xatolik bor. Unda if (even) ni if (even = true) bilan almashtirish kerak.
Quyidagi kodni tahlil qiling:
bool even = false;
if (even = true)
{
cout << "Juft son";
}
Dastur kompilyatsion xatolik beradi.
Dasturning bajarilishida xatolik yuzaga keladi.
Dastur ishlaydi, lekin hech narsa ko`rsatmaydi.
Dastur ishlaydi va Juft son degan yozuvni ekranga chiqaradi.
Quyidagi kodni tahlil qiling:
1-kod:
int number = 45;
bool even;
if (number % 2 == 0)
even = true;
else
even = false;
2-kod:
int number = 45;
bool even = (number % 2 == 0);
1-kod kompilyatsion xatolik beradi.
2-kod kompilyatsion xatolik beradi.
1- va 2-kodlarning har ikkalasi ham kompilyatsion xatolik beradi.
1- va 2-kodlarning har ikkalasi ham to`g`ri, ammo 2-kod yaxshiroq.
Quyidagi dastur kodining bajarilishi natijasida ekranga nima chiqaradi?
int tezlik = 70;
if (tezlik = 100)
cout << "Yuqori tezlik!" << endl;
else
cout << "Yuqori tezlik emas!" << endl;
Yuqori tezlik!
Yuqori tezlik emas!
Quyidagi dastur kodi ekranga nima chiqaradi?
int son = 8;
if (son < 8)
cout << 1 << endl;
else
cout << 2 << endl;
1
2
hech narsa
1 2
2 1
Quyidagi mantiqiy ifodalaning qaysi biri to`g`ri va har doim rost qiymat chiqaradi?
(true) && (4 => 3)
!(x > 0) && (x > 0)
(x > 0) || (x ≤ 0)
(x != 0) || (x = 0)
(-10 < x < 0)
x=4 bo`lsa, quyidagilarning qaysi biri to`g`ri?
!(x == 4)
x != 4
x == 5
x != 5
x=5 bo`lsa, quyidagilarning qaysi biri to`g`ri?
!(x == 5)
x < 5
x == 5
x != 5
Quyidagilarning qaysi biri x != y bilan ekvivalent?
! (x == y)
x > y && x < y
x > y || x < y
x >= y || x <= y
A va C javoblar
B va D javoblar
|x - 2| <= 4 ifodasi berilgan. Quyidagilardan qaysi biri to`g`ri?
x - 2 <= 4 && x - 2 >= 4
x - 2 <= 4 && x - 2 > -4
x - 2 <= 4 && x - 2 >= -4
x - 2 <= 4 || x - 2 >= -4
Quyidagi matematik ifodani hisoblovchi dastur tuzing: