1.Вычисляются начальное и конечное значения параметра и фиксируются;
2.Если нач_значение<= кон_значения, то выполняется оператор;
3.Значение параметра цикла возрастает (для целого –на единицу);
4.если значение параметра ¹ кон_значения, то выполняется оператор, и переходит к п.3
5. Цикл выполняется последний раз, когда параметр= кон_значению, затем управление передается оператору после цикла.
Цикл с предусловием.
Если в задаче число повторений заранее не известно, цикл for использовать неудобно и можно воспользоваться оператором (общий вид):
While условие DO оператор
Где условие –логическое выражение, оператор может быть простым или составным.
Работа оператора Сначала проверяется условие: если оно верно, то выполняется оператор, затем опять проверяется условие и т.д., пока условие не перестанет выполняться. Если условие не верно, то оператор игнорируется и управление передается следующему за циклом оператору.
Цикл с постусловием.
Общий вид оператора:
Repeat
Оператор 1;
Оператор 2;
…
Оператор N;
Until условие;
Работа оператора: выполнение операторов 1- N повторяется, пока условие не станет верным.
Каждый из этих циклов может быть использован для программирования рассматриваемой задачи. Ниже приведены три программы, каждая из которых использует свой вид цикла.
3) Цикл с параметром.
program chikl1;
Var
x0, xk, x, h, f: real;
ik, i: integer;
Begin
write('Введите x0,xk,h ');
read(x0, xk, h);
ik:=trunc((xk-x0)/h);
writeln('Таблица функции');
writeln('____________');
writeln('| x | f |' );
writeln('___________');
for i:=0 to ik do
begin
x:=x0 + i * h;
f:= exp(3 * ln(x)) * exp(Sin(x));
writeln(' | ',x:5:1,' | ',f:10:3,' | ');
end;
writeln('___________');
End.
В данной программе учтено, что в языке Паскаль нет операции возведения в степень, поэтому х3= exp(3 ln(x)). Ввод трех значений в операторе read(x0, xk, h) производится через пробел. Функция trunc(..) используется для получения целого значения в правой части оператора присваивания, так как по правилам языка Паскаль целой переменной ik можно присвоить только целое значение.
Результат выполнения программы:
Введите x0,xk,h 1 10 1
Таблица функции
_______________
| x | f |
_______________
| 1.0 | 2.320 |
| 2.0 | 19.861 |
| 3.0 | 31.092 |
| 4.0 | 30.027 |
| 5.0 | 47.913 |
| 6.0 | 63.345 |
| 7.0 | 661.637 |
| 8.0 | 1377.028 |
| 9.0 | 1100.800 |
| 10.0 | 580.410 |
_______________
4) Цикл с предусловием.
program chikl2;
var
x, x0, xk, h,f: real;
begin
write('Введите x0, xk,h ');
read(x0, xk, h);
writeln('Таблица функции');
writeln('________________________');
writeln('| x | f |' );
writeln('________________________');
x:= x0;
while x <= xk do { Оператор после do выполняется}
begin {пока условие x <= xk верно}
f:= exp(3 * ln(x)) * exp(Sin(x)); { Здесь оператором является }
x:= x + h; { составной оператор begin –end }
writeln(' | ',x:5:1,' | ',f:10:3,' | ');
end;
writeln('________________________');
end.
5) Цикл с постусловием.
program chikl3;
var
x, x0, xk, h,f : real;
begin
write('Введите x0,xk,h ');
read(x0, xk, h);
writeln('Таблица функции');
writeln('________________________');
writeln(' | x | f |' );
writeln('________________________');
x:= x0;
repeat { Операторы между repeat и until выполняются}