Одной из возможностей, предоставляемых языком программирования PASCAL, является оператор выбора. Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметр, по которому осуществляется выбор, содержит ключ выбора — выражение любого порядкового типа (кроме real и string). Структура оператора такова:
CASE <ключ_вибору> OF <список_вибору> [ELSE <операторы>] END
Здесь CASE, OF ELSE, END — ключевые слова (случай с, иначе, конец)
Оператор работает следующим образом. Сначала вычисляется значение выражения <ключ_вибору>, а затем в последовательности операторов <список_вибору> отыскивается такой, которому предшествует константа, равная вычисленному значению. Часть ELSE можно опускать, тогда при отсутствии в списке выбора нужной константы ничего не произойдет и оператор выбора просто завершит свою работу.
Пример (программы, имитирующей работу калькулятора)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Write ( 'x, y ='); ReadLn (x, y) Write ( 'Операция'); ReadLn (operation) Case operation of '+': Z = x + y; "-": z = xy; '*': Z = x * y; '/': Z = x / y; Else Write ( 'не введена операция'); ... |
В языке PASCAL форуме операции возведения в степень, однако с помощью встроенной функции LN (x) и EXP (x) нетрудно реализовать новую функцию, осуществляющую строительство любого числа в степень.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Var x, y: real; {----------------} Function power (a, b: real): real; Begin If a> Then power = exp (b * ln (a)) Else If a < Then power = exp (b * abs (ln (a))) Else If b = Then power = 1 Else power = End; Begin readln (x, y) writeln (power (x, y): 12: 10) End. |
Пример вычисления факториала
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Program factorial; {$ S +} {исключаем контроль переполнения стека} Var n: integer; Functiom fac (n: integer): real; Begin If n < Then Writeln ( 'ошибка в задании n'); Else If n = Then fac = 1; Else fac = n * fac (n-1); End; Begin Write ( 'введите n'); readln (n); Write ( 'n!= ', Fac (n)) End. |