Študijné materiály

When statement

Podmienka when nahrádza switch case. Avšak vykoná sa len tá vetva, ktorá bude splnená ako prvá. when má ale viacero zápisov.

When s parametrom

Tak ako switch v C++ - when tiež môže prijímať parameter, nad ktorým sa vykoná porovnávanie. Ak nie je splnená žiadna podmienka, vykoná sa else vetva:

fun main() {
    val hodnotenie = readln().toInt()
    
    when(hodnotenie) {
        1 -> println("Dakujeme :)")
        2 -> println("Stale dobre")
        else -> println("Sklamanie :(")
    }
}

When bez parametrov

Parameter vo when-e nie je nevyhnutnosťou. Ak sa napríklad podmienky týkajú viacerých premenných naraz, when s parametrom je v podstate nepoužiteľný. Pozrime si príklad pre generovanie čísla mesiaca do rodného čísla:

fun main() {
    val mesiac = readln().toInt()
    val pohlavie = readln()
    
    when {
        mesiac < 1 -> println("Mesiac musi byt >= 1")
        mesiac > 12 -> println("Mesiac musi byt <= 12")
        pohlavie != "muz" && pohlavie != "zena" -> println("nespravne pohlavie")
        else -> {
            // generujem rodne cislo ...
        }
    }
}

Úlohy

Úloha 1

Vytvor when s parametrom, ktorý podľa čísla 1 až 7 vypíše názov dňa; pri inej hodnote vypíš chybu.

Úloha 2

Pomocou when bez parametra klasifikuj teplotu ako mráz, chladno, teplo alebo horúco.

Úloha 3

Na základe mesiaca a pohlavia pomocou when bez parametra vypočítaj upravené číslo mesiaca pre rodné číslo.