Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом Перепелица 2015.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

3.2.2 Разработка основных алгоритмов формирования мм

Лексический анализ математических текстов является достаточно сложным процессом. В связи с этим алгоритмическая реализация этого процесса требует разбиения на логические части. На рисунке 3.1 представлен алгоритм преобразования математического текста в список лексем.

В процессе преобразования строковая переменная «Expression» хранящая в себе входящую строку математического текста передается по ссылке в функцию «Add», алгоритм которой представлен на рисунке 3.2. Функция «Add» реализует жадный алгоритм извлечения лексемы из входящей строки. Она возвращает в качестве результата полученную лексему и удаляет из входящей строки «Expression» символы, из которых эта лексема получена. Также эта функция принимает аргумент типа «Lexem» Previous. Этот аргумент представляет собой лексему предшествующую полученой. Она используется для выявления синтаксических ошибок.

В случае успешного извлечения лексемы функция «Add» выполняется снова до тех пор, пока переменная «Expression» не станет пустой строкой.

Рисунок 3.1 – Алгоритм преобразования строки в массив лексем

Рисунок 3.2 – Алгоритм работы функции «Add»

Алгоритм преобразования списка лексем реализован в виде рекурсивной функции «BuldTree» (рис. 3.3).

Рисунок 3.3 – Алгоритм работы функции «BuldTree»

Этот алгоритм реализует построение дерева, состоящие из математических операторов и их операндов (чисел или переменных). В ходе работы алгоритма производится поиск по списку лексем в указанном аргументами «start» и «end» диапазоне индексов.

Если полученная лексема является оператором, то производится рекурсивный вызов этой же функции с аргументами указывающие индекс полученной лексемы и аргументами «start» и «end». Таким образом, производится построение нового уровня дерева и получение ссылок на их узлы.

Если полученная лексема является числом или переменной, то алгоритм завершает свою работу, передав в качестве возвращаемого значения новый объект типа «INode» содержащий в себе ссылки на полученные узлы.

3.2.3 Взаимодействие компонента формирования мм с внешними системами

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

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

Вызов математической модели. Этот этап становится доступен только в случае успешного выполнения предыдущего. Пользователь или система производит вызов функции вычисления выходных значений и вводит значения обязательных входных параметров математической модели. В случае если параметры удовлетворяют эти требования, производится вычисление выходных значений модели и переход на завершающий третий этап.

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

Рисунок 3.4 – Взаимодействие компонента со внешними системами

Обмен данными между компонентом и внешней системой происходит благодаря использованию общедоступного класса "Context". Этот класс позволяет хранить и обрабатывать список переменных, не допускает конфликтов имен, обеспечивает безопасное извлечение значений из переменных.