if / else jako wyrażenie

Instrukcja warunkowa pozwala programowi „podejmować decyzje”. Poznasz klasyczne if, else i else if, a potem wyróżniającą cechę Kotlina: if potrafi zwrócić wartość, więc da się napisać val x = if (...) a else b.

if / else else if if jako wyrażenie Blok 2
1

Instrukcja if

if wykonuje fragment kodu tylko wtedy, gdy podany warunek jest prawdziwy. Warunek (w nawiasie) musi być typu Boolean – zwykle powstaje z porównania.

Najprostszy warunek
val wiek = 20

if (wiek >= 18) {
    println("Jesteś pełnoletni")   // wykona się tylko, gdy warunek = true
}

Gdy w bloku jest tylko jedna instrukcja, klamry można pominąć i zapisać warunek w jednej linii – ale dla czytelności na początek warto zostać przy klamrach.

Skrócony zapis jednej instrukcji
if (wiek >= 18) println("Pełnoletni")
2

if / else – dwie drogi

else dodaje „drugą drogę” – kod, który wykona się, gdy warunek jest fałszywy. Zawsze wykona się dokładnie jedna z gałęzi.

Dwie możliwości
val wiek = 16

if (wiek >= 18) {
    println("Jesteś pełnoletni")
} else {
    println("Jesteś niepełnoletni")
}
3

else if – wiele dróg

Gdy możliwości jest więcej niż dwie, łączymy warunki w kaskadę else if. Kotlin sprawdza je po kolei i wykonuje gałąź pierwszego prawdziwego warunku – reszta jest pomijana.

Kaskada warunków
val ocena = 4

if (ocena == 6) {
    println("Celujący")
} else if (ocena >= 4) {
    println("Dobry wynik")
} else if (ocena >= 2) {
    println("Zaliczone")
} else {
    println("Niezaliczone")
}
Kolejność warunków ma znaczenie

Ponieważ Kotlin bierze pierwszy pasujący warunek, układaj je rozsądnie – zwykle od najbardziej szczegółowego do najogólniejszego. Gdy warunków robi się dużo, wygodniejsza bywa instrukcja when (następny temat).

4

if jako wyrażenie – zwraca wartość

W Kotlinie if to nie tylko instrukcja – to wyrażenie, czyli coś, co ma wartość. Dzięki temu wynik if można od razu przypisać do zmiennej:

Większa z dwóch liczb
val a = 5
val b = 8

val wiekszy = if (a > b) a else b
println("Większy: $wiekszy")   // Większy: 8

Gałąź, która zostanie wybrana, „oddaje” swoją wartość – i to ona trafia do zmiennej. To zwięzły zapis, który w wielu językach wymaga osobnego operatora trójargumentowego; w Kotlinie wystarcza zwykłe if ... else.

if jako wyrażenie wymaga else

Jeśli wynik if przypisujesz do zmiennej, musisz podać gałąź else – inaczej w jednym z przypadków zmienna nie miałaby żadnej wartości, a na to Kotlin nie pozwala.

Wynik prosto w szablonie
val punkty = 72
println("Status: ${if (punkty >= 50) "zdany" else "niezdany"}")
// Status: zdany
5

Bloki w wyrażeniu if

Gałąź if może być całym blokiem w klamrach. Wtedy wartością gałęzi jest jej ostatnia linia. Pozwala to wykonać dodatkowe czynności, a mimo to zwrócić wynik.

Ostatnia linia bloku = wynik
val punkty = 85

val ocena = if (punkty >= 50) {
    println("Zaliczone na $punkty pkt")   // czynność dodatkowa
    "pozytywna"                          // to jest wartość gałęzi
} else {
    "negatywna"
}

println("Ocena: $ocena")   // Ocena: pozytywna
6

Zagnieżdżanie if

Wewnątrz jednej gałęzi może znaleźć się kolejny if. To przydatne, gdy decyzja zależy od kilku warunków po kolei. Uważaj jednak na czytelność – zbyt głębokie zagnieżdżenie trudno się czyta.

Warunek wewnątrz warunku
val liczba = 8

if (liczba > 0) {
    if (liczba % 2 == 0) {
        println("Dodatnia i parzysta")
    } else {
        println("Dodatnia i nieparzysta")
    }
} else {
    println("Niedodatnia")
}
Często da się uprościć

Zamiast głęboko zagnieżdżać, czasem lepiej połączyć warunki operatorem && – np. if (liczba > 0 && liczba % 2 == 0). Wybieraj zapis, który czyta się najprościej.

7

Częste błędy

❌ Błąd 1: if jako wyrażenie bez else

❌ Brak drugiej gałęzi

val x = if (a > b) a
// Błąd! przy przypisaniu
// else jest wymagane

✅ Z gałęzią else

val x = if (a > b) a else b
// OK

❌ Błąd 2: średnik zaraz po warunku

❌ ; kończy if

if (wiek >= 18);
{
    println("Pełnoletni")
}
// blok wykona się ZAWSZE
// (if został "zamknięty")

✅ Bez średnika

if (wiek >= 18) {
    println("Pełnoletni")
}

❌ Błąd 3: warunek, który nie jest Boolean

❌ Liczba zamiast warunku

val x = 1
if (x) {
    println("?")
}
// Błąd! warunek musi być
// Boolean, nie liczbą

✅ Pełne porównanie

val x = 1
if (x == 1) {
    println("równe 1")
}

❌ Błąd 4: brak klamr przy wielu instrukcjach

❌ Tylko pierwsza linia w if

if (zdany)
    println("Gratulacje")
    println("Wynik zapisany")
// druga linia wykona się
// ZAWSZE – jest poza if

✅ Obie instrukcje w klamrach

if (zdany) {
    println("Gratulacje")
    println("Wynik zapisany")
}
8

Podsumowanie

  • if (warunek) { ... } wykonuje kod, gdy warunek (typu Boolean) jest prawdziwy.
  • else to druga droga; else if buduje kaskadę wielu warunków sprawdzanych po kolei.
  • W Kotlinie if jest wyrażeniem – ma wartość, więc można pisać val x = if (...) a else b.
  • Gdy if jest przypisywany do zmiennej, gałąź else jest wymagana.
  • W gałęzi-bloku wartością jest jej ostatnia linia.
  • Przy wielu instrukcjach zawsze używaj klamr; uważaj na zbędny średnik po warunku.
9

Zadania do wykonania

Zadania z wczytywaniem uruchamiaj w IntelliJ IDEA; pozostałe w Kotlin Playground.

Zadanie 1 łatwe

Wczytaj wiek użytkownika i za pomocą if / else wypisz, czy jest pełnoletni, czy niepełnoletni.

Zadanie 2 łatwe

Wczytaj liczbę całkowitą i sprawdź, czy jest parzysta, czy nieparzysta (operator %). Wypisz odpowiedni komunikat.

Zadanie 3 łatwe

Wczytaj dwie liczby i wyznacz większą z nich, używając if jako wyrażenia: val wiekszy = if (...) ... else .... Wypisz wynik.

Zadanie 4 średnie

Napisz program wystawiający ocenę słowną na podstawie liczby punktów (0–100), używając kaskady else if: 90 i więcej → „bardzo dobry”, 75–89 → „dobry”, 50–74 → „dostateczny”, poniżej 50 → „niedostateczny”. Zadbaj o sensowną kolejność warunków.