W pokazanym fragmencie programu kluczowe są dwa elementy: operator przypisania złożonego += oraz wpływ instrukcji wewnątrz pętli for na końcową wartość zmiennej.
1) Instrukcja przed pętlą
Zmienne startują jako: X=6 oraz Y=7. Zapis X += Y oznacza dokładnie to samo co X = X + Y. Zatem po tej instrukcji:
X = 6 + 7 = 13.
2) Liczba iteracji pętli for
Pętla ma postać "for (I=3; I>0; I--)". Oznacza to, że zaczynamy od I=3, wykonujemy ciało pętli dopóki warunek I>0 jest spełniony, a po każdej iteracji zmniejszamy I o 1. Ciało wykona się dla I=3, potem I=2, potem I=1, czyli łącznie trzy iteracje.
3) Wpływ instrukcji w pętli na X
W każdej iteracji wykonują się kolejno dwie instrukcje: "X--;" oraz "X++;". Pierwsza zmniejsza X o 1, a druga zwiększa X o 1. Efekt netto pojedynczej iteracji to 0 (najpierw -1, potem +1). To oznacza, że niezależnie od liczby iteracji, jeśli w każdej iteracji wykonuje się dokładnie taka para operacji, końcowa wartość X się nie zmienia.
Wniosek
Skoro po "X += Y" mamy X=13, a pętla nie zmienia X, to po wykonaniu całości końcowo X = 13.
Dlaczego pozostałe wartości nie pasują?
- "7" wynika z pomylenia X += Y z X = Y albo z patrzenia wyłącznie na wartość Y. W tym kodzie X nie jest zastępowane przez 7, tylko powiększane o 7.
- "10" może wynikać z błędnego zliczenia iteracji lub założenia, że pętla zmienia X, mimo że instrukcje w jej wnętrzu się kompensują.
- "6" odpowiada wartości początkowej X i sugeruje pominięcie instrukcji "X += Y" podczas analizy.
Na egzaminie pomagają dwa nawyki: zapisanie sobie równoważności "+=" oraz szybkie sprawdzenie, czy w pętli nie ma par działań znoszących się (np. -- i ++ wykonywane jedno po drugim).