
- •Введение
- •Цикл со счетчиком
- •Цикл с постусловием
- •Цикл с предусловием
- •Операторы досрочного завершения цикла
- •Оператор break
- •Оператор continue
- •Бесконечный цикл
- •Цикл с выходом из середины
- •Циклы с несколькими выходами
- •Организация циклических конструкций с помощью оператора goto
- •Вложенные циклы
- •Задания к лабораторной работе
- •Варианты заданий
- •Вопросы к лабораторной работе

Лабораторная работа №4 Управляющие конструкции языка Object Pascal.
Циклические конструкции.
Введение
Цикл – это управляющая конструкция в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора операторов. Также циклом может называться любая многократно исполняемая последовательность инструкций, организованная любым способом (например, с помощью условного или безусловного перехода).
ВObject Pascal существует три вида циклических конструкций:
•цикл со счетчиком (цикл с фиксированным числом повторений),
•цикл с предусловием,
•цикл с постусловием.
Цикл со счетчиком
Первая из конструкций позволяющая организовать повторение операторов называется циклом со счетчиком или перечисляемым циклом. В этом операторе обязательно указываются следующие параметры:
•идентификатор переменной любого порядкового типа в которой хранится число повторений цикла – счетчик цикла,
•начальное значение для переменной цикла,
•конечное значение для переменной цикла.
Синтаксис цикла со счетчиком имеет следующий вид:
for <перем._цикла>:=<нач._знач> to (downto) <кон._знач> do <оператор>;

i=i0 |
|
i>=ik |
F |
|
|
T |
|
Тело цикла |
|
i=i-1 |
|
Рисунок 1 – Цикл со счетчиком |
|
При после каждой итерации переменная увеличивается на единицу, а если заменить зарезервированное слово to на downto то уменьшаться на единицу. Таким образом, в этой конструкции число повторений цикла фиксировано и известно до входа в цикл. Переменная цикла (счетчик цикла) доступна в теле цикла только для чтения. Программа, приведенная ниже, производит вычисление суммы чисел от 1 до n.
Листинг 1 – Сумма чисел
{$IFDEF FPC} {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE} program Sum;
var i, n, summa :integer; begin
writeln('Vvedite n'); readln(n);
summa:=0;
for i:=1 to n do summa:=summa+i;
writeln('summa=', summa); readln;
end.
Прямой цикл выполняется только в том случае, когда начальное значение счетчика цикла меньше или равно конечному значению.
Как отмечалось выше, переменная цикла может быть любого порядкового типа, например
Листинг 2
{$IFDEF FPC}

{$MODE DELPHI} {$ENDIF}
{$APPTYPE CONSOLE} program Letters; var Letter:char; begin
for Letter:='a' to 'z' do write(Letter);
readln;
end.
Программа, приведенная в листинге 2, выводит на экран символы от a..z.
Обратите внимание, что значение счетчика цикла, после завершения цикла, не определено. Например, после завершения цикла из листинга 1 не гарантируется, что счетчик цикла будет равен n или n+1. Это зависит от реализации компилятора, настроек оптимизатора и прочих факторов. Поэтому необходимо считать, что после выхода из цикла счетчик содержит неопределенное значение.
Цикл с постусловием
Циклом с постусловием называют конструкцию цикла в которой условие окончания цикла вычисляется после выполнения тела цикла. Конструкция цикла с постусловием имеет следующий синтаксис.
repeat <операторы> until <условие>;
Тело цикла |
|
? |
F |
|
|
T |
|
Рисунок 2 – Цикл с |
|
постусловием |
|
Операторы, находящиеся между зарезервированными словами repeat и until, повторяются до тех пор пока не выполнится условие (результат вычисления логического выражения не станет равным true). Так как условие проверяется в конце конструкции, то тело этого цикла всегда будет выполняться хотя бы один раз. Еще одной особенностью данной конструкции является отсутствие потребности в использовании составного оператора, т. к. зарезервированные слова обрамляют тело цикла.
Перепишем программу приведенную в листинге 1 с использованием цикла repeat until.

Листинг 3
{$IFDEF FPC} {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE} program Sum2;
var i, n, summa: integer; begin
writeln('Vvedite n'); readln(n);
summa:=0;
i:=1; repeat
summa:=summa+i;
inc(i); until i>=n+1;
writeln('summa=', summa); readln;
end.
Количество повторений тела этого цикла не фиксировано и может быть бесконечным, если условие выхода из цикла никогда не выполнится.
Цикл с предусловием
Циклом с предусловием называют конструкцию цикла в которой условие окончания цикла вычисляется перед выполнением тела цикла. Синтаксис этой конструкции следующий
while <условие> do <оператор>;
? |
F |
|
|
T |
|
Тело цикла |
|
Рисунок 3 – Цикл с предусловием |
|
Оператор после зарезервированного слова do повторяется до тех пор, пока выполняется условие после while. Так как условие окончания цикла проверяется до выполнения тела цикла, то тело цикла может не выполнится ни разу. Количество повторений данного цикла также не фиксировано, и цикл может быть бесконечным.