Оператор варианта (выбора) предназначен для разветвления процесса вычислений на несколько направлений. Структурная схема оператора приведена на рис. 24.4.
Формат оператора:
case выражение of.
константы1: оператор1; константы2: оператор2;
константы_n: оператор_n;
[else: оператор].
end;
Выполнение оператора начинается с вычисления выражения. Затем управление передается на оператор, помеченный константами, значение одной из которых совпало с результатом вычисления выражения. После этого выполняется выход из оператора. Если совпадения не произошло, выполняются операторы, расположенные.
Рис. 24.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