درس 4 - عبارت های کنترلی در کاتلین
دوره ی اموزش برنامه نویسی کاتلین

آموزش عبارت های کنترلی در زبان برنامه نویسی کاتلین

در درس قبلی درباره ی انواع داده ها در زبان برنامه نویسی کاتلین آموزش دادیم. در این درس به عبارت های کنترلی در زبان برنامه نویسی کاتلین خواهیم پرداخت.

 

If - Else در زبان کاتلین

از آنجایی که زبان کاتلین یک زبان functional هم محسوب میشود همانند دیگر زبان های functional عبارت if یک expression است و یک keyword یا کلمه ی کلیدی محسوب نمیشود.

عبارت if هر زمان که لازم باشد یک مقدار را برمیگرداند. همانند دیگر زبان های برنامه نویسی if-else یک بلاک از کدها ایجاد میکند که به ازای درست بودن یک شرط اجرا میشود و همچنین یک بلاک دیگر بعنوان غلط بودن شرط اجرا میشود.

در مثال زیر با استفاده از شرط ها دو مقدار را بررسی میکنیم و نتیجه را پرینت میکنیم.

fun main(args: Array<String>) {
   val a:Int = 5
   val b:Int = 2
   var max: Int
   
   if (a > b) {
      max = a
   } else {
      max = b
   }
   print("Maximum of a or b is " +max)
 
   // As expression 
   // val max = if (a > b) a else b
}

کدهای کاتلین بالا ، نتیجه ی زیر را در خروجی نمایش میدهد.در مثال بالا دو خط اضافه بعنوان توضیح هم اضافه شده است که نحوه ی کار کردن if را نشان میدهد.

Maximum of a or b is 5

 

کاربرد When در زبان کاتلین

اگر قبلا با زبان های برنامه نویسی دیگری کار کرده باشید مطمئنا با دستور switch در آنها آشنا شده اید. دستور switch حالت های مختلفی که ممکن است روی یک متغیر رخ بدهد را بررسی میکند. دستور when در زبان برنامه نویسی کاتلین نیز به همین شیوه عمل میکند و حالت های مختلف یک متغیر را بررسی میکند.

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

قطعه کد زیر مثالی است برای when در زبان کاتلین

