Тема №4. Операторы цикла языка программирования Turbo Pascal 7.0

В языке 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 будет создан автоматически в результате выполнения программы.

Наши рекомендации