KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2012

PYTANIE NR 2.
Jaki będzie wynik działania algorytmu dla kolejno wprowadzanych danych wejściowych: -5, 2, -3, 4, 11, 8, -6, 0, 4 ?
Ilustracja przedstawia schemat blokowy algorytmu (algorytm iteracyjny).
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Algorytm inicjuje SUMA=0, następnie pobiera liczby aż do napotkania 0 (wtedy kończy działanie).
Dodaje wyłącznie liczby parzyste (warunek: liczba mod 2 = 0), także ujemne. Z ciągu są to: 2, 4, 8, -6, więc SUMA = 2+4+8-6 = 8.

Pełne wyjaśnienie:

Algorytm działa w pętli: najpierw ustawia SUMA := 0, potem wielokrotnie pobiera kolejne dane wejściowe.

Po wczytaniu liczby sprawdza warunek stopu: jeśli liczba = 0, algorytm natychmiast wyprowadza SUMA i kończy. To oznacza, że wartości występujące po 0 w podanej sekwencji (tu: ostatnia "4") nie są już przetwarzane.

Gdy liczba nie jest zerem, algorytm sprawdza parzystość: liczba mod 2 = 0. Jeżeli warunek jest spełniony, dodaje tę liczbę do SUMA, w przeciwnym razie ją pomija i przechodzi do kolejnego wejścia.

Dla danych: -5, 2, -3, 4, 11, 8, -6, 0, 4 przebieg jest następujący:

  • -5 jest nieparzysta → pominięta, SUMA=0
  • 2 parzysta → SUMA=2
  • -3 nieparzysta → SUMA=2
  • 4 parzysta → SUMA=6
  • 11 nieparzysta → SUMA=6
  • 8 parzysta → SUMA=14
  • -6 jest parzysta (bo dzieli się przez 2 bez reszty) → SUMA=14+(-6)=8
  • 0 → stop, wynik to 8

Dlatego poprawny wynik to 8.

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

  • Wynik "14" powstaje, gdy ktoś błędnie pomija ujemną liczbę parzystą -6 (to częsta pułapka: parzystość dotyczy także liczb ujemnych).
  • Wyniki "10" i "12" zwykle wynikają z pomyłek w śledzeniu pętli (np. błędnego dodania/odjęcia lub błędnego pominięcia jednej z liczb parzystych).

Wskazówka egzaminacyjna: przy schematach blokowych wykonuj "trace" w tabeli: (wejście → test 0 → test parzystości → aktualna SUMA). To minimalizuje pomyłki rachunkowe i pomaga pilnować momentu zakończenia na 0.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Oznacza sprawdzenie, czy liczba jest parzysta, czyli czy dzieli się przez 2 bez reszty. Jeśli reszta z dzielenia przez 2 wynosi 0, algorytm traktuje liczbę jako spełniającą warunek i (w tym zadaniu) dodaje ją do sumy.
Parzystość zależy od podzielności przez 2, a nie od znaku. Liczba -6 dzieli się przez 2 dokładnie: -6 = 2 · (-3), więc spełnia warunek parzystości. W typowych językach programowania sprawdzenie "-6 mod 2 = 0" także potwierdzi parzystość.
Algorytm kończy działanie w momencie, gdy wczytana liczba jest równa 0. Wtedy wyprowadza aktualną wartość SUMA i zatrzymuje się. Wszystkie liczby występujące po zerze w sekwencji wejściowej nie są już przetwarzane.
Najlepiej przejść dane po kolei i prowadzić krótką notatkę: aktualna liczba, czy jest 0, czy jest parzysta, nowa SUMA. To metoda "trace". Unikaj liczenia w pamięci, bo łatwo wtedy pominąć warunek stopu lub jedną z liczb parzystych.
W tym algorytmie nie, ponieważ sprawdzenie "czy liczba = 0?" jest wcześniejsze i oznacza STOP. Gdy pojawia się 0, algorytm kończy działanie i nie przechodzi już do testu parzystości ani do kroku dodawania.
Sumowane są tylko liczby parzyste pojawiające się przed pierwszym zerem. Dla sekwencji: -5, 2, -3, 4, 11, 8, -6, 0, 4 są to: 2, 4, 8 oraz -6. Liczby nieparzyste są pomijane, a liczba po 0 nie jest już brana pod uwagę.
Wynik 14 wychodzi, gdy ktoś poprawnie doda 2, 4 i 8, ale błędnie pominie liczbę -6, traktując ją jako "niepasującą" przez znak ujemny. To typowa pułapka: parzystość dotyczy także liczb ujemnych.
Pętlę widać po strzałce wracającej do wcześniejszego kroku (np. do bloku "Wprowadź liczbę"). Zwykle jest też blok decyzyjny (romb) z warunkiem, który decyduje: kontynuować czy zakończyć. W tym zadaniu takim warunkiem kończącym jest "liczba = 0".
Nie zawsze identycznie w szczegółach definicji (czasem mówi się o "reszcie" vs "modulo"), ale w wielu popularnych językach warunek parzystości da ten sam efekt: jeśli liczba jest podzielna przez 2, to sprawdzenie z użyciem operatora % lub mod zwróci 0. Dlatego -6 jest zaliczane jako parzyste.
Podobne są zadania z filtrowaniem i agregacją danych: zliczanie elementów spełniających warunek, obliczanie sumy tylko dodatnich, wyznaczanie minimum/maksimum do wartości stopu, czytanie liczb do wpisania "0" lub "-1". Kluczowe jest pilnowanie warunku stopu i kryterium wyboru.
info

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

Eksperci podkreślają: "Algorytm inicjuje SUMA=0, następnie pobiera liczby aż do napotkania 0 (wtedy kończy działanie).Dodaje wyłącznie liczby parzyste (warunek: liczba mod 2 = 0), także ujemne."

Źródła:

  • Python 3 Documentation: Expression evaluation – The % operator (remainder), https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations - accessed 2026-02-28
  • MDN Web Docs: Remainder (%) operator (JavaScript), https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder - accessed 2026-02-28
  • Oracle Java Documentation: Java Language Specification – Multiplicative Operators (* / %), https://docs.oracle.com/javase/specs/ - accessed 2026-02-28

Materiały:

  • Podręcznik/artykuły o schematach blokowych i strukturach sterujących (pętla, warunek)
  • Dokumentacja języka używanego na zajęciach: operator % / modulo i zachowanie dla liczb ujemnych
  • Zadania typu "śledzenie algorytmu" (trace tables) dla pętli z warunkiem stopu

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego