
Новый термин
Уравнения —
это выражения, использующие арифметические и логиче-
ские операторы, а также операторы сравнения и сложения строк.
Операнды уравнений
Каждое уравнение содержит, по меньшей мере, один операнд. Операндами могут
служить объекты данных различных видов — константы-литералы, переменные, име-
нованные константы, глобальные значения и результаты вычисления
В роли операндов могут выступать объекты любого типа, а каждый оператор спо-
собен воздействовать на данные конкретных типов. Другими словами, типы операн-
дов должны соответствовать типу оператора. Подробнее об этом — далее в главе.
Предлагаем рассмотреть операнды различных видов.
Константы-литералы
Литерал —
это постоянное значение, введенное в текст программы непосредственно,
без объявления и указания имени.
содержит несколько примеров кон-
стант-литералов.
Листинг
Примеры констант-литералов
1:
2:
3:
4 :
5 :
6:
5
"Здравствуй,
347-7170"
10#
"А"
3.14159
7: True
Литерал — это значение, на которое нельзя сослаться по имени.
Литерал 5, заданный в строке
— это просто число 5. Литералы могут иметь лю-
бой тип — лишь бы он совпадал с типом оператора, к которому относится операнд.
Литералы в строках 2, 3 и 5 — это значения типа string. Значение в строке 4 выгля-
дит несколько необычно. Символ фунта
после числа 10 указывает компилятору
Access, что значение следует трактовать как число двойной точности (Double), а не
просто как целое (Integer). В строке 6 в виде литерала задано число двойной точно-
сти, равное значению
п.
Строка 7 содержит логический литерал True.
Переменные
С переменными вы уже ознакомлены — мы достаточно подробно говорили о них в
главе "3-й час. Как программа работает с данными".
Переменная —
это именованный
объект,
хранить данные определенного типа. Операторы, как правило,
"неравнодушны" к типам данных, которые им предлагаются. Если в уравнении типы
данных не соответствуют тем, которые предусматриваются оператором, компилятор
Access выдаст сообщение об ошибке (рис.
Используйте переменные в том случае, если, по вашему мнению, объекты данных
могут изменять свои значения. Если же заведомо известно, что содержимое элемента
данных будет оставаться постоянным, уместно определить его в виде константы.
70
Часть I. Азбука программирования в Access

с о
PI -
-
- PI *
I
Если типы данных не соответствуют тем, которые поддерживаются кон-
кретным оператором, появляется окно сообщения об ошибке
Константы
Константы —
это именованные постоянные значения. Константы, по определе-
нию, не могут изменяться — ни преднамеренно, ни случайно. Используйте констан-
ты, если вам необходимы твердые гарантии целостности постоянных значений, адре-
суемых по имени.
Константы соответствующих типов могут использоваться в качестве операндов для
любых операторов; исключение составляет оператор присваивания — употребление
констант в его левой части не допускается. После начальной инициализации констан-
те не может быть присвоено новое значение. Константа инициализируется в точке ее
первого определения — как в
Const MyConst = 5
Тип данных константы задается неявно — компилятор определяет его автоматиче-
ски в момент инициализации. Выражение Const MyConst = 5 неявно предполагает
использование типа Integer.
Глобальные элементы данных
Определение элемента данных с помощью служебного слова Global оказывает
влияние на возможный контекст его использования, но никак не связано с заданием
типа.
элементы — переменные и константы — могут относиться к любо-
му типу. Определение элемента данных посредством слова Global просто предостав-
ляет возможность доступа к нему из разных мест кода. В листинге 4.2 приведены
примеры определения глобальных элементов данных.
4-й час. Последовательность действий и выполнение вычислений
71

Листинг 4.2. Примеры определения глобальных элементов данных
Global Const
=
Global
As Integer
Новый термин
Контекст —
это совокупность признаков, определяющих возможности
доступа к объектам программы. Глобальные данные могут адресоваться из
любого места программного кода. Объекты, лишенные признака Global
(т.е. локальные), разрешается использовать только внутри того блока кода,
в котором они определены. Контекст может быть задан самыми разными
конструкциями языка программирования. Поэтому считаем целесообраз-
ным на некоторое время отложить обсуждение вопросов определения кон-
текста. Мы вернемся к ним в главе "8-й час. Декомпозиция задач".
В строке 1 листинга 4.2 определяется глобальная константа
Обратите
внимание, что единственное отличие локальных констант от глобальных состоит в от-
сутствии служебного слова Global в их определении. Строка 2 содержит определение
глобальной переменной Mylnteger типа Integer. Значение
постоянно;
напротив, значение переменной Mylnteger легко изменить в любой строке кода.
Результаты вычисления функций
В качестве операндов уравнений могут применяться и значения, возвращаемые
функциями.
Функция —
это набор строк кода, адресуемый по имени и возвращающий
значение определенного типа. Мы более подробно поговорим о функциях на 8-ом заня-
тии. Ниже приведем пример, иллюстрирующий использование функций в уравнениях.
Листинг 4.3. Пример использования функций в качестве операндов уравнений
1: Function GetUserName () As String
GetUserName = InputBox ("Введите имя
"Имя
"Пол
3 : End Function
4: Sub
5: Dim Greeting As String
6: Greeting =
+ GetUserName
7 : MsgBox Greeting
End Sub
Строки 1, 2 и З содержат функцию, возвращающую имя пользователя в виде стро-
ки. В строке 4 объявлена переменная Greeting. Строка 5 содержит оператор при-
сваивания, сохраняющий в переменной Greeting результат сложения литерала
"Здравствуйте
и строки с именем пользователя, возвращенной функцией GetUs-
erName. В строке 6 применена стандартная процедура MsgBox Access, предназначен-
ная для вывода окна сообщения. (Оператор сложения строк, используемый в строке 5
листинга, подробно рассмотрен ниже, в одноименном разделе этой главы.)
Правила „дорожного
В уравнениях, как вам уже известно, могут функционировать самые разные типы
данных и применяться разные способы их определения. Постижение таинств про-
граммирования в Access требует времени, причем существенную его часть следует по-
тратить
изучение соответствий между типами данных и операторами, способными
с ними взаимодействовать. Перечислим основные правила, которым необходимо сле-
довать, чтобы успешно достичь конечной цели, путешествуя в мире Access.
72
Часть I. Азбука программирования в Access

Во-первых, литералам имеет смысл предпочесть именованные константы и пере-
менные. Если константа определена единожды и применяется во многих местах тек-
ста, при необходимости ее изменения вам потребуется обратиться только к одной
строке кода, в которой выполняется инициализация. Но если вы применяете литера-
лы, вам придется отыскивать и исправлять их по всему тексту программы.
Второе, не менее полезное, правило гласит: избегайте использования глобальных
переменных. Глобальные данные — потенциальный источник недоразумений и оши-
бок. В определенный момент времени все мы — и я в том числе — способны надежно
хранить в памяти только незначительный объем информации. Если переменные ис-
пользуются только тогда и в тех местах кода, когда и где они определены, текущий
контекст их употребления будет понятен и вам, и читателям вашей программы как
сейчас, так и много дней спустя. Кроме
если объект данных локален, легче из-
бежать случайных ошибок в его применении.
Наконец, старайтесь не создавать чрезмерно сложных выражений. Длинные фразы
могут показаться признаком высокого профессионального уровня, но их сложно со-
ставлять, они с трудом поддаются отладке и часто приводят к результатам, далеким от
исходного замысла.
Классификация операторов по числу
операндов
Операторы, применяемые в языках программирования, можно разделить на три
группы в зависимости от числа используемых ими операндов: унарные, бинарные и
тернарные.
Унарные
операторы обращаются с одним, правосторонним, операндом.
Бинарные
операторы имеют дело с двумя операндами, левым и правым.
Тернарные
операторы взаимодействуют с тремя аргументами. Единственный известный мне тер-
нарный оператор — это конструкция из служебных символов ? и
используемая в
языках С и C++. Поскольку в Access VBA тернарные операторы не реализованы, нам
более не стоит о них говорить.
В Access VBA поддерживаются только два унарных оператора — Not и
AddressOf. Оба они предполагают использование правосторонних аргу-
ментов. Все
операторы VBA бинарные. Это означает, что их син-
таксис можно описать следующим образом:
Подставьте вместо аргументов ЛевыйОперанд и ПравыйОперанд выражения, а вме-
сто словосочетания БинарныйОператор — любой реальный бинарный оператор
(естественно, следуя определенным правилам и ограничениям) — вы получите про-
стое уравнение с одним оператором.
Аналогичным образом можно представить синтаксис унарного оператора:
УнарныйОператор ПравыйОперанд
Чтобы получить уравнение с унарным оператором, достаточно заменить
словосочетание УнарныйОператор одним из допустимых операторов — Not
или AddressOf, а в качестве правого операнда указать соответствующее
выражение. Оператор Not мы рассмотрим более подробно в разделе
"Логические операторы в истинном свете", а примеры использования опе-
ратора AddressOf приводятся в разделе "Специальные операторы".
4-й час. Последовательность действий и выполнение вычислений 73

Применение арифметических операторов
Говоря об арифметических операторах, я имею в виду те же самые средства вы-
полнения арифметических действий, которые предоставлены любым калькулятором.
Все мы начинали знакомиться с ними еще в начальной школе. (А ну-ка, вспомните,
как звали вашу первую учительницу математики!) Все арифметические операторы
носятся к разряду бинарных. Не будем тратить время на дополнительные разъясне-
ния — они излишни. На мой взгляд, достаточно привести сведения о символах, по-
средством которых обозначаются арифметические операторы, и особо отметить те из
них, которые используются относительно редко. В табл. 4.1 представлены обозначе-
ния, наименования и описания всех арифметических операторов языка
Таблица
Арифметические операторы
Символ
Наименование
Описание
\
Mod
Возведение в степень
Умножение
Вещественное деление
Целочисленное деление
Взятие остатка
Сложение
Вычитание
Формат:
Y. Результат — X, возведенное в сте-
пень, равную Y
Формат: X * Y. Результат — произведение X и Y
Формат: X / Y. Результат — вещественное частное
от деления X на Y
Формат: X \ Y. Результат — целое частное от деле-
ния
X на Y
Формат: X Mod Y. Результат — остаток от целочис-
ленного деления X на Y (например, 5 Mod 3 = 2)
Формат: X + Y. Результат — сумма X и Y
Формат: X - Y. Результат — разность X и Y
Символ прямой косой черты (/) — это обозначение оператора вещественного де-
ления. В качестве левого и правого операндов могут использоваться любые числа, и в
результате деления вы получите вещественное число. Например, 5 / 3 = 1.666. Но ес-
ли в том же выражении употребить символ обратной косой черты (\), то 5 \ 3 = 1.
Применяйте тот оператор деления, который отвечает условиям конкретной задачи.
Вам наверняка знаком и оператор возведения в степень
хотя его нельзя причислить
к тем, которыми приходится пользоваться ежедневно. Наиболее часто выполняются опе-
рации возведения числа в квадрат и куб. Оператор возведения в произвольную степень на-
ходит применение в приложениях, связанных с решением научно-технических задач.
Последний из группы наиболее экзотических операторов — это оператор взятия
остатка (деления по модулю) (Mod), который используется для определения признака
целочисленной делимости одной величины на другую и лежит в основе целого разде-
ла математики — теории колец. Чтобы определить, делится ли без остатка одно число
на другое, необходимо проверить выполнение тождества X Mod Y = 0.
Операторы сравнения
Операторы сравнения позволяют проверить, каким образом соотносятся значения
левого и правого операндов. Результат сравнения — это булева величина, принимаю-
щая одно из двух значений — True (истина) или False (ложь). В табл. 4.2 приведены
74
Часть I. Азбука программирования в Access