آموزش دستورات  شرطی  و حلقه ها  در کاتلین
آموزش دستورات شرطی و حلقه ها در کاتلین

 

if, when, for, while دستورات شرطی 

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

عبارات شرطی برای مقایسه به کار میروند که از عملگر های ریاضی هم درون آنها استفاده میشود.  

If دستور شرطی

If برای مقایسه دو دستور به کار میرو و داخل {} عملیاتش را انجام میدهد البته اگه دستورات یک خط باشد نیازی به {} نیست

var a=20
var b=15
if (a>b){
    println("عدد a بزرگتر از عدد b است")
}

 

مقایسه string

var name:String="maysam"
if (name=="maysam") 
    println("نام شما: $name")

 

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

var a=10
var b=15
if (a>b){
    println("عدد a بزرگتر از عدد b است")
}else{
    println("عدد b بزرگتر از عدد a است")
}

 

دستور شرطی when

whenبه جایswitch که در زبان های cاستفاده میشد آمده است که  البته ساده تر است.

 
var a=2
when (a) {
    1 -> print("a == 1")
    2 -> print("a == 2")
    else -> { // Note the block
        print("a is neither 1 nor 2")
    }
}

 

when باswitch  کمی فرق دارد درwhen ازcase وbreakاستفاده نمیشود و شرط هامون رو به صورتlambdaمینویسیم در کد بالا تک شرطی هست یعنی اگه مثلا1بود یا 2 بود کار را انجام بده درswitch از حالتdefault استفاده میشد ولی در اینجا ازelse استفاده میشود. ما ممکن است برای دو مقدار از متغیر یک عملیات را بخواهیم انجام بدهیم به صورت زیر کد مینویسیم

var a=1
when (a) {
    0, 1 -> print("a == 0 or a == 1")
    else -> print("عدد a خارج از رنج میباشد")
}

 

ما میتوانیم درwhen از متغیر خارجی هم استفاده کنیم و با چک کردن آن متغیر درwhenعملیات انجام بدهیم

var a=1
var s=1
when (a) {
    s -> print("عدد s با a برابر است")
    else -> print("عدد s با a برابر نیست")
}

 

درwhen میتوانیم از رنجی از اعداد یا لیستی از اعداد استفاده کنیم

var a=9
var validNumbers=listOf(1,2,3,4,5,6,7,8,9,10)
when (a) {
    in 1..10 -> print("عدد a در رنج اعداد هست")
    in validNumbers -> print("عدد a  وجود دارد")
    !in 10..20 -> print("عدد a در رنج اعداد وجود ندارد")
    else -> print("شروط ما هیچکدام اجرا نشد")
}

یک حالت دیگر این که یکobject از نوعAny بهwhen بدهیم پیاده سازی این روش کمی فرق دارد از متد استفاده کردیم که در مقاله های بعدی با متد آشنا خواهید شد کد به صورت زیر است برای چک کردن این که ورودیString است از کلمهis استفاده میکنیم

fun hasonline(a: Any) = when(a) {
    is String -> a.startsWith("online")
    else -> false
}

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

 

For Loops

حلقه ها برای تکرار یک عملیات یا پیمایش لیست ها مورد استفاده قرار میگیرند

 var names= listOf("kotlin","java","android","c#")
for (item in names) }
print(item)
{

 

کد بالا برای پیمایش لیست استفاده میشود این حلقه ها در جاوا و سی شارپforeach نام دارند.

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

for (i in 1..30) {
    println(i)
}

 

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

for (i in 60 downTo 0 step 2) {
    println(i)
}

 

در این جا حلقه را برعکس پیمایش میکنیم گفتیم که از 60 شروع کن تا برسی به صفر هربار 2 واحد از عدد کم کن این حلقه هم 30 بار تکرار میشود

 

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

var array= listOf(1,2,3,4,5,6,7,8,9,10)
for (i in array.indices) {
    println(array[i])
}
 

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


 
var array= listOf(1,2,3,4,5,6,7,8,9,10)
for ((index, value) in array.withIndex()) {
    println("index= $index value= $value")
}

While Loops

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


 
var a = 10
while (a > 0) {
   //انجام عملیات
}

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

do {
    val y = "android"
} while (y != null) // آیا y  مخالف تهی است

 

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

 

سوالات خود را در قسمت نظرات مطرح کنید.

تگ‌ها
اشتراک
0 نظرات

برای ارسال نظر باید وارد حساب کاربری خود شوید
ورود به حساب کاربری ثبت نام