دستورات شرطی (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")
}
                    

خلاصه

  • متغیر های boolean دارای دو مقدار true یا false هستند.
  • با استفاده از if-else در کاتلین میتونیم به بررسی true یا false بودن یک عبارت بپردازیم.
  • از عملگر های منطقی برای تغییر مقدار boolean استفاده میشه.
  • با استفاده از کلیدواژه ی in در کاتلین بررسی میکنیم متغیر عددی در چه محدوده ای از اعداد قرار داره.
  • با استفاده از کلیدواژه ی is در کاتلین بررسی میکنیم متغیر از نوع کدوم کلاس است.
  • با استفاده از when در کاتلین میتونیم چند مورد رو به عنوان شرط بررسی کنیم.
arrow_drop_up
کپی شد!