AXV

Kotlin: if va when

Shart operatorlari va ularni ifoda sifatida ishlatish

9-sinfAndroid dasturlash4-hafta · 12-dars

Bugun nimalarni o‘rganamiz?

if-else

Oddiy shart va zanjir

if - ifoda

Qiymat qaytaradi: ternar operator o‘rniga

when

Qiymat, oraliq in, else

Takrorlash

val yosh = 16
println("Kelasi yil ${yosh + 1}") nima chiqaradi?

${...} ichidagi ifoda hisoblanadi: 16 + 1 = 17.
01

if-else

Shart to‘g‘ri bo‘lsa - bir yo‘l, aks holda - boshqa

Shart - yo‘l ayrilishi

yosh = 17 yosh >= 18 ? true: Xush kelibsiz! false: Kirish taqiqlanadi

if-else: kodda


val yosh = 17
if (yosh >= 18) {
    println("Xush kelibsiz!")
} else {
    println("Kirish taqiqlanadi.")
}
        

Natija: Kirish taqiqlanadi.

Zanjir: else if


val harorat = 28
if (harorat > 30) println("Juda issiq")
else if (harorat > 20) println("Iliq")
else if (harorat > 10) println("Salqin")
else println("Sovuq")
        

Shartlar yuqoridan pastga tekshiriladi, birinchi to‘g‘risi bajariladi: Iliq.

02

if - ifoda

Kotlinda ? : ternar operator yo‘q

Boshqa tillar va Kotlin

Java / JavaScript

max = (a > b) ? a : b;
ternar operator
VS

Kotlin

val max = if (a > b) a else b
if qiymat qaytaradi

Ifoda sifatida ishlatilganda else majburiy: qiymat har doim bo‘lishi kerak.

Juft yoki toq?


val son = 24
        

Juft yoki toq?


val son = 24
val tur = if (son % 2 == 0) "Juft" else "Toq"
println("$son soni - $tur son.")
        

Mini-test

val a = 15; val b = 25
val k = if (a > b) a else b. k nimaga teng?

15 > 25 noto‘g‘ri, shuning uchun else qismidagi b qaytadi.
03

when

Java’dagi switch o‘rniga, break siz

when: bitta qiymat - ko‘p yo‘l

when (fasl) 1 -> Qish 2 -> Bahor 3 -> Yoz 4 -> Kuz else -> ? fasl = 2 bo‘lsa, faqat «Bahor» bajariladi - break kerak emas

when: kodda


val fasl = 2
when (fasl) {
    1 -> println("Qish")
    2 -> println("Bahor")
    3 -> println("Yoz")
    4 -> println("Kuz")
    else -> println("Noto'g'ri fasl raqami")
}
        

Oraliqlar: in 90..100

0..59 -> 2 60..69 -> 3 70..89 -> 4 90..100 ball = 88 -> 4

when - ifoda sifatida


val ball = 88
val baho = when (ball) {
    in 90..100 -> "5 (A'lo)"
    in 70..89  -> "4 (Yaxshi)"
    in 60..69  -> "3 (Qoniqarli)"
    in 0..59   -> "2 (Qoniqarsiz)"
    else       -> "Noto'g'ri ball"
}
println("Natija: $baho")
        

when imkoniyatlari. Bosing

Bir nechta qiymat

bosing

12, 1, 2 -> "Qish"

Oraliq

bosing

in 13..18 -> "O'smir"

Tur tekshiruvi

bosing

is String -> "matn"

Argumentsiz

bosing

when { x > 5 -> ... } - if-else zanjiri o‘rniga

Xatoni toping

val baho = when (ball) {
  in 90..100 -> "A'lo"
  in 70..89 -> "Yaxshi" } - nega kompilyatsiya bo‘lmaydi?

Ball 50 bo‘lsa, baho qiymatsiz qoladi. Shuning uchun else majburiy.

Svetofor moduli: when + if

"Qizil"

TO‘XTANG! Harakatlanish taqiqlanadi.

"Sariq"

DIQQAT! Harakatga tayyorlaning.

"Yashil"

Ichida if (tezlik > 60): ogohlantirish yoki ruxsat.

Amaliy topshiriq 20 daqiqa

OsonJuft yoki toq: val tur = if (...) ... else ...
O'rta1–7 son bo‘yicha hafta kuni nomi: when va else.
QiyinSvetofor va tezlik monitoringi: when ichida if.
0
daraja

Xulosa

Bugun o‘rgandik

if-else, else if, if ifoda sifatida, when qiymat, oraliq va else bilan.

Uyga vazifa

Yosh toifasi, mini-kalkulyator, chegirma tizimi.

Keyingi hafta: Kotlin davomi - sikllar va funksiyalar.