Конструкции цикла в языке PASCAL

Страницы работы

Содержание работы

Лекция

Конструкции цикла в языке PASCAL

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

1. оператор цикла с параметром ( цикл FOR )

2. оператор цикла с предусловием ( цикл WHILE )

3. оператор цикла с постусловием ( цикл REPEAT )

1. Оператор цикла FOR

Оператор цикла FOR организует выполнение одного оператора или группы операторов заранее известное число раз. Достигается это с помощью управляющей переменной, называемой параметром цик­ла. Следующий простой пример иллюстрирует использование цикла с параметром:

for I:=1 to 10 do writeln('Привет!');

В данном примере задано десятикратное повторение оператора вывода. Переменная I является параметром цикла и последовательно принимает значения 1, 2, 3, ... , 10 , т.е. параметр цикла авто­матически принимает последовательно все целые значения, начиная от начального значения (в примере - от 1) до конечного значения (в примере - до 10). В результате выполнения данного оператора на экран дисплея будет выведено десять строчек со словом 'При­вет!'.

Существует другой вариант оператора цикла FOR. Рассмотрим его на примере:

for I:=10 downto 1 do writeln(I);;

В данном примере вместо ключевого слова TO используется клю­чевое слово DOWNTO. И это будет означать, что параметр цикла бу­дет уменьшаться на 1 при каждом новом выполнении тела цикла.

Т.е. переменная I будет принимать последовательно значения 10, 9, 8, ... , 1.

В общем виде оператор цикла с параметром имеет два варианта записи.

Вариант 1:

For <имя>:=<выражение1> TO <выражение2> DO <оператор>

Вариант 2:

For <имя>:=<выражение1> DOWNTO <выражение2> DO <оператор>

В этих операторах:

<имя> - параметр цикла,  являющийся переменной  порядкового

типа (перечислимого или ограниченного); <выражение1> - выражение,  определяющее начальное  значение

параметра;

<выражение2> - выражение,  определяющее  конечное  значение

параметра;

<оператор> - тело цикла (выполняемый  оператор  или  группа

операторов, оформленных как составной оператор: be­gin ... end).

Таким образом, оператор цикла с параметром определяет:

- диапазон изменения значений управляющей переменной и, од­новременно, число повторений оператора, содержащего тело цикла;

- направление изменения значения переменной ( возрастание или убывание);

- собственно действия, выполняемые на каждом шаге (тело цикла).

Цикл действует таким образом.

Шаг 1. Сначала вычисляются и запоминаются начальное (<выра­жение1>) и конечное значение (<выражение2>) параметра цикла.

Шаг 2. Параметру цикла <имя> присваивается начальное значе­ние <выражение2>.

Шаг 3. Значение параметра цикла сравнивается со значением <выражение2>. Если параметр цикла больше конечного значения (в первом варианте оператора), или меньше конечного значения (во втором варианте оператора), то выполнение оператора цикла завер­шается и управление передается команде, следующей за оператором цикла.

Шаг 4. Выполняется тело  цикла.

Шаг 5.  После выполнения тела цикла происходит присваивание параметру цикла следующего значения (большего - в первом вариан­те записи, меньшего-во втором случае). Переход к шагу 3.

На использование управляющей переменной накладываются сле­дующие ограничения:

1. Управляющая переменная должна быть описана в текущем блоке.

2. Управляющая переменная должна иметь дискретный тип.

3. Начальные и конечные значения диапазона должны иметь тип, совместимый с типом управляющей переменной.

4. В теле цикла запрещается явное изменение значения управ­ляющей переменной ( например, оператором присваивания).

5. После завершения оператора цикла значение управляющей переменной становится неопределенным.

Рассмотрим примеры использования цикла FOR.

Предположим, что у нас есть следующее описание переменных:

Var

I:integer;

C:char;

B:boolean;

Col=(Red,Yellow,Green,Blue,White);

Тогда будут правильными с синтаксической точки зрения сле­дующие конструкции цикла:

а) for I:=-10 to 10 do writeln(I);

б) for I:=10 downto -10 do writeln(I);

в) for C:='a' to 'r' do writeln(C);

Похожие материалы

Информация о работе