دستورات شرطی (selector) ها در کاتلین

kotlin_selectors_cover

توضیحات

دستورات شرطی یکی از مفاهیم پایه ای و مهم زبان های برنامه نویسی است، تمام زبان های برنامه نویسی و اسکریپتی از ساختار شرطی برخوردار هستند. در کاتلین از کلیدواژه های if و when برای ایجاد دستورات شرطی استفاده میکنیم. در این مقاله به دستورات شرطی و عملگر های منطقی، کلیدواژه های in و is برای ایجاد مقادیر boolean می پردازیم.

متغیر های بولین (boolean) در کاتلین

متغیر boolean در کاتلین دارای دو مقدار true یا false است و به صورت زیر تعریف میشه:

var v0 = true var v1 = false

دستور if–else

با دستور if else در کاتلین به بررسی true یا false بودن یک عبارت می پردازیم if یعنی اگر.

فرم کلی:

if(condition == true){ ... }else { ... }

در عبارت بالا اگر شرط داخل پرانتز برابر با true بود کد های داخل بدنه ی if رو اجرا میکنه

کلید واژه ی else به معنی در غیر این صورت، یعنی در غیر اینصورت کد های داخل بدنه ی else رو اجرا کن

برای کوتاهی میتونیم شرط داخل پرانتز رو به صورت زیر بنویسیم

if(condition){ ... }else{ ... }

هچنین میتونیم چند شرط رو بررسی کنیم:

if(condition0){ ... }else if(condition1){ ... }else if(condition2){ ... }else if(condition3){ ... }else{ ... }

مثال:

val input = Scanner(System.in) println("Enter Weight in kg: ") val weight = input.nextDouble() println("Enter height in meter: ") val height = input.nextDouble() val bmi = weight / (height * height) if(bmi < 18.5){ println("Underweight") }else if(bmi < 25 ){ println("Normal") }else if(bmi < 35){ println("Overweight") }else { println("Obese") }

میتونیم داخل هر if یا else یک if دیگه بیان کنیم که به if های تو در تو یا nested if معروفن:

if(condition0){ if(condition1){ ... } }else{ if(condition2){ ... } }

میتونیم if-else در کاتلین به صورت یک عبارت بیان کنیم تا مقداری رو برگردونه

مثال:

val input = Scanner(System.in) println("Enter first number: ") val v0 = input.nextInt() println("Enter second number: ") var v1 = input.nextInt() var max = if(v0 > v1) v0 else v1 println("Maximum is: $max")

عملگر های منطقی در کاتلین

عملگر های منطقی برای تغییر مقدار boolean است

۱- عملگر ! :

مقدار عبارت boolean رو معکوس میکنه مثلا اگ مقدار یک عبارت true باشه با این عملگر false میشه

val condition = true if(!condition){ ... }

۲- عملگر && :

معنی and (و) میده، فرض کنید چندتا شرط داریم میخوایم بررسی کنیم اگه همه true بودن عبارت داخل بدنه ی if اجرا بشه به صورت زیر عمل میکنیم:

if(condition0 && condition1 && ... && conditionN) { ... }

۳- عملگر || :

معنی or (یا) میده، فرض کنید چندتا شرط داریم میخوایم بررسی کنیم اگه یکیشون true بود کد های داخل {} مربوط به if اجرا بشه به صورت زیر عمل میکنیم:

if(condition0 || condition1 || ... || conditionN){ ... }

۴- عملگر xor:

معنی or اختصاصی میده فرض کنید دو عبارت شرطی داریم میخوایم بررسی کنیم فقط یکیش درست باشه و هردو نباید درست باشه :

if(condition0 xor condition1){ ... }

توجه:

عملگر xor در کاتلین یک تابع است.

مثال:

val input = Scanner(System.in); println("Enter a number: "); val num = input.nextInt(); if (num % 2 == 0 && num % 3 == 0) println("Number is divisible by 2 and 3"); if (num % 2 == 0 || num % 3 == 0) println("Number is divisible by 2 or 3"); if (num % 2 == 0 ^ num % 3 == 0) println("Number is divisible by 2 or 3 but not both");

