استفاده از عملگرهای منطقی

عملگرهای منطقی به شما اجازه می‌دهند که چندین شرط را با هم ترکیب کنید. این عملگرها حداقل دو شرط را در گیر می‌کنند و در آخر یک مقدار بولی را بر می‌گردانند. در جدول زیر برخی از عملگرهای منطقی آمده است :

عملگر تلفظ مثال تأثیر
&& And z = (x > 2) && (y < 10) مقدار Z در صورتی true است که هر دو شرط دو طرف عملگر مقدارشان true باشد. اگر فقط مقدار یکی از شروط false باشد مقدار false ،z خواهد شد.
|| Or z = (x > 2) || (y < 10) مقدار Z در صورتی true است که یکی از دو شرط دو طرف عملگر مقدارشان true باشد. اگر هر دو شرط مقدارشان false باشد مقدار false ،z خواهد شد.
! Not z = !(x > 2) مقدار Z در صورتی true است که مقدار شرط false باشد و در صورتی false است که مقدار شرط true باشد.

به عنوان مثال جمله z = (x > 2) && (y < 10) را به این صورت بخوانید: “در صورتی مقدار z برابر true است که مقدار x بزرگ‌تر از 2 و مقدار y کوچک‌تر از 10 باشد در غیر اینصورت false است”. این جمله بدین معناست که برای اینکه مقدار کل دستور true باشد باید مقدار همه شروط true باشد. عملگر منطقی OR (||) تأثیر متفاوتی نسبت به عملگر منطقی AND (&&) دارد. نتیجه عملگر منطقی OR برابر true است اگر فقط مقدار یکی از شروط true باشد. و اگر مقدار هیچ یک از شروط true نباشد نتیجه false خواهد شد. می‌توان عملگرهای منطقی AND و OR را با هم ترکیب کرده و در یک عبارت به کار برد مانند :

if ( (x == 1) && ( (y > 3) || z < 10) ) )
{
    //do something here
}

در اینجا استفاده از پرانتز مهم است چون از آن در گروه بندی شرطها استفاده می‌کنیم. در اینجا ابتدا عبارت (y > 3) || (z < 10) مورد بررسی قرار می‌گیرد (به علت تقدم عملگرها). سپس نتیجه آن بوسیله عملگر AND با نتیجه (x == 1) مقایسه می‌شود. حال بیایید نحوه استفاده از عملگرهای منطقی در برنامه را مورد بررسی قرار دهیم :

   1: using System;
   2: 
   3: public class Program
   4: {
   5:     public static void Main()
   6:     {
   7:         int age;
   8:         string gender;
   9: 
  10:         Console.Write("Enter your age: ");
  11:         age = Convert.ToInt32(Console.ReadLine());
  12: 
  13:         Console.Write("Enter your gender (male/female): ");
  14:         gender = Console.ReadLine();
  15: 
  16:         if (age > 12 && age < 20)
  17:         {
  18:             if (gender == "male")
  19:             {
  20:                 Console.WriteLine("You are a teenage boy.");
  21:             }
  22:             else
  23:             {
  24:                 Console.WriteLine("You are a teenage girl.");
  25:             }
  26:         }
  27:         else
  28:         {
  29:             Console.WriteLine("You are not a teenager.");
  30:         }
  31:     }
  32: }
Enter your age: 18
Enter your gender (male/female): female
You are a teenage girl.
Enter you age: 10
Enter your gender (male/female): male
You are not a teenager.

برنامه بالا نحوه استفاده از عملگر منطقی AND را نشان می‌دهد (خط 16). وقتی به دستور if می‌رسید (خط 16) برنامه سن شما را چک می‌کند. اگر سن شما بزرگتر از 12 و کوچکتر از 20 باشد (سنتان بین 12 و 20 باشد) یعنی مقدار هر دو true باشد سپس کدهای داخل بلوک if اجرا می‌شوند. اگر نتیجه یکی از شروط false باشد کدهای داخل بلوک else اجرا می‌شود. عملگر AND عملوند سمت چپ را مرود بررسی قرار می‌دهد. اگر مقدار آن false باشد دیگر عملوند سمت راست را بررسی نمی‌کند و مقدار false را بر می‌گرداند. بر عکس عملگر || عملوند سمت چپ را مورد بررسی قرار می‌دهد و اگر مقدار آن true باشد سپس عملوند سمت راست را نادیده می‌گیرد و مقدار true را بر می‌گرداند.

if (x == 2 & y == 3)
{
   //Some code here
}

if (x == 2 | y == 3)
{
   //Some code here
}}

نکته مهم اینجاست که شما می‌توانید از عملگرهای & و | به عنوان عملگر بیتی استفاده کنید. تفاوت جزئی این عملگرها وقتی که به عنوان عملگر بیتی به کار می‌روند این است که دو عملوند را بدون در نظر گرفتن مقدار عملوند سمت چپ مورد بررسی قرار می‌دهند. به عنوان مثال حتی اگر مقدار عملوند سمت چپ false باشد عملوند سمت چپ به وسیله عملگر بیتی AND (&) ارزیابی می‌شود. اگر شرطها را در برنامه ترکیب کنید استفاده از عملگرهای منطقی AND (&&) و OR (||) به جای عملگرهای بیتی AND(&) و OR (|) بهتر خواهد بود. یکی دیگر از عملگرهای منطقی عملگر NOT (!) است که نتیجه یک عبارت را خنثی یا منفی می‌کند. به مثال زیر توجه کنید:

if (!(x == 2))
{
   Console.WriteLine("x is not equal to 2.");
}

اگر نتیجه عبارت x == 2 برابر false باشد عملگر ! آن را True می‌کند.