Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700383.doc
Скачиваний:
15
Добавлен:
01.05.2022
Размер:
4.33 Mб
Скачать

9.4.5.10. Префиксная польская запись

Определение. Префиксную польскую запись (ПрПЗ) определим так.

1) Если инфиксное выражение Е представляет собой один операнд а, то ПрПЗ выражение Е – это просто а.

2) Если инфиксное выражение Е12, где * – знак операции,а Е1 и Е2 инфиксные выражения для операндов, то ПрПЗ этого выражения – это *Е1'E2',где E1', E2' - ПрПЗ выражений Е1 и Е2.

3) Если (Е) есть инфиксное выражение, то ПрПЗ этого выражения есть ПрПЗ Е.

Это определение определяет порядок построения ПрПЗ заданного инфиксного выражения.

Например для выражений (a + b) * (c - d) построение ПрПЗ можно выполнить так. Обозначим операнды первой выполняемой операции:

E1 = (a + b) и E2 = (c - d).

Согласно определению префиксная запись выражения Е12 – это *E1'E2', где Е1',Е2' – префиксные записи выражений Е1 и Е2. Выполняя построение постфиксных записей для этих выражений,

E1' = +ab, E2' = -cd,

окончательно получаем результат в виде:

*+ab-cd

9.4.5.11. Вычисление префиксных польских записей

Вычисление ПрПЗ можно представить следующим образом.

1. Просматриваем выражение слева направо, пока не найдем знак операции, за которым следуют два операнда.

2. Выполняем операцию и результат записываем на место выбранной тройки.

3. Повторяем пункт (1), пока не получим вместо выражения один результат.

Вычисление построчного префиксного выражения можно представить в следующем виде.

  1. *+ab-cd

  2. *R1-cd

  3. *R1R2

  4. R3

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

9.4.5.12. Постфиксная польская запись

Определение. Постфиксную польскую запись (ПоПЗ) определим так.

1. Если инфиксное выражение Е представляет собой один операнд а, то ПоПЗ выражения Е – это а.

2. Если инфиксное выражение Е12, где * – знак операции, E1, E2 – инфиксные выражения для операндов, то ПоПЗ этого выражения это – Е1'E2'*, где Е1',E2' – постфиксные выражения Е12.

3. Если (Е) есть инфиксное выражение, то постфиксная запись этого выражения есть постфиксная запись Е.

Аналогично предыдущему примеру построим ПоПЗ выражения

(a + b) * (c - d).

Обозначая операнды внешней операции

E1 = (a + b) и E2 = (c - d),

найдем постфиксные записи операндов, которые имеют вид:

E1' = ab+ и E2' = cd-.

Подставляя полученные постфиксные записи в выражение

E1'E2'*,

окончательно получаем :

ab+cd-* .

9.4.5.13. Вычисление постфиксных записей

Вычисление постфиксной записи выражения можно представить следующим образом.

1. Просматриваем выражение слева направо пока не найдем два стоящих рядом операнда, за которыми следует знак операции.

2. Выполняем операцию и записываем результат вместо выбранных операндов и операций.

3. Повторяем пункт (1) пока не получим вместо выражения единственный результат.

Вычисление построенного постфиксного выражения можно представить в следующем виде.

1. ab+cd-*

2. R1cd-*

3. R1R2*

4. R3

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

1. Прочитать очередной символ входной цепочки.

2. Если входной символ - операнд, то выполнить его запись в магазин.

3. Если входной символ - оператор, то прочитать два операнда из магазина, выполнить операцию и результат занести в магазин как операнд.

4. Повторять п.1, пока во входной цепочке не будут прочитаны все символы.

Последовательность вычислений продемонстрируем на примере входной цепочки

ab+cd-*

и изобразим ее в виде следующей схемы:

Вход  Магазин                    Операция

ab+cd-* 1. b+cd-* a

2. +cd-* ab

3. cd-* R1 a+b=R1

4. d-* R1c

5. -* R1cd

6. * R1R2 c-d  = R2

7. $ R3 R1*R2 = R3