Проанализируйте работу программы:
x = 1
y = 1
while x < 5:
y *= 2
x += 1
Ответьте на вопросы.
а) Сколько раз выполнится тело цикла?
б) Какое значение примет переменная x после завершения программы?
в) Какое значение примет переменная y после завершения программы?
г) Сколько раз выполнится тело цикла, если заменить условие на x <= 5?
д) Сколько раз выполнится тело цикла, если заменить условие на x >= 5?
е) Сколько раз выполнится тело цикла, если заменить условие на x > 0?
ж) Что произойдёт, если из тела цикла убрать команду x += 1?
з) Сколько раз выполнится тело цикла, если заменить команду x += 1 на x += 2?
и) Сколько раз выполнится тело цикла, если заменить команду x += 1 на x -= 1?
Цикл while проверяет условие перед каждым выполнением тела. В исходной программе x растёт на единицу, а y удваивается. Проследим значения:
| Число выполнений | x | y | Условие x < |
|---|---|---|---|
| истинно | |||
| истинно | |||
| истинно | |||
| истинно | |||
| ложно |
а) Тело выполнилось при x = , то есть
б) После четвёртого прибавления единицы x = . Условие ложно, поэтому значение больше не меняется.
в) Последовательные удвоения дают ; итоговое y = .
г) При x <= тело дополнительно выполняется для x = ; после этого x = и цикл заканчивается. Всего
д) Начальное x = , а ложно. Тело не выполнится ни разу.
е) При x > начальное условие истинно, а x только увеличивается. Условие никогда не станет ложным, цикл бесконечен.
ж) Без x += значение x останется равным всегда истинно: программа зациклится, а y продолжит удваиваться.
з) При шаге x после повторений: . Тело выполнится два раза, затем станет ложным.
и) При вычитании единицы x принимает значения . Каждое из них меньше
а) x = ; в) y = ; г)
