Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка (Информатика).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.12 Mб
Скачать

I:integer;

f:longint;

begin

f:=1;

i:=2;

while i<=10 do begin

f:=f*i;

i:=i+1

end;

writeln ('f=', f)

end.

Результат выполнения программы:

f=3628800

Рис.1

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

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

REPEAT

<последовательность операторов>

UNTIL <выражение>;

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

Ниже приведёны алгоритм и программа ранее рассмотренной задачи с использованием цикла REPEAT ... UNTIL.

Цикл REPEAT ... UNTIL в данном примере выполняется до тех пор, пока выражение i>10 имеет значение FALSE. В тот момент, когда выражение i>10 принимает значение TRUE, цикл REPEAT ... UNTIL завершается. При построении циклов с использованием REPEAT ... UNTIL необходимо помнить, что этому оператору должен предшествовать оператор присваивания начального значения параметру цикла.

program forExample;

var

I:integer;

f:longint;

begin

f:=1;

i:=2;

repeat

f:=f*i;

i:=i+1

until i>10;

writeln ('f=', f)

end.

Результат выполнения программы:

f=3628800

Рис.2

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

Синтаксическая запись цикла с параметром имеет два варианта:

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

FOR <переменная цикла> := <начало> TO <конец> DO <оператор>;

- с убыванием переменной цикла:

FOR <переменная цикла>:=<начало> DOWNTO <конец> DO <оператор>;

В качестве переменной цикла должна использоваться переменная порядкового типа, объявленная в том блоке, где содержится оператор FOR. Параметры <начало> и <конец> задаются выражениями, типы которых должны быть совместимы по присваиванию с типом переменной цикла. Их значения определяются один раз, при входе в оператор FOR, и сохраняются на протяжении всего процесса его выполнения. После задания (вычисления) начального и конечного значений первое из них присваивается переменной цикла. Затем, если используется схема с возрастающим параметром, то производится проверка, не превосходит ли содержимое переменной цикла конечного значения. Если не превосходит, выполняются операторы, образующие тело цикла. Далее значение переменной цикла увеличивается на единицу, и процесс, включающий проверку и выполнение операторов, повторяется. Так происходит до тех пор, пока проверка не даст положительный результат (TRUE). В этом случае цикл завершается, переменная цикла объявляется неопределённой и осуществляется переход на оператор, следующий за FOR.

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

Р ассмотрим ниже алгоритм и программу той же задачи с использованием оператора цикла FOR.

program forExample;

var