Отображение математических формул в окне браузера средствами DHTML и MATHML

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

Kursach_4kurs_2_semestr_denis.doc

— 168.00 Кб (Скачать файл)

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

 

 

 

4 ПОЛЬЗОВАТЕЛЬСКИЙ  ИНТЕРФЕЙС

 

Пользовательский  интерфейс программы представлен  тремя элементами:

  • панель ввода — представляет собой набор кнопок, каждая из которых отвечает за ввод определенного символа или функции. При нажатии на одну из кнопок выполняется соответствующая ей функция, которая добавляет в строку ввода конструкцию, соответствующую ей;
  • строка ввода — используется для ручного ввода стандартных конструкций и символов, которые необходимо преобразовать в вид MathML и вычислить;
  • область вывода — используется для вывода результатов преобразования математического выражения, а так же результата его вычисления при помощи языка разметки MathML.

 

5 РЕАЛИЗАЦИЯ

5.1 СИНТАКСИС

 

Для записи математических выражений в строку нами составлен  синтаксис ввода.

На данный момент нами реализован разбор выражений, включающих операторы +, -, *, :, степень, нижний индекс, тригонометрические функции, корень, корень n-ой степени, натуральный логарифм и логарифм a по основанию b. При записи выражения должны соблюдаться следующие правила:

  • перед операторами «+», «-», «*», «:» и после них может стоять либо неотрицательное число, либо выражение или отрицательное число, заключенное в скобки (Пример: (sin(30))+(cos(60)));
  • чтобы задать степень, необходимо поставить знак «^», перед ним и после него могут быть записаны либо неотрицательное число, либо выражение или отрицательное число, заключенные в скобки (Пример: (10)^(cos(pi)));
  • для обозначения корня используются фигурные скобки «{}», в скобках записывается выражение, которое будет под корнем (Пример: {256});
  • для обозначения корня n-ой степени используются конструкция «{}.()», в фигурных скобках записывается выражение, которое будет под корнем, а после знака «.» записывается либо неотрицательное число, либо выражение или отрицательное число, заключенное в скобки, которое будет степенью корня (Пример: {256}.(3));
  • для создания нижнего индекса необходимо поставить знак «#», перед ним и после него могут быть записаны либо неотрицательное число, либо выражение или отрицательное число, заключенные в скобки (Пример: (x)#(2));
  • для записи тригонометрических функций используется конструкция запись_тригонометрической_функии(выражение), где выражением может являться число или математическое выражение. Используются следующие записи тригонометрических функций: sin, cos, tg, asin, acos, atan (Пример: sin(pi));
  • для записи натурального логарифма используется конструкция log(выражение), где выражением может являться число или математическое выражение (Пример: log(38));
  • для записи логарифма «a» по основанию «b» используется конструкция log#(b)(a), где «b» (основание логарифма) и «а» могут являться числом или математическим выражением (Пример: log#(3)(38));
  • для записи числа «Пи» используется обозначение pi (Пример: cos(pi));

 

 

 

 

 

 

5.2 АЛГОРИТМ КОНВЕРТАЦИИ

 

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

  • sin(cos, tg, и т.д.) алгоритм выделяет число, или символы, заключенные в скобки после этой конструкции и добавляет соответствующие теги языка разметки MathML;
  • корня n-ой степени, к символам, заключенным в фигурные скобки добавляются теги, далее программа считывает число, или символы, заключенные в скобки после знака «.» и добавляет им соответствующие теги;
  • корня, к символам, заключенным в фигурные скобки добавляются теги;
  • «#» , «^», «-», «+», «*», «:» программа сначала выделяет число, или символы, заключенные в скобки перед этой конструкции и добавляет соответствующие теги, затем переходит к числу, или символам, заключенным после конструкции и так же добавляет к ним соответствующие теги;
  • натурального логарифма, алгоритм выделяет выражение, заключенное в скобки и добавляет соответствующие теги;
  • логарифма «a» по основанию «b», алгоритм выделяет сначала выражение, заключенное в первые скобки (после знака «#») и добавляет к ним теги языка разметки MathML, соответствующие преобразованию этого выражения в подстрочный вид, затем выделяется выражение, заключенное во вторые скобки и добавляет ему соответствующие теги;
  • числа «Пи», алгоритм преобразовывает эту конструкцию в ASCII код символа π и добавляет соответствующие теги (при вычислении значения математического выражения данная стандартная конструкция преобразуется в значение числа «Пи»).

Далее весь сгенерированный  код заключается в тег языка HTML <div> и добавляется открывающий  и закрывающий теги языка MathML.

 

    1. АЛГОРИТМ ВЫЧИСЛЕНИЯ

 

Алгоритм выделяет из введенной пользователем строки стандартные конструкции, затем  происходит преобразование найденной  конструкции в соответствии с  требованиями функции, разработанной  для вычисления математических выражений.

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

 

 

5.4 АЛГОРИТМ КОНВЕРТАЦИИ НАТУРАЛЬНОГО ЛОГАРИФМА

С помощью регулярных выражений в строке находится  стандартная конструкция «log». Если после стандартной конструкции  находится символ открывающейся скобки, то к ней находим закрывающуюся. После нахождения скобок, стандартная конструкция заменяется в соответствии с синтаксисом языка MathML.

 

5.5 АЛГОРИТМ КОНВЕРТАЦИИ ЛОГАРИФМА «А» ПО ОСНОВАНИЮ «B»

 

С помощью регулярных выражений в строке находится  конструкция «log#». Если после этой конструкции находится открывающаяся скобка, то находим к ней закрывающуюся и добавляем теги MathML, соответствующие подстрочной записи. Если после закрывающейся скобки находится открывающаяся, то находим для нее закрывающуюся и добавляем теги MathML, соответствующие строчной записи, а так же стандартную конструкцию «log#» заменяем на «log» и добавляем к ней теги MathML.

 

5.6 АЛГОРИТМ ФУНКЦИИ ВЫЧИСЛЕНИЯ КВАДРАТНОГО КОРНЯ

 

При помощи регулярных выражений в строке находится символ «{», для него ищется символ «}». Обе фигурные скобки заменяются на круглые скобки и вычисляется выражение внутри них. Результат вычисления передается в функцию JavaScript, соответствующую квадратному корню и производится вычисление.

 

5.7 АЛГОРИТМ ФУНКЦИИ ВЫЧИСЛЕНИЯ КОРНЯ N-ОЙ СТЕПЕНИ

 

При обнаружении  в строке символа «.» проверяется  наличие с левой стороны символа  «}» и с правой стороны символа  «(». К закрывающейся фигурной скобке находится открывающаяся, а к  открывающейся круглой скобке находится  закрывающаяся. Вычисляются выражения внутри фигурных и круглых скобок. Символ «.» преобразуется в «,» и к полученной конструкции добавляется соответствующая функция JavaScript, после чего производится вычисление.

 

5.8 АЛГОРИТМ ВЫЧИСЛЕНИЯ СТЕПЕНИ

 

Посимвольно считываем строку, при нахождении символа «^» проверяем на наличие закрывающейся скобки с левой стороны от найденного символа и открывающейся скобки с правой стороны от найденного символа. При нахождении закрывающейся скобки с левой стороны запускаем алгоритм поиска открывающейся скобки для неё. При нахождении открывающейся скобки с правой стороны от символа запускаем алгоритм поиска закрывающейся скобки для нее. После проверки на наличие скобок производим вычисление выражений внутри скобок. Далее добавляем соответствующую функцию JavaScript, после чего производится вычисление.

 

5.9 АЛГОРИТМ ПРОВЕРКИ НА КОЛИЧЕСТВО СКОБОК

 

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

 

5.10 АЛГОРИТМ ПРОВЕРКИ НА КОРРЕКТНОСТЬ РЕЗУЛЬТАТА ВЫЧИСЛЕНИЙ

 

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

 

 

 

 

 

 

 

 

 

ЗАКЛЮЧЕНИЕ

В ходе проделанной  работы нами получены следующие результаты:

  1. В алгоритм разбора строки добавлена функция для конвертации натурального логарифма;
    1. В алгоритм ра<span class="dash0410_0431_0437_0430_0446_0020_0441_043f_0438_0441_043

Информация о работе Отображение математических формул в окне браузера средствами DHTML и MATHML