W zadaniach tego typu kluczowe jest śledzenie stanu zmiennych po każdej instrukcji. W kodzie z ilustracji są dwie zmienne całkowite: q i w, a następnie dwie instrukcje if-then-else.
Stan początkowy: q=3, w=2.
- Sprawdzenie warunku q<w oznacza: czy 3<2? To fałsz, więc nie wykona się instrukcja z gałęzi then, tylko gałąź else. W efekcie wykonywane jest w:=w+q, czyli w=2+3=5. Po tym kroku: q=3, w=5.
- Drugi warunek to q>w, czyli czy 3>5? To również fałsz, więc znów wykonuje się gałąź else. Wykonywane jest q:=w+q, a więc q=5+3=8. Stan końcowy: q=8, w=5.
Instrukcja writeln(q, ',', w) wypisuje wartości w ustalonej kolejności: najpierw q, potem w. Dlatego poprawny wynik to 8, 5.
Dlaczego pozostałe odpowiedzi są błędne?
- Wyniki z q=5 lub q=3 zwykle wynikają z pominięcia faktu, że w zmienia się w pierwszym if, a drugi if korzysta już z nowych wartości.
- Wyniki typu 5, 7 albo 2, 5 mogą powstać po błędnym założeniu, że wykonują się obie gałęzie (then i else) albo po odwróceniu znaków porównania.
- Wynik 3, 8 sugeruje zamianę kolejności wypisywania (w przed q) lub błędne przypisanie do niewłaściwej zmiennej.
Wskazówka egzaminacyjna: rób krótką tabelę "krok → instrukcja → q → w" i po każdym przypisaniu przepisuj nowe wartości. To eliminuje większość pomyłek.