XOR: این عملگر نیز دو عبارت را مورد مقایسه قرار می دهد و نتیجه زمانی True است که یکی از عبارات False و دیگری True باشد. به عبارتی دیگر زمانی نتیجه True است که دو عبارت مخالف هم باشند.
مثال :
("a" > 5 ^ 3) XOR ("a" < 100)
در این مثال نتیجه عبارت اول False و نتیجه عبارت دوم True است. پس با توجه به تعریف عملگر XOR نتیجه این عبارت True خواهد بود.
مثال:
("B" < "b") XOR ("C" < "c")
به این فوق خوب توجه کنید. نتیجه هر دو عبارت True است اما از آنجایی که از عملگر XOR استفاده شده است نتیجه کلی False است. اگر به جای XOR از عملگرهایی مانند AND و یا OR استفاده میکردیم نتیجه True می شد.
EQV: نتیجه این عملگر زمانی True خواهد بود که هر دو عبارت دارای مقادیری یکسان باشند. به عبارتی یا هر دو True و یا هردو False باشند.
مثال:
("a" = "A") EQV ("a" < 97)
این مثال هم نیاز به توجه زیادی دارد. اگر دقت کنید نتیجه هر دو عبارت False است اما از آنجایی که از عملگر EQV استفاده کرده ایم نتیجه کلی True خواهد بود.
IMP: نتیجه این عملگر زمانی False میباشد که نتیجه عبارت دوم False باشد. در غیر اینصورت نتیجه True خواهد بود.
مثال:
("a" > 5 * 5 + 25) IMP ("B" < 10)
این مثال هم کاملاً واضح میباشد. در عملگر IMP نتیجه عبارت دوم اهمیت دارد و از آنجایی که نتیجه آن در این مثال False است. نتیجه هم False خواهد بود.
نکته: هر یک از عملگرها بر روی دو عبارت عمل می کنند و اگر قصد مقایسه بیش از دو عبارت را داشته باشید آنها را مانند مثال زیر دو به دو جدا می کنیم.
(عبارت سوم) AND ((عبارت دوم) AND (عبارت اول))
حال قصد دارم با یک مثال پیچیده تر اما واضح نحوه استفاده چندین عملگر مختلف را برای شما عزیزان شرح دهم.
مثال :
("a" > "A") AND ("C" = 13 ^ 2)) OR (NOT (("A + B" > "a") XOR (3 ^ 2 = 2 ^ 3))))
خوب این مثال شاید کمی پیچیده به نظر بیاد اما مطمئن هستم که شما عزیزان با کمی دقت به جواب درستی رسیدید و اگر قسمتی رو دچار اشتباه شدید بعد از توضیحات هر بخش مطمئناً به سادگی می تونید مسائلی از این قبیل رو به سادگی حل کنید.
حل مثال:
نتیجه عبارت اول ("a" > "A")، True می باشد و نتیجه عبارت دوم ("C" = 13 ^ 2)، False چون مطمئناً عدد 169 (13 ^ 2) خیلی بزرگتر از کد اسکی حرف C (67) می باشد. پس نتیجه اولین مقایسه (پرانتز قرمز) که توسط عملگر AND صورت گرفته است False است.
(("a" > "A") AND ("C" = 13 ^ 2)) = False
حاصل عبارت سوم ("A + B" > "a")، True خواهد بود چون 169 (مجموع کد اسکی A و B) بزرگتر از 97 (کد اسکی a) می باشد. حاصل عبارت چهارم (3 ^ 2 = 2 ^ 3)) نیز False است چون 9 (3 ^ 2) بزرگتر از 8 (2 ^ 3) است. از آنجایی که این دو عبارت توسط عملگر XOR مورد مقایسه قرار گرفته اند نتیجه کلی آن (پرانتز سبز) True خواهد بود.
(("A + B" > "a") XOR (3 ^ 2 = 2 ^ 3)) = True
اما این نکته را فراموش نکنید که عملگر NOT نیز روی این عبارت تأثیر می گذارد و نتیجه آن را از True به False تغییر می دهد.
NOT (("A + B" > "a") XOR (3 ^ 2 = 2 ^ 3)) = False
پس ما در نهایت با دو عبارت رو به رو هستیم که توسط عملگر OR مورد مقایسه قرار گرفته اند و از آنجایی که نتیجه هردوی آنها False است پس نتیجه کل عبارت نیز False خواهد بود.
(("a" > "A") AND ("C" = 13 ^ 2)) = False
NOT (("A + B" > "a") XOR (3 ^ 2 = 2 ^ 3)) = False
("a" > "A") AND ("C" = 13 ^ 2)) OR (NOT (("A + B" > "a") XOR (3 ^ 2 = 2 ^ 3))) = False)