- •Часть VI
- •Глава 6.1 Создание приложений с помощью vba Возможности Visual Basic
- •Редактор Visual Basic (vbe)
- •Управление проектами в vbe
- •Глава 6.2 Основы программирования на ув6 Работа с переменными
- •Использование констант
- •Типы данных Object и Variant
- •Простейшие конструкции и операторы
- •Конструкции управления
- •Разновидности циклов
- •Работа с массивами
- •Работа со строками
- •Работа с датой и временем
- •Пользовательские процедуры и функции
- •Sub название процедуры (параметры) операторы
- •Function название функции (параметры) [As тип] операторы
- •Работа с записями
- •Работа с файлами
- •Input(число, номер)
- •Глава 6.3 Объектные модели
- •Объектная модель vba
- •Объектная модель Microsoft Office 2000
- •Объектная модель Microsoft Word 2000
- •Объектная модель Microsoft Excel 2000
- •Объектная модель Microsoft Access 2000
Простейшие конструкции и операторы
Используемые символы. В языке Visual Basic при создании программ могут использоваться следующие символы:
• прописные и строчные буквы латинского и русского алфавитов;
427
• цифры от 0 до 9;
• знаки: . (точка), , (запятая), ; (точка с запятой), ' (апостроф), " (кавычки), ( ) (круглые скобки);
• символ пробела;
• знаки арифметических операций: + (плюс), - (минус), * (умножение), / (деление), ^ (возведение в степень);
• знаки сравнения: < (меньше), > (больше), = (равно), <= (не больше, используется вместо знака ), >= (не меньше, используется вместо знака ), <> (не равно, используется вместо знака );
• знаки: @ (коммерческое "эт"), # (диез), $ (знак доллара), % (процент), & (амперсанд, или коммерческое "и"), \ (косая черта слева направо), _(знак подчеркивания), ! (восклицательный знак), ? (вопросительный знак).
Представление чисел. Числа в Visual Basic представляют собой последовательность цифр со знаком + или - (знак + обычно не употребляется), например: +7, -18, 32. Если в числе имеется дробная часть (т. е. десятичная дробь), то она отделяется от целой части точкой. При этом если целая часть равна нулю, то ее можно опустить, например: 0.5, -5. 68, -. 12. Описанная форма записи чисел носит название основной.
Кроме основной, возможна также запись чисел в экспоненциальной форме (в форме с порядком). Например, десятичное число 0,0095 или его эквивалент 9,5 • 10-3 на языке Visual Basic может быть записано в следующем вице: 9. 5Е-4. Аналогичным образом число 52000000 можно записать так: 52Е+6 или 52Е6. Латинская буква Е и находящееся за ней число в данной форме записи называется порядком, перед которым обязательно должно быть записано число в основной форме. Вместо буквы Е при указании порядка можно также использовать букву D, однако после компиляции этот символ будет автоматически исправлен на Е.
Арифметические выражения. При использовании в программе каких-либо арифметических вычислений, их представление на языке Visual Basic схоже с математическим. Выражения могут содержать числа, переменные, функции, которые соединены между собой знаками арифметических действий (см. табл. 6.11).
428
Кроме обычных арифметических действий - сложения (+), вычитания (-), умножения (*), деления (/) и возведения в степень (^),- в языке Visual Basic можно также выполнять целочисленное деление (\) и определять остаток от деления при помощи оператора Mod. Например:
Листинг 6.1. Применение арифметических операторов.
Dim m, n, x m = 5 n = 2
x = m / n ' Результат; x = 2,5 x = m \ n ' Результат: х = 2 x = m Mod n ' Результат; x = 1
При наличии в выражении нескольких арифметических операций порядок их выполнения определяется правилами приоритета:
1. возведение в степень (^)
2. умножение и деление - обычное и целочисленное (*, /, \)
3. остаток от деления (оператор Mod)
4. сложение и вычитание (+, -)
Операции с одинаковым приоритетом выполняются в соответствии с порядком их записи в операторе слева направо. Если в выражении какие-либо операции заключены в скобки, то независимо от приоритета они выполняются в первую очередь.
Следует отметить тот факт, что в арифметических выражениях могут присутствовать величины различных типов, например,
429
складываются два числа: целое и вещественное. Результатом такого сложения будет величина вещественного типа, поэтому особое внимание следует обращать на тип той переменной, которой он будет присвоен. Если в этом случае типы переменной и присваиваемого ей результата арифметического выражения не будут совпадать, например, переменная будет типа Integer, а значение выражения - типа Single или Double, то после выполнения данного оператора значение переменной будет получено путем автоматического округления результата.
В языке Visual Basic предусмотрена возможность преобразования переменных из одного типа в другой при помощи специальных функций (см. табл. 6.9).
Однако при этом следует обращать внимание на значение, которое содержит переменная, - необходимо, чтобы оно соответствовало тому типу, в который переменная будет преобразована. В частности любое числовое значение можно преобразовать в строку, однако обратное действие возможно только в том случае, если содержимым строки является число в основной или экспоненциальной форме. Например:
intNunber =15
strNumber = CStr(intNunber) ' Результат; "15"
strNumber = "2,5E1"
intNunber = Cint(strNunber) ' Результат; 25
Особое внимание следует обратить на то, что в строке, преобразуемой в число и содержащей как целую, так и дробную части, использование в качестве разделителя точки или запятой зависит от настроек в панели управления - раздел Язык и стандарты (см. рис. 6.17).
Если для разделения целой и дробной части установлена точка, то в преобразуемой строке можно использовать как точку, так и запятую. С другой стороны, если установлена запятая, то в строке для преобразования в число необходимо использовать только запятую. Применение точки в этом случае приведет на стадии компиляции к ошибке несовпадения типов. Например:
strNunber = "2.5E1" intNunber = Cint(strNunber) _ ' Результат; ОШИБКА
430
Данная ошибка также появляется тогда, когда значение преобразуемой переменной не соответствует задаваемому типу. Например:
strNumber = "х1" intNumber = Cint(strNuinber) ' Результат: ОШИБКА
Математические функции. В языке Visual Basic для решения различных математических задач существуют встроенные функции, зависящие от одного аргумента, которые можно использовать непосредственно при вычислении каких-либо выражений (см. табл. 6.12).
431
Аргумент во всех тригонометрических функциях задается в радианах, а не в градусах. При необходимости перевода значения, которое задано в градусах, в радианы, следует использовать формулу:
радианы = градусы •Пи /180
при вычислении арктангенса необходимо, чтобы аргумент находился в пределах интервала: (-пи/2; пи/2).
432
При использовании стандартного датчика случайных чисел генерирует число в интервале [0; I], при этом аргумент х в функции Rnd можно опустить.
Логические операторы. Помимо математических, в языке Visual Basic можно также вычислять значения логических выражений, которые будут иметь тип Boolean и могут принять одно из двух значений: True (Истина) или False (Ложь).
Прежде всего, переменным логического типа можно присваивать результат любого выражения, значение которого принадлежит этому типу. Например:
Листинг 6.2. Работа с логическими значениями
Dim х, у, blnА
х = 5
у = 2
blnА = х > у ' Результат: True
blnА = х < у ' Результат: False
Также можно использовать реализованные в данном языке логические функции одной и двух переменных, которые возвращают True или False в зависимости от значений параметров (см. табл. 6.13).
В качестве функции одной переменной в Visual Basic выступает логическое отрицание (оператор Not), результатом выполнения которого является значение True, если параметр был равен False, и наоборот, результат равен False, если параметр содержал значение True.
433
Описание логических операторов, реализующих данные функции, выглядит следующим образом:
And. Действие "конъюнкция" (логическое "и").
Or. Действие "дизъюнкция" (логическое "или").
Хоr. Действие "двоичное сложение".
Imp. Действие "импликация".
Eqv. Действие "эквивалентность".
Ниже приведен пример применения всех описанных выше операторов.
Листинг 6.3. Иллюстрация использования логических функций
Dim х, у, z, blnА х = 1
у = 2
z = 3
'Оператор And
blnА = х > у And у > z ' Результат: False 'Оператор Not
blnА = Not(x < у) ' Результат: False 'Оператор Оr
blnА =x<y0ry>z ' Результат: True 'Оператор Хоr
blnА = х < у Хог у < z ' Результат: False 'Оператор Imp
blnА = х > у Imp у > z ' Результат: True 'Оператор Eqv
blnА = х < у Eqv у < z ' Результат: True
