ПрограмматАУраспознаватель арифметических выражений
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
приоритет o1 меньше либо равен приоритету оператора, находящегося на вершине стекатАж
тАж (если оператор o1 право-ассоциированый) приоритет ''''' меньше приоритета оператора, находящегося на вершине стекатАж
тАж выталкиваем верхние элементы стека в выходную строку;
) помещаем оператор o1 в стек.
* Когда входная строка закончилась, вытолкнуть все символы из стека в выходную строку. В стеке должны были остаться только символы операторов; если это не так, значит в выражении не согласованы скобки.
2. Практическая часть
.1 Постановке задачи
В рамках данного курсового проекта необходимо разработать программу - распознаватель арифметических выражений. Для эффективной организации процесса разработки и получения удовлетворительного результата мною были определены следующие требования к программе:
1.Программа должна получать входную информацию в виде строки арифметического выражения, представленного на обычном математическом языке.
2.Программа должна уметь различать приоритетность входных арифметических операций.
.Программа должна уметь вычислять сложные выражения, содержащие в себе несколько математических операторов.
.Программ должна вычислять результат введённого математического выражения.
.Программа должна демонстрировать пользователю этапы выполняемых ею математических операций и промежуточные результаты данных вычислений.
.Программа должна выполняться под управление ОС Windows.
.2 Описание входного языка
Программа разработана в соответствии со следующей спецификацией входной информации:
Входная информация - строка символов, являющаяся правильным математическим выражением, содержащая операнды и операторы.
Набор операторов входного языка приведён в следующей таблице:
Таблица 1
Операторы входного языка
№Обозначение в программеМатематическое обозначениеФункцияПравила использования1. 1++СложениеСкладывает два операнда находящиеся справа и слева от оператора.2. 2--ВычитаниеВычитает из операнда находящегося слева из операнда, находящегося справа от оператора.3. **ПроизведениеУмножает два операнда находящиеся справа и слева от оператора.4. /:ЧастноеДелит операнд, находящейся слева, на операнд, находящейся справа от оператора.5. ^ОснованиеСтепеньСтепеньВозводит операнд, находящийся слева, в степень по операнду, находящемуся справа от оператора
Набор символов входного языка, составляющих операнды, представлен в следующей таблице:
Таблица 2
Символы входного языка
№Обозначение в программеМатематическое обозначениеНаименование1. 11Один2. 22Два3. 33Три4. 44Четыре5. 55Пять6. 66Шесть7. 77Семь8. 88Восемь9. 99Девять10. 00Нольпрограмма распознаватель арифметический выражение
2.3 Описание выходной информации
Выходной информацией данной программы являются следующие данные:
1.Дерево разбора.
2.Результаты промежуточных вычислений.
.Конечный результат.
Дерево разбора представляет собой отображение структуры дерева в табличном виде, для связи родительских веток с дочерними используются специального вида ссылки.
Результаты промежуточных вычислений представляют собой результаты примитивных математических операций, выполняющихся в пределах одного узла дерева разбора.
Конечный результат представляет собой итог всех операций и является результатом вычисления арифметического выражения.
.4 Алгоритмические аспекты программы
Алгоритм программы представляет собой соединение двух алгоритмов:
1.Построение дерева разбора.
2.Построение выражение по принципу польской префиксной записи.
Первый алгоритм представляет собой построение дерева, представленного в табличном виде, по принципу разности приоритета используемых во входном выражении операндов.
Приоритеты операндов показаны в таблице 3.
Таблица 3
Приоритеты операндов
№ОперандНаименованиеПриоритет выполнения1. +Сложение12. -Вычитание13. *Произведение24. /Деление25. ^Степень3
Кроме того, в набор языка вводиться новый операнд, представляющий цифру, обозначенную с двух сторон кавычками. Данный оператор обозначает ссылку на выражение и символизирует результат вычисления данного выражения. Данный оператор используется во второй части алгоритма в качестве оператора при записи выражения в виде польской префиксной записи.
2.5 Алгоритм программы
Алгоритм программы представлен следующей схемой:
Рисунок 1 - Алгоритм программы
Рисунок 2 - Алгоритм программы
Рисунок 3 - Алгоритм программы
Рисунок 4 - Алгоритм программы
Рисунок 5 - Алгоритм программы
Рисунок 6 - Алгоритм программы
Рисунок 7 - Алгоритм программы
2.7 Работа с программой
Разработанная программа не требует инсталляции. Для её запуска достаточно запустить исполнимый файл. Вид программы предстален на рисунке.
Рисунок 8 - Окно программы.
Верхнее поле предназначено для ввода арифметического выражения.
Рисунок 9 - Введено выражение.
Для запуска процесса распознавания нажмите кнопку выполнить. Программа заполнит дерево разбора узлами с информацией в виде префиксной записи и список промежуточных результатов. В нижнем поле будет результат выражения.
Рисунок 10 - Выполненная программа.
Чтобы очистить поля программы нажмите кнопку очистить.
Заключение
Copyright © 2008-2014 geum.ru рубрикатор по предметам рубрикатор по типам работ пользовательское соглашение