Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekcija_2._RPOD.doc
Скачиваний:
7
Добавлен:
07.05.2019
Размер:
1.67 Mб
Скачать

Оператор варианта case

Оператор варианта (case) строится в соответствии со следующим правилом (см. также синтаксическую диаграмму):

case I of C1 : S1; C2 : S2; ... Cn: Sn; else S end

здесь I - выражение, которое называется селектором; C1,...,Cn- списки констант выбора; S,S1,...,Sn операторы варианта; case, of, else и end – зарезервированные слова.

Оператор case состоит из выражения (селектора) и списка операторов, каждому из которых предшествует одна или более констант (они называются константами выбора) или ключевое слово else. Селектор должен иметь порядковый тип размера байт или слово. Таким образом, строковый тип и тип LongInt являются недопустимыми типами селектора.

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

Оператор case осуществляет выбор для выполнения одного оператора из множества (S1,S2,...,Sn). Выбирается оператор, которому предшествует константа выбора, равная значению селектора или диапазону выбора, в котором находится значение селектора. Если такой константы выбора или такого диапазона выбора не существует, то выполняется оператор S, следующий за ключевым словом else. Если ветвь else отсутствует, то выполняется пустой оператор.

Управляющая структура оператора case - это структура типа «case», в которой case-тест соответствует селектору I, case списки - спискам констант выбора C1, C2,..., Cn, а case-части - операторам варианта.

Пример оператора варианта case

type

Operator = (Plus, Minus, Times);

var

O: Operator; X, Y: Real; I: Integer;

begin

X:= 5; Y:= 10; O:= Minus;

case O of

Plus : X := X + Y;

Minus: X := X - Y;

Times: X := X * Y;

end;{ После выполнения оператора будет X = -5}

I:= 7;

case I of

0, 2, 4, 6, 8: Writeln('Even digit');

1, 3, 5, 7, 9: Writeln('Odd digit');

10..100 : Writeln('Between 10 and 100');

else

Writeln('Negative or greater than 100');

end; { После выполнения оператора будет выведено 'Odd digit'}

Структура case

Ниже представлена управляющая структура «case», которая в зависимости от значения Case-теста обеспечивает выполнение одной из n последовательностей действий, поименованных как Case-часть 1, Case-часть 2,… Case-часть n, или Else-часть.

Здесь case-тест - выражение порядкового или строкового типа, задающее условие ветвления процесса обработки данных по одному из указанных направлений.

Case-часть i - описание процесса обработки данных, который будет выполнен, если case-тест примет значение, попадающее в case-список i.

Else-часть - описание процесса обработки данных, который будет выполнен, если значение case-теста не попадёт ни в один из case-списков.

Case- сисок i - список констант такого же типа, как и тип case-теста. Case-списки не должны содержать совпадающих элементов.

На Object Pascal она может быть частично реализована (для case-теста в виде выражения порядкового типа) посредством применения условного оператора case.

Е – схема выполнения для структуры case.

На рисунке ниже приведена Е-схемы программа с управляющей структурой «case». Как видно из Е-схемы программа имеет n + 1 путей выполнения. При выполнении программы по первому пути (Case-тест принимает значение, попадающее в Case-список 1) выполняются действия по обработке данных поименованные как «Case-часть 1». При выполнении программы по второму пути (Case-тест принимает значение, попадающее в Case-список 2) выполняются действия по обработке данных поименованные как «Case-часть 2». При выполнении программы по n-ому пути (Case-тест принимает значение, попадающее в Case-список n) выполняются действия по обработке данных поименованные как «Case-часть n». При выполнении программы по n + 1-ому пути (Case-тест принимает значение, не попадающее ни в один из Case-списков) выполняются действия по обработке данных поименованные как «Else-часть 2».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]