Оператор варианта (case)
Оператор варианта (casе) состоит из выражения (переключате- ля) и списка операторов, каждому из которых предшествует одна или более констант (они называются константами выбора) или ключевое слово else. Переключатель (селектор) должен иметь порядковый тип (размером в байт или слово). Таким образом, строковый тип и длин- ный целый тип являются недопустимыми типами переключателя. Все константы выбора должны быть уникальными и иметь порядковый тип, совместимый с типом переключателя.
-----¬ ----------¬ ---¬ -----¬ оператор case ->¦case+-->¦выражение+-->¦of+----->¦case+--T--¬ L----- L---------- L--- ^ L----- ¦ ¦ ¦ -----¬ ¦ ¦ L---+ ; ¦<-- ¦ L----- ¦ ----------------------------------------- ¦ ----¬ L-T--------------------T---------->¦end+--> ¦ -----------¬ ^ ¦ ----¬ ^ L---- L-->¦ветвь else+--- L->¦ ; +--- L----------- L----
---------------------¬ ----------¬ ¦ ---¬ ----------¬ v ----¬ ---------¬ case -->¦константа+-+->¦..+->¦константа+--T->¦ : +->¦оператор+-> ^ L---------- L--- L---------- ¦ L---- L--------- ¦ ----¬ ¦ L-----------------+ , ¦<-------------- L----
-----¬ ---------¬ ветвь else ---->¦else+--->¦оператор+---> L----- L---------
Оператор варианта case приводит к выполнению оператора, ко- торому предшествует константа выбора, равная значению переключа- теля или диапазону выбора, в котором находится значение переклю- чателя. Если такой константы выбора или такого диапазона выбора не существует и присутствует ветвь else, то выполнятся оператор, следующий за ключевым словом else. Если же ветвь else отсутству- ет, то никакой оператор не выполняется.
Приведем некоторые примеры оператора варианта:
case Operator of plus: X := X+Y; minus: X := X-Y; times: X := X*Y; end;
case I of 0, 2, 4, 6, 8: Writeln('Четная цифра'); 1, 3, 5, 7, 9: Writeln('Нечетная цифра'); 10..100: Writeln('Между 10 и 100'); end;