Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ОФИСНОГО ПРОГРАММИРОВАНИЯ И ЯЗЫК VBA - 2....doc
Скачиваний:
79
Добавлен:
17.12.2018
Размер:
1.62 Mб
Скачать

Работа с числовыми данными

Арифметика в VBA представлена достаточно полно, Напомним, что арифметический тип подразделяется на подтипы:

  • Byte, Integer, Long - для представления целочисленных данных.

  • Single, Double - для представления вещественных данных.

  • Decimal - для представления чисел в форме с фиксированной точкой, что важно, в частности, для финансовых вычислений.

  • Currency - специальный тип для представления денежных данных.

  • Variant - обобщенный тип, позволяющий хранить и обрабатывать данные разного типа.

Возможные арифметические операции мы уже упомянули.

Пример работы с числовыми данными:

Public Sub WorkWithArithmetic()

Dim X As Integer, Y As Integer

Dim U As Single, V As Single

Dim Z As Double

U = 15.8: V = -6.5

Z = U / V: X = CInt(U / V): Y = U \ V

Debug.Print X, Y, Z, U, V, X \ Y, X Mod Y, U Mod V

End Sub

Вот результаты печати в окне отладки:

-2 -2 -2,43076926011306 15,8 -6,5 1 0 4

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

Рассмотрим основные встроенные математические функции.

Математические функции

Набор математических функций VBA достаточно стандартный. Перечислим их с краткими пояснениями:

  • Abs(число) - абсолютное значение числа.

  • Atn(число)- арктангенс (в радианах) аргумента, задающего тангенс угла.

  • Cos(число) - косинус угла. Аргумент число задает угол в радианах.

  • Exp(число) - экспонента, т. е. результат возведение числа e (основание натуральных логарифмов) в указанную степень.

  • Log(число) - натуральный логарифм числа.

  • Rnd[(число)] - результат представляет равномерно распределенное случайное число в интервале [0 - 1]. Если аргумент число не задан или больше нуля, то порождается очередное случайное число, если он равен 0, то результатом будет предыдущее случайное число, а если число меньше нуля, то всякий порождается одно и то же число, определяемое аргументом. Перед тем, как получить последовательность случайных чисел необходимо вызвать функцию Randomize для инициализации последовательности. Заметим, для формирования значения случайных чисел используется таймер. Чтобы получить целочисленную последовательность равномерно распределенных случайных чисел в интервале [Min - Max], следует использовать следующее преобразование

  • Int((Max - Min +1)*Rnd)+ Min

В примерах предыдущей лекции мы неоднократно использовали эту функцию для инициализации массивов с числовыми данными.

  • Sgn(число) - знак числа (Если число больше нуля - 1, равно нулю - 0, меньше нуля - -1).

  • Sin(число) - синус угла. Аргумент число задает угол в радианах.

  • Sqr(число) - квадратный корень.

  • Tan(число) - тангенс угла. Аргумент число задает угол в радианах.

Во всех этих описаниях под аргументом функции число понимается числовое выражение.

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

HSin(X) = (Exp(X) - Exp(-X))/2

а вычисление арккотангенса:

Arccotan(X) = Atn(X) + 2*Atn(1)