Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разветвляющиеся структуры.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
352 Кб
Скачать
☆

3.4 Оператор выбора case

Данный оператор является обобщением условного оператора.

Его общий вид следующий:

case выражение of

список_констант_1: оператор_1;

список_констант_2: оператор_2;

. . .

список_констант_n: оператор_n

end;

Здесь значения выражения и констант должны быть одного и того же скалярного типа (кроме real), т. е. integer, boolean, char, ограниченный тип или тип “перечисление”. Оператор выбора действует следующим образом: если значение выражения равно одной из констант, то выполняется соответствующий ей оператор. Затем управление передается за пределы оператора выбора. Если значение выражения не совпадает ни с одной константой, то управление сразу передается за пределы оператора выбора.

Пример:

case I+1 of

2: X: =0;

1OO, 3: X: =X*X;

4: X: =sin(X)

end;

A: =A+1;

Если значение I+1 есть 100 или 3, то выполняется оператор X: =Х*Х, а затем управление передается на оператор А: =А+1.

Замечание. Метки оператора case не описываются в разделе lаbel, и на них нельзя переходить оператором goto.

В Тurbo Pascale оператор case может использоваться с ключевым словом else, имеющем тот же смысл, что и слово else в операторе if:

case выражение of

список_констант_1: оператор_1;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

список_констант_n: оператор_n

else оператор

end;

Перед else, как и в операторе if, точка с запятой не ставится.

Пример:

program pr;

var

I: char;

begin

read (I);

case I of

'A'. . 'Z', 'a'. . 'Z': Write (' Введена буква');

'0'. . '9': Write (' Введена цифра')

else Write (' Введен символ, отличный от буквы и цифры')

end;

end.

Кроме одиночных констант в альтернативах оператора варианта могут быть заданы списки и / или диапазоны значений, которые в этом случае должны разделятся символом ', ' (запятая), например:

case Switch of

1. . 2: Proc1;

3, 4, 10. . 20: Proc2;

5, 6: Proc3

else

Proc4

End

В этом примере оператор процедуры Proc 2 будет выполнен в том случае, когда переменная switch будет иметь одно из следующих значений:

3, 4, 10, 11, 12, …, 19, 20

При использовании оператора варианта должны выполнятся следующие правила:

Значение выражения - “переключателя”, записанного после служебного слова case, должно принадлежать дискретному типу; для целого типа они должны лежать в диапазоне -32769. . 32768.

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

Все константы в альтернативах должны быть уникальны в пределах оператора варианта (то есть повторения констант в альтернативах не допускаются); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.

Следует обратить внимание на то, что синтаксис языка предполагает один оператор для каждой альтернативы; при необходимости задания нескольких операторов следует сгруппировать их в составной оператор. В то же время ветвь else допускает последовательность операторов, разделенных символом ';' (точка с запятой).