КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Представление арифметических выражений в польской записи
Для представления арифметических и логических выражений часто используется польская запись, которая просто и однозначно указывает порядок выполнения всех операций. Рассмотрим некоторое выражение a + b. Для него возможны три формы представления: a + b - обычная, или инфиксная запись; a b + - польская, или постфиксная запись; + a b - префиксная запись. Наиболее удобной для использования в трансляторах является польская запись, основные свойства которой состоят в следующем. 1. Операнды в польской записи следуют в том же порядке, что и в инфиксной форме. 2. Операторы в польской записи следуют в том порядке (слева направо), в котором они должны выполняться при вычислении выражений. 3. Операторы в польской записи располагаются непосредственно за своими операндами. 4. При использовании польской записи выражений не требуются скобки. Необходимозаметить, что такой вид записи впервые применил польский логик Я. Лукашевич. Указанные формы записи могут быть получены посредством использования рекурсивных алгоритмов обхода дерева, соответствующего заданному выражению. Для получения префиксной формы записи дерево обходят сверху в порядке TLR: 1) корень или верхняя точка (Т) дерева; 2) обход сверху левого (L) поддерева в порядке TLR; 3) обход сверху правого (R) поддерева в порядке TLR. При получении постфиксной формы (польской записи) дерево просматривают снизу в порядке LRT: 1) обход снизу левого (L) поддерева в порядке LRT; 2) обход снизу правого (R) поддерева в порядке LRT; 3) корень дерева (Т). Порядок просмотра можно пояснить на примере дерева, которое соответствует выражению a + b и приведено на рис. 2. Если начать с корня или верхней точки (T) этого дерева и напечатать "+", затем перейти к левой (L) нижней вершине и напечатать " a ", а далее перейти опять в корень, спуститься вправо (R) и напечатать " b ", то получим обход дерева сверху в порядке TLR. Последовательность напечатанных символов + ab будет префиксной формой выражения а + b.
Затем проходят поддерево с верхней точкой "*". В результате для левого поддерева получают следующий порядок прохождения вершин: ab-c *. Обход снизу правого (R) поддерева начинают с самой левой вершины этого поддерева, т.е. с вершины d. Затем проходят поддерево с корнем " ^ ". В итоге для правого поддерева получают запись def ^ /. Прохождение всего дерева снизу завершается в корневой вершине (T), помеченной оператором "+". В результате получается последовательность операндов и операторов следующего вида: , (2) которая представляет собой постфиксную форму (польскую запись) исходного выражения (1). Прохождение этого же дерева сверху в порядке TLR позволяет получить префиксную форму выражения (1): . Для каждой из указанных форм записи можно построить простой алгоритм, однозначно вычисляющий выражение. Однако для автоматического вычисления выражений наиболее удобной является польская запись.
Дата добавления: 2015-06-28; Просмотров: 676; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |