Дона программа. Ответьте на все вопросы

Ответы
Ответ:
4) 7 раз
5) x = 11, y = 20
6) Программа "застрянет" в бесконечном цикле
7) ??? Условия x > 0 нет в коде программы. Возможно это опечатка
Объяснение:
Рассмотрим программу.
Декларируются две переменные: x и y. ( var x, y : Integer; )
Переменная x получает значение 4. (x := 4; )
Затем запускается "цикл с условием". Такой вид цикла продолжается до тех пор, пока его условие верно. В вашем случае условие звучит так: "повторять пока x < 11 ( while x < 11 do)
На каждой итерации (проходе) цикла выполняется следующее:
а. Переменная y получает удвоенное значение x ( y := x * 2; )
б. На экран выводится значение y, выводится пробел, при этом,
курсор НЕ переносится на новую строку.
в. Переменная x, управляющая циклом, увеличивается на единицу.
По завершению цикла программа заканчивается.
4) Чтобы ответить на этот вопрос, рассмотрим все итерации цикла
Изначально: x = 4, y = не определено
1) x < 11 ? { 4 < 11 ?} да, тогда y := x * 2 {y := 4 * 2 = 8};
печать(y, ' ') {печать(8, ' ')} на экране: 8
x := x + 1 {x := 4 + 1 =5 };
2) x < 11 ? { 5 < 11 ?} да, тогда y := x * 2 {y := 5 * 2 = 10};
печать(y, ' ') {печать(10, ' ')} на экране: 8 10
x := x + 1 {x := 5 + 1 =6 };
3) x < 11 ? { 6 < 11 ?} да, тогда y := x * 2 {y := 6 * 2 = 12};
печать(y, ' ') {печать(12, ' ')} на экране: 8 10 12
x := x + 1 {x := 6 + 1 =7 };
4) x < 11 ? { 7 < 11 ?} да, тогда y := x * 2 {y := 7 * 2 = 14;
печать(y, ' ') {печать(14, ' ')} на экране: 8 10 12 14
x := x + 1 {x := 7 + 1 =8 };
5) x < 11 ? { 8 < 11 ?} да, тогда y := x * 2 {y := 8 * 2 = 16;
печать(y, ' ') {печать(16, ' ')} на экране: 8 10 12 14 16
x := x + 1 {x := 8 + 1 =9 };
6) x < 11 ? { 9 < 11 ?} да, тогда y := x * 2 {y := 9 * 2 = 18;
печать(y, ' ') {печать(18, ' ')} на экране: 8 10 12 14 16 18
x := x + 1 {x := 9 + 1 =10 };
7) x < 11 ? { 10 < 11 ?} да, тогда y := x * 2 {y := 10 * 2 = 20;
печать(y, ' ') {печать(20, ' ')} на экране: 8 10 12 14 16 18 20
x := x + 1 {x := 10 + 1 =11 };
8) x < 11 ? { 11 < 11 ?} нет, тогда завершить цикл.
Отсюда видно, что программа проходит 7 полных циклов.
8й цикл не начинается, потому что условие x < 11 (11 < 11 ) не верно.
5) Значение переменной x очевидно из условия x < 11. Т.е. цикл
останавливается когда x = 11. Значение y = 20, такое значение
эта переменная приобретает после завершения цикла.
6) Если из тела цикла убрать увеличение переменной x ( x := x + 1),
то получится бесконечный цикл. Переменная всегда будет равна
4, а значит, что условие "выполнять пока x < 11", будет
выполняться ВСЕГДА, потому что 4 < 11, и никак не изменяется.
Программа будет выполнять одно и то же действие: будет
печатать цифру 8 (значение y := x * 2) БЕСКОНЕЧНО.
7) Не очень понятно, какое условие нужно изменить. Условия x > 0
в программе нет. Если заменить условие x < 11 на x > 0 и не менять
ничего другого, программа застрянет в цикле очень на долго.
На каждой итерации цикла, с приращением x вы будете
получать 4 > 0, 5 > 0, 6 > 0, 7 > 0, 8 > 0. Закончится это после того,
как произойдёт знаковое переполнение переменной x. То есть,
когда x будет равно 2147483647 - это предельное положительное
значение для переменной типа Integer.