В языке Turbo Pascal 7.0 есть три оператора цикла Repeat, While и For, которые соответствуют трем способам организации цикла.
Оператор цикла Repeat используется для организации цикла с заранее неизвестным числом повторений, состоящего из любого числа операторов.
Структура оператора Repeat:
Repeat
«оператор 1»;
«оператор 2»;
……………………
«оператор n»;
until «логическое выражение»;
Действия, выполняемые оператором Repeat:
1) выполняются операторы с 1-го до n-го, образующие тело цикла;
2) проверяется логическое выражение, стоящее после слова until; если оно истинно, то осуществляется выход из цикла; если оно ложно, то осуществляется возврат на очередное выполнение тела цикла.
Особенность оператора цикла Repeat состоит в том, что тело цикла хотя бы один раз обязательно выполнится. Это происходит потому, что логическое выражение, определяющее выполняться циклу или осуществлять выход из цикла, стоит после тела цикла.
Программа с оператором цикла Repeat и файловыми вводом и выводом информации для задания, приведенного в предыдущем примере:
Program primer1_1;
Var a,b,tn,tk,dt,t,y:real;
f1,f2:text;
Begin
Assign (f1,’primer1.dat’);
Assign (f2,’primer1_1.res’);
Reset(f1);
Rewrite(f2);
Read(f1,a,b,tn,tk,dt);
t:=tn;
Repeat
If (t>=2)and(t<=2.6) then y:=a*t*t*sin(t)
else if t<2 then y:=exp(t*ln(a))+2*a
else y:=exp(b*t)*cos(t);
Writeln(f2,’t=’,t:4:2,’ y=’,y:7:3);
t:=t+dt;
until t>tk;
close(f1);
close(f2);
end.
Оператор цикла While используется для организации цикла с заранее неизвестным числом повторений, состоящего из любого числа операторов.
Структура оператора While:
While «логическое выражение» do «оператор»;
Если оператор, образующий тело цикла, является составным, то структура оператора While выглядит следующим образом:
While «логическое выражение» do
begin
«оператор 1»;
«оператор 2»;
……………………
«оператор n»;
end;
Действия, выполняемые оператором While:
проверяется логическое выражение, стоящее после слова While; если оно истинно, то осуществляется выполнение тела цикла, после чего происходит возврат на проверку логического выражения; если оно ложно, то осуществляется выход из цикла.
Особенность оператора цикла While состоит в том, что тело цикла может ни разу не выполниться, если логическое выражение сразу окажется ложным.
Программа с оператором цикла While и файловыми вводом и выводом информации для задания, приведенного в предыдущем примере:
Program primer1_2;
Var a,b,tn,tk,dt,t,y:real;
f1,f2:text;
Begin
Assign (f1,’primer1.dat’);
Assign (f2,’primer1_2.res’);
Reset(f1);
Rewrite(f2);
Read(f1,a,b,tn,tk,dt);
t:=tn;
While t<=tk do
begin
If (t>=2)and(t<=2.6) then y:=a*t*t*sin(t)
else if t<2 then y:=exp(t*ln(a))+2*a
else y:=exp(b*t)*cos(t);
Writeln(f2,’t=’,t:4:2,’ y=’,y:7:3);
t:=t+dt;
end;
close(f1);
close(f2);
end.
Оператор цикла For используется для организации цикла с заранее известным числом повторений, состоящего из любого числа операторов.
Существует две формы оператора For со словами to и downto, структура этих операторов:
For «параметр цикла»:=«начальное значение» to «конечное значение» do «оператор»;
For «параметр цикла»:=«начальное значение» downto «конечное значение» do «оператор»;
Параметр цикла должен быть порядкового типа. Начальное и конечное значения параметра должны быть выражениями совместимого порядкового типа.
Действия, выполняемые оператором For со словом to:
1) параметру цикла присваивается начальное значение;
2) значение параметра цикла сравнивается с конечным значением; если оно меньше или равно конечному значению, то выполняется тело цикла, после чего параметру цикла присваивается последующее значение; если оно больше конечного значения, то осуществляется выход из цикла.
Действия, выполняемые оператором For со словом to:
1) параметру цикла присваивается начальное значение;
2) значение параметра цикла сравнивается с конечным значением; если оно больше или равно конечному значению, то выполняется тело цикла, после чего параметру цикла присваивается предыдущее значение; если оно меньше конечного значения, то осуществляется выход из цикла.
После того как оператор цикла For закончил свою работу параметр цикла не имеет определенного значения.
Программа с оператором цикла For и файловыми вводом и выводом информации для задания, приведенного в предыдущем примере:
Program primer1_3;
Var a,b,tn,tk,dt,t,y:real;
i,n:integer;
f1,f2:text;
Begin
Assign (f1,’primer1.dat’);
Assign (f2,’primer1_3.res’);
Reset(f1);
Rewrite(f2);
Read(f1,a,b,tn,tk,dt);
t:=tn;
n:=trunc((tk-tn)/dt)+1;
For i:=1 to n do
begin
If (t>=2)and(t<=2.6) then y:=a*t*t*sin(t)
else if t<2 then y:=exp(t*ln(a))+2*a
else y:=exp(b*t)*cos(t);
Writeln(f2,’t=’,t:4:2,’ y=’,y:7:3);
t:=t+dt;
end;
close(f1);
close(f2);
end.
Файл исходных данных primer1.dat необходимо создать. В него нужно записать численные значения переменных, указанных в списке ввода процедуры Read, через пробел в том же порядке. Для приведенной выше программы содержимое файла primer1.dat должно иметь следующий вид:
0.6 2.1 0 3.1 0.15
Файл результатов primer1_3.res будет создан автоматически в результате выполнения программы.