KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2010

PYTANIE NR 22.
Jaka będzie wyświetlona wartość zmiennej K po wykonaniu załączonego fragmentu programu?
Ilustracja przedstawia fragment kodu programu w języku C++ umieszczony w prostokątnym polu.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Wartość zmiennej K po wykonaniu fragmentu programu wynosi 32. Aby dojść do wyniku, trzeba prześledzić kod instrukcja po instrukcji, pilnując kolejności wykonywania operatorów oraz tego, jak każda instrukcja zmienia aktualny stan zmiennych. Typowe pomyłki wynikają z pominięcia jednego kroku lub złej interpretacji operatorów.

Pełne wyjaśnienie:

W zadaniach typu "jaka będzie wyświetlona wartość zmiennej po wykonaniu programu" poprawne rozwiązanie polega na śledzeniu wykonania kodu krok po kroku (tzw. dry-run/trace). Dla tej pozycji egzaminacyjnej końcowa wartość zmiennej K jest równa 32, czyli dokładnie taka, jaka zostanie wypisana po zakończeniu wykonywania podanego fragmentu.

Jak to robić metodycznie na egzaminie:

  • Zapisuj stan zmiennych po każdej instrukcji (np. w tabelce: krok → K → inne zmienne).
  • Sprawdzaj kolejność wykonywania operatorów (nawiasy, mnożenie/dzielenie przed dodawaniem/odejmowaniem, a także priorytety operatorów logicznych, jeśli występują).
  • Jeśli w kodzie są pętle, zwróć uwagę na warunek wejścia i zakończenia oraz na to, czy zmienna sterująca jest zmieniana w każdej iteracji.
  • Jeżeli pojawiają się operatory typu inkrementacja/dekrementacja, kluczowe jest rozróżnienie, czy zmiana następuje przed czy po użyciu wartości w wyrażeniu.

Dlaczego pozostałe propozycje (np. 34, 31, 30) bywają wybierane?

  • 34 często wynika z doliczenia dodatkowego kroku (np. "nadprogramowej" iteracji pętli albo podwójnego uwzględnienia inkrementacji).
  • 31 to typowy skutek pominięcia pojedynczej operacji zwiększającej wartość (albo błędu off-by-one w liczeniu iteracji).
  • 30 może wskazywać na błędne uproszczenie obliczeń (np. nieuwzględnienie części wyrażenia lub złe przyjęcie priorytetu operatorów).

W praktyce zawodowej technika informatyka taka umiejętność przekłada się na skuteczne debugowanie: ustawiasz punkt przerwania, wykonujesz kod krokowo i obserwujesz, w którym miejscu stan programu zaczyna odbiegać od oczekiwań. Na egzaminie wykonujesz to samo "na papierze", dbając o pełną kontrolę nad stanem zmiennych w każdym kroku.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Stosuj "dry-run": rozpisz kolejne kroki wykonania i po każdej instrukcji dopisz aktualne wartości zmiennych. Najpierw policz wyrażenia zgodnie z priorytetami operatorów, a przy pętlach kontroluj liczbę iteracji. To zmniejsza ryzyko pominięcia jednego kroku.
Bo łatwo pomylić moment sprawdzania warunku pętli (przed czy po wykonaniu bloku) oraz to, czy granica jest inkluzywna. Uczeń liczy "na palcach" iteracje, zamiast sprawdzić, jak zmienia się licznik i kiedy warunek przestaje być spełniony.
Najpierw uwzględnij nawiasy, potem operatory o wyższym priorytecie (np. mnożenie i dzielenie), a dopiero potem niższe (np. dodawanie). W wielu językach istotna jest też łączność operatorów oraz to, czy występuje rzutowanie typów w trakcie obliczeń.
Preinkrementacja zmienia wartość zmiennej zanim zostanie ona użyta w wyrażeniu, a postinkrementacja używa najpierw starej wartości, a dopiero potem zwiększa zmienną. W zadaniach egzaminacyjnych to klasyczny "haczyk", więc warto śledzić oba: wartość użyta oraz nowy stan zmiennej.
Gdy zmienne mają typ całkowity i w kodzie występuje operator dzielenia. W wielu językach wynik bywa zaokrąglany przez obcięcie części ułamkowej, co zmienia dalsze obliczenia. Jeśli nie znasz typu, sprawdź kontekst: deklaracje i sposób użycia zmiennych.
Czasem częściowo tak, jeśli fragment używa wspólnych konstrukcji (przypisanie, proste działania). Jednak szczegóły (np. inkrementacja, dzielenie, kolejność ewaluacji) są zależne od języka, więc brak rozpoznania języka zwiększa ryzyko błędu. Na egzaminie zwykle język jest typowy dla kwalifikacji.
Najczęstsze to: policzenie złej liczby iteracji, nieuwzględnienie zmiany licznika w każdej iteracji, pomylenie warunku pętli (np. < zamiast ≤), oraz zgubienie aktualnego stanu zmiennych. Pomaga tabelka kroków i zaznaczanie, kiedy wykonywany jest warunek.
Wróć do kodu i porównuj krok po kroku: która instrukcja jako pierwsza różni obie ścieżki obliczeń. Zwykle błąd pojawia się przy operatorach o wyższym priorytecie, przy inkrementacji/dekrementacji lub przy warunku pętli. Jedna różnica w stanie zmiennej "rozjedzie" cały wynik.
Bo dystraktory często odzwierciedlają typowe pomyłki: jedną iterację za dużo/za mało, pominięcie pojedynczej inkrementacji, albo policzenie wyrażenia bez właściwego priorytetu. Różnice o 1 są charakterystyczne dla błędów granicznych (off-by-one).
Ćwicz krótkie fragmenty kodu: przypisania, pętle, warunki i operatory. Rób to na czas, zawsze zapisując stany zmiennych po kolejnych instrukcjach. Dodatkowo przejrzyj zasady priorytetów operatorów dla języka, który pojawia się w Twoich arkuszach (np. skryptowego lub ogólnego).
info

Statystycznie 42% uczniów zna prawidłową odpowiedź. trudne

Eksperci podkreślają: "Wartość zmiennej K po wykonaniu fragmentu programu wynosi 32."

Źródła:

  • Wikipedia (EN), "Dry run (testing)" – opis metody śledzenia działania algorytmu, https://en.wikipedia.org/wiki/Dry_run_(testing) (dostęp: 2026-03-01)
  • Wikipedia (PL), "Debugowanie" – podstawowe pojęcia debugowania i analiza krokowa, https://pl.wikipedia.org/wiki/Debugowanie (dostęp: 2026-03-01)
  • Wikipedia (PL), "Operator (programowanie)" – ogólne informacje o operatorach i ich użyciu, https://pl.wikipedia.org/wiki/Operator_(programowanie) (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja używanego języka programowania (sekcja: operatory i kolejność ich wykonania)
  • Materiały o debugowaniu (breakpoint, krokowe wykonywanie, podgląd zmiennych)
  • Ćwiczenia typu "dry-run/trace table" do krótkich fragmentów kodu

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego