عملگرهای منطقی
عملگرهای منطقی بر روی عبارات منطقی عمل میکنند و نتیجه آنها نیز یک مقدار بولی است. از این عملگرها اغلب برای شرطهای پیچیده استفاده میشود. همانطور که قبلاً یاد گرفتید، مقادیر بولی میتوانند false یا true باشند. فرض کنید که var2 و var3 دو مقدار بولی هستند:
عملگر | نام | دسته | مثال |
&& | منطقی AND | Binary | var1 = var2 && var3; |
|| | منطقی OR | Binary | var1 = var2 || var3; |
! | منطقی NOT | Unary | var1 = !var1; |
عملگر منطقی AND(&&)
اگر مقادیر دو طرف عملگر AND ،true باشند عملگر AND مقدار true را بر میگرداند. در غیر اینصورت اگر یکی از مقادیر یا هر دوی آنها false باشند مقدار false را بر میگرداند. در زیر جدول درستی عملگر AND نشان داده شده است :
X | Y | X && 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) && (salary < 1000);
عملگر AND زمانی کارامد است که ما با محدود خاصی از اعداد سرو کار داریم. مثلاً عبارت 10 <= x <= 100 بدین معنی است که x میتواند مقداری شامل اعداد 10 تا 100 را بگیرد. حال برای انتخاب اعداد خارج از این محدوده میتوان از عملگر منطقی AND به صورت زیر استفاده کرد.
inRange = (number >= 10) && (number <= 100);
عملگر منطقی OR(||)
اگر یکی یا هر دو مقدار دو طرف عملگر OR ، درست (true) باشد، عملگر OR مقدار true را بر میگرداند. جدول درستی عملگر OR در زیر نشان داده شده است :
X | Y | X || Y |
true | true | true |
true | false | true |
false | true | true |
false | false | false |
در جدول بالا مشاهده میکنید که عملگر OR در صورتی مقدار false را بر میگرداند که مقادیر دو طرف آن false باشند. کد زیر را در نظر بگیرید. نتیجه این کد در صورتی درست (true) است که رتبه نهایی دانش آموز (finalGrade) بزرگتر از 75 یا یا نمره نهایی امتحان آن 100 باشد.
isPassed = (finalGrade >= 75) || (finalExam == 100);
عملگر منطقی NOT(!)
برخلاف دو اپراتور OR و AND عملگر منطقی NOT یک عملگر یگانی است و فقط به یک عملوند نیاز دارد. این عملگر یک مقدار یا اصطلاح بولی را نفی میکند. مثلاً اگر عبارت یا مقدار true باشد آنرا false و اگر false باشد آنرا true میکند. جدول زیر عملکرد اپراتور NOT را نشان میدهد :
X | !X |
true | false |
false | true |
نتیجه کد زیر در صورتی درست است که age (سن) بزرگتر یا مساوی 18 نباشد.
isMinor = !(age >= 18);
در مثالی که عددی کوچکتر از ۱۰ یا بزرگتر از ۱۰۰ مد نظر هست، شما باید از عملگر منطقی «یا» استفاده میکردید. استفاده از عمگر «و» امکانپذیر نمیباشد چرا که امکان ندارد عدی هم از ۱۰ کوچکاتر باشد و هم از ۱۰۰ بزرگتر.
بله، درست می فرمایید، ممنون بابت نکته سنجی تون، اصلاح شد
توی این حالت عملگر ما نباید به || تبدیل بشه؟ چون شما نقیض p q رو میخواید که میشه نقیض p نقیض q
این فقط یه مثاله، شما هر طوری دوست دارین می تونید عمل کنید
سلام
درسته
بنده تو متن گفتم x بین 10 و 100 ه یعنی از 10 بزرگتر و از 100 کوچیکتر (البته 10 و 100 هم هستن)
الان باید بگیم از 10 کوچیکتر و از 100 بزرگتر که میشه
فکر کنم باید این خط رو به این شکل ویرایش کنید . در متن هم ذکر کردید خارج محدوده ولی متغیر رو برای داخل محدوده نامگذاری کردید