Методичка по СППО
.pdfпорядка знаков достигается с использованием стека; знаки операций поступают в него и удаляются в ОПЗ по принципу «последним вошел первым вышел» (Last In First Out, или LIFO);
oНа порядок знаков в ОПЗ влияет их старшинство, или приоритет. Операции “*” и “/” старше, чем “+” и “-”;
o Операции имеют свойство левостороннего связывания;
oОткрывающая и соответствующая ей закрывающая скобки задают начало и конец выражения, все знаки операций которого должны появиться в ОПЗ раньше, чем знаки в стеке перед появлением открывающей скобки. Для отделения этих знаков открывающая скобка записывается в стек. При появлении на входе закрывающей скобки все знаки операций до открывающей скобки выталкиваются из стека в ОПЗ, а скобка удаляется из стека, т.е. скобки взаимно уничтожаются;
oПосле того как выражение прочитано, в стеке ещѐ могут остаться знаки операций; их нужно записать в ОПЗ.
Все вше приведенные замечания необходимо учитывать в алгоритме построения
ОПЗ.
31
Лабораторная работа № 9
ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЙ ПО ОПЗ
Цель работы: Изучить алгоритм вычисления значения выражения по соответствующей ему обратной польской записи.
Постановка задачи: Написать программу на языке Pascal, которая для заданной ОПЗ находит значение выражения.
Указание: Использовать материалы выполнения Лабораторной работы №4 («Обратная польская запись»).
Краткая теория: Числовое выражение это запись, составленная по определенным правилам из констант, имен, знаков операций и скобок. Константы и имена в выражении обозначают операнды, а знаки операций со скобками задают последовательность операций.
Обычной формой выражений является инфиксная, когда знак бинарной операции записывается между обозначениями операндов этой операции, например a+b. Рассмотрим запись знаков операций после обозначения операндов, т.е. постфиксную запись, например ab+. Такая запись также называется обратной польской (ОПЗ), поскольку ее предложил польский логик Ян Лукасевич.
При обработке ОПЗ необходимо учитывать следующие правила:
№ |
Значение |
Действие |
п/п |
|
|
1 |
Идентификатор, число |
Поместить символ (набор |
|
|
символов) идентификатора в стек |
2 |
Оператор: |
|
2 |
Знак двухместной операции |
выталкивать из стека два верхних |
а |
|
элемента; вычислить результат |
|
|
применения к ним операции и записать |
|
|
результат в стек |
2 |
Знак одноместной операции |
вытолкнуть из стека верхний |
б |
|
элемент; вычислить результат |
|
|
применения к нему операции и |
|
|
затолкнуть результат в стек |
Замечания:
o ОПЗ читают последовательно слева направо; к выделенным, таким образом, символам применяют табличные правила;
o Порядок операндов в выражении и в ОПЗ одинаковый;
oВ ОПЗ порядок знаков операций отличается: во входном выражении вида
a-b знак “–” предшествует операнду b, а в выходном выражении ab- наоборот.
o Операции имеют свойство левостороннего связывания;
oПосле того как выражение прочитано, в стеке должно оказаться только одно число; это и есть результат вычислений.
Все вше приведенные замечания необходимо учитывать в алгоритме вычисления выражений по ОПЗ.
32
Дополнительные источники
1.Х. Кастер. Основы Windows NT и NTFS, М. 1997.
2.Ноулс А. Оптимизация и настройка Windows NT для профессионалов – СПб: Питер Ком, 1998. – 480 с., ил.
3.Н.А. Олифер, В.Г. Олифер. Сетевые операционные системы – М.: МГУ. Центр информационных технологий, 2002 (www.citmgu.ru)
4.Р.Хантер. Проектирование и конструирование компиляторов. – М.: ФиС, 1984.
5.В.А Серебряков. Лекции по конструированию компиляторов. – М.:CodeNet, 1993 (www.codenet.ru)
6.Марко Кэнту «Delphi 5 для профессионалов». – СПб.: Питер, 2001.
7.Феддема Эффективная работа с MS-Access 2002. – СПб.: Питер, 2003.
8.Добровольски В. Текстовый редактор Microsoft Word: Руководство пользователя. – М.: СП ПараГраф, 1998.
9.Рахмина Г. Excel 2000. Руководство пользователя с примерами. – М.: Лаборат. баз. знаний. – 592 с.
10.С. Клименко, В. Уразметов. Internet – среда обитания информационного общества.
33