Добавил:
sofyvits@ya.ru на позитиве Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
497
Добавлен:
10.01.2016
Размер:
919.04 Кб
Скачать

Операторы повторений

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

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

Структура оператора:

WHILE <условие> DO <оператор>.

WHILE, DO – зарезервированные слова (пока выполняется условие, делать);

<условие> – выражение логического типа;

<оператор> – произвольный оператор.

Если выражение <условие> имеет значение true, то выполняется <оператор>, после чего вычисление выражения <условие> и его проверка повторяются. Если <условие> имеет значение false, оператор while прекращает свою работу.

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

Задача . Пусть даны числа a, b (a >1) . Получить все члены бесконечной последовательности a, a2, a3, ... меньшие числа b (рис. 3).

Рис. 3. Пример блок-схемы алгоритма

program task7;

var a, b, c : real;

begin

readln(a, b);

c := a;

while c < b do

begin

writeln(c);

c := c*a

end

end.

При выполнении этой программы переменная споследовательно принимает значения a, a2, a3, ... Изменение значенияспроисходит до тех пор, пока оно не станет больше или равно значению b. Если a > b, то не будет выведено ни одного члена последовательности.

Задача. Вычислить сумму гармонического ряда h = 1 + 1/2 + 1/3 + ... + 1/n.

Суммирование начинаем с n-ого члена. Первое слагаемое 1/n. В цикле n уменьшается на единицу: n = n – 1. Суммирование h = h + 1/n производится в цикле до тех пор, пока n >0 (рис. 5.3).

Рис. 4. Пример блок-схемы алгоритма

program task;

var n: integer; h: real;

begin

readln(n);

h := 0;

while n > 0 do

begin

h := h + 1/n; n := n – 1

end;

write(‘n = ‘,n,’ h = ‘,h)

end.

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

Структура оператора:

REPEAT <тело цикла> UNTIL <условие>.

REPEAT, UNTIL – зарезервированные слова (повторять до тех пор пока не будет выполнено условие);

<тело цикла> – произвольная последовательность операторов;

<условие> – выражение логического типа.

Тело цикла выполняется хотя бы один раз, после чего вычисляется выражение <условие>: если его значение есть false, операторы тела цикла повторяются, в противном случае оператор REPEAT ... UNTIL завершает работу.

Задача. Напишем программу для предыдущей задачи с использованием оператора цикла с постусловием (рис. 5).

Рис. 5.

program task;

var n: integer; h: real;

begin

readln(n);

h := 0;

repeat

h := h + 1/n; n := n – 1

until n = 0;

write(‘n = ‘,n,’ h = ‘,h)

end.

Соседние файлы в папке Лекции Информатика и программирование