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

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

عملگر مثال تأثیر
and z = (x > 2) and (y < 10) مقدار Z در صورتی true است که هر دو شرط دو طرف عملگر مقدارشان true باشد. اگر فقط مقدار یکی از شروط false باشد مقدار false ،z خواهد شد.
or z = (x > 2) or (y < 10) مقدار Z در صورتی true است که یکی از دو شرط دو طرف عملگر مقدارشان true باشد. اگر هر دو شرط مقدارشان false باشد مقدار false ،z خواهد شد.
not z = not(x > 2) مقدار Z در صورتی true است که مقدار شرط false باشد و در صورتی false است که مقدار شرط true باشد.

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

if  (x == 1) and ((y > 3) or z < 10)
   #do something here

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

 1: print "Enter your age: "
 2: age = gets.to_i
 3: 
 4: print "Enter your gender male/female: "
 5: gender = gets
 6: 
 7: if age > 12 and age < 20
 8:   if gender == "male"
 9:     puts "You are a teenage boy."
10:   else
11:     puts "You are a teenage girl."
12:   end
13: else
14:     puts "You are not a teenager."
15: end
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 را نشان می‌دهد (خط 7). وقتی به دستور if می‌رسید (خط 7) برنامه سن شما را چک می‌کند. اگر سن شما بزرگتر از 12 و کوچکتر از 20 باشد (سنتان بین 12 و 20 باشد) یعنی مقدار هر دو true باشد سپس کدهای داخل بلوک if اجرا می‌شوند. اگر نتیجه یکی از شروط false باشد کدهای داخل بلوک else اجرا می‌شود. عملگر and عملوند سمت چپ را مورد بررسی قرار می‌دهد. اگر مقدار آن false باشد دیگر عملوند سمت راست را بررسی نمی‌کند و مقدار false را بر می‌گرداند. بر عکس عملگر or عملوند سمت چپ را مورد بررسی قرار می‌دهد و اگر مقدار آن true باشد سپس عملوند سمت راست را نادیده می‌گیرد و مقدار true را بر می‌گرداند.

if x == 2 and y == 3
   #Some code here

if x == 2 or y == 3
   #Some code here

بین عملگرهای منطقی و بیتی دو تفاوت وجود دارد. عملگر منطقی همیشه 1 (برای درست) یا 0 (برای غلط) را برمی گرداند. علاوه بر این، یک عملگر منطقی از منطق “اتصال کوتاه” برای محاسبه استفاده می کند، به این معنی که اگر نتیجه، پس از بررسی شرط اول مشخص شود، شرط دوم نادیده گرفته می شود. به عنوان مثال، هنگام استفاده از عملگر منطقی AND، می دانیم که هر دو شرط باید صحیح باشند تا نتیجه true باشد. اگر اولین عملوند false باشد، نتیجه false خواهد شد و در نتیجه شرط دوم مورد بررسی قرار نمی گیرد. اگر شرطها را در برنامه ترکیب کنید استفاده از عملگرهای منطقی and و or به جای عملگرهای بیتی and و or بهتر خواهد بود. یکی دیگر از عملگرهای منطقی عملگر not است که نتیجه یک عبارت را خنثی یا منفی می‌کند. به مثال زیر توجه کنید:

if not(x == 2)
   puts "x is not equal to 2."

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