Оператор варианта (casе) состоит из выражения (переключате-
ля) и списка операторов, каждому из которых предшествует одна или
более констант (они называются константами выбора) или ключевое
слово else. Переключатель (селектор) должен иметь порядковый тип
(размером в байт или слово). Таким образом, строковый тип и длин-
ный целый тип являются недопустимыми типами переключателя. Все
константы выбора должны быть уникальными и иметь порядковый тип,
совместимый с типом переключателя.
┌────┐ ┌─────────┐ ┌──┐ ┌────┐
оператор case ─>│case├──>│выражение├──>│of├─────>│case├──┬──┐
└────┘ └─────────┘ └──┘ ^ └────┘ │ │
│ ┌────┐ │ │
└───┤ ; │<─┘ │
└────┘ │
┌───────────────────────────────────────┘
│ ┌───┐
└─┬────────────────────┬──────────>│end├──>
│ ┌──────────┐ ^ │ ┌───┐ ^ └───┘
└──>│ветвь else├──┘ └─>│ ; ├──┘
└──────────┘ └───┘
┌────────────────────┐
┌─────────┐ │ ┌──┐ ┌─────────┐ v ┌───┐ ┌────────┐
case ──>│константа├─┴─>│..├─>│константа├──┬─>│ : ├─>│оператор├─>
^ └─────────┘ └──┘ └─────────┘ │ └───┘ └────────┘
│ ┌───┐ │
└─────────────────┤ , │<─────────────┘
└───┘
┌────┐ ┌────────┐
ветвь else ────>│else├───>│оператор├───>
└────┘ └────────┘
Оператор варианта 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;