KWALIFIKACJA INF3 - CZERWIEC 2018

PYTANIE NR 33.
Przedstawiony kod źródłowy ma za zadanie wyświetlić

$liczba = 1;
while ($liczba != 0)
{
$liczba = rand(0, 100);
echo $liczba;
}

A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Pętla wykonuje się, dopóki $liczba != 0.
Na początku $liczba ma wartość 1, więc pętla startuje. W każdej iteracji losuje się rand(0, 100) i natychmiast wypisuje echo. Gdy zostanie wylosowane 0, zostanie ono także wypisane, a następnie warunek pętli przestanie być spełniony i program zakończy działanie.

Pełne wyjaśnienie:

W kodzie ustawiono $liczba = 1, więc warunek pętli while ($liczba != 0) jest na starcie spełniony (1 nie jest równe 0). To oznacza, że program wejdzie do pętli co najmniej raz.

W każdej iteracji dzieją się dwie kluczowe rzeczy:

  • $liczba = rand(0, 100); – losowana jest liczba całkowita z zakresu od 0 do 100, włącznie z wartościami brzegowymi.
  • echo $liczba; – wylosowana liczba jest wypisywana na wyjście.

Pętla powtarza się tak długo, jak długo po losowaniu zmienna $liczba nie przyjmie wartości 0. Gdy wylosuje się 0, następuje ważny szczegół: 0 zostaje wypisane, bo instrukcja echo znajduje się w tej samej iteracji po przypisaniu. Dopiero po zakończeniu bloku, przy kolejnym sprawdzeniu warunku, program stwierdza, że $liczba == 0 i przerywa pętlę.

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

  • "kolejne liczby od 1 do 100" – kod nie zwiększa zmiennej o 1 i nie ma licznika, tylko losuje.
  • "wczytane z klawiatury…" – brak funkcji wejścia (np. odczytu z STDIN lub formularza), jest wyłącznie rand().
  • "wylosowane liczby od 1 do 99" – zakres losowania obejmuje także 0 i 100, więc te wartości mogą się pojawić.

Uwaga praktyczna: w treści pytania kod bywa osadzony w HTML (np. z tagiem <p>). Na egzaminie kluczowa jest jednak analiza samej logiki PHP: zakres rand() oraz warunek zakończenia pętli.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Pętla while sprawdza warunek przed każdą iteracją. Jeśli warunek jest prawdziwy, wykona kod w bloku i wróci do sprawdzenia warunku. W tym zadaniu iteracje trwają, dopóki zmienna $liczba nie stanie się równa 0.
Na początku jest przypisanie $liczba = 1, a warunek brzmi $liczba != 0. Ponieważ 1 nie jest równe 0, wejście do pętli nastąpi od razu. Dopiero później wylosowana wartość może zakończyć działanie pętli.
rand(0, 100) zwraca liczbę całkowitą z przedziału od 0 do 100 włącznie. Oznacza to, że mogą pojawić się wartości brzegowe, czyli zarówno 0, jak i 100, a nie tylko liczby pośrednie.
Tak. Gdy w danej iteracji zostanie wylosowane 0, najpierw następuje przypisanie do $liczba, potem wykonuje się echo $liczba, więc 0 zostaje wypisane. Dopiero kolejne sprawdzenie warunku pętli zakończy działanie programu.
Najczęstsze pomyłki to: nieuwzględnienie wartości brzegowych (0 i 100), założenie, że 0 "kończy" pętlę zanim zostanie wypisane, oraz mylenie losowania z generowaniem kolejnych liczb. Warto śledzić wykonanie linia po linii.
W kodzie nie ma inkrementacji (np. $liczba++) ani żadnego licznika. Zamiast tego w każdej iteracji jest losowanie rand(0, 100), więc wyniki nie tworzą uporządkowanego ciągu 1, 2, 3… tylko losową sekwencję.
Tak, teoretycznie pętla może wykonywać się bardzo długo, bo zakończenie zależy od wylosowania 0. Prawdopodobieństwo trafienia 0 w jednej iteracji jest stałe, ale nie ma gwarancji, po ilu iteracjach to nastąpi (może szybko albo po wielu losowaniach).
Najprościej dodać separator po echo, np. znak nowej linii lub <br> dla HTML. Przykład: wypisywać $liczba i potem dopisać separator, aby wyniki nie sklejały się w jeden ciąg znaków.
rand() stosuje się do generowania danych testowych, losowań, symulacji i gier, gdy wynik ma być pseudolosowy. Jeśli potrzebujesz liczb od użytkownika, używa się mechanizmów wejścia (formularze, parametry URL, odczyt z STDIN), których w tym kodzie nie ma.
Wskazuje to wywołanie funkcji rand(0, 100). Dwa argumenty oznaczają dolną i górną granicę losowania. Na egzaminie zawsze sprawdzaj, czy granice są włączone (dla rand w PHP są), bo to wpływa na poprawną interpretację wyniku.
info

Statystycznie 58% uczniów zna prawidłową odpowiedź. średnie

Specjaliści zwracają uwagę: "Pętla wykonuje się, dopóki $liczba != 0.Na początku $liczba ma wartość 1, więc pętla startuje."

Źródła:

  • PHP Manual: rand — Generate a random integer, https://www.php.net/manual/en/function.rand.php (dostęp: 2026-03-05)
  • PHP Manual: while — While loops, https://www.php.net/manual/en/control-structures.while.php (dostęp: 2026-03-05)
  • PHP Manual: echo — Output one or more strings, https://www.php.net/manual/en/function.echo.php (dostęp: 2026-03-05)

Materiały:

  • Dokumentacja PHP: instrukcje sterujące (while)
  • Dokumentacja PHP: funkcje losowe (rand)
  • Kurs podstaw PHP: zmienne, pętle, instrukcje warunkowe

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego