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.