Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по TURBO PASCAL.doc
Скачиваний:
18
Добавлен:
04.11.2018
Размер:
1.13 Mб
Скачать
    1. Цикл While ... Do

Цикл While (пока) особенен тем, что позволяет организовывать циклы, для которых нельзя заранее сказать, сколько раз выполнится его тело. Цикл выполняется до тех пор, пока верно условие в заголовке цикла.

Формат записи:

While <условие> do

begin

<Оператор цикла>

end

Цикл работает так. Сначала проверяется <условие>. Если оно верно, то выполняется <Оператор цикла>. Затем <условие> проверяется ещё раз, если оно опять верно, то снова выполняется <Оператор>. Так продолжается до тех пор, пока <условие> верно. Если <условие> с самого начала было ложно, то <Оператор> не выполнится ни разу.

Заставим компьютер посчитать от 1 до 100, используя этот оператор цикла:

Program Schet_ot_1_do_100;

Var i : integer;

Begin

i := 1;

while i <= 100 do { нам нужно перебрать первые 100 чисел }

begin

writeln (i);

i := i + 1; { Если убрать эту строку – программа зациклится }

end;

end.

Обратите внимание на строку

i := i + 1;

Благодаря этой строке программа перебирает все числа от 1 до 100, потому что цикл while, в отличие от for, самостоятельно не изменяет никакие переменные – в этом, кстати, и заключается его универсальность. Если вы не позаботитесь об увеличении переменной i на единицу, то условие всегда будет верно (i всегда равно 1, а значит i всё время меньше, чем 100).

С помощью цикла while легко можно перебирать числа не подряд, а, например, через одно. Составим, например, программу для вывода первых 10 положительных чётных чисел.

Program NaborChetnyxChisel;

Var i : integer;

Begin

i := 2;

while i <= 20 do

begin

writeln (i);

i := i + 2; { переход к следующему чётному числу }

end;

end.

Здесь использован тот факт, что от одного чётного числа до следующего две единицы. Если бы мы использовали для решения этого задания цикл For, то нам пришлось бы дополнительно проверять каждое число на чётность (так как в цикле For числа перебираются подряд; цикл while не ставит таких ограничений: как нам надо перебирать числа, так мы и делаем).

Полезный совет: Чтобы не допустить логических ошибок при использовании цикла While, проверьте, как будет работать цикл в первый и в последний раз: обрабатываются ли он те числа, которые надо?

    1. Цикл Repeat ... Until

Формат записи этого цикла:

Repeat

<оператор1>;

<оператор2>;

...

<операторN>

Until <условие выхода>;

Цикл Repeat (повторять) очень похож на цикл While. Но работает немного по-другому:

Сначала выполняется последовательность операторов после Repeat, затем проверяется <условие выхода> записанное после Until. Если оно ложно, цикл выполняеттся заново. Если же оно истинно, то цикл заканчивает свою работу.

То есть тело цикла Repeat всегда выполнится хотя бы один раз. Потому можно сказать, что цикл While сначала думает, а потом делает, а Repeat наоборот: сначала делает, а потом думает. Ещё раз обратите внимание, что цикл Repeat повторяется только тогда, когда условие после Until ложно, потому это условие и называется “условием выхода”.

Составим ещё раз программу счёта от 1 до 100, используя теперь цикл Repeat - Until :

Program Schet_ot_1_do_100;

Var i : integer;

Begin

i := 1 ;

Repeat

writeln (i);

i := i + 1;

until i > 100;

end.

Сравните эту программу с аналогичной, которую мы оформляли с циклом While. Сколько вы найдёте различий, прежде чем читать дальше?

Всего должно быть не меньше двух отличий:

  1. В цикле Repeat не использованы операторные скобки begin - end (они ему просто не нужны!)

  2. По разному записаны условия цикла, в цикле Repeat записано условие выхода: когда оно выполнится, цикл завершит работу.