Цикл – это многократно повторяющиеся фрагменты программ. Алгоритм циклической структуры – это алгоритм, содержащий циклы.
В ТР существует три оператора цикла:
- цикл с предусловием;
- цикл с постусловием;
- цикл с параметром.
Для всех циклов характерны следующие особенности:
- значения переменных используемых в цикле, и не изменяющиеся в нем д.б. определены до входа в цикл;
- вход в цикл возможен только через его начало;
- выход их цикла осуществляется как в результате его естественного окончания, так и с помощью операторов перехода.
Оператор цикла с предусловием в Паскале
Оператор цикла с предусловием реализует следующую базовую конструкцию:
Формат записи:
While L do OP;
где:
While - пока не;
do – выполнить;
L – выражение логического типа;
OP – тело цикла; оператор (простой или составной).
Рис. 9.3. Структурная схема оператора цикла с предусловием
Работа оператора: Вычисляется значение логического выражения, если вычисленное значение истинно, то выполняется оператор OP после чего повторяется проверка условия и выполнение операторов тела цикла. В противном случае осуществляется выход из цикла.
Вычисление значения логического выражения предшествует выполнению операторов тела цикла, поэтому этот оператор цикла называется циклом с предусловием.
Пример 9.3. Составить программу вычисления функции y для заданного значения x.
где: C=2,7; n=2; a=0.5; 0<t<1; Dt=0,1.
Program Ex_2;
Uses crt;
Var
y, C, a, t :real;
n :integer;
Begin
clrscr;
Writeln('Введите C, a, n'); Read(C, a, n);
Writeln('Результат:');
Writeln('t’:5,’y’:15);
t:=0;
While t<1 do
Begin
y:=C*exp(a*t)*cos(n*t);
Writeln(t:4:1,’ ‘:5, y:10);
t:=t+0.1;
End;
End.
Оператор цикла с постусловием в языке Паскаль
Оператор цикла с постусловием реализует следующую конструкцию:
Формат записи:
Repeat
OP
Until L;
где:
Repeat - повторять;
Until – пока не;
L – выражение логического типа;
OP – тело цикла; оператор (простой или составной).
Рис. 9.4. Структурная схема оператора цикла с постусловием
Работа оператора: Выполняется оператор OP после чего вычисляется значение логического выражения L, если вычисленное значение False, то снова выполняется оператор OP в противном случае осуществляется выход из цикла.
Вычисление значения логического выражения следует после выполнения операторов тела цикла, поэтому этот оператор цикла называется циклом с постусловием.
В отличие от цикла с предусловием, в цикле с постусловием тело цикла выполняется о крайней мере один раз не зависимо от условия.
В операторе цикла с постусловием ключевые слова Repeat и Until играют роль операторных скобок.
Пример 9.4. Составить программу вычисления функции y для заданного значения x.
где: C=2,7; n=2; a=0.5; 0<t<1; Dt=0,1.
Program Ex_2;
Uses crt;
Var
y, C, a, t :real;
n :integer;
Begin
clrscr;
Writeln('Введите C, a, n');
Read(C, a, n);
Writeln('Результат:'); Writeln('t’:5,’y’:15);
t:=0;
Repeat
y:=C*exp(a*t)*cos(n*t);
Writeln(t:4:1,’ ‘:5, y:10);
t:=t+0.1;
Untile t>=1;
End.
Оператор цикла с параметром в языке Паскаль
Оператор цикла с параметром реализует следующую базовую конструкцию:
Рис. 9.5. Структурная схема оператора цикла с параметром.
Формат записи:
1. For P:=Pn to Pk do OP;
2. For P:=Pk downto Pn do OP;
где:
For - для;
to – до;
downto – уменьшая до
do – выполнить;
OP – тело цикла; оператор (простой или составной);
P - параметр цикла, переменная порядкового типа;
Pn, Pk – начальное и конечное значение параметра.
Работа оператора: Вычисляется начальное значение параметра цикла Pn и присваивается параметру P. Проверяется условие P?Pk, и если оно True выполняются операторы тела цикла OP . После чего наращивается значение P на единицу и опять проверяется условие P?Pk . Если условие False осуществляется выход из цикла.
В операторе с downto шаг изменения параметра цикла равен –1.
Примеры записи:
For i:=1 to n do n:=sqr(i)+1;
For s:=’A’ to ‘Z’ do R:=R+ord(s)/127;
For L:=False to True do H:= (False or L) And Not (L);
Пример 9.5. Составить программу вычисления функции y для заданного значения n.
где: C=2,7; a=0.5; t=0,1; 0<n<10; Dn=1.
Program Ex_3;
Uses crt;
Var
y, C, a, t :real;
n :integer;
Begin
clrscr;
Writeln('Введите C, a, t');
Read(C, a, n);
Writeln('Результат:');
Writeln(‘n’:5,’y’:15);
For n:=1 to 10 do
Begin
y:=C*exp(a*t)*cos(n*t);
Writeln(n:4,’ ‘:5, y:10);
end;
End.