§ . № Трассировка цикла repeat
Дана последовательность операторов:
a := 1;
b := 1;
repeat
a := a + 1;
b := b * 2
until b > 8;
s := a + b
Сколько раз будет повторено тело цикла и какими будут значения переменных a, b, s после выполнения этой последовательности операторов? Обсудите этот вопрос в группе.
Решение
Оператор repeat ... until — цикл с постусловием: сначала выполняет тело, а затем проверяет, стало ли b > . Поэтому в таблице проверяем условие после изменения обеих переменных.
| Повторение | a |
b |
b > |
|---|---|---|---|
| до цикла | — | ||
| нет | |||
| нет | |||
| нет | |||
| да |
При b = условие ложно, поэтому требуется ещё одно повторение. После него a = , b = , условие истинно и цикл прекращается. Затем выполняется s := a + b, то есть
Ответ
a = , b = , s = .
Помогло?
