Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в Delphi_2013.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.65 Mб
Скачать

Ораторы цикла

Циклический процесс или просто цикл это повторение одних и тех же действий. Последовательность действий, которые повторяются в цикле, называют телом цикла. Один проход цикла называют шагом или итерацией. Переменные, которые изменяются внутри цикла, и влияют на его окончание, называются параметрами цикла.

При написании циклических алгоритмов следует помнить следующее. Во-первых, чтобы цикл имел шанс когда-нибудь закончиться, содержимое его тела должно обязательно влиять на условие цикла. Во-вторых, условие должно состоять из корректных выражений и значений, определенных еще до первого выполнения тела цикла.

В языке Pascal предусмотрены три оператора, реализующих циклический процесс.

Оператор цикла с предусловием

Блок-схема алгоритма.

Оператор, реализующий алгоритм:

while выражение do оператор;

Работает цикл с предусловием так. Вычисляется значение выражения. Если оно истинно (True), выполняется оператор. В противном случае цикл заканчивается, и управление передается оператору, следующему за телом цикла. Выражение вычисляется перед каждой итерацией цикла. Если при первой проверке выражение ложно (False), цикл не выполнится ни разу.

Выражение должно быть логической константой, переменной или логическим выражением.

Если тело цикла состоит более чем из одного оператора, необходимо использовать составной оператор:

while условие do

begin

оператор_1;

оператор_2;

оператор_n;

end;

Задача. Вывести значения функции на отрезке [0;] с шагом 0.1.

procedure TForm1.btn1Click(Sender: TObject);

var x,y:Real;

begin

x:=0;

while x<=Pi do

begin

y:=Exp(Sin(x))*cos(x);

mmo1.Lines.Add('x='+

FloatToStr(x)+

'y='+floattostr(y));

x:=x+0.1;

end;

end;

Оператор цикла с постусловием

Блок-схема алгоритма

Цикл с постусловием реализован конструкцией

repeat

оператор;

until выражение;

или, если тело цикла состоит более чем из одного оператора

repeat

оператор_1;

оператор_2;

.............

оператор_N;

until выражение;

Работает цикл следующим образом. В начале выполняется оператор, представляющий собой тело цикла. Затем вычисляется значение выражения. Если оно ложно (False), оператор тела цикла выполняется еще раз. В противном случае цикл завершается, и управление передается оператору, следующему за циклом.

Цикл с постусловием всегда будет выполнен хотя бы один раз, в отличие от цикла с предусловием, который может не выполниться ни разу.

Задача. Вывести значения функции на отрезке [0;] с шагом 0.1.

procedure TForm1.btn1Click(Sender: TObject);

var x,y:Real;

begin

x:=0;

repeat

y:=Exp(Sin(x))*cos(x);

mmo1.Lines.Add('x='+

FloatToStr(x)+

' y='+floattostr(y));

x:=x+0.1;

until x>Pi;

end;

Оператор цикла с заданным числом повторений

Блок-схема алгоритма

«Безусловный» циклический процесс реализован оператором

for параметр:=нач_зн to кон_зн do

оператор;

for парам:=кон_зн downto нач_зн do

оператор;

где оператор – любой оператор языка, параметр_цикла, а также диапазон его изменения (начальное_значение и конечное_значение) – переменные или выражения целочисленного или перечислимого типа.

Шаг цикла for всегда постоянный и равен интервалу между двумя ближайшими значениями типа параметра цикла.

В случае если тело цикла состоит более чем из одного оператора, необходимо использовать составной оператор:

for параметр:=нач_зн to кон_зн do

begin

оператор_1;

оператор_2;

.............

оператор_N;

end;

Алгоритм работы цикла for … do:

1. Параметру_цикла присваивается начальное_значение.

2. Если значение параметра_цикла превосходит конечное_значение, то цикл завершает свою работу. В противном случае выполняется п. 3.

3. Выполняется оператор.

4. Значение параметра_цикла изменяется на соответствующий шаг и осуществляется переход к п.2, и т.д.

Понятно, что этот алгоритм представляет собой цикл с предусловием.

Задача. Вывести значения функции на отрезке [0;] с шагом 0.1.

Здесь количество повторений цикла явно не задано. Вычислим его:

В общем случае, если параметр цикла х принимает значения в диапазоне от xn до xk, изменяясь с шагом dх, тогда количество повторений тела цикла можно определить по формуле:

округлив результат деления до целого числа.

procedure TForm1.btn1Click(Sender: TObject);

var x,y:Real;

n,i: Byte;

begin

n:=round((pi-0)/0.1)+1;

x:=0;

for i:=1 to n do

begin

y:=Exp(Sin(x))*cos(x);

mmo1.Lines.Add(IntToStr(i)+

' x='+FloatToStr(x)+

'y='+floattostr(y));

x:=x+0.1;

end;

end;