4. Instrukcje warunkowe i wyrażenie ternary

~30 min podstawowy

Warunki pozwalają programowi podejmować decyzje na podstawie danych. JS konwertuje warunki na boolean (truthy/falsy).

Podstawowy if / else

let temperatura = 28;

if (temperatura > 30) {
  console.log("Upał – weź wodę!");
} else {
  console.log("Dajesz radę.");
}
Ciekawostka: Truthy: niepuste stringi, liczby ≠0, obiekty; Falsy: false, 0, "", null, undefined, NaN.

else if – wiele warunków

let wiek = 16;

if (wiek >= 18) {
  console.log("Możesz kupić wszystko.");
} else if (wiek >= 16) {
  console.log("Możesz kupić energetyka i wejść na film 16+");
} else if (wiek >= 13) {
  console.log("Film 12+ z rodzicem");
} else {
  console.log("Tylko bajki.");
}

Operator warunkowy (ternary)

let rabat = wiek < 18 ? 50 : 0;
console.log(`Rabat: ${rabat}%`);

// równoważne dłuższej wersji:
let rabat2;
if (wiek < 18) {
  rabat2 = 50;
} else {
  rabat2 = 0;
}
Ciekawostka: Ternary można zagnieżdżać: wiek < 18 ? 50 : (wiek > 65 ? 30 : 0), ale unikaj dla czytelności.

switch – porównanie z wieloma wartościami

let dzien = "środa";

switch (dzien) {
  case "poniedziałek":
    console.log("Najgorszy dzień tygodnia");
    break;
  case "piątek":
    console.log("Wreszcie weekend blisko!");
    break;
  case "sobota":
  case "niedziela":
    console.log("Weekend 🎉");
    break;
  default:
    console.log("Zwykły dzień roboczy");
}
Uwaga: Bez break kod wykona się dalej (fall-through) – czasem celowo, najczęściej błąd.
Ostrzeżenie: Switch używa ===, więc typy muszą się zgadzać.

Ćwiczenie

Napisz kod dla punkty (0–100) wypisujący ocenę:

  • ≥ 90 → celująca
  • ≥ 80 → bardzo dobra
  • ≥ 70 → dobra
  • ≥ 60 → dostateczna
  • ≥ 50 → dopuszczająca
  • poniżej 50 → niedostateczna

Dodatkowe: Użyj ternary do sprawdzenia czy liczba jest parzysta/nieparzysta.

Poprawka do oryginału: Dodano o truthy/falsy, zagnieżdżonym ternary, ostrzeżenia; rozszerzono ćwiczenia.