fun main(args: Array<String>) {
   val x:Int = 5
   when (x) {
      1 -> print("x = = 1")
      2 -> print("x = = 2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

نتیجه ی کد بالا در خروجی به شکل زیر خواهد بود.

x is neither 1 nor 2

در مثال بالا زبان کاتلین حالت های مختلف برای x را بررسی میکند و برای هر کدام یک چیزی را چاپ میکند و د ر نهایت اگر هیچ یک از شرط ها برقرار نباشد else اجرا میشود.

زمانی که ممکن است متغیر مورد نظر در حالت های مختلف درست باشد باز هم زبان کاتلین انعطاف پذیری خود را به توسعه دهندگان نشان میدهد و در یک خط با استفاده از کاراکتر , این اجازه را میدهد تا چند شرط را یکجا بررسی کنید.

نمونه ی اصلاح شده ی کد بالا را در زیر مشاهده میکنید

Live Demo
fun main(args: Array<String>) {
   val x:Int = 5
   when (x) {
      1,2 -> print(" Value of X either 1,2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

اگر کدهای بالا را اجرا کنید خروجی زیر را بدست خواهید آورد.

x is neither 1 nor 2

 

حلقه ی For در زبان کاتلین

حلقه ها یا Loop ها در برنامه نویسی به توسعه دهندگان بسیار کمک میکنند تا یک بخش هر چیزی که باشد چندین بار درون حلقه تکرار شود و این انعطاف پذیری زیادی به برنامه نویسان میدهد.

همانند دیگر زبان های برنامه نویسی ، کاتلین نیز انواع حلقه ها را دارد ولی در هر صورت بهترین حلقه For است.

تعریف و استفاده از حلقه ی for در زبان کاتلین مشابه زبان جاوا است.در زیر مثال خوبی برای استفاده از حلقه ی for در زبان برنامه نویسی کاتلین مشاهده میکنید.

fun main(args: Array<String>) {
   val items = listOf(1, 2, 3, 4)
   for (i in items) println("values of the array"+i)
}

در مثال بالا ما یک لیست به نام items تعریف کرده ایم و از حلقه ی for استفاده کرده ایم تا آیتم های درون این لیست را به نمایش بگذاریم.پس خروجی کد بالا باید مشابه خروجی زیر باشد.

values of the array1
values of the array2
values of the array3
values of the array4

در زیر یک مثال دیگر از حلقه ی for را مشاهده میکنید.

fun main(args: Array<String>) {
   val items = listOf(1, 22, 83, 4)
   
   for ((index, value) in items.withIndex()) {
      println("the element at $index is $value")
   }
}

وقتی قطعه کد بالا را اجرا کنیم خروجی زیر را دریافت میکنیم.

the element at 0 is 1
the element at 1 is 22
the element at 2 is 83
the element at 3 is 4

 

حلقه های While و Do-While در زبان کاتلین

پیاده سازی و استفاده از حلقه های while  و do-while در زبان کاتلین مشابه استفاده در دیگر زبان های برنامه نویسی است.

تنها تفاوت بین حلقه ی while و do-while در این است که حلقه ی do-while ابتدا یک بار محتوای حلقه را اجرا میکند و شرط را در پایان حلقه بررسی میکند در حالیکه while درابتدا شرط را بررسی میکند و در صورت صحیح بودن وارد حلقه میشود.

به مثال زیر دقت کنید .

fun main(args: Array<String>) {
   var x:Int = 0
   println("Example of While Loop--")
   
   while(x< = 10) {
      println(x)
      x++
   } 
}

نمونه کد بالا خروجی زیر را خواهد داشت.

Example of While Loop--
0
1
2
3
4
5
6
7
8
9
10

همچنین کد زیر مثالی برای حلقه ی do-while در زبان برنامه نویسی کاتلین است.

fun main(args: Array<String>) {
   var x:Int = 0
   do {
      x = x + 10
      println("I am inside Do block---"+x)
   } while(x <= 50)
}

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

I am inside Do block---10
I am inside Do block---20
I am inside Do block---30
I am inside Do block---40
I am inside Do block---50
I am inside Do block---60

 

استفاده Return , Break , Continue در زبان کاتلین

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

در هر صورت در ادمه ی این درس آموزشی به تفاوت این کلمات و کاربرد آنها در کنترل بخش های مختلف مثل حلقه ها بررسی خواهیم کرد.

 

استفاده ی Return در زبان کاتلین

دستور Return برای برگرداندن مقدار خروجی یک تابع صدا زده شده در زبان برنامه نویسی کاتلین مورد استفاده قرار میگیرد.

در مثال زیر نحوه ی تعریف و استفاده از Return در توابع کاتلین را مشاهده میکنید.

fun main(args: Array<String>) {
   var x:Int = 10
   println("The value of X is--"+doubleMe(x))
}
fun doubleMe(x:Int):Int {
   return 2*x;
}

در تابع مثال بالا ما یک تابع را صدا میزنیم که درون آن یک عدد را ضرب در 2 میکنیم و نتیجه را با استفاده از return برمیگردانیم.این مقدار بازگشتی به تابعی برمیگردد که در تابع main صدا زدیم.

کد بالا نتیجه ی خروجی زیر را نمایش خواهد داد.

The value of X is--20

 

Continue & Break در زبان برنامه نویسی کاتلین

continue و Break مهم ترین بخش های حیاتی مسائل logical یا منطقی در کدنویسی هستند.

با استفاده از دستور Break از یک بخش کنترلی بصورت اضطراری خارج میشویم و دیگر آن بخش ادامه پیدا نمیکند و continue برعکس انرا انجام میدهد مثلا در صورتی که در یک حلقه شرط برقرار نشد به بیرون هدایت نمیشویم بلکه با نادیده گرفتن حلقه ی جاری حلقه های بعدی کار خود را ادامه خواهند داد.

در این بحث زبان برنامه نویسی کاتلین از دیگر زبان های برنامه نویسی هوشمند تر عمل میکند.به این صورت که توسعه دهنده در کاتلین میتواند لیبل های زیادی داشته باشد و در مثال زیر نحوه ی استفاده از آنها را بهتر درک میکنید.

fun main(args: Array<String>) {
   println("Example of Break and Continue")
   myLabel@ for(x in 1..10) { // appling the custom label
      if(x = = 5) {
         println("I am inside if block with value"+x+"\n-- hence it will close the operation")
         break@myLabel //specifing the label
      } else {
         println("I am inside else block with value"+x)
         continue@myLabel
      }
   }
}

کد بالا نتیجه ی زیر را در خروجی به شما نمایش خواهد داد.

Example of Break and Continue
I am inside else block with value1
I am inside else block with value2
I am inside else block with value3
I am inside else block with value4
I am inside if block with value5
-- hence it will close the operation

همانطور که میبینید continue باعث شد حلقه همچنان ادمه پیدا کند زمانی که اگر x برابر 5 باشد یا نباشد.

ولی زمانی که x به پنج میرسد دستور break ما را بصورت فوری از حلقه خارج میکند.

اتمام درس