← Lekcje
JavaScript · lekcja 09

Warunki i pętle 3/4:
pętle for i while

Dzisiaj:

  1. Pętla for - trzy pola nad ciałem: start, warunek, krok
  2. Ta sama logika jako for i jako while
  3. Punkt zaczepienia z PHP (kurs PHP, lekcje 06-07): budowa niemal identyczna, bez $
  4. Ćwiczenie: tabliczka mnożenia dwoma sposobami
Rozgrzewka · 3 minuty

Rozgrzewka: switch, break, ? :

  1. W switch (day) { case "wt": task(); case "sr": other(); break; } zapomnieliście break w case "wt". Co się wykona dla day = "wt"?
  2. Zapiszcie operatorem ? :: if (age >= 18) { status = "pełnoletni"; } else { status = "niepełnoletni"; }
  3. switch ma pięć gałęzi case, pasuje trzecia. Ile case JavaScript porówna z wartością, zanim znajdzie dopasowanie?
Część 1 · Pętla for

for - trzy pola nad ciałem pętli

① start (raz) let i = 0 ② warunek (zawsze) i < 5 ③ krok (po przebiegu) i++ console.log(i) prawda krok sprawdź znów fałsz koniec pętli

Trzy pola w nawiasie, oddzielone średnikami: start, warunek i krok. Start wykonuje się raz, na początku. Warunek sprawdza się przed każdym przebiegiem - fałsz kończy pętlę. Krok wykonuje się po każdym przebiegu i zwykle zwiększa licznik.

for (let i = 0; i < 5; i++) {
  console.log(i);
}
MDN: Learn_web_development/Core/Scripting/Loops (sekcja „The standard for loop”: „An initializer... A condition... A final-expression...”)
Część 2 · Punkt zaczepienia

PHP i JS: ta sama budowa

PHP (kurs PHP, lekcja 06)

for ($i = 1; $i <= 10; $i++) {
  echo $i;
}

JavaScript

for (let i = 1; i <= 10; i++) {
  console.log(i);
}

Jedyna różnica: PHP oznacza zmienną znakiem $, JavaScript słowem let. Start, warunek i krok stoją w tym samym miejscu, w tej samej kolejności. JavaScript nie ma pętli foreach z PHP (kurs PHP, lekcja 07) w tej formie - tablice przejdziecie pętlą for...of, poznacie ją przy tablicach.

Ciekawostka z MDN: PHP kończy od razu dwie zagnieżdżone pętle instrukcją break 2; (kurs PHP, lekcja 06), ale JavaScript numeru przy break nie przyjmuje. Zamiast tego pętlę oznacza się etykietą, np. loop1: for (...) { for (...) { break loop1; } } - break loop1; kończy od razu obie pętle.

PHP Manual: control-structures.for.php · MDN: Learn_web_development/Core/Scripting/Loops · MDN: Web/JavaScript/Reference/Statements/for...of (zapowiedź: „The basic tool for looping through a collection is the for...of loop”) · ciekawostka: MDN, Statements/label („A labeled statement is any statement that is prefixed with an identifier. You can jump to this label using a break or continue statement nested within the labeled statement.”) · developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
Część 3 · Przebieg pętli

Krok po kroku: tabliczka mnożenia przez 5

i i <= 10 ? console.log(...) 1 prawda 5 x 1 = 5 2 prawda 5 x 2 = 10 3 prawda 5 x 3 = 15 10 prawda 5 x 10 = 50 11 fałsz - koniec -
for (let i = 1; i <= 10; i++) {
  console.log(`5 x ${i} = ${5 * i}`);
}
MDN: Learn_web_development/Core/Scripting/Loops (przykład tabliczki mnożenia jako podstawowy wzorzec for)
Część 4 · Pętla while

while - warunek sprawdzany na wejściu

przed pętlą (raz) let i = 1; sprawdzane na wejściu i <= 10 ? prawda console.log(...) i++ ← krok tu, w środku wraca, sprawdza i <= 10 znowu fałsz koniec (poza pętlą)
let i = 1;
while (i <= 10) {
  console.log(`5 x ${i} = ${5 * i}`);
  i++;
}

W for start, warunek i krok stoją razem w nawiasie. W while start stoi PRZED pętlą, a krok jest ostatnią linią W ŚRODKU ciała - łatwo o nim zapomnieć. Wtedy warunek zostaje zawsze prawdziwy i pętla się nie zatrzyma (pętla nieskończona, np. samo while (true) { } - nie uruchamiamy tego).

