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 PHP

$suma = 0; for ($x = 10; $x <= 20; $x++) { $suma += $x; } Wskaż kod równoważny do przedstawionego kodu zapisanego językiem PHP. Kod 1.$suma = 0;...

$suma = 0;
for ($x = 10; $x <= 20; $x++) {
  $suma += $x;
}
Wskaż kod równoważny do przedstawionego kodu zapisanego językiem PHP.
Kod 1.
$suma = 0;
while ($x <= 20) {
  $suma += $x;
  $x++;
}

Kod 2.
$suma = 0;
$x = 10;
while ($x <= 20) {
  $suma += $x;
  $x++;
}

Kod 3.
$suma = 0;
$x = 1;
while ($x <= 10) {
  $suma += $x;
}

Kod 4.
$suma = 0;
$x = 10;
while ($x <= 20) {
  $suma = $x;
  $x++;
}
A. Kod 3.
B. Kod 2.
C. Kod 1.
D. Kod 4.

Pytanie z egzaminu CKE, czerwiec 2023 (arkusz EE.09-SG-23.06).

Kod 2 jest równoważny, bo zachowuje wszystkie trzy kluczowe elementy pętli for z przykładu: inicjalizację zmiennej sterującej, warunek kontynuacji oraz krok zwiększający licznik. W oryginale zmienna x startuje od 10, pętla działa dopóki x <= 20, a po każdym obiegu x jest zwiększane o 1. W środku wykonywana jest operacja suma += x, czyli skrócony zapis dodania aktualnej wartości x do dotychczasowej sumy. Kod 2 robi dokładnie to samo, tylko w konstrukcji while: najpierw ustawia x na 10, potem sprawdza warunek, dodaje x do sumy i na końcu zwiększa x. Wynikiem będzie suma liczb od 10 do 20 włącznie, czyli 165. Moim zdaniem to dobry przykład na zrozumienie, że for i while mogą opisywać ten sam algorytm, jeśli pilnujemy kolejności działań. W praktyce w PHP for często stosuje się do pętli licznikowych, a while wtedy, gdy liczba powtórzeń zależy od warunku, np. odczytu rekordów z bazy danych. Dobra praktyka jest taka, żeby zmienna sterująca była jawnie zainicjalizowana przed while, bo inaczej kod robi się zależny od wcześniejszego stanu programu i może generować ostrzeżenia.
W tym zadaniu najważniejsze jest nie samo podobieństwo składni, tylko pełna równoważność działania programu. Oryginalna pętla for sumuje liczby od 10 do 20 włącznie, więc poprawny odpowiednik w while musi mieć ustawienie wartości początkowej x na 10, warunek x <= 20, dodawanie aktualnego x do sumy oraz zwiększanie x po każdym przebiegu. Jeśli w kodzie brakuje inicjalizacji x, program nie jest równoważny, nawet jeśli reszta wygląda prawie dobrze. W PHP użycie niezdefiniowanej zmiennej może dać ostrzeżenie, a działanie będzie zależało od kontekstu, czyli od tego, czy x miało wcześniej jakąś wartość. To jest kiepska praktyka i częsty błąd przy przepisywaniu pętli for na while. Inny wariant zaczyna od x = 1 i ma warunek do 10, więc opisuje zupełnie inny zakres liczb, a dodatkowo nie zwiększa x w ciele pętli. Taka pętla może wykonywać się bez końca, bo warunek nigdy nie przestaje być prawdziwy. To typowa pułapka: przy while trzeba samodzielnie zadbać o zmianę zmiennej sterującej. Jest też wersja, w której zamiast suma += x użyto suma = x. To nie sumuje wartości, tylko nadpisuje wynik w każdej iteracji. Po zakończeniu zostałaby ostatnia przypisana wartość, a nie suma. Z mojego doświadczenia najlepiej przy takich zadaniach rozpisać sobie trzy elementy pętli: start, warunek i krok, a potem sprawdzić, czy instrukcja w środku pętli naprawdę wykonuje tę samą operację arytmetyczną.

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.