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

Тема 4. Циклы

В данной теме рассматриваются следующие вопросы: операторы цикла (For do, While do, Repeat Until), компонент Memo.

Теория

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

Операторы цикла используются для организации циклов (повторов). Цикл представляет собой последовательность операторов, которая может выполняться более одного раза. Группу повторяемых операторов называют телом цикла. Всего имеется три вида операторов цикла:

— с параметром;

— с предусловием;

— с постусловием.

Обычно, если количество повторов известно заранее, то применяется оператор цикла с параметром, в противном случае — операторы с пост– или предусловием (чаще используются оператор с предусловием).

Операторы циклов могут быть вложенными друг в друга.

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

Оператор цикла с параметром имеет два следующих формата:

for <Параметр> := <Выражение1> to <Выражение2> do <Оператор>;

и

for <Параметр> := <Выражение1> downto <Выражение2> do <Оператор>;

Параметр цикла представляет собой переменную порядкового типа, которая должна быть определена в том же блоке, где находится оператор цикла, выражение1 и выражение2 являются соответственно начальным и конечным значениями параметра цикла и должны иметь тип, совместимый с типом параметра цикла. Оператор цикла обеспечивает выполнение тела цикла, которым является оператор после слова do, до полного перебора всех значений параметра цикла от начального до конечного с соответствующим шагом. Шаг параметра всегда равен 1 для первого формата цикла и -1 — для второго формата. То есть значение параметра последовательно увеличивается (for.. .to) или уменьшается (for.. .downto) на единицу при каждом повторении цикла. Цикл может не выполниться ни разу, если для цикла for . . . to значение начального выражения больше конечного, а для цикла for.. .downto, наоборот, значение начального выражения меньше конечного.

Пример. Циклы с параметром.

var n, k: integer;

s:Real;

f:Extended;

begin

{цикл вычисления суммы ряда 1+1/2+1/3+…+1/n, n=1,…,10}

s := 0;

for n := 1 to 10 do

s := s + 1/n;

f:=1;

{ цикл вычисления произведения членов ряда 1*1/2*1/3*…*1/k, k=1,…,20}

for к := 1 to 20 do

begin

f:=f*1/k

end;

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

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

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

while <Условие> do <Оператор>;

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

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

Рассмотрим расчет суммы натуральных чисел от 1 до n с шагом 3

var i,n: integer;

sum: real;

begin

sum := 0;

i:=1;

while i <= n do begin

sum := sum + i;

i := i + 3;

end;

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

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

Во многом этот оператор аналогичен оператору цикла с предусловием, но проверка условия выполняется в конце оператора. Выход из цикла происходит при равенстве условия константе True (Истина).

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

repeat <Оператор>; until <Условие>;

Пример.

Найдем сумму , с шагом 2, при x-n≠0.

n:=1;

Sum : =0;

Repeat

Sum := Sum + n/(x-n);

n:=n+2;

Until (n>10) or (x-n=0);

В операторе Repeat Until условие проверяется после выполнения операторов тела цикла. Следовательно, операторы цикла в любом случае выполнятся хотя бы один раз. В примере, если в программе заранее не определено, что x≠1, при попадании в цикл произойдет ошибка выполнения (деление на ноль).