Skrypt w zadaniu praktycznym INF.03 prawie nigdy nie jest prostą listą poleceń wykonywanych po kolei. Treść zadania rozgałęzia go: „Jeżeli oba pola edycyjne zostały wypełnione, skrypt oblicza pole powierzchni pomieszczenia … W przeciwnym wypadku skrypt wyświetla komunikat "Wprowadź poprawne dane."" (arkusz CKE INF.03, styczeń 2025, zadanie 2). Albo każe powtarzać: algorytm zamiany liczby dziesiętnej na binarną kończy się krokiem „K5: Jeśli L = 0 idź do K6; w przeciwnym razie idź do K3" (arkusz CKE INF.03, styczeń 2025, zadanie 6) – czyli pętlą. To, co w treści zadania brzmi „jeżeli", „w przeciwnym wypadku", „dla każdego", „ile razy", w kodzie ma cztery zapisy: if z else, switch, pętla for i pętla while (z odmianą do…while).
W podstawie programowej odpowiada za to jedna linia: Podstawa programowa INF.03.5, efekt 2, kryterium 5: „stosuje instrukcje sterujące skryptowych języków programowania" – w ramach efektu „Uczeń stosuje skryptowe języki programowania". Obok stoją kryterium 3: „implementuje algorytmy w języku interpretowanym" i efekt 3: „Uczeń programuje skrypty wykonywane po stronie klienta", kryterium 1: „programuje w języku JavaScript".
Na egzaminie to zagadnienie ma dwie twarze. W części pisemnej pada jako pytanie o wynik: ile razy wykona się pętla, jaka wartość zostanie w zmiennej, który warunek sprawdza przedział (arkusz CKE E.14, styczeń 2018, część pisemna, zad. 37 – klucz B; arkusz CKE EE.09, styczeń 2024, część pisemna, zad. 6 – klucz A). W części praktycznej jest narzędziem: skrypt ma pokazać jeden z dwóch komunikatów, przeliczyć cenę zależnie od zaznaczonej opcji albo przejść po elementach listy. Zasady, które wynikają z obu:
if i w nagłówku pętli to wyrażenie logiczne – to, co w nim porównujesz, ma być tego samego typu; wartość z pola formularza jest napisem, więc przed porównaniem z liczbą konwertujesz ją tak, jak opisuje hasło Zmienne i typy w JavaScript.< na <=, i++ na i += 2) i pytają o wynik.Deklaracje let/const, typy i konwersje tłumaczy hasło Zmienne i typy w JavaScript; definiowanie funkcji, do których te instrukcje trafiają – Funkcje w JavaScript; pobieranie danych z kontrolek i wypisywanie wyniku – Obsługa zdarzeń i model DOM. Tu jest tylko sterowanie przebiegiem.
// Skrypt 1 – warunek prosty i złożony (na wzór arkusza INF.03 styczeń 2025, zadanie 2:
// „Jeżeli oba pola edycyjne zostały wypełnione … W przeciwnym wypadku …")
function kosztMontazu(dlugosc, szerokosc, rodzajPanelu) {
if (dlugosc === "" || szerokosc === "") {
return "Wprowadź poprawne dane.";
}
const pole = Number(dlugosc) * Number(szerokosc);
let stawka;
if (rodzajPanelu === "laminowany") {
stawka = 12;
} else if (rodzajPanelu === "winylowy") {
stawka = 14;
} else {
stawka = 18; // deska podłogowa
}
return "Pole powierzchni pomieszczenia: " + pole + ", koszt montażu " + pole * stawka;
}
console.log(kosztMontazu("4", "5", "winylowy"));
// Pole powierzchni pomieszczenia: 20, koszt montażu 280
console.log(kosztMontazu("", "5", "winylowy")); // Wprowadź poprawne dane.
// Skrypt 2 – switch zamiast drabinki if (na wzór arkusza INF.03 styczeń 2024, zadanie 8:
// cena promocyjna o 10 zł niższa niż w tabeli 1: krótkie 25, średnie 30,
// półdługie 40, długie 50)
function cenaPromocyjna(dlugoscWlosow) {
let cena;
switch (dlugoscWlosow) {
case "krotkie":
cena = 25;
break;
case "srednie":
cena = 30;
break;
case "poldlugie":
cena = 40;
break;
default:
cena = 50; // długie
}
return "cena promocyjna: " + (cena - 10);
}
console.log(cenaPromocyjna("srednie")); // cena promocyjna: 20
console.log(cenaPromocyjna("dlugie")); // cena promocyjna: 40
// Skrypt 3 – pętla do…while według algorytmu z arkusza INF.03 styczeń 2025, zadanie 6
// (K3: B ← L mod 2, K4: L ← L div 2, K5: jeśli L = 0 koniec, w przeciwnym razie wróć do K3)
function naBinarny(liczba) {
let reszta = liczba;
let binarna = "";
do {
binarna = (reszta % 2) + binarna; // nowa cyfra z przodu – bez odwracania napisu
reszta = Math.floor(reszta / 2);
} while (reszta > 0);
return binarna;
}
console.log(naBinarny(537)); // 1000011001
console.log(naBinarny(0)); // 0 (do…while – ciało wykonało się raz)
// Skrypt 4 – pętla for po tablicy: suma cen zaznaczonych usług
// (na wzór arkusza INF.03 styczeń 2024, zadanie 5:
// peeling 45, maska 30, masaż 20, makijaż 50)
const CENY = [45, 30, 20, 50];
const ZAZNACZONE = [true, false, true, true]; // stany pól checkbox
let suma = 0;
for (let i = 0; i < CENY.length; i++) {
if (ZAZNACZONE[i]) {
suma += CENY[i];
}
}
console.log("Cena zabiegów: " + suma); // Cena zabiegów: 115
// Skrypt 5 – for…of po tablicy i pętla z licznikiem budująca napis
const MIASTA = ["Warszawa", "Katowice", "Gdańsk"];
let opcje = "";
for (const miasto of MIASTA) {
opcje += "<option>" + miasto + "</option>";
}
console.log(opcje);
// <option>Warszawa</option><option>Katowice</option><option>Gdańsk</option>
let parzyste = "";
for (let i = 2; i <= 12; i += 2) {
parzyste += i + " ";
}
console.log(parzyste); // 2 4 6 8 10 12
1. if z else – „jeżeli … w przeciwnym wypadku". Warunek w nawiasie jest wyrażeniem logicznym; gdy jest prawdziwy, wykonuje się blok po if, gdy fałszywy – blok po else. Treść zadania podaje obie gałęzie wprost: „Jeżeli nie zaznaczono pola wyboru: „Musisz zapoznać się z regulaminem" … Jeżeli zaznaczono pole wyboru: „<IMIĘ> <NAZWISKO> …"" (arkusz CKE INF.03, styczeń 2024, zadanie 1). Nawiasy klamrowe można pominąć tylko przy jednej instrukcji – bezpieczniej pisać je zawsze.
const zgoda = document.getElementById("regulamin").checked;
if (!zgoda) {
wynik.textContent = "Musisz zapoznać się z regulaminem";
} else {
wynik.innerHTML = imie + " " + nazwisko + "<br>Treść Twojej sprawy: " + tresc;
}
// to samo jednym wyrażeniem – operator warunkowy
wynik.style.color = zgoda ? "Navy" : "red";
2. Warunek złożony – &&, ||, !. „Oba pola wypełnione" to koniunkcja dwóch warunków; „przynajmniej jeden z przypadków" to alternatywa. Pytania pisemne sprawdzają dokładnie to rozróżnienie: warunek „liczba a jest trzycyfrowa lub liczba b jest ujemna" ma postać ((a > 99) && (a < 1000)) || (b < 0) – przedział wymaga &&, bo (a > 99) || (a < 1000) jest prawdziwe dla każdej liczby (arkusz CKE E.14, czerwiec 2017, część pisemna, zad. 27 – klucz B). Ten sam schemat: raport dla osób na umowę o pracę i z pensją w przedziale domkniętym 4000–4500 to umowa == 'praca' && (pensja >= 4000 && pensja <= 4500) (arkusz CKE EE.09, styczeń 2023, część pisemna, zad. 3 – klucz A).
if (dlugosc !== "" && szerokosc !== "") { // oba pola wypełnione
// obliczenia
} else {
wynik.textContent = "Wprowadź poprawne dane.";
}
const wPrzedziale = (liczba >= -200) && (liczba < -100); // <-200, -100)
3. else if albo switch – wybór z kilku wartości. Gdy zależnie od jednej zmiennej masz kilka możliwości (typ panelu: 12, 14 albo 18 zł za m²; długość włosów: cztery ceny), piszesz drabinkę else if albo switch. switch porównuje wartość z każdym case ścisłą równością, tak jak ===, a po dopasowaniu wykonuje instrukcje aż do break; bez break przechodzi do następnego case niezależnie od jego wartości (MDN, switch). Blok default łapie wszystko, czego nie wymieniono. Obie formy są równie dobrze punktowane – kryterium mówi tylko o pomnożeniu pola przez 12, 14 lub 18 zależnie od wybranego panelu (zasady oceniania INF.03, styczeń 2025, zadanie 2 – streszczenie).
let stawka;
switch (rodzajPanelu) {
case "laminowany": stawka = 12; break;
case "winylowy": stawka = 14; break;
default: stawka = 18;
}
4. for – znana liczba przebiegów albo przejście po tablicy. Nagłówek ma trzy części: start, warunek kontynuacji, krok. Pętla wykonuje ciało dopóty, dopóki warunek jest prawdziwy – więc for (i = 2; i <= 12; i += 2) wypisze sześć liczb parzystych 2, 4, 6, 8, 10, 12, a i < 12 tylko pięć (arkusz CKE E.14, czerwiec 2019, część pisemna, zad. 32 – klucz B; policzone w node). Po tablicy przechodzisz od indeksu 0 do length - 1, dlatego warunek to i < tablica.length, nigdy <= (to samo pytanie o i < 6 dla tablicy sześcioelementowej: arkusz CKE EE.09, styczeń 2022, część pisemna, zad. 13 – klucz C). Gdy potrzebujesz tylko wartości, a nie indeksów, for…of daje kolejne elementy tablicy, napisu lub listy elementów DOM (MDN, for...of).
for (let i = 0; i < CENY.length; i++) { // po indeksach
if (ZAZNACZONE[i]) suma += CENY[i];
}
for (const miasto of MIASTA) { // po wartościach
lista.appendChild(new Option(miasto));
}
5. while i do…while – dopóki warunek jest spełniony. while sprawdza warunek przed każdym przebiegiem, więc dla warunku fałszywego od początku nie wykona się ani razu. do…while sprawdza warunek po wykonaniu ciała, więc ciało wykona się co najmniej raz (MDN, do...while). Algorytm z arkusza – „jeśli L = 0 idź do K6; w przeciwnym razie idź do K3" – jest właśnie pętlą z warunkiem sprawdzanym po kroku (arkusz CKE INF.03, styczeń 2025, zadanie 6). Wewnątrz pętli musi być instrukcja, która zbliża warunek do fałszu (reszta = Math.floor(reszta / 2), i--) – inaczej pętla nie kończy się nigdy.
let i = 20, a = 0;
while (i) { // liczba różna od zera jest „prawdziwa"
a += 2;
i--;
}
// a = 40, i = 0
6. break i continue. break przerywa tę pętlę, w której stoi – w dwóch zagnieżdżonych pętlach kończy tylko wewnętrzną, a zewnętrzna idzie dalej (arkusz CKE EE.09, styczeń 2023, część pisemna, zad. 8 – klucz D: po iteracji (2, 2) pętla wewnętrzna kończy pracę i program przechodzi do i = 3). continue pomija resztę bieżącego przebiegu i przechodzi do następnego. W arkuszach INF.03 z lat 2021–2026 zebranych na portalu żadne polecenie nie wymaga break ani continue – potrzebne są tylko w pytaniach pisemnych i do wcześniejszego wyjścia z pętli szukającej.
for (let i = 1; i <= 3; i++) {
for (let j = 1; j <= 3; j++) {
if (i == 2 && j == 2) break; // kończy tylko pętlę po j
}
}
| Pętla | Kiedy sprawdza warunek | Do czego na egzaminie | Przykład z arkusza |
|---|---|---|---|
for (start; warunek; krok) | przed każdym przebiegiem; liczba przebiegów znana z nagłówka | przejście po tablicy po indeksach, „wypisz n razy", ciąg liczb | for(i=2;i<=12;i+=2) – sześć liczb parzystych (E.14, czerwiec 2019, zad. 32) |
for (const x of tablica) | jak for, ale bez licznika – daje kolejne wartości | tablica nazw do listy rozwijanej, elementy z querySelectorAll | brak w arkuszach zebranych na portalu; w tabeli DOM od 2025 jest querySelectorAll, po którym for…of przechodzi |
while (warunek) | przed każdym przebiegiem; może nie wykonać się ani razu | liczba przebiegów nieznana z góry: dzielenie aż do zera, szukanie | while($i) { $a += 2; $i--; } – a = 40 (EE.09, styczeń 2024, zad. 6) |
do { } while (warunek) | po każdym przebiegu; ciało zawsze co najmniej raz | algorytm „wykonaj krok, potem sprawdź" – zamiana na binarny | do{ x*=3; i++; } while(x!=27); – 3 razy (E.14, styczeń 2018, zad. 37) |
if / else if / switch | jednorazowo, nie jest pętlą | rozgałęzienie: komunikat albo wynik, cena zależna od opcji | „Jeżeli oba pola … W przeciwnym wypadku …" (INF.03, styczeń 2025, zad. 2) |
W części pisemnej pytania o pętle i warunki są w prawie każdym arkuszu, w JavaScript, PHP i C++ na przemian. CKE nie publikuje testów pisemnych INF.03 – dostępne są arkusze EE.09 i E.14, których treść w tym zakresie pokrywa się z podstawą INF.03.5, więc traktujemy je jako materiał ćwiczeniowy z podobnego zakresu – to, co obowiązuje dziś, wyznaczają podstawa programowa i Informator INF.03, nie dawny arkusz. Wzorce, które się powtarzają:
var x=1,i=0; do{ x*=3; i++; } while(x!=27); daje x: 3, 9, 27 – trzy przebiegi (arkusz CKE E.14, styczeń 2018, część pisemna, zad. 37 – klucz B). for($i = 0; $i < 25; $i += 5) to i: 0, 5, 10, 15, 20 – pięć iteracji (arkusz CKE EE.09, czerwiec 2022, część pisemna, zad. 8 – klucz B). for($i = 10; $i <= 100; $i += 10) – dziesięć powtórzeń, bo <= wpuszcza także 100 (arkusz CKE E.14, styczeń 2020, część pisemna, zad. 28 – klucz B). Wszystkie trzy policzone w node z identycznym wynikiem.$i= 20; $a=0; while($i) { $a += 2; $i--; } kończy się przy a = 40, i = 0: pętla kręci się, dopóki $i jest różne od zera, a zero jest fałszem (arkusz CKE EE.09, styczeń 2024, część pisemna, zad. 6 – klucz A). Wersja z $i = 10 daje a = 20 (arkusz CKE E.14, czerwiec 2017, część pisemna, zad. 36 – klucz D).for (i = 0; i < 100; i++) if (liczby[i] % 2 == 0) wynik += liczby[i]; sumuje parzyste elementy tablicy (arkusz CKE EE.09, czerwiec 2022, część pisemna, zad. 7 – klucz C). Przed pętlą text += tab[i] + "<br>" trzeba zainicjować text – inaczej pierwszym fragmentem napisu będzie undefined, co też pokazał node (arkusz CKE E.14, czerwiec 2017, część pisemna, zad. 28 – klucz B).for (arkusz CKE E.14, czerwiec 2022, część pisemna, zad. 26 – klucz C); pętla przypisująca w każdej iteracji bieżący element tablicy do zmiennej to foreach (arkusz CKE E.14, czerwiec 2017, część pisemna, zad. 26 – klucz D) – w JavaScript jej odpowiednikiem jest for…of.(liczba >= -200) && (liczba < -100) (arkusz CKE E.14, styczeń 2020, część pisemna, zad. 27 – klucz C); „a dodatnia lub b z przedziału domkniętego 10–100" to (a > 0) || ((b >= 10) && (b <= 100)) (arkusz CKE E.14, czerwiec 2018, część pisemna, zad. 29 – klucz C).W części praktycznej instrukcje sterujące siedzą wewnątrz skryptu wywoływanego przyciskiem. W arkuszu z stycznia 2025 skrypt „Jeżeli oba pola edycyjne zostały wypełnione" liczy pole i koszt, „W przeciwnym wypadku … wyświetla komunikat "Wprowadź poprawne dane."" (arkusz CKE INF.03, styczeń 2025, zadanie 2); zasady dają osobny punkt za komunikat przy pustym polu i osobny za wynik przy obu wypełnionych, a trzeci za mnożenie pola przez 12, 14 albo 18 zależnie od panelu (zasady oceniania INF.03, styczeń 2025, zadanie 2 – streszczenie). W wariancie z fryzjerem skrypt „Na podstawie wybranego przycisku radio wyświetla promocyjną cenę strzyżenia" (arkusz CKE INF.03, styczeń 2024, zadanie 8) – punktowane jest użycie checked do sprawdzenia stanu przynajmniej jednego pola i wyznaczenie ceny 15, 20, 30 lub 40 zależnie od zaznaczonego pola (zasady oceniania INF.03, styczeń 2024, zadanie 8 – streszczenie). Zamiana liczby dziesiętnej na binarną według podanego algorytmu to pętla, a kryterium sprawdza, czy skrypt przelicza liczbę, wyświetla wynik w blokach po cztery cyfry od prawej i dopisuje „(2)" w indeksie dolnym (zasady oceniania INF.03, styczeń 2025, zadanie 6 – streszczenie).
Pułapki wynikające z treści:
for jest w PHP taka sama, szczegóły w haśle Instrukcje sterujące PHP.if zatrzymuje cały skrypt i zostawia najwyżej dwa lub trzy punkty „za kod".Przypisanie zamiast porównania. if (stawka = 14) nie porównuje, tylko wpisuje 14 do zmiennej, a wyrażenie ma wartość 14 – niezerową, więc „prawdziwą"; gałąź wykona się zawsze (policzone w node: po takim if zmienna ma wartość 14). Porównanie to == albo ===; o różnicy między nimi mówi hasło Zmienne i typy w JavaScript. W zadaniu ze stawkami za panel taki błąd daje jeden koszt dla każdego rodzaju panelu, a kryterium wymaga trzech różnych mnożników (zasady oceniania INF.03, styczeń 2025, zadanie 2 – streszczenie).
switch bez break. Po dopasowanym case wykonanie leci dalej przez kolejne case i default, dopóki nie trafi na break (MDN, switch). Dla case "krotkie": cena = 25; case "srednie": cena = 30; break; wartość dla „krótkie" wynosi 30, nie 25 (policzone w node). Objaw: pierwsze opcje dają cenę ostatniej gałęzi. Do tego switch porównuje ścisłą równością – case 2: nie złapie wartości "2" z listy rozwijanej (arkusz CKE EE.09, styczeń 2023, część pisemna, zad. 11 – klucz D).
&& zamiast || w przedziale i odwrotnie. „Liczba trzycyfrowa" to a > 99 && a < 1000; zapis z || jest spełniony dla każdej liczby (policzone: dla a = 5 daje true), a zapis „a trzycyfrowa lub b ujemna" z && między nawiasami wymaga obu naraz (arkusz CKE E.14, czerwiec 2017, część pisemna, zad. 27 – klucz B). Przetłumacz warunek zdaniem: „i" to &&, „lub" to ||, przedział to zawsze dwa porównania spięte &&.
Pętla o jeden za daleko. for (let i = 0; i <= tablica.length; i++) wchodzi na indeks równy długości tablicy, gdzie jest undefined; suma cen staje się NaN (policzone w node dla tablicy czterech cen). Dla tablicy sześcioelementowej jedyny poprawny warunek to i < 6 (arkusz CKE EE.09, styczeń 2022, część pisemna, zad. 13 – klucz C). Objaw na stronie: „Cena zabiegów: NaN" zamiast liczby.
Pętla bez kroku – strona się wiesza. while (i < 3) { suma += i; } bez i++ nigdy nie kończy warunku; przeglądarka przestaje reagować, a egzaminator nie zobaczy żadnego wyniku. W while i do…while zmiana zmiennej sterującej jest Twoim obowiązkiem – w for stoi w nagłówku. Pytanie pisemne o while($i) zakłada właśnie $i-- w ciele; bez niego odpowiedź „a = 40" nie istnieje (arkusz CKE EE.09, styczeń 2024, część pisemna, zad. 6 – klucz A).
Niezainicjowana zmienna zbierająca wynik. let tekst; for (...) { tekst += tab[i] + "<br>"; } sklei napis zaczynający się od undefined (policzone w node: undefineda<br>b<br>), a let suma; z suma += 45 da NaN. Przed pętlą wpisujesz wartość startową: "" dla napisu, 0 dla sumy – to jest dokładnie treść pytania pisemnego o czynność „przed pętlą" (arkusz CKE E.14, czerwiec 2017, część pisemna, zad. 28 – klucz B).
Jedna gałąź zamiast dwóch. Skrypt liczy wynik, ale przy pustym polu nie pokazuje nic albo pokazuje NaN. Kryteria za komunikat „Wprowadź poprawne dane." i za wynik przy wypełnionych polach są osobne (zasady oceniania INF.03, styczeń 2025, zadanie 2 – streszczenie), więc brak else to punkt mniej, nawet gdy obliczenia są bezbłędne. Sprawdź obie gałęzie przed nagraniem wyników: raz z pustym polem, raz z pełnymi.
Fragment skryptu z arkusza-wzoru: pole dlugosc i szerokosc wypełnione wartościami 4 i 5, wybrany panel winylowy (14 zł/m²), pusty akapit wynik. Odpowiedzi jednym słowem lub liczbą, na podstawie sekcji JavaScript i Na egzaminie:
| Pytanie | Odpowiedź |
|---|---|
| Ile razy wykona się pętla do…while z arkusza E.14 ze stycznia 2018 (x od 1, mnożone przez 3, aż x równa się 27)? | |
| Ile iteracji ma pętla for z licznikiem od 0, krokiem 5 i warunkiem „licznik mniejszy niż 25"? | |
Jaką wartość ma a po i=20; a=0; while(i){ a+=2; i--; }? | |
Które słowo kluczowe kończy gałąź case, żeby nie przejść do następnej? | |
| Która pętla wykonuje ciało co najmniej raz, bo sprawdza warunek po nim? | |
| Który operator łączy dwa warunki, które muszą zachodzić jednocześnie? | |
| Ile liczb wypisze pętla for od 2 do 12 włącznie z krokiem 2? | |
| Ile wynosi koszt montażu dla wartości 4, 5 i panelu winylowego? | |
Co da naBinarny(537) z sekcji JavaScript? |
Uzupełnij zdania. Pętla po indeksach tablicy CENY ma warunek „i mniejsze niż CENY.length", a licznik startuje od wartości . Pętla, która daje kolejne wartości tablicy bez licznika, to for (const miasto MIASTA). Gałąź switch wykonywana, gdy żaden case nie pasuje, nazywa się . W zagnieżdżonych pętlach instrukcja break kończy tylko pętlę .
Gdy porównujesz jedną zmienną z kilkoma konkretnymi wartościami (rodzaj panelu, długość włosów, numer bloku), switch jest czytelniejszy i trudniej w nim pomylić operatory. Gdy warunki są przedziałami lub łączą kilka zmiennych (pole > 20 && rodzaj === "winylowy"), zostaje else if – switch porównuje tylko równość. Zasady oceniania nie narzucają formy; kryterium mówi o wyniku dla każdej z opcji (zasady oceniania INF.03, styczeń 2025, zadanie 2 – streszczenie).
Rozpisz tabelkę: kolumna na każdą zmienną, wiersz na każdy przebieg, i zatrzymaj się w chwili, gdy warunek staje się fałszywy. Dla do…while pierwszy wiersz powstaje bez sprawdzania warunku. do{ x*=3; i++; } while(x!=27); to trzy wiersze (x = 3, 9, 27), więc trzy razy (arkusz CKE E.14, styczeń 2018, część pisemna, zad. 37 – klucz B). Dla for z krokiem różnym od 1 wypisz kolejne wartości licznika – 0, 5, 10, 15, 20 to pięć iteracji (arkusz CKE EE.09, czerwiec 2022, część pisemna, zad. 8 – klucz B).
Słowa kluczowego foreach w JavaScript nie ma – pytania pisemne o foreach dotyczą PHP (arkusz CKE EE.09, styczeń 2021, część pisemna, zad. 6 – klucz C). Odpowiednikiem jest for…of, które przechodzi po wartościach tablicy, napisu lub listy elementów DOM (MDN, for...of), oraz metoda tablicy forEach(funkcja). for…in to co innego: daje indeksy jako napisy "0", "1", nie wartości (policzone w node).
pole.value jest zawsze napisem, więc if (lista.value === 2) nie zadziała nigdy, a case 2: w switch też nie – oba porównują ścisłą równością (arkusz CKE EE.09, styczeń 2023, część pisemna, zad. 11 – klucz D). Albo porównujesz z napisem "2", albo najpierw konwertujesz Number(pole.value). Sprawdzenie „czy pole jest puste" to porównanie z pustym napisem: pole.value === "". Szczegóły konwersji w haśle Zmienne i typy w JavaScript.
document.querySelectorAll("#zadania button") zwraca listę, po której działa i for z indeksem, i for…of, i forEach. for…of jest najkrótszy i nie wymaga licznika; for z indeksem przydaje się, gdy indeks jest potrzebny (np. do parzystych elementów). W arkuszu z listą zadań trzeba podpiąć obsługę pod każdy z sześciu przycisków początkowych – to jedna pętla po wyniku querySelectorAll (arkusz CKE INF.03, czerwiec 2025, zadanie 2). Metody DOM opisuje hasło Obsługa zdarzeń i model DOM.
Przy jednej instrukcji nie – if (liczby[i] % 2 == 0) wynik += liczby[i]; jest poprawne i tak wygląda w pytaniu pisemnym (arkusz CKE EE.09, czerwiec 2022, część pisemna, zad. 7 – klucz C). Przy dwóch instrukcjach bez klamr druga wykona się zawsze, poza warunkiem, i błąd nie zgłosi się w konsoli. Na egzaminie klamry pisz zawsze – kosztują dwa znaki, a chronią przed błędem, którego nie widać.
Zablokuje kartę przeglądarki, a przy alert w środku – całą przeglądarkę. Zanim uruchomisz while, upewnij się, że w ciele jest instrukcja zmieniająca zmienną z warunku (i--, reszta = Math.floor(reszta / 2)). Jeżeli strona przestała reagować, zamknij kartę, popraw kod i otwórz ją ponownie – zapisany plik nie ginie. Konsola (F12) nie pokaże błędu, bo z punktu widzenia języka pętla działa poprawnie; więcej w haśle Debugowanie w konsoli przeglądarki.
Zagadnienia z tego samego obszaru matury – warto je powtórzyć razem: