Do tej pory program wykonywał się linijka po linijce, zawsze tak samo. Dziś nauczysz go podejmować decyzje (if, switch) i powtarzać czynności (for). Każdy kod możesz uruchomić przyciskiem Uruchom albo skrótem Ctrl+Enter.
Każda decyzja w programie zaczyna się od pytania, na które odpowiedź to true (prawda) albo false (fałsz). Takie pytania zadajesz operatorami porównania z poprzedniej lekcji: ===, !==, >, <, >=, <=.
if wykonuje blok kodu tylko wtedy, gdy warunek jest prawdziwy. else to plan B: wykona się, gdy warunek jest fałszywy. Zawsze wykona się dokładnie jeden z dwóch bloków.
if (warunek) {
// gdy prawda
} else {
// gdy fałsz
}
Warunek zawsze w ( nawiasach okrągłych ), kod do wykonania w { klamrach }. Po if (...) nie stawiamy średnika.
Co wypisze ten kod?
let temp = 15;
if (temp > 20) {
console.log("Ciepło");
}
console.log("Koniec");
15 > 20 to fałsz, więc blok if zostaje pominięty. console.log("Koniec") stoi poza klamrami, więc wykonuje się zawsze.
Gdy możliwości jest więcej niż dwie, dokładasz kolejne else if. JavaScript sprawdza warunki od góry i wykonuje pierwszy prawdziwy blok. Pozostałych już nie sprawdza.
let kwota = 450;if (kwota >= 500) { rabat = 20;} else if (kwota >= 200) { rabat = 10;} else { rabat = 0;}
if (warunek1) {
...
} else if (warunek2) {
...
} else {
... // gdy nic nie pasowało
}
Pierwszy pasujący wygrywa. Przy progach (kwoty, punkty, wiek) zaczynaj od największej wartości.
Kwota wynosi 600. Jaki rabat wyjdzie z tego kodu?
if (kwota >= 200) {
rabat = 10;
} else if (kwota >= 500) {
rabat = 20;
}
600 ≥ 200 to prawda, więc wykona się pierwszy blok, a reszta zostanie pominięta. Ten kod ma progi w złej kolejności: przy 500 i więcej nigdy nie da 20%.
W jednym if możesz sprawdzić kilka rzeczy naraz. Przypomnienie z lekcji 1: && oznacza, że muszą być spełnione oba warunki, a ||, że wystarczy jeden.
switch porównuje jedną zmienną z listą konkretnych wartości. Na egzaminie przydaje się przy listach rozwijanych, np. przy wyborze rodzaju usługi albo rozmiaru.
switch (zmienna) {
case wartosc1:
...
break;
case wartosc2:
...
break;
default:
... // gdy nic nie pasuje
}
case – kod – break. Bez break program „przelatuje” do następnego case.
| Wybierz | Gdy | Przykład |
|---|---|---|
| switch | porównujesz z konkretnymi wartościami | numer dnia 1–7, rozmiar „S”/„M”/„L” |
| if / else if | sprawdzasz zakresy albo łączysz warunki | punkty ≥ 90, wiek od 13 do 19 |
Kilka wartości może prowadzić do tego samego kodu. Wypisujesz wtedy kilka case jeden pod drugim:
Co wypisze ten kod? (Uwaga: "2" jest w cudzysłowie.)
let opcja = "2";
switch (opcja) {
case 2:
console.log("Dwa");
break;
default:
console.log("Inna");
}
switch porównuje jak ===, czyli sprawdza też typ. Tekst "2" to nie to samo co liczba 2. Zapamiętaj to na egzamin: wartości z formularza są zawsze tekstem, więc albo zamieniasz je na liczbę, albo w case piszesz "2".
Pętla powtarza ten sam kod wiele razy. Zamiast pisać 100 razy console.log, piszesz go raz i mówisz, ile razy ma się wykonać.
i; wykonuje się raz, na początkui++ to i = i + 1Skąd ; dokąd ; jak. Trzy części w nawiasie, oddzielone dwoma średnikami.
for (let i = 0; i < 3; i++) {
console.log(i);
}
Kolejność zawsze jest ta sama: start → warunek → ciało → krok → warunek → ciało → krok → …, aż warunek da false.
Ile razy wykona się for (let i = 1; i <= 10; i++)?
Pętla startuje od 1, a warunek <= przepuszcza także 10. Wartości 1, 2, …, 10 to 10 obiegów. Wersja i = 0; i < 10 też daje 10 obiegów, tylko dla 0…9.
Co się stanie z pętlą for (let i = 0; i < 5; i--)?
i-- zmniejsza licznik: 0, −1, −2… Warunek i < 5 jest prawdziwy zawsze, więc pętla jest nieskończona i przeglądarka się zawiesza. Krok musi prowadzić licznik w stronę końca. Ten edytor zatrzyma taką pętlę po 100 000 obiegów, możesz to sprawdzić.
let suma = 0; // 1. pusta skarbonka PRZED pętlą
for (...) {
suma = suma + coś; // 2. dorzucaj w każdym obiegu
}
console.log(suma); // 3. wynik PO pętli
W ciele pętli możesz użyć if, żeby zająć się tylko wybranymi liczbami. Licznik działa jak suma, tylko zwiększasz go o 1.
Tekst też można „sumować” operatorem +=. Na egzaminie tak buduje się na przykład listę albo wiersz tabeli, a gotowy napis wstawia się potem na stronę.
Kliknij Sprawdź, żeby przetestować kod. Sprawdzarka podmienia wartości zmiennych z pierwszych linijek i porównuje to, co wypisuje Twój program. Dlatego wynik nie może być wpisany na sztywno: program musi liczyć na podstawie zmiennych. Komunikaty wypisuj dokładnie w podanej postaci.
Na podstawie zmiennej punkty (0–100) wypisz ocenę w postaci Ocena: 4. Progi: 0–39 → 1, 40–54 → 2, 55–69 → 3, 70–84 → 4, 85–94 → 5, 95–100 → 6.
let punkty = 72;
let ocena;
if (punkty >= 95) {
ocena = 6;
} else if (punkty >= 85) {
ocena = 5;
} else if (punkty >= 70) {
ocena = 4;
} else if (punkty >= 55) {
ocena = 3;
} else if (punkty >= 40) {
ocena = 2;
} else {
ocena = 1;
}
console.log("Ocena: " + ocena);
Bilet normalny kosztuje 25 zł. Osoby poniżej 18 lat lub od 65 lat płacą 18 zł. We wtorek (dzien === "wtorek") wszyscy płacą 15 zł. Wypisz Cena: 25 zł (z odpowiednią kwotą).
let wiek = 30;
let dzien = "piątek";
let cena;
if (dzien === "wtorek") {
cena = 15;
} else if (wiek < 18 || wiek >= 65) {
cena = 18;
} else {
cena = 25;
}
console.log("Cena: " + cena + " zł");
Użyj switch. Dla numeru miesiąca w zmiennej miesiac wypisz: 12, 1, 2 → Zima; 3, 4, 5 → Wiosna; 6, 7, 8 → Lato; 9, 10, 11 → Jesień; inna liczba → Błędny miesiąc.
let miesiac = 10;
switch (miesiac) {
case 12:
case 1:
case 2:
console.log("Zima");
break;
case 3:
case 4:
case 5:
console.log("Wiosna");
break;
case 6:
case 7:
case 8:
console.log("Lato");
break;
case 9:
case 10:
case 11:
console.log("Jesień");
break;
default:
console.log("Błędny miesiąc");
}
Pętlą for wypisz liczby od wartości start w dół do 0, co 2 (dla start = 10: 10, 8, 6, 4, 2, 0). Każdą liczbę w osobnej linii.
let start = 10;
for (let i = start; i >= 0; i -= 2) {
console.log(i);
}
Oblicz sumę liczb od 1 do n, które dzielą się przez 3 bez reszty. Wypisz Suma: 63 (dla n = 20: 3+6+9+12+15+18 = 63).
let n = 20;
let suma = 0;
for (let i = 1; i <= n; i++) {
if (i % 3 === 0) {
suma += i;
}
}
console.log("Suma: " + suma);
Klient kupuje laptopa za kwota zł i spłaca go w raty równych ratach. Wypisz każdą ratę w osobnej linii: Rata 1: 300 zł, Rata 2: 300 zł… Jeśli liczba rat jest większa niż 12, wypisz tylko Maksymalnie 12 rat.
let kwota = 1200;
let raty = 4;
if (raty > 12) {
console.log("Maksymalnie 12 rat");
} else {
let rata = kwota / raty;
for (let i = 1; i <= raty; i++) {
console.log("Rata " + i + ": " + rata + " zł");
}
}
if (warunek) {
...
} else {
...
}Warunek w ( ), kod w { }. Po if (...) bez średnika.
if (p >= 90) { ... }
else if (p >= 70) { ... }
else { ... }Pierwszy pasujący wygrywa. Progi od największego.
if (wiek >= 13 && wiek <= 19) if (d === "sob" || d === "nd")
&& muszą oba, || wystarczy jeden.
switch (x) {
case 1:
case 2: ...; break;
default: ...
}case – kod – break. Porównuje jak === ("2" ≠ 2).
for (let i = 0; i < 5; i++) {
...
}Skąd ; dokąd ; jak. Start → warunek → ciało → krok.
let suma = 0, ile = 0;
for (...) {
suma += x;
if (...) ile++;
}Zmienne startowe przed pętlą, wynik po pętli.
Na następnej lekcji: tablice i przechodzenie po nich pętlą for.