231
Bu yerda {} qavslardagi ifodalar bloki faqat i 10 dan kichkina va l 20 dan
katta yoki teng bo`lgandagina ijro qilinadi.
5.9-jadval. AND (&&).
ifoda1
ifoda2
ifoda1 && ifoda2
false (0)
false (0)
false (0)
true (1)
false (0)
false (0)
false (0)
true (1)
false (0)
true (1)
true (1)
true (1)
Boshqa misol:
while (g<10 || f<4){...}
Bizda ikki o`zgaruvchi bor (g va f).
Birinchisi
10 dan kichkina yoki
ikkinchisi 4 dan kichkina bo`lganda while ning tanasi takrorlanaveradi. Ya`ni shart
bajarilishi uchun eng kamida bitta true bo`lishi kerak, AND da (&&)
esa hamma
oddiy shartlar true bo`lishi kerak.
5.10- jadval. OR (||).
ifoda1
ifoda2
ifoda1 || ifoda2
false (0)
false (0)
false (0)
true (1)
false (0)
true (1)
false (0)
true (1)
true (1)
true (1)
true (1)
true (1)
[&&] va [||] operatorlari ikkita argument olishadi. Bulardan farqli o`laroq, [!]
(mantiqiy inkor) operatori bitta argumet oladi, va bu argumentidan oldin qo`yiladi.
Inkor operatori ifodaning mantiqiy qiymatini teskarisiga o`zgartiradi. Ya`ni false ni
true deb beradi, true ni esa false deydi. Masalan,
if ( !(counter == finish) )
cout << student_bahosi << endl;
Agar counter o`zgaruvchimiz finish ga teng bo`lsa, true bo`ladi,
bu true
qiymat esa [!] yordamida false ga aylanadi. false qiymatni olgan if esa ifodasini
bajarmaydi. Demak ifoda bajarilishi uchun bizga counter finish ga teng bo`lmagan
holati kerak. Bu yerda [!] ga tegishli ifoda () qavslar ichida bo`lishi kerak. Chunki
232
mantiqiy operatorlar tenglilik operatorlaridan kuchliroqdir. Ko`p hollarda [!]
operatori o`rniga mos keladigan mantiqiy tenglilik yoki
solishtirish operatorlarini
ishlatsa bo`ladi, masalan, yuqoridagi misol quyidagi ko`rinishda bo`ladi:
if (counter != finish)
cout << student_bahosi << endl;
5.11-
10>