- •Содержание
- •Введение
- •1 Алгоритм и его свойства
- •2 Основные понятия VBA. Линейные алгоритмы
- •2.1 Элементы языка VBA
- •2.2 Типы данных VBA
- •2.3 Константы VBA
- •2.4 Переменные VBA
- •2.5 Выражения в VBA
- •2.6 Встроенные функции VBA
- •2.7 Оператор присваивания
- •3 Разветвляющиеся алгоритмы
- •3.1 Оператор IF и его формы записи
- •3.2 Типовые задачи разветвляющихся алгоритмов
- •4 Циклические алгоритмы
- •4.1 Оператор цикла For
- •Оператор цикла For Each
- •4.2 Оператор цикла Do
- •4.3 Вложенные циклы
- •5 Обработка массивов данных
- •5.1 Ввод-вывод массивов
- •Расположение данных в файле "dat.txt"
- •Расположение данных в файле "res.txt"
- •5.2 Программирование обработки одномерных массивов
- •5.3 Программирование обработки двумерных массивов
- •6.1 Лабораторная работа №1
- •6.2 Задание к расчетно-графической работе №1
- •6.3 Лабораторная работа №2
- •Обработка массивов данных на VBA
- •6.4 Задание к расчетно-графической работе №2
- •ЛИТЕРАТУРА
- •Окно проекта
- •Главное меню
- •Интеллектуальные возможности редактора кода
- •Операции сравнения
- •Конкатенация строк
- •Логические операторы VBA
- •Приоритеты выполнения операций при вычислении сложных выражений
- •Операторы пересчета
Пример. |
|
|
|
Запись на VBA |
Математическая запись |
|
|
|
|
2^3^2 |
(23)2 = 82 = 64 |
2^(3^2) |
232 = 29 = 512 |
|
|
A−B * 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 |
|
||
(A−B)/(C**2+1); |
|
|
|
-нельзя ставить подряд два знака операций. −ab можно записать как
A/(−B) или −A/B;
-при операндах одного типа результат имеет тот же тип, а размер памяти результата равен наибольшему из размеров памяти, занимаемой одним из операндов. При операндах разного типа результат принимает более общий (в математическом смысле) из типов.
2.6 Встроенные функции VBA
Встроенные функции позволяют использовать в выражениях элементарные математические функции, такие как sinx, cosx, lnx и др.
30
Для этого указывается имя функции, затем в круглых скобках аргумент, представленный переменной или константой (арифметическим выражением в общем случае), например
Математическая запись
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