Проанализируйте работу фрагмента программы и ответьте на вопросы.
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?
Цикл while проверяет условие до каждого выполнения тела. Проследим исходные значения.
| Число выполнений | x |
y |
x < |
|---|---|---|---|
| да | |||
| да | |||
| да | |||
| да | |||
| нет |
а–в) Условие истинно перед четырьмя выполнениями. После четвёртого x = , y = ; цикл завершается.
г) При условии x <= тело выполняется ещё и при x = . После этого x = , условие ложно: всего
д) В самом начале ложно. Тело не выполнится ни разу.
е) При x > значение x начинается с
ж) Если удалить увеличение x, оно постоянно равно всегда истинно: программа зациклится.
з) При прибавлении x: . После второго выполнения условие ложно, значит, тело выполняется
и) При вычитании x идут
а) x = ; в) y = ; г)
