Структурированные операторы

3.1. Оператор выбора CASE

 Синтаксис

CASE <Выражение> OF

<Список значений 1>:<Оператор 1>;

<Список значений 2>:<Оператор 2>;

∙ ∙ ∙

<Список значений N-1>:<Оператор N-1>;

<Список значений N>:<Оператор N>

[ELSE

<Список операторов>]

END

 

Выражение может быть только порядкового типа. В списках значений через запятую указываются константы или интервалы значений. Если значение выражения находится в одном из списков значений, выполняется соответствующий оператор. Одно и то же значение не может находиться в нескольких списках (если рассматривать Delphi, так как в других версиях языка Паскаль это иногда допускается, при этом выполняется только первый из операторов, для которого значение – в списке). Если значение выражения не содержится ни в одном из списков и присутствует раздел ELSE, то выполняется список операторов. После последнего оператора перед ELSE и перед END точку с запятой ставить не обязательно, но допускается.

 Пример

CASE S[n] OF

'0'..'9':WriteLn('Цифра');

'A'..'Z','a'..'z':WriteLn('Буква');

'+','-','*','/':WriteLn('Операция');

ELSE

WriteLn('Неизвестный символ');

END;

 

 

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

 Синтаксис

FOR <Имя переменной> := <Выражение 1> {TO | DOWNTO} <Выражение 2> DO <Оператор>

 

 Алгоритм действия оператора FOR для фраз TO/DOWNTO

1. Вычислить начальное и конечное значения переменной цикла (выражения 1 и 2).

2. Присвоить переменной цикла начальное значение.

3. Если значение переменной не больше/меньше конечного значения, то

А. Выполнить оператор.

Б. Изменить значение переменной цикла на следующее/предыдущее.

В. Перейти к шагу 3.

4. Конец оператора.

 

Действия, выполняемые на шаге 3.Б (изменение значения переменной цикла на следующее или предыдущее), требуют, чтобы <Выражение 1>, <Выражение 2> и переменная цикла имели одинаковый порядковый тип, так как такие действия определены только для порядковых типов. Если использована фраза TO и начальное значение больше конечного, либо фраза DOWNTO и начальное значение меньше конечного, то оператор не будет выполнен ни разу. После выполнения цикла значение переменной цикла изменяется и не должно использоваться.

 Пример

FOR n:=1 TO 10 DO

WriteLn('n=',n);

 

 Результат выполнения

n=1

n=2

. . .

n=10

 

 

3.3. Оператор цикла WHILE

 Синтаксис

WHILE <Логическое выражение> DO <Оператор>

 

Принцип действия оператора можно сформулировать так: пока значение логического выражения истинно, выполнять оператор. Т.е. сначала происходит вычисление значения логического выражения. Если оно истинно, то выполняется оператор, и все повторяется сначала до тех пор, пока выражение не станет ложным.

Если выражение окажется ложным с самого начала, оператор не выполнится ни разу.

 Пример

n:=1;

WHILE n<=10 DO

BEGIN

WriteLn('n=',n);

Inc(n);

END;

 

 Результат выполнения

n=1

n=2

. . .

n=10

 

Функции Inc и Dec определены для порядковых типов.

 Синтаксис

Inc(<Порядковая переменная>[,<Целое число>])

Dec(<Порядковая переменная>[,<Целое число>])

 

Они выполняют соответственно увеличение и уменьшение значения переменной на 1 или на указанное число.

 Пример

Inc(n); { Увеличение значения пременной n на 1 }

Dec(n,5); { Уменьшение n на 5 }

 

 

3.4. Оператор цикла REPEAT

 Синтаксис

REPEAT

<Список операторов>

UNTIL <Логическое выражение>

 

Список операторов в цикле REPEAT имеет такую же структуру, как и в составном операторе BEGIN END.

Действие оператора: выполнять список операторов до тех пор, пока логическое выражение не станет истинным. Сначала происходит выполнение списка операторов, затем выселяется значение логического выражения. Если оно ложно, все повторяется сначала до тех пор, пока выражение не станет истинным.

В отличие от оператора WHILE, цикл REPEAT заканчивается, когда выражение становится истинным. Также, в отличие от оператора WHILE, здесь сначала выполняется список операторов, и только потом вычисляется значение логического выражения, поэтому независимо от того, каким будет логическое выражение, список операторов выполнится хотя бы один раз.

 Пример

n:=1;

REPEAT

WriteLn('n=',n);

Inc(n);

UNTIL N>10

 

 Результат выполнения

n=1

n=2

. . .

n=10

 

 

Лекция 4








Дата добавления: 2016-09-20; просмотров: 493;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.