Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Паскалю.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.06 Mб
Скачать

5.5. Операторы цикла

 

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

Имеется три основных вида циклов: цикл while, цикл repeat и цикл for.

5.5.1. Оператор while (цикл с предусловием )

Опеpатоp while имеет следующий фоpмат:

while <выражение> do оператор;

где <выражение> – это булево выражение, а оператор – одиночный или составной оператор.

В цикле while вычисляется выражение. Если оно имеет значение Тrue, то оператор выполняется, и выражение вычисляется заново. Если выражение имеет значение False, то цикл while завершается и выполнение программы продолжается. Следует отметить, что переменная используемая в выражении, должна быть, как правило, определена до цикла и обязательно менять своё значение в цикле (иначе цикл будет выполняться бесконечное число раз). Оператор while используется для проверки некоторого условия в начале цикла. Рассмотрим следующую программу:

program Hello10;

var Count : integer;

begin

Count := 1;

while Count <= 10 do begin

Writeln('Привет!');

Inc(Count)

end;

Writeln('Good by!');

Readln;

end.

Первое, что произойдет при запуске этой программы, – это присваивание Count значения 1, затем следует цикл while. Здесь сначала проверяется, не является ли значение Count меньшим или равным 10. Если да, то выполняется тело цикла (begin..end). При этом на экран выводится сообщение "Hello!", затем значение Count увеличивается на 1. Count проверяется заново, и тело цикла выполняется еще раз. Это продолжается до тех пор, пока значение Count при проверке меньше или равно 10. Как только Count принимает значение 11, цикл завершается, и на экране печатается строка "Good bye!".

5.5.2. Оператор repeat..Until (Цикл с постусловием)

Обобщенный формат для цикла repeat..until имеет вид:

repeat

оператор;

...

оператор

until выражение;

Результат выражения должен быть булевского типа. Операторы, заключенные между ключевыми словами repeat и until, выполняются последовательно до тех пор, пока результат выражения не примет значение True, т.е. указывается условие при котором необходимо выйти из цикла. Последовательность операторов выполнится, по крайней мере один раз, поскольку вычисление выражения производится после каждого выполнения последовательности операторов.

Program SwapCifr;

Var Number,Cifr : integer;

Begin

Write('Введите натуральное число: ');Readln(Number);

Repeat

Cifr:=Number mod 10;

Number:=Number div 10;

Writeln(Number, ' ',Cifr)

Until Number=0;

Readln;

End.

Приведенная программа печатает все цифры введенного числа в обратном порядке.

5.5.3. Оператор цикла For (цикл с заданным количеством повторений)

Если число повторений заранее известно, то подходящей конструкцией является оператор for.

Структура оператора выглядит следующим образом:

For <переменная цикла>:=<нач.знач> To (DownTo)<кон.знач> Do <оператор>;

где переменная (или параметр) цикла – переменная типа Integer, Boolean, Char; нач.знач. – начальное значение переменной цикла – выражение того же типа, что и переменная цикла; кон.знач. – конечное значение переменной цикла – выражение того же типа, что и переменная цикла; оператор – произвольный оператор.

Первый вариант оператора (For ...To...Do) предполагает увеличение значения переменной цикла на единицу при переходе к следующей итерации, второй (For...DownTo...Do) – уменьшение на единицу.

В обычном случае набор операторов выполняется фиксированное число раз, пока некоторая переменная цикла принимает значения из указанного диапазона. Например, модифицируем приведенную выше программу Hello10 следующим образом:

program Hello10;

var

Count : integer;

begin

for Count := 1 to 10 do

Writeln('Hello!');

Writeln('Good Bye!');

end.

Основным недостатком цикла for является то, что он позволяет увеличивать или уменьшать индекс только на 1. К его основным преимуществам относятся краткость и возможность использования символьного и перечислимого типов в диапазоне значений.