KWALIFIKACJA INF2 + INF3 - CZERWIEC 2009

PYTANIE NR 20.
W wyniku wykonania zamieszczonego programu, na ekranie monitora wyświetlone zostaną następujące liczby:
Ilustracja przedstawia fragment kodu programu napisanego w języku Pascal.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Pętla wykonuje się dla I od 0 do 6 włącznie. Warunek (I mod 2)=0 jest spełniony tylko dla liczb parzystych, bo wtedy reszta z dzielenia przez 2 wynosi 0. Instrukcja write(I) wypisuje więc kolejno: 0, 2, 4, 6.

Pełne wyjaśnienie:

Program wykonuje pętlę for I := 0 to 6 do, czyli zmienna I przyjmuje kolejno wartości: 0, 1, 2, 3, 4, 5, 6 (w Pascalu górna granica to 6 jest wliczana).

W każdej iteracji sprawdzany jest warunek (I mod 2)=0. Operator mod zwraca resztę z dzielenia całkowitego. Dla liczb parzystych reszta z dzielenia przez 2 wynosi 0, a dla nieparzystych wynosi 1.

  • Dla I=0: 0 mod 2 = 0, więc program wypisuje 0.
  • Dla I=1: 1 mod 2 = 1, więc nic nie wypisuje.
  • Dla I=2: 2 mod 2 = 0, więc wypisuje 2.
  • Dla I=3: 3 mod 2 = 1, więc nie wypisuje.
  • Dla I=4: 4 mod 2 = 0, więc wypisuje 4.
  • Dla I=5: 5 mod 2 = 1, więc nie wypisuje.
  • Dla I=6: 6 mod 2 = 0, więc wypisuje 6.

Ostatecznie na ekran trafiają liczby parzyste z zakresu 0..6, czyli "0, 2, 4, 6".

Dlaczego pozostałe propozycje są błędne? Sekwencje "0, 1, 2, 3" oraz "2, 3, 4, 5" ignorują filtr parzystości. Z kolei "3, 4, 5, 6" sugeruje, że pętla startuje od 3 albo że program wypisuje końcówkę zakresu, co nie wynika z kodu. Typową pułapką egzaminacyjną jest też mylenie znaczenia to 6 (włącznie) lub błędne rozumienie mod jako zwykłego dzielenia.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Pętla for ustawia zmienną sterującą na wartość początkową (tu: 0) i zwiększa ją o 1 aż do wartości końcowej (tu: 6) włącznie. Oznacza to 7 iteracji: 0,1,2,3,4,5,6. To częsty punkt sprawdzany na egzaminie.
mod zwraca resztę z dzielenia całkowitego. Przykładowo: 6 mod 2 = 0, 5 mod 2 = 1. Dzięki temu łatwo sprawdzić parzystość: liczba jest parzysta, gdy n mod 2 = 0.
Jeśli liczba dzieli się przez 2 bez reszty, to reszta z dzielenia wynosi 0. Dokładnie to sprawdza zapis (I mod 2)=0. Dla 0,2,4,6 warunek jest prawdziwy, a dla 1,3,5 fałszywy, więc wypisywane są tylko parzyste.
Instrukcja write(I) wypisuje samą wartość liczbową bez automatycznego końca linii (w przeciwieństwie do writeln). Jeśli nie dodasz separatorów, liczby mogą "skleić się" w jeden ciąg, np. 0246. W testach często zapisuje się to jako "0, 2, 4, 6" dla czytelności.
W Pascalu zapis for i := a to b do oznacza, że wartości a i b są uwzględnione (włącznie). W innych językach bywa inaczej, więc na egzaminie trzeba trzymać się reguł Pascala i czytać dokładnie słowa kluczowe.
Liczby nieparzyste dają resztę 1 przy dzieleniu przez 2, więc dla nich I mod 2 nie jest równe 0. Warunek if (I mod 2)=0 then nie zostaje spełniony, a to oznacza, że instrukcja wypisania nie wykona się w tych iteracjach.
Najczęściej: (1) uznanie, że "to 6" oznacza do 5 (błąd granicy włącznie), (2) pomylenie mod z dzieleniem całkowitym, (3) pomijanie warunku i wypisywanie wszystkich wartości, (4) założenie startu pętli od 1 mimo jawnego 0 w kodzie.
Zmieni się zakres iteracji: pętla wykona się także dla I=7. Ponieważ 7 jest nieparzyste, warunek (I mod 2)=0 nadal go odrzuci, więc wypisane zostaną te same parzyste z nowego zakresu: 0,2,4,6. Różnica byłaby widoczna dopiero przy dodaniu kolejnej parzystej liczby, np. 8.
Tak, 0 jest liczbą parzystą, bo dzieli się przez 2 bez reszty: 0 mod 2 = 0. W zadaniach z pętlą startującą od 0 ma to znaczenie, bo 0 spełnia warunek parzystości i zostanie wypisane, jeśli program filtruje liczby parzyste.
Najlepsza metoda to krótka tabela: wypisz wartości I po kolei (tu 0..6) i obok policz I mod 2. Następnie zaznacz, kiedy warunek jest prawdziwy. To minimalizuje błędy nieuwagi i pozwala szybko zweryfikować, które iteracje wykonują instrukcję write.
info

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

W praktyce zawodowej kluczowe jest to, że pętla wykonuje się dla I od 0 do 6 włącznie.

Źródła:

  • Free Pascal Reference Guide: for statement (pętla for) — https://www.freepascal.org/docs-html/ref/refsu59.html (dostęp: 2026-03-01)
  • Free Pascal Reference Guide: mod operator (operatory arytmetyczne, w tym mod) — https://www.freepascal.org/docs-html/ref/refsu6.html (dostęp: 2026-03-01)
  • Embarcadero Delphi DocWiki: Mod (Delphi/Pascal operator) — https://docwiki.embarcadero.com/RADStudio/en/Mod_(Delphi) (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja Pascala/FreePascal: pętla for oraz instrukcja if
  • Ćwiczenia z operatorem mod i warunkami (liczby parzyste/nieparzyste)
  • Zadania typu "co wypisze program" dla różnych zakresów pętli

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego