- •Введение
- •1 Анализ предметной области
- •1.1 Анализ задач допускового проектирования
- •1.2 Анализ средств моделирования выходных характеристик рэа
- •1.3 Анализ возможностей сапр в задачах допускового проектирования.
- •1.4 Анализ языков представления математических формул
- •1.4.1 Язык разметки математических текстов MathMl
- •1.4.2 LaTeX – типографическая разметка
- •1.6 Выводы к разделу 1
- •2 Анализ програмных средств
- •2.1 Обзор особенностей выбранного языка программирования
- •1.5 Функциональные требования
- •2.2 Достоинства платформы .Net
- •2.3 Недостатки платформы .Net
- •2.4 Особенности среды разработки
- •2.5 Использование сторонних библиотек
- •2.6 Выводы к разделу 2
- •3 Основные решения по реализации компонентов системы
- •3.1 Реализация общей архитектуры программной системы
- •3.2 Библиотека формирования математических моделей
- •3.2.1 Разработка языка представления математических моделей
- •3.2.2 Разработка основных алгоритмов формирования мм
- •3.2.3 Взаимодействие компонента формирования мм с внешними системами
- •3.2.4 Разработка диаграмм классов
- •3.3 Библиотека расчета допусков
- •3.3 Библиотека обмена данными с внешними источниками
- •3.4 Выводы к разделу 3
- •4 Руководство программиста
- •4.1 Назначение и условия применения программы
- •4.2 Характеристика программы
- •4.3 Обработка ошибочных ситуаций
- •5 Руководство пользователя
- •5.5 Сообщения
- •6 Экономико-организационная часть
- •6.1 Введение
- •6.2 Организационно-экономическая часть
- •6.2.1 Планирование разработки программного изделия
- •6.2.2 Определение затрат на разработку программы
- •6.3 Оценка экономической эффективности
- •6.4 Анализ технико-экономических показателей
- •7 Охрана труда и безопасность при чрезвычайных ситуациях
- •7.1 Анализ потенциальных опасностей
- •7.2 Мероприятия по обеспечению безопасности
- •7.3 Мероприятия по производственной санитарии и гигиене труда
- •7.3 Мероприятия по пожарной безопасности
- •7.4 Мероприятия по обеспечению безопасности в чрезвычайных ситуациях
- •Перечень ссылок
- •Приложение а Техническое задание
- •3 Листа
- •3 Листа
- •Приложение б Спецификация Спецификация
- •Приложение в Описание программы
- •В.4 Требования к составу и параметрам технических средств
- •Приложение г Текст программы
- •15 Листов
- •Приложение д Слайды презентации
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". Этот класс позволяет хранить и обрабатывать список переменных, не допускает конфликтов имен, обеспечивает безопасное извлечение значений из переменных.