کلیدواژه ی in

با استفاده از کلیدواژه ی in در کاتلین میتونیم بررسی کنیم یک متغیر عددی در چه محدوده ای قرار داره

به عنوان مثال میخوایم بدونیم مقدار v در محدوده ی 0 تا 10 وجود داره یا خیر

val v = 6 val isNumberInRange = v in 0..10 println("$v is between 0 to 10? $isNumberInRange")

نکته:

اگه بخوایم اخرین عدد تو محدوده نباشه از تابع until استفاده میکنیم.

val isNumberInRange = v in 0 until 10

کلیدواژه ی is

با استفاده از کلیدواژه ی is در کاتلین میتونیم بررسی کنیم یک متغیر از نوع کدوم کلاس است.

مثال:

val v = "Hello Condition!" val isString = v is String val isChar = v is Char println("Is v String? $isString") println("Is v Char? $isChar")

کلید واژه ی when

با استفاده از when در کاتلین میتونیم چند موردو به عنوان شرط بررسی کنیم

مثال:

val input = Scanner(System.in) println("Enter a day in week (between 1 and 7): ") val day = input.nextInt() when(day){ 1 -> println("Saturday") 2 -> println("Sunday") 3 -> println("Monday") 4 -> println("Tuesday") 5 -> println("Wednesday") 6 -> println("Thursday") 7 -> println("Friday") else -> println("Out of days not defined") }

با استفاده از when بررسی میکنیم مقدار day به کدوم عدد میخوره.

برنامه عبارت مربوط به اون عدد رو اجرا میکنه.

اگه عدد وارد شده به هیچ کدوم از اعداد نخوره عبارت مربوط به else اجرا میشه

میتونیم دوتا مقدارو به صورت or داخل when بررسی کنیم:

val v = 0 when(v){ 0 , 1 -> println("Is a binary number") else -> println("Not a binary number") }

مثال بالا اگه مقدار v برابر با 0 یا 1 باشه عبارت مربوط به 0,1 اجرا میشه در غیر اینصورت عبارت مربوط به else اجرا میشه

میتونیم متغیر رو هنگام استفاده از when مقداردهی کنیم

val input = Scanner(System.in) when(val v = input.nextInt()){ 0 -> println("value is $v and equals to false") 1 -> println("value is $v and equals to true") else -> println("value is $v and not announced in binary") }

میتونیم از when به عنوان جایگزین if-else استفاده کنیم

val input = Scanner(System.in) println("Enter weight in kg") val weight = input.nextDouble() println("Enter height in meter") val height = input.nextDouble() val bmi = weight / (height * height) when{ bmi < 18.5 -> println("Underweight") bmi < 25 -> println("Normal") bmi < 35 -> println("Overweight") else -> println("obese") }

مثال

استفاده از in در when

val v = Scanner(System.in).nextInt() when(v){ in 0 until 10 -> println("Number has one digit") in 10 until 100 -> println("Number has two digits") in 100 until 1000 -> println("Number has three digits") else -> println("Number has more than three digits, or it's negative") }

در مثال بالا یک عدد کاربر وارد میکنه و برنامه بررسی میکنه که این عدد چند رقمیه اگه عدد بیشتر از سه رقم باشه یا منفی عبارت مربوط به else اجرا میشه

مثال:

استفاده از is در when

val v = "This is an is example" when(v){ is String -> println("it's string type") is Int -> println("v is type of Integer and its value is $v") }

خلاصه

در این مقاله دو عبارت شرطی if-else و when رو بررسی کردیم و به تولید مقادیر boolean با روش های مختلف پرداختیم اینکه چطور و کجا ازشون استفاده کنید بستگی به خودتون و نیازتون داره

موفق باشید

arrow_drop_up
کپی شد!