Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki JavaScript

Instrukcją równoważną funkcjonalnie do przedstawionej instrukcji JavaScript jest

for (i = 0; i < 100; i += 10)
  document.write(i + ' ');
Kod 1.
while (i < 10) {
  document.write(i + ' ');
  i += 10;
}
Kod 2.
while (i < 100)
  document.write(i + ' ');
Kod 3.
i = 0;
while (i < 100) {
  document.write(i + ' ');
  i += 10;
}
Kod 4.
i = 0;
while (i < 10) {
  document.write(i + ' ');
  i++;
}
A. Kod 1.
B. Kod 2.
C. Kod 4.
D. Kod 3.

Pytanie z egzaminu CKE, styczeń 2024 (arkusz EE.09-SG-24.01).

Instrukcja równoważna to Kod 3, bo zachowuje wszystkie trzy kluczowe elementy pętli for: inicjalizację zmiennej, warunek kontynuacji oraz zmianę licznika po wykonaniu ciała pętli. Oryginalny zapis for (i = 0; i < 100; i += 10) najpierw ustawia i na 0, potem sprawdza, czy i jest mniejsze od 100, wypisuje wartość i dopiero na końcu zwiększa i o 10. Kod 3 robi dokładnie to samo: i = 0; następnie while (i < 100), wypisanie wartości i oraz i += 10 wewnątrz bloku. Wynik działania będzie taki sam: 0 10 20 30 40 50 60 70 80 90. W praktyce taka zamiana jest często spotykana, gdy chcemy lepiej kontrolować moment zmiany licznika albo gdy warunek pętli zależy od bardziej rozbudowanej logiki. Moim zdaniem warto zapamiętać, że pętla for jest po prostu bardziej zwartym zapisem typowego schematu: ustaw licznik, sprawdź warunek, wykonaj instrukcje, zmień licznik. Dobra praktyka w JavaScript to też deklarowanie zmiennej, np. let i = 0, żeby nie tworzyć przypadkiem zmiennej globalnej. W starszych przykładach edukacyjnych często się to pomija, ale w normalnym projekcie lepiej tego pilnować.
W tym pytaniu najważniejsze jest nie samo podobieństwo składni, tylko pełna zgodność działania programu. Pętla for z treści zadania zaczyna od ustawienia i na 0, działa dopóki i < 100, po każdym wypisaniu zwiększa licznik o 10 i kończy się, gdy i osiągnie 100. To oznacza, że wypisuje wartości od 0 do 90 co 10. Jeśli w pętli while zabraknie inicjalizacji i = 0, program może zależeć od wcześniejszej wartości zmiennej i, a to jest bardzo niebezpieczne i nieprzewidywalne. Z mojego doświadczenia to częsty błąd: ktoś widzi sam warunek while i zapomina, że for zawiera jeszcze ustawienie wartości początkowej. Równie istotny jest przyrost licznika. Gdy w pętli while nie ma instrukcji i += 10, zmienna i się nie zmienia, więc dla wartości początkowej mniejszej od 100 pętla może stać się nieskończona i stale wypisywać tę samą liczbę. To typowa pułapka przy przepisywaniu for na while. Warunek i < 10 również zmienia sens programu: wtedy pętla nie wykona dziesięciu kroków co 10 aż do 90, tylko zakończy się znacznie wcześniej albo będzie wypisywać zupełnie inny zakres. Podobnie przyrost i++ oznacza zwiększanie o 1, a nie o 10, więc wynik byłby 0 1 2 3 4 5 6 7 8 9, czyli inna sekwencja. W programowaniu webowym takie drobne różnice mają znaczenie, bo pętle często generują elementy strony, przetwarzają tablice albo budują dane do wyświetlenia. Poprawne odwzorowanie pętli wymaga przeniesienia wszystkich jej składników, a nie tylko ogólnego pomysłu, że coś ma się powtarzać.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.