13.2.2 Оператор Case |
Вверх Предыдущий Следующий |
Free Pascal поддерживает оператор case (выбора). Его синтаксическая схема Оператор Выбора (Case) Константы, в различных частях case (альтернатив) должны быть известны во время компиляции, и могут быть следующих типов: перечисления, порядкового типа (за исключением логического (boolean)), и символьного или строкового типа. Выражение (после служебного слова case) должно быть такого типа, или произойдет ошибка компиляции. Все индексы case должны иметь одинаковый тип. Компилятор подсчитает выражение (после служебного слова case). Если одно из значений индекса case совпадает со значением выражения, выполняется оператор следующий за константой. После этого программа продолжает выполняться после end оператора case. Если ни один из case индексов не соответствует значению выражения, выполняется список инструкций после ключевых слов else или otherwise. Это может быть и пустой список операторов. Если отсутствует else часть и ни один case индекс не соответствует значению выражения, программа продолжает выполняться после end оператора case. В операторе case могут быть составные операторы (то есть блоки begin..end).
Free Pascal позволяет использовать строки в качестве индексов case, и в этом случае case переменная (или выражение) также должна быть строкой. При использовании переменной строкового типа в case и различные индексы сравниваются с учётом регистра. Case lowercase(OS) of ’windows’, ’dos’ : WriteLn ('Платформа Microsoft'); ’macos’, ’darwin’ : Writeln('Платформа Apple'); ’linux’, ’freebsd’, ’netbsd’ : Writeln('Общественная платформа'); else WriteLn ('Другая платформа'); end; Case со строками эквивалентна последовательности операторов if then else, при этом никаких оптимизаций не выполняются. Тем не менее, диапазоны допустимы, и эквивалентны if (value >= beginrange) and (value <= endrange) then begin end; |