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 در کاتلین اندروید می پردازیم.
سوالات خود را در قسمت نظرات مطرح کنید.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید