Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика VBA.pdf
Скачиваний:
893
Добавлен:
27.03.2016
Размер:
1.1 Mб
Скачать

Пример.

 

 

Запись на VBA

Математическая запись

 

 

 

 

2^3^2

(23)2 = 82 = 64

2^(3^2)

232 = 29 = 512

 

AB * C+D

a bc + d

 

 

 

 

A+B^2

a+b2

 

(A+B)^2

(a+b)2

 

A*C

a c

При записи выражений надо учитывать следующие особенно-

сти:

-нельзя опускать знак умножения (ab записывается как A*B, но AB

– это новая переменная);

-«двухэтажных» записей нет. Следует быть внимательным с деле-

нием: A–B/C**2+1 означает a cb2 +1. Если же требуется записать

на VBA выражение

a b

, то надо использовать скобки:

c2 +1

 

(AB)/(C**2+1);

 

 

 

-нельзя ставить подряд два знака операций. ab можно записать как

A/(B) или A/B;

-при операндах одного типа результат имеет тот же тип, а размер памяти результата равен наибольшему из размеров памяти, занимаемой одним из операндов. При операндах разного типа результат принимает более общий (в математическом смысле) из типов.

2.6 Встроенные функции VBA

Встроенные функции позволяют использовать в выражениях элементарные математические функции, такие как sinx, cosx, lnx и др.

30

Запись на VBA
Sin(X^3)
Cos(X)^2
Log(X+1.)

Для этого указывается имя функции, затем в круглых скобках аргумент, представленный переменной или константой (арифметическим выражением в общем случае), например

Математическая запись

Sinx3 cos2x ln(x+ 1)

Пример встроенных математических функции VBA приведен в таблице 2.4.

Таблица 2.4 – Встроенные математические функции VBA

Название функции

Математическая запись

Запись на VBA

 

 

 

 

 

 

показательная функция

 

ex

Exp(X)

 

 

 

 

 

 

натуральный логорифм

 

lnx

Log(X)

 

 

 

 

 

 

синус

 

sinx

Sin(X)

 

 

 

 

 

 

косинус

 

cosx

Cos(X)

 

 

 

 

 

 

тангенс

 

tgx

Tan(X)

 

 

 

 

 

 

арктангенс

 

arctgx

Atn(X)

 

 

 

 

 

 

квадратный корень

 

 

 

 

Sqr(X)

 

 

x

 

 

 

 

абсолютное значение

 

| x |

Abs(X)

 

 

 

 

 

 

целая часть x

 

[ x ]

Int(X) и

 

Fix(x)

 

 

 

 

 

 

 

 

 

+1 при x > 0

 

знак числа

 

0 при x = 0

Sgn(X)

 

 

 

 

 

 

1 при x < 0

 

 

 

 

 

 

 

случайное число

 

 

 

 

Rnd(x)

 

 

 

 

 

 

31

Показательная функция Exp(X) и функция натурального логарифма позволяет вычислять гиперболические функции.

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

Пример.

Для вычисления десятичного логарифма (lg(x)) следует записать

Log(x)/log(10).

Для вычисления логарифма по основанию 2 (log2(x)) следует за-

писать Log(x)/log(2).

У функций Int и Fix результат целый, для положительных аргументов результат этих функций одинаков – Int(9.89)=Fix(9.89)=9. Для отрицательных аргументов результатом функции Int будет ближайшее большее целое ( Int(-5.3)= -6 ), а результатом функции Fix будет ближайшее меньшее целое ( Fix(-5.7)= -5 ).

Аргумент функции Rnd является необязательным. Эту функцию можно использовать только после инициализации VBA-генератора случайных чисел оператором Randomize.

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

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

32

граммы вычисления синуса или косинуса от аргумента, заданного в градусах.

Пример.

Вычисление синуса 47о можно выполнить инструкцией – Sin(47*3.14/180). При этом полученная погрешность будет достаточно велика. Для получения результата с максимально достижимой точностью следует инструкцию записать как

Sin(47*3.141592653589793/180), либо Sin(47*Atn(1#)*4/180). Как из-

вестно арктангенс 1 равен π/4.

Однако недостаток, связанный с небольшим числом встроенных математических функций, с лихвой возмещается уникальной возможностью использования в программах на VBA огромной библиотеки функций Excel. Для этого следует воспользоваться объектом Application с указанием имени необходимой функции. Имена основных математических функций, доступных в VBA через объект Application, приведены в приложении В. Помимо этого имена функций доступны через контекстное меню объекта Application.WorksheetFunction.

Пример.

Для вычисления арксинуса от 0,5 можно записать Application.Asin(0.5), ибо Application.WorksheetFunction.Asin(0.5). Отли-

чия заключаются в том, что в первом случае имя функции надо знать, а во втором выбрать из контекстного меню, которое высвечивается на экране после ввода точки после объекта WorksheetFunction.

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

33