استفاده از عملگرهای منطقی
عملگرهای منطقی به شما اجازه میدهند که چندین شرط را با هم ترکیب کنید. این عملگرها حداقل دو شرط را درگیر میکنند و در آخر یک مقدار بولی را بر میگردانند. در جدول زیر برخی از عملگرهای منطقی آمده است :
عملگر | تلفظ | مثال | تأثیر | |
&& | and | z = (x > 2) && (y < 10) | مقدار Z در صورتی true است که هر دو شرط دو طرف عملگر مقدارشان true باشد. اگر فقط مقدار یکی از شروط false باشد مقدار false ،z خواهد شد. | |
|| | or | z = (x > 2) || (y < 10) | مقدار Z در صورتی true است که یکی از دو شرط دو طرف عملگر مقدارشان true باشد. اگر هر دو شرط مقدارشان false باشد مقدار false ،z خواهد شد. | |
! | Nnot | z = !(x > 2) | مقدار Z در صورتی true است که مقدار شرط false باشد و در صورتی false است که مقدار شرط true باشد. |
به عنوان مثال جمله z = (x > 2) && (y < 10) را به این صورت بخوانید: “در صورتی مقدار z برابر true است که مقدار x بزرگتر از 2 و مقدار y کوچکتر از 10 باشد در غیر اینصورت false است”. این جمله بدین معناست که برای اینکه مقدار کل دستور true باشد باید مقدار همه شروط true باشد.
عملگر منطقی || تأثیر متفاوتی نسبت به عملگر منطقی && دارد. نتیجه عملگر منطقی || برابر true است اگر فقط مقدار یکی از شروط true باشد. و اگر مقدار هیچ یک از شروط true نباشد نتیجه false خواهد شد. میتوان عملگرهای منطقی && و || را با هم ترکیب کرده و در یک عبارت به کار برد مانند :
if ( (x == 1) && ( (y > 3) || z < 10) ) { //do something here }
در اینجا استفاده از پرانتز مهم است چون از آن در گروه بندی شرطها استفاده میکنیم. در اینجا ابتدا عبارت (y > 3) || (z < 10) مورد بررسی قرار میگیرد. (به علت تقدم عملگرها) سپس نتیجه آن بوسیله عملگر && با نتیجه (x == 1) مقایسه میشود. حال بیایید نحوه استفاده از عملگرهای منطقی در برنامه را مورد بررسی قرار دهیم :
1: fun main(args: Array<String>) 2: { 3: print("Enter your age: ") 4: val age = readLine() !!.toInt() 5: 6: print("Enter your gender (male/female):") 7: val gender = readLine() 8: 9: if (age > 12 && age < 20) 10: { 11: if (gender == "male") 12: { 13: println("You are a teenage boy.") 14: } 15: else 16: { 17: println("You are not a teenage girl.") 18: } 19: } 20: else 21: { 22: println("You are not a teenager.") 23: } 24: }
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.
برنامه بالا نحوه استفاده از عملگر منطقی && را نشان میدهد (خط 9). وقتی به دستور if میرسید (خط 9) برنامه سن شما را چک میکند. اگر سن شما بزرگتر از 12 و کوچکتر از 20 باشد (سنتان بین 12 و 20 باشد) یعنی مقدار هر دو true باشد سپس کدهای داخل بلوک if اجرا میشوند. اگر نتیجه یکی از شروط false باشد کدهای داخل بلوک else اجرا میشود.
عملگر && عملوند سمت چپ را مورد بررسی قرار میدهد. اگر مقدار آن false باشد دیگر عملوند سمت راست را بررسی نمیکند و مقدار false را بر میگرداند. بر عکس عملگر || عملوند سمت چپ را مورد بررسی قرار میدهد و اگر مقدار آن true باشد سپس عملوند سمت راست را نادیده میگیرد و مقدار true را بر میگرداند.
if ((x == 2) and (y == 3)) { //Some code here } if ((x == 2) or (y == 3)) { //Some code here }
شما میتوانید از عملگرهای and و or بیتی هم در شرط ها استفاده کنید. این عملگرها دو عملوند را بدون در نظر گرفتن مقدار عملوند سمت چپ مورد بررسی قرار میدهند. به عنوان مثال حتی اگر مقدار عملوند سمت چپ false باشد عملوند سمت چپ به وسیله عملگر بیتی & ارزیابی میشود.
اگر شرطها را در برنامه ترکیب کنید استفاده از عملگرهای منطقی && و || به جای عملگرهای بیتی and و or بهتر خواهد بود:
if ((age > 12) and (age < 20))
یکی دیگر از عملگرهای منطقی عملگر ! است که نتیجه یک عبارت را خنثی یا منفی میکند. به مثال زیر توجه کنید:
if (x != 2) { println("x is not equal to 2.") }
اگر نتیجه عبارت x == 2 برابر false باشد عملگر ! آن را true میکند. می توان خط 9 کد بالا را به صورت زیر هم نوشت:
if(age in 12 .. 20)