Скачиваний:
35
Добавлен:
29.03.2016
Размер:
445.9 Кб
Скачать

Лабораторная работа №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. Так как условие окончания цикла проверяется до выполнения тела цикла, то тело цикла может не выполнится ни разу. Количество повторений данного цикла также не фиксировано, и цикл может быть бесконечным.

Соседние файлы в папке ЛР по программированию FreePASCAL