1. Программа, использующая цикл Repeat..Until зациклится тогда, когда проверяемое условие постоянно будет ложным.
2. Приведем тексты программ:
Program C1;
Var
x:Byte;
Begin
WriteLn('Первые 10 натуральных числа:');
x:=1;
While x<11 Do
Begin
WriteLn(x);
x:=x+1;
End;
WriteLn(x);
End.
|
Program C2;
Var
x:Byte;
Begin
WriteLn('Первые 10 натуральных числа:');
x:=1;
Repeat
WriteLn(x);
x:=x+1;
Until x>10;
WriteLn(x);
End.
|
| Текст этой программы можно взять здесь. | Текст этой программы можно взять здесь. |
Понятно, что, в отличие от цикла For, на экран будут выведены значения 1, 2, 3, 4, ..., 10, 11. Дело в том, что после вывода на экран числа 10 в теле цикла будет выполнен оператор x:=x+1;, который приведет к тому, что в переменной x будет находиться число 11. Это значение приведет к выходу из циклов, делая проверяемые условия (x<11 и x>10) соответственно ложным и истинным. Поэтому произойдет выход из циклов, и выполнятся операторы, расположенные после тела цикла. В этих пограммах он одинаков - WriteLn(x);. Так как переменная x имеет значение 11, то оно как раз будет выведено после первых 10 натуральных чисел.
Изменим одну из приведенных программ, поменяв местами операторы в теле цикла (выделены жирным шрифтом):
Program C1;
Var
x:Byte;
Begin
WriteLn('Первые 10 натуральных числа:');
x:=1;
While x<11 Do
Begin
x:=x+1;
WriteLn(x);
End;
End.
Что будет выведено при выполнении этой программы?
В заключение составьте еще несколько модификаций приведенных программ:
- модифицируйте программу C1 так, чтобы она выводила первые 10 четных натуральных чисел
(текст программы можно взять здесь);
- модифицируйте программу C2 так, чтобы она выводила первые 10 четных натуральных чисел
(текст программы можно взять здесь);
- модифицируйте программу C1 так, чтобы она выводила первые 10 четных натуральных чисел
в обратном порядке (текст программы можно взять здесь);
- модифицируйте программу C2 так, чтобы она выводила первые 10 четных натуральных чисел
в обратном порядке (текст программы можно взять здесь).