Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Тип данных | Размер в байтах | Разрядность (цифр) | Диапазон, пояснение |
Boolean Byte Integer Long Single Double Currency Date String Object Variant | 1+L | ≤ 3 ≤ 5 ≤ 10 ≤ 7 ≤ 15 ≤ 19 | True, False - логические значения 0, 255 - целые положительные числа -32768, 32767 – целые числа -2147483648, 2147483647 – длинные целые -3.402823.1038, -1.401298.10-45– отрицательные числа 1.401298.10-45, 3.402823.1038 – положительные числа Действительные числа с двойной точностью Действительные числа с 4 знаками после десятичной точки. Используются для точных денежных расчетов 01.01.0100, 31.12.9999 - даты Строка из L символов; L≤ 65535 Объект – фактически, ссылка на него, т.е. адрес его размещения в оперативной памяти Может принимать любой тип данных, т.е. настройка на тип операнда происходит во время исполнения инструкций или процедур |
Когда при разработке приложения возникает необходимость в переменной для хранения данных, ее описывают в модуле перед процедурами или в конкретной процедуре. В первом случае переменная будет доступна всем процедурам модуля (как контейнер общего пользования), а если в ее описании применено ключевое слово PUBLIC, то переменную смогут использовать даже процедуры других модулей. Такую переменную называют глобальной. В ней удобно размещать данные, требуемые многим процедурам. Переменная, описанная внутри процедуры, называется локальной – она используется только в этой процедуре, а в других могут быть переменные с таким же именем. Инструкция, содержащая описание переменной, имеет вид:
Dim ИмяПеременной As ТипДанных
Для определения глобальной переменной вместо Dim пишут Public. Пример описания переменных:
Pablic Nprof, X0 As Single, Y0 As Single
Dim I As Integer, J As Integer, Date1 As Date, Date2 As Date, ФИО As String*32
Nprf=40
При описании переменной ФИО, кроме ее имени и типа, указана длина в байтах. Длину назначают для строковых переменных. Если длину не задать, то будет считаться, что строка имеет переменную длину. Такой подход менее экономичен. Для переменной Nprof тип вообще не указан – по умолчанию ей будет назначен тип Variant – это удобно для программиста, но также не экономично: число в формате Variant занимает 16 байт, а строка – 22 байта плюс по 1 байту на каждый символ. Переменная Nprf вообще не определена – сразу используется в инструкции присваивания. Она также имеет тип Variant по умолчанию. Такой стиль “ввода в действие” переменных довольно опасен. Если Nprf – это опечатка, а надо было написать Nprof, то, возможно, что эту ошибку будет нелегко обнаружить. Поэтому VBA позволяет наложить требование на явное описание всех переменных в модуле. Для этого в описательную часть модуля (до процедур) надо включить инструкцию Option Explicit. Если теперь попытаться использовать в тексте процедур необъявленные переменные, VBA сразу обнаружит ошибки.
Имена переменных должны начинаться с буквы и могут иметь любую разумную длину – не больше 255 символов. Имена не должны содержать пробелов и специальных символов:
! # $ % & @
Иногда имена записывают так: Номер_строки или НомерСтроки. Применение полных имен особенно полезно для глобальных переменных, которые хранят параметры моделируемых объектов и явлений. В компактных процедурах удобнее пользоваться переменными, применяемыми в математике и физике, например: X – координата, M –число строк в матрице или таблице, i – номер очередной строки, N – число столбцов, j – номер текущего столбца, V – скорость, S – путь и т.п. При использовании кратких имен их поясняют в комментариях – см. текст процедуры Mrows в подразделе 10.3.
Кроме возможности явного задания типа переменной, VBA позволяет указать тип переменной неявно, добавив к ее имени символ-указатель:
$ - для типа данных String, например, ФИО$=”Иванов И.И.”;
% - для данных типа Integer, например, i%=1;
& - для данных типа Long, например, CX&=6510200;
! - для данных типа Single, например, x!=107.315;
# - для данных типа Double, например, Pi#=3.14159;
@ - для данных типа Currency, например, SS@=67920.1252
Такой подход вряд ли стоит рекомендовать, но иногда он может способствовать наглядности.
Наряду с переменными, для хранения данных во время работы приложения используются массивы переменных, или просто массивы. Массив описывается так же, как одиночная переменная, только после имени в скобках указывается еще размерность:
Dim V(1 to 200) As Single, T(1 to 200) As Single, i As Integer
Так можно описать массивы измеренных значений скорости и времени для примера в разделе 4. При вычислениях i-ый элемент массива указывают с помощью индекса:
S = S + (V(i) + V(i+1)) * 0.5 * (T(i+1)-T(i))
Так можно записать блок 2, изображенный на рис. 4.1.
Если при описании массива размерность задать одним числом, например, V(200), то будет считаться, что нумерация элементов массива начинается с 0 и оканчивается числом 200. Кроме одномерных массивов, используются многомерные. Предположим, что на листе Excel в первом столбце размещены идентификаторы строк, например, Y1,Y2,…,YI,…,YM, а в первой строке – идентификаторы столбцов: X1,X2,…,XJ,…,XN. На пересечении I-ой строки и J-го столбца находится элемент aIJ матрицы (Рис.10.5).
В этом примере матрица представляет собой таблицу коэффициентов, позволяющих связать любой YI уравнением со значениями X1,…,XN:
YI=aI1*X1+aI2*X2+…+aIJ*XJ+…+aIN*XN
Другими словами мы имеем матричную запись системы линейных уравнений. Пусть для последующей работы с матрицей требуется определить M, N, разместить идентификаторы YI (I=1,…,M) и XJ (J=1,…N) в массивах CY, CX, а элементы матрицы в двумерном массиве A(I,J).
Этот пример иллюстрирует часто встречающуюся ситуацию: в момент составления программы обычно не известно количество элементов массива – оно определяется программой во время исполнения. Если заранее можно оценить максимальную длину массива, то его часто резервируют с расчетом на максимальную размерность. Так, в нашем случае можно принять ограничение: разрабатываемая программа предназначается для работы с матрицами, у которых число строк и столбцов не превышает 40. Тогда инструкция для резервирования массивов будет иметь вид:
Dim CY(1 to 40), CX(1 to 40), A(1 to 40,1 to 40) As Double
Но Visual Basic предоставляет и другую возможность – динамического переопределения размерности массивов. Рассмотрим следующий модуль:
Option Explicit
Dim CY(), CX(), A() As Double
Dim I As Integer, J As Integer, M As Integer, N As Integer
Дата публикования: 2014-11-03; Прочитано: 424 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!