Использование класса MathParser:
Этим постом я начну небольшую серию уроков-переводов. За основу взята 12 глава из книги 'Flash and Math Applets: Learn by example', доступная здесь. Перевод этот неточный, специально переработанный для использования совместно с Flex SDK (в книге все примеры разработаны во Flash IDE), но достаточный для начала работы с описываемыми классами. Также хочу отметить, что на сайте книги есть документация к описываемым классам и множество других очень интересных примеров, которые могут оказаться полезными для flash-разработчиков, интересующихся математикой. Итак, первый пример...
Пример 1. Простые вычисления с помощью класса MathParser
Мы начнем с примера, разъясняющего работу с классом
MathParser. В приложении, показанном на рисунке 1, пользователь вводит выражение, зависящее от значения переменной
x, и численное значение этой переменной, при этом допустим такой синтаксис, как
sqrt(2*pi) или
e^2. Затем, для вычисления значения выражения, пользователь нажимает клавишу ввода.
Заметьте, что для вычисляемых выражений класс
MathParser использует математические функции и константы языка ActionScript. Подобно Java, JavaScript, C++, и многим другим языкам программирования, математические функции ActionScript и константы поддерживают двойную степень точности (не уверен правильно ли я перевел термин double precision accuracy). Важно учитывать данный факт, т.к. это может привести к странным (неожиданным) результатам. Например, если вы попробуете вычислить значение выражения
tan(pi/2), то (т.к. значение константы
pi/2 не может быть выражено в численном виде абсолютно точно) вы получите значение тангенса при значении переменной
x очень и очень близком к
pi/2 (но не равном ему), а это очень большое число (хотя как мы знаем, что функция тангенса не определена при
pi/2). Мораль здесь в том, что, чтобы создать точный научный калькулятор, нужно проделать намного больше работы, чем просто суметь вычислить значения встроенных функций и констант языка программирования.
Настройка сцены
Чтобы создать приложение, изображенное на рис. 1, сначала нам понадобится несколько элементов на сцене. Это должны быть 2 текстовых поля для ввода текста с именами
inVal и
inExp и динамическое текстовое поле
txtResult. Остальную работу сделает скрипт[...]