Вверх ↑
Пакеты 
HiAsm4
Windows 
Статьи - Арифметика

Арифметика
   В не очень сложных программах, собираемых в Конструкторе, обычно редко необходимо производить какие-то операции над числами из-за специфики решаемых им задач. Но иногда все-таки такая необходимость есть и поэтому в HiAsm был добавлен элемент Арифметика (Math), а позже его более мощный по возможностям аналог - Математический парсер (MathParse). Оба они находятся на вкладке Логика

Математика (Math)
   Благодаря этому компоненту можно производить четыре стандартные арифметические операции: сложение, вычитание, умножение и деление. В качестве операндов можно задавать как целые числа, так и дробные (натуральные), причем тип результата указывается параметром ResultType. Если ResultType=Integer, то результат операции будет округлятся до ближайшего целого, а если ResultType= Real (установлен по-умолчанию), то он останется без изменений (т.е. результатом станет натуральное число).

Математический парсер (MathParse)
   Более мощный, как ранее упоминалось, компонент по сравнению с компонентом Арифметика, поскольку он не только умеет складывать, вычитать, делить и умножать, но и вычислять ф-ции cos, sin, tg, ctg и прочие, извлекать остаток от деления, целую часть после деления, а так же разбирать и обрабатывать целые выражения с произвольным количеством переменных. Полный список ф-ций смотрите в программе по адресу: Справка->Компоненты->MathParse->Дополнительная справка. Управлять компонентом, не смотря на весь спектр его возможностей, достаточно просто: для начала вы определяете параметром DataCount количество внешних переменных, над которыми необходимо произвести необходимые вычисления. Затем вы задаете так называемую маску в параметре MathStr, где каждая переменная определяется своим номером точки входа с символом % впереди. Поясню сказанное на примере. Допустим, нам необходимо посчитать полусумму двух введенных пользователем чисел. Для этого нам понадобится Кнопка (Button), 2 Поля ввода (Edit), сам Математический парсер (MathParse) и что-то, куда можно вывести результат - Сообщение (Message). Все это добро необходимо соединить так:

Add(MainForm,33622,112,175)
{
Left=312
Top=234
Width=301
Height=157
Caption="Calc"
}
Add(Edit,59736,308,105)
{
Left=150
Top=30
Height=21
Font=[Times New Roman,9,0,0,1]
Text="10"
}
Add(Button,78947,189,175)
{
Left=115
Top=75
Font=[Times New Roman,9,0,0,1]
link(onClick,97961:doCalc,[])
}
Add(Edit,14444,238,105)
{
Left=85
Top=30
Height=21
Font=[Times New Roman,9,0,0,1]
Text="25"
}
Add(Message,28848,357,175)
{
}
Add(MathParse,97961,273,175)
{
MathStr="(%1 + %2)/2"
link(onResult,28848:doMessage,[])
link(X1,14444:Text,[(279,156)(244,156)])
link(X2,59736:Text,[(286,156)(314,156)])
}
   Единственное, что необходимо изменить после этого, это параметр MathStr у компонента Математический парсер вот таким образом:

MathStr=(%1 + %2)/2
   Как видите нам понадобилось только две переменных: %1 - первая переменная (это точка X1 в верхней части компонента) и %2 - вторая переменная (точка X2). Если бы мы считали полусумму 3х переменных, то параметр MathStr очевидно выглядел бы так: (%1 + %2 + %3)/2 ( еще конечно необходимо установить параметр Мат. парсера DataCount=3 и добавить третий компонент Поле ввода, соединив его точку Text с точкой X3 нашего парсера). Теперь запустите программу, введите числа в Поля ввода и нажмите кнопку Push. После этого должно отобразиться сообщение с результатом вычисления полусуммы введенных чисел.

   Последнее, о чем хотелось бы сказать, это о не столь важном, но имеющем место небольшом недостатке компонента Математический парсер: скорость его работы в 7-10 раз ниже чем у компонента Математика. Поэтому в тех случаях, когда скорость вычисления мат выражения критична рекомендуется использовать элемент FastMathParse.
BB-code статьи для вставки
Всего комментариев: 0
(комментарии к статье еще не добавлены)
Комментарий
...