MDN: Learn_web_development/Core/Scripting/Loops (sekcja „The while loop”: „the initializer variable is set before the loop... the final-expression is included inside the loop after the code to run”)
Część 5 · for czy while

Ta sama pętla: for i while obok siebie

for

for (let i = 1; i <= 10; i++) {
  console.log(`5 x ${i} = ${5 * i}`);
}

while

let i = 1;
while (i <= 10) {
  console.log(`5 x ${i} = ${5 * i}`);
  i++;
}

Obie wersje dają dokładnie ten sam wynik: 10 linii, 5 x 1 = 5 do 5 x 10 = 50. MDN poleca zaczynać od for - start, warunek i krok siedzą w jednym miejscu, w nawiasie, trudniej o nich zapomnieć.

MDN: Learn_web_development/Core/Scripting/Loops („We would recommend for, at least to begin with, as it is probably the easiest for remembering everything”)
Egzamin EE.09 / E.14

Tak pytają na egzaminie

1. Dany jest kod w języku JavaScript:

for (i = 0; i < 100; i += 10)
  document.write(i + ' ');

Instrukcją równoważną funkcjonalnie jest

while (i < 10) {
  document.write(i+' ');
  i += 10;
}

Kod 1.

i = 0;
while (i < 100) {
  document.write(i+' ');
  i += 10;
}

Kod 3.

while (i < 100) {
  document.write(i+' ');
}

Kod 2.

i = 0;
while (i < 10) {
  document.write(i+' ');
  i++;
}

Kod 4.

  1. Kod 1.
  2. Kod 2.
  3. Kod 3.
  4. Kod 4.

2. Dany jest kod w języku JavaScript:

var n, i;
var a = 1;
n = prompt("Podaj n: ", "");
for (i = n; i >= 2; i--) a *= i;
document.write("Wynik ", a);

Podaj wynik działania programu po podaniu na wejściu wartości 5.

  1. 60
  2. 120
  3. 125
  4. 625
CKE, EE.09, styczeń 2026, zadanie 4 · CKE, E.14, styczeń 2018, zadanie 30 (bank pytań, przedmiot strony, temat javascript)
Ćwiczenie przy komputerze · 25 minut

Ćwiczenie: tabliczka mnożenia dwoma sposobami

  1. W folderze swojego projektu otwórz script.js (ten sam plik co na poprzednich lekcjach).
  2. Pętlą for wypisz w konsoli tabliczkę mnożenia przez 5, od 5 x 1 do 5 x 10, w formacie "5 x 1 = 5" (szablon `${...}`).
  3. Pod spodem napisz tę samą tabliczkę pętlą while - licznik zadeklaruj PRZED pętlą, krok i++ na końcu ciała.
  4. Sprawdź w konsoli (F12 → Console), że obie pętle dają identyczne 10 linii.
  5. Zapisz script.js, odśwież stronę i zostaw obie pętle w pliku.
Na koniec

Sprawdź się

  1. Które pole pętli for wykonuje się tylko raz, a które po każdym przebiegu?
  2. W while zapomnieliście zwiększyć licznik w ciele pętli. Co się stanie?
  3. Kiedy sięgacie po for, a kiedy po while, skoro obie robią to samo?

Na następnej lekcji: pętla do...while oraz break i continue.

Poza szkołą

A jak to wygląda w produkcji?

Na lekcjiW produkcjiStatus
for (let i = 0; i < arr.length; i++) licząca indeksy tablicyDo przejścia po tablicy częściej for...of albo metody tablicowe (map, forEach) - krótszy zapis, bez ręcznego licznika.zastępowane
while (true) { ... break; }Tak działają pętle nasłuchujące: serwer, kolejka zadań, gra czekająca na klik - kręcą się bez końca, break albo return kończy pracę.nadal w użyciu
var i w pętliESLint, reguła no-var, wymusza let/const - var nie pilnuje zasięgu bloku, w pętli to źródło błędów.zastępowane
Zapomniany krok w while (pętla nieskończona)Debugger przeglądarki (F12 → Sources) zatrzymuje wykonanie i pokazuje, która linia się zapętliła.narzędzia
ESLint, reguła no-var (eslint.org/docs/latest/rules/no-var)