- •Оглавление
- •1. Теоретическая часть .1 История разработки вопроса разбора математических выражений
- •.2 Обратная польская нотация
- •.3 Вычисления на стеке
- •.4 Преобразование из инфиксной нотации
- •2. Практическая часть .1 Постановке задачи
- •.2 Описание входного языка
- •Программа распознаватель арифметический выражение
- •2.3 Описание выходной информации
- •.4 Алгоритмические аспекты программы
- •2.5 Алгоритм программы
- •2.7 Работа с программой
- •Заключение
- •Литература
- •Приложение
Программа распознаватель арифметический выражение
2.3 Описание выходной информации
Выходной информацией данной программы являются следующие данные:
1. Дерево разбора.
2. Результаты промежуточных вычислений.
. Конечный результат.
Дерево разбора представляет собой отображение структуры дерева в табличном виде, для связи родительских веток с дочерними используются специального вида ссылки.
Результаты промежуточных вычислений представляют собой результаты примитивных математических операций, выполняющихся в пределах одного узла дерева разбора.
Конечный результат представляет собой итог всех операций и является результатом вычисления арифметического выражения.
.4 Алгоритмические аспекты программы
Алгоритм программы представляет собой соединение двух алгоритмов:
1. Построение дерева разбора.
2. Построение выражение по принципу польской префиксной записи.
Первый алгоритм представляет собой построение дерева, представленного в табличном виде, по принципу разности приоритета используемых во входном выражении операндов.
Приоритеты операндов показаны в таблице 3.
Таблица 3
Приоритеты операндов
№ |
Операнд |
Наименование |
Приоритет выполнения |
1. |
+ |
Сложение |
1 |
2. |
- |
Вычитание |
1 |
3. |
* |
Произведение |
2 |
4. |
/ |
Деление |
2 |
5. |
^ |
Степень |
3 |
Кроме того, в набор языка вводиться новый операнд, представляющий цифру, обозначенную с двух сторон кавычками. Данный оператор обозначает ссылку на выражение и символизирует результат вычисления данного выражения. Данный оператор используется во второй части алгоритма в качестве оператора при записи выражения в виде польской префиксной записи.
2.5 Алгоритм программы
Алгоритм программы представлен следующей схемой:
Рисунок 1 - Алгоритм программы
Рисунок 2 - Алгоритм программы
Рисунок 3 - Алгоритм программы
Рисунок 4 - Алгоритм программы
Рисунок 5 - Алгоритм программы
Рисунок 6 - Алгоритм программы
Рисунок 7 - Алгоритм программы
2.7 Работа с программой
Разработанная программа не требует инсталляции. Для её запуска достаточно запустить исполнимый файл. Вид программы предстален на рисунке.
Рисунок 8 - Окно программы.
Верхнее поле предназначено для ввода арифметического выражения.
Рисунок 9 - Введено выражение.
Для запуска процесса распознавания нажмите кнопку выполнить. Программа заполнит дерево разбора узлами с информацией в виде префиксной записи и список промежуточных результатов. В нижнем поле будет результат выражения.
Рисунок 10 - Выполненная программа.
Чтобы очистить поля программы нажмите кнопку очистить.
Заключение
В результате работы была разработана программа, реализующая алгоритм разбора арифметического выражения, используя классические конструкции обратной польской нотации. Данная программа демонстрирует правила разбора выражения при помощи построения дерева разбора, с последующим вычислением выражения с выводом промежуточных результатов. Тестирование программы показало правильность её работы, а простота интерфейса - даёт удобство в использовании.
В процессе работы над программой мною были изучены следующие темы:
Правила создания бинарных деревьев.
Правила преобразования инфиксной записи в польскую обратную нотацию.
