ورود / ثبت نام سبد خرید 0
در درس قبلی درباره ی انواع داده ها در زبان برنامه نویسی کاتلین آموزش دادیم. در این درس به عبارت های کنترلی در زبان برنامه نویسی کاتلین خواهیم پرداخت.
از آنجایی که زبان کاتلین یک زبان 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
اگر قبلا با زبان های برنامه نویسی دیگری کار کرده باشید مطمئنا با دستور 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") } } }
اگر کدهای بالا را اجرا کنید خروجی زیر را بدست خواهید آورد.
حلقه ها یا 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 در این است که حلقه ی 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 برای برگرداندن مقدار خروجی یک تابع صدا زده شده در زبان برنامه نویسی کاتلین مورد استفاده قرار میگیرد.
در مثال زیر نحوه ی تعریف و استفاده از 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 مهم ترین بخش های حیاتی مسائل 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 ما را بصورت فوری از حلقه خارج میکند.
اتمام درس
محصولات برگزیده مناسب شما