KWALIFIKACJA INF3 - CZERWIEC 2017

PYTANIE NR 36.
W języku PHP zapisano fragment kodu. Po zakończeniu pętli zmienna a przyjmie wartość
Ilustracja przedstawia prostokątną ramkę z czarnym obramowaniem na białym tle.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Pętla wykona się tyle razy, ile wynosi początkowa wartość $i.
Start: $i=10, $a=0. W każdej iteracji $a zwiększa się o 2, a $i zmniejsza o 1. Gdy $i dojdzie do 0, warunek while przestaje być spełniony. Zatem $a = 10 · 2 = 20.

Pełne wyjaśnienie:

W pokazanym fragmencie kodu (z ilustracji) ustawiono wartości początkowe: $i = 10 oraz $a = 0. Następnie wykonywana jest pętla while ($i). W PHP warunek pętli jest oceniany w kontekście logicznym: liczba różna od zera jest traktowana jako prawda, a zero jako fałsz. Oznacza to, że pętla będzie działać tak długo, jak długo $i nie osiągnie 0.

Wewnątrz pętli są dwie instrukcje wykonywane zawsze w tej samej kolejności:

  • $a = $a + 2; – w każdej iteracji zwiększamy $a o 2.
  • $i--; – w każdej iteracji zmniejszamy $i o 1, co przybliża nas do zakończenia pętli.

Policzmy liczbę iteracji. Skoro $i startuje od 10 i w każdej iteracji jest zmniejszane o 1, to po kolejnych przejściach przyjmie wartości: 9, 8, 7, …, 1, 0. Iteracji będzie dokładnie 10, bo dopiero gdy $i stanie się równe 0, warunek while ($i) będzie fałszywy i pętla się zatrzyma.

Skoro w każdej z 10 iteracji dodajemy 2 do $a, całkowity przyrost wynosi:

10 · 2 = 20

Dlatego poprawna jest odpowiedź "20".

Dlaczego pozostałe wartości są błędne? "10" wynika zwykle z pomylenia liczby iteracji z wynikiem (ignorowanie przyrostu o 2). "2" to częsty skutek przeanalizowania tylko pierwszej iteracji i nieuwzględnienia powtarzania pętli. Aby unikać takich błędów na egzaminie, warto robić krótką tabelę zmian zmiennych ($i i $a) dla 2–3 pierwszych iteracji i dopiero potem uogólniać liczbę powtórzeń.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
W PHP liczby w warunku są rzutowane na wartość logiczną: 0 oznacza fałsz, a każda liczba różna od zera oznacza prawdę. Dlatego zapis while ($i) będzie wykonywał pętlę, dopóki $i != 0.
Bo w każdej iteracji wykonywane jest $i--, czyli zmniejszenie o 1. Startujemy od 10 i kończymy na 0. Kolejne wartości sterujące to 10,9,8,...,1,0, więc przejść pętli jest 10, a zatrzymanie następuje dopiero po uzyskaniu zera.
Zapis $i-- to dekrementacja (zmniejszenie o 1). W takiej instrukcji wartość zmiennej jest zmieniana natychmiast po wykonaniu linii. W pętli oznacza to przesunięcie licznika w stronę warunku zakończenia.
Ustal liczbę iteracji z zachowania zmiennej sterującej, a potem policz przyrost. Jeśli pętla wykona się n razy, a w każdej iteracji dodajesz 2, to wynik to $a = 0 + n·2. To skraca obliczenia i ogranicza pomyłki.
Najczęściej myli się liczbę iteracji (np. zakłada 9 lub 11), ignoruje rzutowanie na boolean (że każda liczba ≠0 jest prawdą) albo nie trzyma kolejności instrukcji wewnątrz pętli. Pomaga prosta tabela: iteracja, $i, $a.
Tak. Jeśli warunek zależy od zmiennej (np. while ($i)) i wewnątrz pętli nie zmieniasz jej tak, by dążyła do zera, pętla może być nieskończona. Na egzaminie zawsze sprawdzaj, czy jest mechanizm dojścia do warunku stopu.
Pętla while jest używana, gdy nie zawsze z góry znasz liczbę powtórzeń, np. podczas pobierania kolejnych rekordów z wyniku zapytania, przetwarzania danych do momentu spełnienia warunku lub obsługi strumienia danych.
Weź 2–3 pierwsze iteracje i policz ręcznie: najpierw wykonaj linie w kolejności z kodu, potem zaktualizuj wartości zmiennych. Następnie uogólnij: policz ile razy zmienna sterująca się zmieni, i przemnoż przyrost zmiennej wynikowej.
Wtedy w każdej iteracji $a zwiększy się tylko o 1, a nie o 2. Przy 10 iteracjach wynik końcowy wyniósłby 10 (startując od 0). To pokazuje, że trzeba zwracać uwagę na wielkość przyrostu w pętli, nie tylko na liczbę powtórzeń.
Tak, dopóki $i jest różne od 0, warunek będzie prawdziwy. Dla wartości ujemnych pętla też będzie się wykonywać. Jeśli w środku masz $i--, to liczba będzie spadać dalej (np. -4, -5...), więc pętla nie dojdzie do zera i stanie się nieskończona.
info

Około 66% zdających odpowiada poprawnie na to pytanie. średnie

W praktyce zawodowej kluczowe jest to, że pętla wykona się tyle razy, ile wynosi początkowa wartość $i.Start: $i=10, $a=0.

Źródła:

  • PHP Manual: while - https://www.php.net/manual/en/control-structures.while.php (dostęp: 2026-04-01)
  • PHP Manual: Arithmetic Operators - https://www.php.net/manual/en/language.operators.arithmetic.php (dostęp: 2026-04-01)
  • PHP Manual: Type Juggling / Boolean - https://www.php.net/manual/en/language.types.boolean.php (dostęp: 2026-04-01)

Materiały:

  • Dokumentacja PHP: instrukcje sterujące (pętle)
  • Kurs podstaw PHP: zmienne, operatory, pętle
  • Ćwiczenia typu trace table (tabela zmian wartości zmiennych)

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego