Автор работы: Пользователь скрыл имя, 16 Октября 2013 в 23:50, дипломная работа
Несмотря на многообразие публикаций, посвященных различным подходам к решению данной задачи и существование широкого спектра программного обеспечения, предоставляющего разнообразные технологии, для ее решения, до сих пор не выработано универсального подхода, позволяющего максимально облегчить процесс публикации на веб-сайте математических текстов и минимизировать усилия со стороны клиента для просмотра документа.
Введение 3
1 Постановка задачи 5
2 Используемые средства реализации 6
2.1 JavaScript 6
2.2 MathML 7
2.3 jQuery 9
3 Обзор существующих методов решения 10
4 Пользовательский интерфейс 11
5 Реализация 11
5.1 Синтаксис 11
5.2 Алгоритм конвертации 13
5.3 Алгоритм вычисления 14
5.4 Алгоритм конвертации натурального логарифма 14
5.5 Алгоритм конвертации логарифма «а» по основанию «b» 14
5.6 Алгоритм функции вычисления квадратного корня 15
5.7 Алгоритм функции вычисления корня n-ой степени 15
5.8 Алгоритм вычисления степени 15
5.9 Алгоритм проверки на количество скобок 16
5.10 Алгоритм проверки на корректность результата вычисления 16
Заключение 17
Список использованных источников 18
Общими недостаткам любого из вышеперечисленных конвертеров являются неудобный пользовательский интерфейс ввода и отсутствие возможности рассчитать введенное математическое выражение [2,3].
4 ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС
Пользовательский
интерфейс программы
5 РЕАЛИЗАЦИЯ
5.1 СИНТАКСИС
Для записи математических выражений в строку нами составлен синтаксис ввода.
На данный момент нами реализован разбор выражений, включающих операторы +, -, *, :, степень, нижний индекс, тригонометрические функции, корень, корень n-ой степени, натуральный логарифм и логарифм a по основанию b. При записи выражения должны соблюдаться следующие правила:
5.2 АЛГОРИТМ КОНВЕРТАЦИИ
Введенная пользователем строка посимвольно считывается. В ходе считывания, при помощи регулярных выражений, производится поиск стандартных конструкций ввода, указанных в описании синтаксиса, а так же ведется счет открывающихся и закрывающихся скобок и фигурных скобок, знаков «.». При нахождении стандартной конструкции:
Далее весь сгенерированный код заключается в тег языка HTML <div> и добавляется открывающий и закрывающий теги языка MathML.
Алгоритм выделяет из введенной пользователем строки стандартные конструкции, затем происходит преобразование найденной конструкции в соответствии с требованиями функции, разработанной для вычисления математических выражений.
После полного преобразования строки, она передается в функцию для вычисления математических выражений. Данная функция, используя таблицу соответствий математическим функциям языка JavaScript, производит окончательное вычисление выражения и выводит результат вычисленного выражения на экран в формате MathML.
5.4 АЛГОРИТМ КОНВЕРТАЦИИ НАТУРАЛЬНОГО ЛОГАРИФМА
С помощью регулярных выражений в строке находится стандартная конструкция «log». Если после стандартной конструкции находится символ открывающейся скобки, то к ней находим закрывающуюся. После нахождения скобок, стандартная конструкция заменяется в соответствии с синтаксисом языка MathML.
5.5 АЛГОРИТМ КОНВЕРТАЦИИ ЛОГАРИФМА «А» ПО ОСНОВАНИЮ «B»
С помощью регулярных выражений в строке находится конструкция «log#». Если после этой конструкции находится открывающаяся скобка, то находим к ней закрывающуюся и добавляем теги MathML, соответствующие подстрочной записи. Если после закрывающейся скобки находится открывающаяся, то находим для нее закрывающуюся и добавляем теги MathML, соответствующие строчной записи, а так же стандартную конструкцию «log#» заменяем на «log» и добавляем к ней теги MathML.
5.6 АЛГОРИТМ ФУНКЦИИ ВЫЧИСЛЕНИЯ КВАДРАТНОГО КОРНЯ
При помощи регулярных выражений в строке находится символ «{», для него ищется символ «}». Обе фигурные скобки заменяются на круглые скобки и вычисляется выражение внутри них. Результат вычисления передается в функцию JavaScript, соответствующую квадратному корню и производится вычисление.
5.7 АЛГОРИТМ ФУНКЦИИ ВЫЧИСЛЕНИЯ КОРНЯ N-ОЙ СТЕПЕНИ
При обнаружении
в строке символа «.» проверяется
наличие с левой стороны
5.8 АЛГОРИТМ ВЫЧИСЛЕНИЯ СТЕПЕНИ
Посимвольно считываем строку, при нахождении символа «^» проверяем на наличие закрывающейся скобки с левой стороны от найденного символа и открывающейся скобки с правой стороны от найденного символа. При нахождении закрывающейся скобки с левой стороны запускаем алгоритм поиска открывающейся скобки для неё. При нахождении открывающейся скобки с правой стороны от символа запускаем алгоритм поиска закрывающейся скобки для нее. После проверки на наличие скобок производим вычисление выражений внутри скобок. Далее добавляем соответствующую функцию JavaScript, после чего производится вычисление.
5.9 АЛГОРИТМ ПРОВЕРКИ НА КОЛИЧЕСТВО СКОБОК
При помощи регулярных
выражений в строке находятся
все открывающиеся и
5.10 АЛГОРИТМ ПРОВЕРКИ НА КОРРЕКТНОСТЬ РЕЗУЛЬТАТА ВЫЧИСЛЕНИЙ
При получении результата вычисления введенной строки выполняется проверка на получение числового значения. Если полученное значение не является числовым, или значение не получено, то в функцию отображения математического выражения в виде MathML передается параметр, соответствующий ошибке вычисления.
ЗАКЛЮЧЕНИЕ
В ходе проделанной работы нами получены следующие результаты:
Информация о работе Отображение математических формул в окне браузера средствами DHTML и MATHML