1. Проанализируйте работу фрагмента программы и ответьте на вопросы.
x := 1;
y := 1;
while x < 5 do begin y := y * 2; x := x + 1 end
а) Сколько раз выполнится тело цикла?
б) Какое значение примет переменная x после завершения программы?
в) Какое значение примет переменная y после завершения программы?
г) Сколько раз выполнится тело цикла, если заменить условие на x <= 5?
д) Сколько раз выполнится тело цикла, если заменить условие на x >= 5?
е) Сколько раз выполнится тело цикла, если заменить условие на x > 0?
ж) Что произойдёт, если из тела цикла убрать команду x := x + 1?
з) Сколько раз выполнится тело цикла, если заменить команду x := x + 1 на x := x + 2?
и) Сколько раз выполнится тело цикла, если заменить команду x := x + 1 на x := x — 1?
Ответ
a) Тело цикла выполнится 4 раза.
б) Переменная x после завершения программы примет значение 5.
в) Переменная y после завершения программы примет значение 16.
г) Тело цикла выполнится 5 раз.
д) Тело цикла не выполнится ни разу, потому что начальное значение x уже больше или равно 5.
е) Тело цикла выполнится бесконечное количество раз, так как условие всегда будет выполняться (x всегда будет больше 0).
ж) Если удалить команду x := x + 1, цикл будет выполняться бесконечное количество раз, так как х не изменится и условие всегда будет выполняться (x всегда будет меньше 5).
з) Тело цикла выполнится 2 раза, так как x будет увеличиваться на 2 каждую итерацию.
и) Тело цикла все еще выполнится 4 раза, так как условие цикла будет остаться x < 5, но значение x изменится после каждой итерации следующим образом: 2, 3, 4, 5.