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

W wyniku działania pętli zapisanej w języku PHP zostanie wypisany ciąg liczb:

for ($i = 1; $i <= 50; $i = $i * 3) {
    echo "$i ";
}
A. 1 3 9
B. 1 3 9 27 81
C. 3 9 27
D. 1 3 9 27
W tej pętli kluczowe jest dokładne prześledzenie trzech części instrukcji for: inicjalizacji, warunku i kroku po każdej iteracji. Zmienna $i startuje od wartości 1. Przed każdym wykonaniem bloku sprawdzany jest warunek $i <= 50, więc dopóki wartość zmiennej nie przekracza 50, instrukcja echo wypisuje aktualne $i. Po wypisaniu następuje aktualizacja $i = $i * 3, czyli zmienna jest mnożona przez 3. Kolejne wartości są więc takie: 1, potem 3, potem 9, potem 27. Następna wartość po przemnożeniu to 81, ale ona już nie zostanie wypisana, bo przed wejściem do kolejnego obiegu pętli warunek 81 <= 50 jest fałszywy. Dlatego poprawny ciąg to: 1 3 9 27. Moim zdaniem to bardzo dobry przykład na to, że w pętlach nie wolno patrzeć tylko na wzór zwiększania zmiennej, ale też na moment sprawdzania warunku. W praktyce PHP takie pętle przydają się np. przy generowaniu kolejnych progów, wartości testowych, poziomów powiększenia albo iteracji po danych, gdzie krok nie jest liniowy, tylko rośnie geometrycznie. Dobra praktyka to zawsze sprawdzać, czy warunek zakończenia faktycznie zatrzyma pętlę, bo źle dobrana aktualizacja może dać pętlę nieskończoną albo pominąć ważne wartości.
Najczęstsza pomyłka w tym zadaniu wynika z tego, że ktoś traktuje część $i = $i * 3 tak, jakby wykonywała się przed instrukcją echo. W pętli for w PHP kolejność jest jednak konkretna: najpierw wykonywana jest inicjalizacja, potem sprawdzany jest warunek, następnie uruchamia się ciało pętli, a dopiero na końcu wykonywany jest krok aktualizacji. Dlatego wartość 1 musi zostać wypisana, bo $i właśnie od niej startuje i od razu spełnia warunek $i <= 50. Pominięcie jedynki oznacza zwykle, że ktoś mentalnie zaczął liczyć dopiero po pierwszym mnożeniu, a to nie jest zgodne z działaniem pętli for. Z drugiej strony dopisanie wartości 81 też jest błędem, ale z innego powodu. Owszem, 81 powstaje po przemnożeniu 27 przez 3, jednak ta wartość pojawia się już po wykonaniu echo dla 27. Zanim blok pętli wykonałby się ponownie, PHP sprawdza warunek i widzi, że 81 <= 50 jest fałszem. Wtedy pętla kończy działanie i echo nie zostaje już uruchomione. Skrócenie ciągu do 1 3 9 pokazuje natomiast niedopatrzenie ostatniej poprawnej iteracji, bo 27 nadal mieści się w zakresie do 50. Z mojego doświadczenia najlepiej robić sobie małą tabelkę z kolumnami: wartość $i, wynik warunku, wypisanie, nowa wartość po aktualizacji. To prosta metoda, ale bardzo skuteczna, zwłaszcza przy pętlach z nietypowym krokiem, mnożeniem, dzieleniem albo zmianą kilku zmiennych naraz. W kodzie produkcyjnym taka analiza pomaga unikać błędów granicznych, czyli sytuacji typu „o jeden raz za dużo” albo „o jeden raz za mało”, które są naprawdę częste.

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.