- •1 Общие положения
- •2 Выражения
- •2.1 Арифметические выражения
- •2.2 Логические выражения
- •3 Операторы передачи управления
- •3.1 Программа разветвляющейся структуры
- •3.2 Оператор безусловного перехода
- •3.3 Оператор условного перехода if
- •3.4 Оператор выбора case
- •4 Примеры выполнения заданий алгоритмов разветвляющей структуры
- •Контрольные вопросы
- •Задания для самостоятельной подготовки
- •Отчет по лабораторной работе
- •Список рекомендуемой литературы
- •Задание к лабораторной работе
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 допускает последовательность операторов, разделенных символом ';' (точка с запятой).
