KWALIFIKACJA INF3 - STYCZEŃ 2018

PYTANIE NR 34.
Jakie elementy wypisze funkcja wypisz(2) stworzona w języku JavaScript?
Ilustracja przedstawia fragment kodu w języku JavaScript, który jest częścią pytania egzaminacyjnego z kwalifikacji
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Pętla for wykona się 5 razy (i=1…5). W każdej iteracji najpierw zwiększane jest a (a++), a dopiero potem sprawdzany warunek: podzielność przez 2 lub przez 3. Dla startu a=2 kolejne wartości to 3,4,5,6,7, więc wypisane zostaną 3 4 6.

Pełne wyjaśnienie:

W funkcji wypisz(a) kluczowe jest prześledzenie kolejności wykonywania instrukcji w pętli.

1) Liczba iteracji pętli
Pętla ma postać for(i=1; i<6; i++), więc uruchomi się dla i=1,2,3,4,5 (łącznie 5 razy). Warunek i<6 nie dopuszcza i=6.

2) Zmiana wartości a
W każdej iteracji wykonywane jest a++, czyli zwiększenie a o 1 (postinkrementacja; tutaj liczy się fakt, że po tej instrukcji a ma już większą wartość).

3) Warunek wypisania
Następnie sprawdzane jest: (a%2==0) || (a%3==0). Operator % daje resztę z dzielenia, więc warunek oznacza: "a jest parzyste lub a jest podzielne przez 3". Operator || wymaga spełnienia przynajmniej jednego z podwarunków.

4) Przebieg dla wypisz(2)

  • Iteracja 1: a=3 → 3%3=0, więc wypisuje 3
  • Iteracja 2: a=4 → 4%2=0, więc wypisuje 4
  • Iteracja 3: a=5 → nie dzieli się przez 2 ani 3, więc nic
  • Iteracja 4: a=6 → dzieli się przez 2 i 3, więc wypisuje 6
  • Iteracja 5: a=7 → nie dzieli się przez 2 ani 3, więc nic

Dlatego poprawny wynik to: 3 4 6.

Dlaczego pozostałe odpowiedzi są błędne?
Opcja z "2 …" pomija fakt, że przed sprawdzeniem warunku a jest inkrementowane, więc 2 nie może być wypisane. Opcja z "… 8" zakłada zbyt wiele iteracji lub inną granicę pętli. Opcja "6" ignoruje przypadki, gdy a jest podzielne przez 3 (3) oraz gdy a jest parzyste (4).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Sprawdź wartości, dla których warunek jest prawdziwy. Dla i=1; i<6; i++ pętla wykona się dla i=1,2,3,4,5, czyli 5 razy. Gdy i osiągnie 6, warunek i<6 stanie się fałszywy i pętla się zakończy.
a++ zwiększa wartość zmiennej a o 1. W zadaniach śledzenia kodu najważniejsze jest, że po wykonaniu tej instrukcji w danej iteracji kolejne użycia a (np. w if) widzą już wartość powiększoną.
Bo zmienna a jest zwiększana na początku każdej iteracji. Startuje jako 2, ale zanim program sprawdzi warunek i ewentualnie wypisze wartość, wykonuje a++, więc pierwsza sprawdzana i potencjalnie wypisywana liczba to 3, nie 2.
Operator % zwraca resztę z dzielenia. Jeśli a%2==0, to liczba a jest parzysta (dzieli się przez 2 bez reszty). Jeśli a%3==0, to a dzieli się przez 3. To popularny sposób filtrowania liczb w kodzie.
Operator || to logiczne "LUB". Cały warunek jest prawdziwy, gdy spełniony jest co najmniej jeden z podwarunków. W praktyce oznacza to, że liczba zostanie wypisana, jeśli jest podzielna przez 2 albo podzielna przez 3 (nie musi spełniać obu naraz).
Zrób małą tabelę: iteracja pętli, wartość a po a++, wynik testów a%2 i a%3, oraz czy następuje wypisanie. To minimalizuje pomyłki pamięci roboczej i pozwala szybko zobaczyć, które wartości spełniają warunek.
document.write() wpisuje tekst bezpośrednio do dokumentu HTML w trakcie ładowania strony. W tym zadaniu pełni rolę "wypisywania" wartości spełniających warunek. W praktycznych aplikacjach częściej używa się np. console.log lub manipulacji DOM, ale mechanizm testu jest czytelny.
Najczęściej: (1) mylenie i<6 z i<=6, (2) pomijanie, że a zmienia się w każdej iteracji, (3) błędne odczytanie logiki || jako "i jednocześnie", (4) sprawdzanie podzielności dla złej wartości, np. przed inkrementacją.
Warunek jest zbudowany jako alternatywa: a%2==0 || a%3==0. To znaczy, że wystarczy spełnić jeden z warunków. Liczba 3 nie jest parzysta, ale jest podzielna przez 3, więc też zostaje wypisana. To typowe "filtrowanie po wielu kryteriach".
W DevTools wklej funkcję i zamiast document.write użyj console.log(a), aby nie nadpisywać dokumentu. Następnie wywołaj wypisz(2) i porównaj wypisane wartości. To szybka metoda weryfikacji rozumienia pętli, warunku i inkrementacji.
info

Statystycznie 54% uczniów zna prawidłową odpowiedź. trudne

Eksperci podkreślają: "Pętla for wykona się 5 razy (i=1…5)."

Źródła:

  • MDN Web Docs: for statement (JavaScript) — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for (dostęp: 18.02.2026)
  • MDN Web Docs: Increment (++) operator — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Increment (dostęp: 18.02.2026)
  • MDN Web Docs: Remainder (%) operator — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder (dostęp: 18.02.2026)

Materiały:

  • Dokumentacja MDN: pętla for w JavaScript
  • Dokumentacja MDN: operatory logiczne (||) i precedence
  • Dokumentacja MDN: operator inkrementacji (++)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego