Оператор варианта (выбора) предназначен для разветвления процесса вычислений на несколько направлений. Структурная схема оператора приведена на рис. 4.4.
Формат оператора: case выражение of.
константы1: оператор1; константы2: оператор2; константы_п: оператор_п; [else: оператор] end;
Выполнение оператора начинается с вычисления выражения. Затем управление передается на оператор, помеченный константами, значение одной из которых совпало с результатом вычисления выражения. После этого выполняется выход из оператора. Если совпадения не произошло, выполняются операторы, расположенные.
Рис. 4.4. Структурная схема оператора выбора.
после слова else, а при его отсутствии управление передается оператору, следующему за case.
Выражение после ключевого слова case должно быть порядкового типа, константы — того же типа, что и выражение. Чаще всего после case используется имя переменной. Перед каждой ветвью оператора можно записать одну или несколько констант через запятую или операцию диапазона, обозначаемую двумя идущими подряд точками, например: case a of.
- 4: writeln ('4');
- 5, 6: writeln ('5 или 6');
- 7.12: writeln ('от 7 до 12'); end;
ВНИМАНИЕ Если по какой-либо ветви требуется записать не один, а несколько операторов, они заключаются в блок с помощью ключевых слов begin и end.
Пример
Программа, определяющая, какая из курсорных клавиш была нажата.
Для объяснения этой программы надо забежать немного вперед и рассказать о том, что в состав оболочек ПАСКАЛЯ входят так называемые модули — библиотеки полезных при программировании ресурсов. В модуле Crt есть функция readkey, позволяющая получить код нажатой клавиши.
Функция readkey работает так: если нажата алфавитно-цифровая клавиша, функция возвращает соответствующий символ. Если нажата клавиша курсора, возвращается символ с кодом 0, а при повторном вызове можно получить так называемый расширенный код клавиши. Для простоты можно считать, что расширенный код — это номер клавиши на клавиатуре. Функция ord позволяет получить числовой код символа.
program cursor_keys; uses Crt; var key: char; begin.
writeln ('Нажмите одну из курсорных клавиш '); key:= readkey;
if ord (key) 0 then writeln ('обычная клавиша') else begin key:= readkey; case ord (key) of 77: writeln ('стрелка вправо');
- 75: writeln ('стрелка влево');
- 72: writeln ('стрелка вверх');
- 80: writeln ('стрелка вниз'); else writeln ('не стрелка'); end; end; end