ВПЕРЁД

НАЗАД



Формы записи математических операций

Инфиксная нотация

Рассмотрим некоторые математические операции:

  • сложение "";
  • вычитание "";
  • умножение "";
  • деление "".

Каждая из операций включает в себя два операнда и , над которыми совершается операция, а также оператор, представляющий собой символ выполняемой математической операции (, , , ).

Общей чертой все указанных операций является расположение оператора между двумя операндами. Такая форма записи (нотации) операции носит название инфиксной записи (инфиксной нотации) и является наиболее естественным для человека способом записи операций.

В инфиксной нотации круглые скобки, окружающие группы операндов и операторов, определяют порядок, в котором будут выполнены операции:

, сначала выполняется вычитание операндов и в скобаках, затем - умножение полученного результата на операнд .

При отсутствии скобок операции выполняются согласно правилам приоритета операторов:

, сначала выполняется умножение операндов и , затем - вычитание полученного результата из операнда .

Префиксная (польская) нотация

Префиксная форма записи операций была предложена польским математиком Яном Лукасевичем в 1924 году. По этой причине префиксная запись (нотация) также именуется польской записью (нотацией).

Характерной чертой префиксной записи является расположение оператора слева от операндов.

Например, операция сложения "" в префиксной форме будет выглядеть как "".

Если операнды сами состоят из других операндов и операторов (иначе говоря, операнды сами являются операциями), то, чтобы не путать принадлежность операндов и операторов, для группировки операндов по операторам можно использовать круглые скобки. Например, выражение "" в префиксной форме может быть записано как "" и будет означать, что:

  • Необходимо умножить два операнда, где первый операнд сам является операцией в скобках, а вторым операндом является . Поэтому, необходимо сначала выполнить операцию, содержащуюся в первом операнде, а затем выполнить умножение полученного результата на операнд .
  • В первом операнде необходимо выполнить вычитание вложенных операндов и .

С другой стороны, так как любая простая арифметическая операция является бинарной (состоящей из двух операндов), то её префиксное представление не может быть интерпретировано двояко, поэтому нет необходимости использовать круглые скобки, то есть вместо записи "" можно использовать запись "", и смысл при этом останется тем же самым, что и со скобками. Аналогично, для выражения "" префиксная форма записи имеет вид "".

Таким образом, в польской записи вычисления выполняются справа налево: от последнего оператора к первому оператору.

Постфиксная (обратная польская) нотация

В случае операций с постфиксной записью, созданной на основе польской записи (а потому также именуемой обратной польской записью) и предложенной австралийским философом Чарльзом Хэмблином в 1957 году, операнды располагаются перед операторами.

В обратной польской записи выражение читается слева направо. Когда в выражении встречается оператор, то выполняется соответствующая операция над двумя последними встретившимися перед этим оператором операндами в порядке их записи. Результат операции заменяет в исходном выражении последоваетельность её операндов и оператора, после чего выражение продолжает вычисляться по тому же правилу. Результатом вычисления выражения становится результат последней вычисленной операции.

Например, исходное выражение "" в постфиксной форме записи будет выглядеть как "":

  • Первым по порядку выполнения оператором является "", поэтому первой выполняется операция умножения над операндами и , которые последними встретились перед этим оператором. При этом исходное выражение "" заменяется на выражение, учитывающее результат выполнения операции умножения: "".
  • Затем продолжается чтение выражения, в результате которого считывается оператор "", говорящий, что нужно выполнить операцию вычитания над операндами и .
  • После выполнения операции вычитания процедура вычисления считается законченной.

Таким образом, в обратной польской записи вычисления выполняются слева направо: от первого оператора к последнему оператору.



ВПЕРЁД

НАЗАД