for i:=N to K do P;
(для) (до) (выполнять)
где i - параметр цикла;
N, K - его начальное и конечное значение;
P - простой или составной оператор;
i,N,K - переменные или константы целого типа.
Шаг изменения i - равен 1.
Если K<N, т.е. имеем дело с циклом с отрицательным шагом: (-1)
for i:=N down to K do P;
Оператор цикла с параметром автоматически устанавливает начальное значение параметра цикла, изменяет значение параметра на шаг
(+1 или -1), организовывает проверку на выход из цикла.
Задача.
Вычислить сумму ряда
S= 1+1/2+1/3+ … +1/50
Выделим переменную для накапливания суммы - sum. Значение этой переменной необходимо предварительно обнулить.
program cikl;
Var
i: integer;
sum: real;
Begin
sum: =0;
for i: = 1 to 50 do
sum: = sum + 1/i;
Writeln (' сумма = ', sum:10:4);
End.
Оператор for применяют в тех случаях, когда значения параметра цикла целые и меняются с шагом +1, -1.
Оператор цикла с постусловием
Repeat
p1;p2;…pn;
until <условие>;
где p1; p2; … pn; - любые операторы, образующие тело цикла.
По этому оператору выполняется «тело цикла», а затем проверяется <условие>, если оно не выполнилось, цикл повторяется. И так до тех пор, пока <условие> не будет выполнено. Необходимо помнить: если <условие> выполнилось c первого раза, цикл будет пройден один раз.
Задача.
Вычислить значение функции:
y = a*sin (x),
При x = от 0 до 1, с шагом =0.2
program cikl_1;
Var
y,a,x:real;
Begin
writeln(‘Введите а’);
read(a);
x:=0;
Repeat
y:=a*sin (x);
writeln (‘y=’,y:8:3,’ x=’,x:8:3);
x:=x+0.2;
until x>1;
End.
Действия, которые подчеркнуты, необходимы для организации цикла.
Для организации цикла необходимо выполнить три действия:
· восстановить начальное значение параметра цикла;
· сформировать текущее значение параметра цикла;
|
· организовать проверку на выход из цикла.
В операторе for … to … do перечисленные действия выполняются автоматически. В остальных операторах цикла эти действия необходимо организовать составителю программы.
Оператор цикла с предусловием
while <условие> do P;
Где P - простой или составной оператор.
По этому оператору проверяется <условие> и, если оно выполняется, то выполняется - P, после чего опять проверяется <условие> и т. д.
Итак, P - выполняется до тех пор, пока выполняется <условие>.
Если условие ни разу не выполнилось, P - игнорируется, управление передается следующему оператору.
Задача.
Вычислить сумму ряда:
Sin x sin 2x sin 3x sin n x
y = ----------- - ------------- + -------------- - … + (-1n+1) --------------
1! 2! 3! n!
где n! = 1*2*…*n
Значение аргумента х и количество итераций n ввести с клавиатуры.
Введем дополнительную переменную для вычисления n! – f.
program cikl_2;
Uses
crt;
Var
x,y: real;
i,n,f: integer;
Begin
writeln (' введите x, n ');
read (x, n);
y: =0; f: =1; i:=1;
while i<=n do
{ составной оператор }
Begin
f:=f*i;
y:=y+sin(i*x)/f;
i:=i+1;
end;
writeln (' y = ', y:8:3);
readln;
End.
Вложенные циклы
В теле любого оператора цикла могут находиться другие операторы цикла. При этом цикл, содержащий в себе другой, называется внешним, а цикл, находящийся в теле первого, - называется внутренним (вложенным). Правила организации внешнего и внутреннего циклов такие же, как и для простых циклов.
Рассмотрим задачу вывода на экран таблицы умножения, решение которой предполагает использование вложенных циклов.
Var
i,j: byte;
|
Begin
writeln(‘ Таблица умножения ’);
for i:=1 to 9 do
Begin
for j:=1 to 9 do
writeln(i, ‘ * ‘, j,‘ = ’, i*j);
writeln;
end;
readln;
End.
При организации вложенных циклов необходимо помнить, чтопараметр внешнего цикла меняется медленнее, чем параметр внутреннего. При одном значении параметра внешнего цикла параметр внутреннего – пробегает все свои возможные значения.