KWALIFIKACJA INF3 - PAŹDZIERNIK 2016

PYTANIE NR 28.
Ile iteracji będzie miała przedstawiona pętla zapisana w języku PHP, zakładając, że zmienna sterująca nie jest modyfikowana we wnętrzu pętli?

for ($i = 0; $i <= 10; $i++) { ……… }

A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Pętla startuje od $i = 0 i wykonuje się, dopóki spełniony jest warunek $i <= 10. Ponieważ inkrementacja $i++ zwiększa wartość o 1 po każdym przebiegu, blok wykona się dla $i = 0,1,2,...,10. To daje 11 iteracji (zakres domknięty).

Pełne wyjaśnienie:

W PHP pętla for ma trzy kluczowe elementy: inicjalizację, warunek kontynuacji i krok (modyfikację licznika). Dla kodu:

for ($i = 0; $i <= 10; $i++) { ... }

1) Inicjalizacja: zmienna sterująca ma wartość początkową $i = 0.

2) Warunek: pętla wykonuje kolejne przebiegi tak długo, jak długo prawdą jest $i <= 10. Znak <= oznacza "mniejsze lub równe", więc wartość 10 także jest dopuszczalna.

3) Krok: po każdym wykonaniu bloku zwiększamy licznik o 1, bo $i++ to inkrementacja.

Zatem blok pętli wykona się dla kolejnych wartości:

  • $i = 0 (pierwszy przebieg)
  • $i = 1
  • ...
  • $i = 10 (ostatni przebieg, bo 10 nadal spełnia warunek)

Liczba liczb całkowitych w przedziale od 0 do 10 włącznie wynosi 11, więc pętla ma 11 iteracji.

Dlaczego pozostałe odpowiedzi są błędne?

  • 10 – to typowy błąd "off-by-one": traktowanie warunku jakby był $i < 10 albo pominięcie jednej z granic zakresu.
  • Nieskończenie wiele – pętla nie jest nieskończona, ponieważ licznik jest modyfikowany w części kroku ($i++), a warunek ma osiągalną granicę (po $i = 10 kolejne zwiększenie daje 11 i warunek przestaje być spełniony).

W praktyce takie zadania uczą dokładnego czytania warunku (czy jest < czy <=) i kontrolowania granic iteracji, co jest krytyczne np. przy iterowaniu po indeksach tablic.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Sprawdź trzy elementy: wartość startową, warunek (np. $i <= 10) oraz krok (np. $i++). Następnie wypisz wartości licznika, dla których warunek jest spełniony. Liczba tych wartości to liczba iteracji.
Operator <= dopuszcza także wartość graniczną (np. 10), więc pętla wykona się również dla tej wartości. Przy < wartość graniczna nie jest dozwolona, więc ostatni przebieg wypada wcześniej.
$i++ zwiększa wartość zmiennej $i o 1 po zakończeniu każdego przebiegu pętli. Dzięki temu licznik przesuwa się krok po kroku do wartości, przy której warunek przestaje być spełniony.
Tak, jeśli warunek zawsze jest prawdziwy lub licznik nie zbliża się do granicy (np. brak zmiany licznika albo zły kierunek zmiany). W przykładzie z $i++ i warunkiem $i <= 10 pętla kończy się po osiągnięciu 11.
Licznik przyjmie wartości całkowite: 0, 1, 2, ..., 10. Ponieważ 10 jest wliczane (warunek <=), to jest to zakres domknięty. Łącznie daje to 11 kolejnych wartości.
Wiele osób czyta "do 10" i automatycznie kojarzy to z 10 krokami, pomijając fakt, że start jest od 0. Dodatkowo myli się < z <=, co prowadzi do typowego błędu granicznego (off-by-one).
Możesz tymczasowo dodać wypisywanie licznika, np. echo $i; w bloku pętli albo użyć debuggera i obserwować zmienną $i. Zliczysz, ile razy wykonuje się blok oraz jakie wartości przyjmuje licznik.
foreach jest wygodniejszy do przechodzenia po elementach tablicy bez ręcznego pilnowania indeksu. for przydaje się, gdy potrzebujesz indeksu, kroku innego niż 1, albo iterujesz po zakresie liczbowym niezwiązanym bezpośrednio z tablicą.
Zawsze ustal, czy zakres ma być domknięty czy niedomknięty, i dobierz operator (< vs <=). Dla tablic często używa się $i < count($t). Dobrą praktyką jest test na małych danych i sprawdzenie pierwszej oraz ostatniej iteracji.
Często pojawiają się: zliczanie iteracji, analiza warunku zakończenia, generowanie fragmentów HTML w pętli, przetwarzanie tablic oraz proste algorytmy (sumowanie, filtrowanie). Kluczowe jest rozumienie granic i kolejności wykonywania części pętli.
info

Około 78% zdających odpowiada poprawnie na to pytanie. średnio łatwe

W praktyce zawodowej kluczowe jest to, że pętla startuje od $i = 0 i wykonuje się, dopóki spełniony jest warunek $i &lt;= 10.

Źródła:

  • PHP Manual: Control Structures - for, https://www.php.net/manual/en/control-structures.for.php - dostęp 2026-02-18
  • PHP Manual: Operators - Comparison Operators, https://www.php.net/manual/en/language.operators.comparison.php - dostęp 2026-02-18
  • W3Schools: PHP Loops - For Loop, https://www.w3schools.com/php/php_looping_for.asp - dostęp 2026-02-18

Materiały:

  • Oficjalna dokumentacja PHP: konstrukcje sterujące (pętle)
  • Ćwiczenia z algorytmiki: iteracje i błędy off-by-one
  • Kurs PHP dla początkujących (sekcja o pętlach i operatorach porównania)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego