Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000555.doc
Скачиваний:
31
Добавлен:
30.04.2022
Размер:
19.12 Mб
Скачать

2.2.6. Оператор цикла while

Схема оператора цикла такова: WHILE условие DO

оператор;

или при использовании составного оператора

WHILE условие DO begin

оператор_1;

оператор_2;

оператор_N;

end;

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

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

Пример. Вычислить сумму S первых 100 членов ряда

1 + 1/2+1/3 + 1/4+... + 1/п

Program Summa;

var

s: real;

n: integer;

begin

s:=0;

n:=0;

While n< 100 do begin

n:=n+l;

s:=s+l/n;

end;

writeln('Cyммa 100 членов ряда равна '.s); end.

В основном, цикл while применяется, когда заранее неизвестно число повторений.

Пример. Определить, сколько нужно членов ряда

1 + 1/2 + 1/3 + 1/4 +... + 1/п , чтобы сумма превысила 10.

Program Number; var

s: real;

n: integer;

begin

s:=0;

n:=0;

While s<=10 do begin

n:=n+l;

s~s+l/;

end;

writeln('Число членов ряда равно ', n); end.

Пример. Вводить целые числа и определить их сумму. Прекратить после ввода числа 0.

Program Sum;

var

s, n: integer;

begin

s:=0;

read(n);

While n<>0 do begin

s:=s+n;

read(n); end;

writeln('Cyммa равна ', s); end.

В общем случае, оператор

for i:=nstart to nend do begin A; end;

где i - переменная целого типа,

nstart, nend - выражения целого типа,

А - произвольная последовательность операторов, не меняющая значений i и nend,

можно заменить фрагментом программы с оператором while.

i:=nstart; while i<=nend do begin A; i:=i+l; end;

2.2.7. Оператор цикла repeat

Повторение группы операторов можно организовать и с помощью оператора REPEAT. Общая форма оператора цикла REPEAT имеет вид

REPEAT

оператор_1; оператор_2;

оператор_М UNTIL условие;

Часть программы, заключенная между ключевыми словами REPEAT и UNTIL, повторяется до тех пор, пока не станет истинным условие (логическое выражение), стоящее после слова UNTIL. Другими словами, цикл выполняется, пока условие ложно.

В отличие от оператора WHILE вычисление логического выражения происходит не до, а после очередного повторения

цикла. Из-за этого цикл REPEAT обязательно выполнится хотя бы раз, а цикл WHITE может не выполниться ни разу.

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

Пример. Определить, сколько нужно членов ряда

1 + 1/2 + 1/3 + 1/4 +... + 1/п , чтобы сумма превысила 10.

Program Number_with_repeat; var

s: real;

n: integer; begin

s:=0;

n:=0;

repeat n:=n+l; s:=s+l/n;

until s> 10;

Writeln ('Число членов ряда равно ', n); end.

Пример. Вводить целые числа и определить их сумму. Прекратить после ввода числа 0.

Program Sum_with_repeat; var

s, n: integer; begin

s:=0;

repeat read(n); s:=s+n;

until n=0;

writeln('Cyммa равна ', s); end.

В общем случае, оператор

repeat A until В;

где А - произвольная последовательность операторов,

В - логическое выражение

можно заменить фрагментом программы с оператором while. A; while В do begin A; end;