Оператор выбора
Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит ключ выбора -выражение любого порядкового типа (любого из рассмотренных, кроме типов REAL и STRING, см. гл. 4). Структура оператора выбора такова: CASE <ключ_выбора> OF <список_выбора> [ELSE <операторы>] END Здесь CASE, OF, ELSE, END - зарезервированные слова (случай, из, иначе, конец); <ключ_выбора> - ключ выбора; <список_выбора> - одна или более конструкций вида: <константа_выбора> : <оператор>; <константа_выбора> - константа того же типа, что и выражение<ключ_выбopa> ; <операторы> - произвольные операторы Турбо Паскаля. Оператор выбора работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности операторов <список_выбора> отыскивается такой, которому предшествует константа, равная вычисленному значению. Найденный оператор выполняется, после чего оператор выбора завершает свою работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается операторам, стоящим за словом ELSE. Часть ELSE <оператор> можно опускать. Тогда при отсутствии в списке выбора нужной константы ничего не произойдет и оператор выбора просто завершит свою работу. Составим программу (пример 2.8), имитирующую работу микрокалькулятора. Программа вводит две строки: первая содержит два произвольных числа, разделенных пробелом, вторая - символ арифметического действия, например: 2 2 * или 18.35 0.12 / Над введенными числами осуществляется соответствующее действие и результат выводится на экран. Признаком конца работы программы служит ввод любого символа, отличного от +,-,*, /.
Пример 2.8
Program Calc; {Программа вводит два числа в первой строке и один из знаков +, -, *, / - во второй и выводит на экран результат соответствующего арифметического действия} var operation : Char; {Знак операции} х, у, z : Real; {Операнды и результат} stop : Boolean; {Признак ошибочной операции и останова} begin stop := false; repeat WriteLn; {Пустая строка-разделитель} Write('x,y= ' ) ; ReadLn(x,y); Write('операция: ') ; ReadLn(operation); case operation of' + ' : | z : = | x + y; |
' - ' : | z : = | x - y; |
' * ' : | z : = | x * y; |
' / ' : | z : = | x / y; |
else | ||
stop | := true; | |
end; | ||
if not | stop | then |