W kodzie najpierw ustawiana jest wartość zmiennej k na 25. Następnie wykonywana jest pętla:
for i:=1 to (k mod 7) do write('*');
Kluczowe są dwie rzeczy:
- Operator mod zwraca resztę z dzielenia całkowitego. Obliczamy więc 25 mod 7.
- Pętla for w Pascalu wykona się dla kolejnych wartości licznika od wartości początkowej do końcowej (włącznie), o ile granica końcowa jest nie mniejsza od początkowej.
Krok 1: obliczenie 25 mod 7
25 : 7 = 3 i reszta, bo 7·3=21, a 25−21=4. Zatem k mod 7 = 4.
Krok 2: liczba iteracji pętli
Pętla ma postać for i:=1 to 4, więc licznik przyjmie wartości 1, 2, 3, 4. To oznacza 4 iteracje.
Krok 3: efekt instrukcji write
Instrukcja write('*') wypisuje jeden znak bez automatycznego przejścia do nowej linii (w odróżnieniu od typowego writeln). Skoro pętla wykonuje się 4 razy, to wypisze 4 znaki '*'.
Dlaczego pozostałe odpowiedzi są błędne?
- "1" wynika zwykle z błędnego założenia, że pętla wykona się tylko raz albo z pomylenia działania pętli z pojedynczym wywołaniem write.
- "7" to typowy skutek mylenia mod z wartością dzielnika lub myślenia "mod 7" jako "związane z 7". Operator nie zwraca 7, tylko resztę.
- "25" to efekt zakotwiczenia na wartości k i błędnego przekonania, że pętla wykona się k razy (tu granicą nie jest k, tylko k mod 7).
Wskazówka egzaminacyjna: zawsze najpierw policz wyrażenie w granicy pętli (tu: k mod 7), dopiero potem ustal liczbę powtórzeń i wynik wypisywania.