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.
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.
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.
if (wiek >= 18) println("Pełnoletni")
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.
val wiek = 16 if (wiek >= 18) { println("Jesteś pełnoletni") } else { println("Jesteś niepełnoletni") }
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.
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") }
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).
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:
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.
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.
val punkty = 72 println("Status: ${if (punkty >= 50) "zdany" else "niezdany"}") // Status: zdany
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.
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
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.
val liczba = 8 if (liczba > 0) { if (liczba % 2 == 0) { println("Dodatnia i parzysta") } else { println("Dodatnia i nieparzysta") } } else { println("Niedodatnia") }
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.
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")
}
Podsumowanie
if (warunek) { ... }wykonuje kod, gdy warunek (typuBoolean) jest prawdziwy.elseto druga droga;else ifbuduje kaskadę wielu warunków sprawdzanych po kolei.- W Kotlinie
ifjest wyrażeniem – ma wartość, więc można pisaćval x = if (...) a else b. - Gdy
ifjest przypisywany do zmiennej, gałąźelsejest 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.
Zadania do wykonania
Zadania z wczytywaniem uruchamiaj w IntelliJ IDEA; pozostałe w Kotlin Playground.
Wczytaj wiek użytkownika i za pomocą if / else wypisz, czy jest
pełnoletni, czy niepełnoletni.
Wczytaj liczbę całkowitą i sprawdź, czy jest parzysta, czy nieparzysta
(operator %). Wypisz odpowiedni komunikat.
Wczytaj dwie liczby i wyznacz większą z nich, używając if jako
wyrażenia: val wiekszy = if (...) ... else .... Wypisz wynik.
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.