KWALIFIKACJA INF3 - STYCZEŃ 2024

PYTANIE NR 30.
Jeśli zmienna
$x 
przechowuje dowolną liczbę naturalną dodatnią, przedstawiony kod źródłowy PHP ma za zadanie wyświetlić
Ilustracja przedstawia fragment kodu źródłowego w języku PHP, który jest umieszczony w prostokątnym polu.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawna odpowiedź wynika z typowej konstrukcji pętli, w której licznik startuje od 0 i jest zwiększany o 1, dopóki spełniony jest warunek "licznik < x".
W efekcie wypisywane są kolejne wartości: 0, 1, 2, …, x−1 (łącznie x liczb). Pozostałe opcje opisują odliczanie w dół, losowanie albo wczytywanie danych, czego taki kod nie realizuje.

Pełne wyjaśnienie:

W zadaniach tego typu sprawdza się, czy potrafisz odczytać zakres wartości generowanych przez pętlę. Jeżeli zmienna $x przechowuje dodatnią liczbę naturalną, a kod realizuje iterację od zera z warunkiem zakończenia zależnym od x, to kluczowe są dwa elementy: wartość początkowa licznika oraz warunek w pętli.

Najczęstszy wzorzec prowadzący do wyniku z odpowiedzi prawidłowej to konstrukcja, w której licznik zaczyna od 0 i jest zwiększany o 1, a pętla działa tak długo, jak długo licznik jest mniejszy od x. To oznacza, że:

  • pierwszą wypisywaną liczbą jest 0,
  • ostatnią wypisywaną liczbą jest x−1,
  • łączna liczba wypisań wynosi dokładnie x.

Dlatego poprawne jest: kolejne liczby od 0 do x-1.

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

  • "kolejne liczby od x do 0" – to opisuje odliczanie w dół (dekrementację) i zwykle wymagałoby startu od x oraz warunku typu ">= 0" i zmniejszania licznika. Sam fakt istnienia x nie oznacza jeszcze kierunku liczenia.
  • "losowe liczby z przedziału (0, x)" – losowość wymaga użycia funkcji generującej liczby pseudolosowe oraz zwykle nie daje rosnącej sekwencji. Pętla bez funkcji losującej generuje wartości deterministyczne.
  • "liczby wczytywane z klawiatury…" – w aplikacjach webowych PHP nie czyta "z klawiatury" w sensie konsolowym; do pobierania danych używa się np. parametrów żądania lub formularzy. Taka logika wymagałaby wczytywania wejścia i porównywania go z x, czego nie realizuje proste wypisywanie licznika.

Wskazówka egzaminacyjna: zawsze sprawdzaj, czy warunek jest < x czy <= x. To najczęstsze miejsce pomyłki o 1 (błąd granicy przedziału).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To znaczy, że generowana jest sekwencja kolejnych wartości zaczynająca się od 0 i kończąca na liczbie o 1 mniejszej niż x. Dla x=5 będą to: 0,1,2,3,4. Taki zakres zwykle wynika z warunku typu "licznik < x".
Sprawdź operator w warunku pętli: jeśli jest "< x", ostatnia wartość to x-1. Jeśli jest "<= x", pętla dojdzie do x. To typowa pułapka "o jeden" i częsty błąd na egzaminach.
Ponieważ indeksowanie tablic i wielu struktur danych jest od 0. Dzięki temu elementy mają indeksy 0..n-1, a warunek "i < n" jest prosty i bezpieczny. Taki styl ułatwia iterowanie po danych i zmniejsza ryzyko wyjścia poza zakres.
Gwarantuje, że x > 0, więc pętla ma sens i liczba iteracji jest dodatnia. Gdyby x mogło być 0 lub ujemne, pętla mogłaby nie wykonać się ani razu albo wymagałaby dodatkowych zabezpieczeń w kodzie.
Zwykle nie. Odliczanie w dół wymaga startu od x (lub x-1) oraz dekrementacji licznika, np. "i--", i warunku zakończenia typu "i >= 0". Kod liczący w górę z warunkiem "i < x" nie da zakresu x..0.
Musiałyby pojawić się funkcje generujące losowość, np. random_int() lub inne mechanizmy losujące, oraz wypisywanie wylosowanej wartości w każdej iteracji. Sama pętla bez wywołania funkcji losującej nie tworzy liczb losowych.
Najczęściej używa się pętli i łączenia wyniku, np. przez dopisywanie do łańcucha lub wypisywanie z separatorem. Ważne jest, aby kontrolować spacje/przecinki i nie zostawić zbędnego separatora na końcu, np. po ostatniej liczbie.
PHP na serwerze obsługuje żądania HTTP, a dane wejściowe pochodzą zwykle z formularzy i parametrów (np. GET/POST), a nie z klawiatury jak w aplikacjach konsolowych. Logika "czytaj aż do x" wymagałaby mechanizmu pobierania wejścia, którego w typowej pętli wypisującej nie ma.
Najczęściej: pomyłka w granicy (x vs x-1), nieuwzględnienie wartości początkowej licznika, założenie złego kierunku liczenia (w górę/w dół) oraz mylenie sekwencji deterministycznej z losową. Pomaga szybkie sprawdzenie pierwszych 2–3 iteracji "na sucho".
Zrób symulację: wypisz wartość licznika na starcie, sprawdź warunek, wykonaj krok inkrementacji i powtórz 2–3 razy. Potem określ wzorzec i ostatni krok, w którym warunek jest jeszcze spełniony. To szybko ujawnia, czy kończy się na x-1 czy x.
info

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

W praktyce zawodowej kluczowe jest to, że pozostałe opcje opisują odliczanie w dół, losowanie albo wczytywanie danych, czego taki kod nie realizuje.

Źródła:

  • PHP Manual: for - https://www.php.net/manual/en/control-structures.for.php - accessed 2026-02-18
  • PHP Manual: while - https://www.php.net/manual/en/control-structures.while.php - accessed 2026-02-18
  • PHP Manual: Operators - Comparison Operators - https://www.php.net/manual/en/language.operators.comparison.php - accessed 2026-02-18

Materiały:

  • Dokumentacja PHP: instrukcje sterujące (pętle for/while)
  • Ćwiczenia: analiza zakresów pętli dla różnych warunków (<, <=, >, >=)
  • Zadania praktyczne: wypisywanie sekwencji liczb i iteracja po tablicach

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego