Pętla while należy do konstrukcji iteracyjnych typu pre-test: warunek logiczny jest sprawdzany zanim wykona się ciało pętli, i to przy każdej próbie wejścia do kolejnej iteracji (również do pierwszej).
W analizowanym fragmencie kodu najpierw ustawiane są wartości zmiennych:
- k:=15
- i:=5
- j:=i+7, więc j=5+7=12
Następnie pojawia się pętla: while (k < j) do j:=j-k;. Podstawiamy aktualne wartości: sprawdzamy, czy 15 < 12. To zdanie jest fałszywe, więc program nie wchodzi do pętli nawet na jedną iterację. W konsekwencji przypisanie j:=j-k nie zostanie wykonane ani razu.
Dlaczego pozostałe odpowiedzi nie pasują?
- "pętla ... dokładnie raz" byłaby prawdziwa tylko wtedy, gdy warunek na starcie byłby prawdziwy, a po jednej iteracji stałby się fałszywy. Tutaj warunek jest fałszywy od początku.
- "pętla ... nieokreśloną ilość razy" opisuje sytuacje, gdy liczba iteracji zależy od danych wejściowych lub wartości zmiennych, ale nadal wymaga, by warunek początkowo był prawdziwy. W tym fragmencie nie ma nawet pierwszej iteracji.
- "instrukcja warunkowa" dotyczy konstrukcji wyboru (np. if), a nie iteracji. while jest pętlą, a nie pojedynczym rozgałęzieniem.
W praktyce taki przypadek bywa celowy (warunek strażniczy), albo wskazuje na błąd inicjalizacji danych. Na egzaminie warto zawsze wykonać krótki "dry-run": policzyć wartości po przypisaniach i dopiero potem ocenić warunek pętli.