عملگرهای منطقی

عملگرهای منطقی بر روی عبارات منطقی عمل می‌کنند و نتیجه آنها نیز یک مقدار بولی است. از این عملگرها اغلب برای شرطهای پیچیده استفاده می‌شود. همانطور که قبلاً یاد گرفتید مقادیر بولی می‌توانند false یا frue باشند. فرض کنید که var2 و var3 دو مقدار بولی هستند.

عملگر توضیح مثال
and اگر هر دو عملوند true باشند، مقدار true را بر می گرداند. var1 = var2 and var3
&& اگر هر دو عملوند true باشند، مقدار true را بر می گرداند. var1 = var2 && var3
or اگر یکی یا هر دو مقدار دو طرف عملگر true باشد،مقدار true را بر می گرداند. var1 = var2 or var3
|| اگر یکی یا هر دو مقدار دو طرف عملگر true باشد،مقدار true را بر می گرداند. var1 = var2 || var3
not اگر مقدار یک عبارت true باشد آنرا false و اگر false باشد آنرا true می کند. var1 = not (var1)
! اگر مقدار یک عبارت true باشد آنرا false و اگر false باشد آنرا true می کند. var1 = !(var1)

عملگر منطقی and یا &&

اگر مقادیر دو طرف عملگر True ،and باشند عملگر and مقدار True را بر می‌گرداند. در غیر اینصورت اگر یکی از مقادیر یا هر دوی آنها False باشند مقدار False را بر می‌گرداند. در زیر جدول درستی عملگر and نشان داده شده است:

X Y X and Y
True True True
True False False
False True False
False False False

برای درک بهتر تأثیر عملگر and یاد آوری می‌کنم که این عملگر فقط در صورتی مقدار True را نشان می‌دهد که هر دو عملوند مقدارشان True باشد. در غیر اینصورت نتیجه تمام ترکیبهای بعدی False خواهد شد. استفاده از عملگر and مانند استفاده از عملگرهای مقایسه‌ای است. به عنوان مثال نتیجه عبارت زیر درست (True) است اگر سن (age) بزرگ‌تر از 18 و salary کوچک‌تر از 1000 باشد.

result = (age > 18) and (salary < 1000)

عملگر and زمانی کارآمد است که ما با محدود خاصی از اعداد سرو کار داریم. مثلاً عبارت 10 <= x <= 100 بدین معنی است که x می‌تواند مقداری شامل اعداد 10 تا 100 را بگیرد. حال برای انتخاب اعداد خارج از این محدوده می‌توان از عملگر منطقی and به صورت زیر استفاده کرد.

inRange = (number <= 10) and  (number >= 100)

عملگر منطقی or یا ||

اگر یکی یا هر دو مقدار دو طرف عملگر or، درست (True) باشد، عملگر or مقدار True را بر می‌گرداند. جدول درستی عملگر or در زیر نشان داده شده است:

X Y X or Y
True True True
True False True
False True True
False False False

در جدول بالا مشاهده می‌کنید که عملگر or در صورتی مقدار False را بر می‌گرداند که مقادیر دو طرف آن False باشند. کد زیر را در نظر بگیرید. نتیجه این کد در صورتی درست (True) است که رتبه نهایی دانش آموز (finalGrade) بزرگ‌تر از 75 یا یا نمره نهایی امتحان آن 100 باشد.

 isPassed = (finalGrade >= 75) or (finalExam == 100)

عملگر منطقی not یا !

برخلاف دو اپراتور or و and عملگر منطقی NOT یک عملگر یگانی است و فقط به یک عملوند نیاز دارد. این عملگر یک مقدار یا اصطلاح بولی را نفی می‌کند. مثلاً اگر عبارت یا مقدار True باشد آنرا False و اگر False باشد آنرا True می‌کند. جدول زیر عملکرد اپراتور NOT را نشان می‌دهد:

X not X
True False
False True

نتیجه کد زیر در صورتی درست است که age (سن) بزرگ‌تر یا مساوی 18 نباشد.

isMinor = not(age >= 18)