KWALIFIKACJA INF2 + INF3 - CZERWIEC 2008

PYTANIE NR 33.
Ile instrukcji w poniższym kodzie zwiększa wartość zmiennej liczba o 1?

short liczba = 0, i = 0;
if (liczba <= 0) liczba++;
do
{ liczba = liczba + 1; i = i - 2;
} while (i < 10);
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W kodzie są dwie instrukcje zwiększające wartość liczba o 1: liczba++ w instrukcji if oraz liczba = liczba + 1 w pętli do-while.
Instrukcja i = i - 2 zmniejsza zmienną i, więc nie spełnia warunku.

Pełne wyjaśnienie:

Pytanie dotyczy analizy statycznej fragmentu programu: zliczamy, ile razy w kodzie źródłowym występują instrukcje, których skutkiem jest zwiększenie wartości zmiennej liczba dokładnie o 1. Nie analizujemy, ile razy dana linia się wykona podczas działania programu.

W podanym kodzie mamy:

  • liczba++ w instrukcji if – operator ++ zwiększa wartość zmiennej o 1, więc ta linia spełnia warunek.
  • liczba = liczba + 1; wewnątrz pętli do-while – to nie jest operator ++, ale efekt obliczenia i przypisania jest taki sam: nowa wartość liczba jest o 1 większa od poprzedniej. Ta linia również spełnia warunek.

Pozostałe instrukcje nie zwiększają liczba o 1:

  • short liczba = 0, i = 0; to deklaracja i inicjalizacja, a nie zwiększanie wartości o 1.
  • i = i - 2; zmniejsza zmienną i o 2 (dekrementacja o 2), więc nie dotyczy ani zmiennej liczba, ani zwiększania o 1.
  • Warunek pętli while (i < 10) jest tylko sprawdzeniem logicznym i sam w sobie niczego nie inkrementuje.

Dlatego poprawna odpowiedź to 2.

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

  • 1 – to wynik typowego błędu polegającego na policzeniu wyłącznie operatora ++ i pominięciu instrukcji liczba = liczba + 1, która również zwiększa wartość o 1.
  • 3 lub 4 – sugeruje doliczenie instrukcji, które nie zwiększają liczba o 1 (np. deklaracji, warunku pętli albo i = i - 2), albo błędne liczenie "wykonań" w pętli zamiast wystąpień w kodzie.

Wskazówka egzaminacyjna: gdy pytanie mówi o "ile instrukcji w kodzie", zwykle chodzi o wystąpienia w tekście programu, a nie o liczbę iteracji pętli podczas uruchomienia.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Operator ++ zwiększa wartość zmiennej o 1. Może wystąpić jako przedrostkowy (++x) lub przyrostkowy (x++). W prostych instrukcjach oba zwiększają zmienną o 1, ale mogą różnić się wartością całego wyrażenia, gdy wynik jest dalej używany.
x++ to użycie operatora inkrementacji, a x = x + 1 to dodawanie z przypisaniem, które daje ten sam efekt końcowy (x rośnie o 1), ale jest inną konstrukcją składniową. W zadaniach trzeba czytać, czy pytanie dotyczy operatora ++, czy ogólnie zwiększania wartości.
Szukaj konstrukcji, które po wykonaniu ustawiają nową wartość o 1 większą: np. zmienna++, ++zmienna, a także zmienna = zmienna + 1 lub zmienna += 1. Uwaga: samo wystąpienie liczby 1 nie wystarcza — liczy się efekt przypisania do tej samej zmiennej.
Pytanie dotyczy liczby instrukcji w kodzie, czyli zliczania wystąpień w tekście programu (analiza statyczna). To inny typ rozumowania niż "ile razy linia wykona się w runtime". Nawet jeśli pętla działałaby wiele razy, w kodzie nadal jest jedna linia zwiększająca liczba o 1.
Nie. Taka instrukcja zmniejsza wartość zmiennej i o 2, więc jest dekrementacją o 2 (odejmowanie). Inkrementacja to zwiększanie, a w zadaniu dodatkowo chodzi o zwiększenie o 1 i do tego konkretnej zmiennej liczba.
Różnica pojawia się, gdy wynik inkrementacji jest częścią większego wyrażenia, np. w przypisaniu lub funkcji. ++x najpierw zwiększa x i zwraca wartość po zwiększeniu, a x++ zwraca starą wartość, a dopiero potem zwiększa x. W prostych liniach typu x++; efekt na x jest taki sam.
Typowe pomyłki to: (1) liczenie "wykonań" w pętli zamiast wystąpień w kodzie, (2) liczenie tylko symbolu ++ i ignorowanie x = x + 1, (3) doliczanie warunków (np. i < 10) jako "instrukcji zwiększających", choć one tylko porównują wartości.
Tak. x += 1 jest skróconą formą x = x + 1, więc po wykonaniu x będzie większe o 1. To nadal nie jest operator ++, tylko operator przypisania z dodawaniem. W testach trzeba zwracać uwagę, czy pytanie dotyczy "++", czy ogólnego efektu zwiększenia o 1.
W ścisłej terminologii C/C++ inkrementacja odnosi się do operatora ++. W nauczaniu czasem potocznie mówi się "inkrementacja" także o każdej operacji zwiększającej o 1 (np. x = x + 1). Jeśli zadanie nie doprecyzuje kryterium, mogą powstać dwie różne, logiczne interpretacje.
Najpierw ustal, czy pytanie dotyczy kodu źródłowego (ile instrukcji jest zapisanych) czy działania programu (ile razy się wykonają). Potem wskaż linie spełniające warunek (np. zwiększające o 1) i policz je. Na końcu sprawdź, czy nie pomyliłeś zmiennej (np. liczba vs i).
info

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

W praktyce zawodowej kluczowe jest to, że w kodzie są dwie instrukcje zwiększające wartość liczba o 1: liczba++ w instrukcji if oraz liczba = liczba + 1 w pętli do-while.Instrukcja i = i - 2 zmniejsza zmienną i, więc nie spełnia warunku.

Źródła:

  • cppreference.com, "Increment/decrement operators" (C) – opis operatorów ++ i --, https://en.cppreference.com/w/c/language/operator_incdec (dostęp: 2026-02-24)
  • cppreference.com, "Increment and decrement operators" (C++) – opis ++x i x++, https://en.cppreference.com/w/cpp/language/operator_incdec (dostęp: 2026-02-24)
  • cplusplus.com, "Increment and decrement operators" – omówienie x++ oraz ++x, https://cplusplus.com/doc/tutorial/operators/ (sekcja o inkrementacji/dekrementacji) (dostęp: 2026-02-24)

Materiały:

  • Dokumentacja cppreference dotycząca operatorów ++ oraz przypisania
  • Kurs podstaw C/C++ (operatory, instrukcje sterujące, pętle)
  • Zadania treningowe z czytania krótkich fragmentów kodu (analiza statyczna)

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego