Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2020

Просмотров: 7928

Скачиваний: 25

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

обозначения, описания операторов сравнения и возможные варианты их значений

(слова

 Левый

 и

 Правый

 используются нами для ссылки, соответственно, на левый и

правый операнды выражения).

Таблица 4.2. Операторы сравнения

Обозначение

и описание

< (Меньше)
<= (Меньше или

равно)
> (Больше)
>= (Больше или

равно)

 равно)

True

Левый < Правый
Левый <= Правый

Левый > Правый
Левый >= Правый

Левый = Правый
Левый <> Правый

False

Левый >= Правый
Левый > Правый

Левый

 Правый

Левый < Правый

Левый О Правый
Левый = Правый

Null

Левый или Правый = Null
Левый или Правый = Null

Левый или Правый = Null
Левый или Правый - Null

Левый или Правый = Null
Левый или Правый  Null

Если читать выражение оператора сравнения слева направо, указывая вначале ле-

вый операнд, название оператора, а затем правый операнд, то результат становится

очевидным. Рассмотрим следующий пример:

5 > 6

Строка этого кода читается так: "Пять больше шести". Число 5, разумеется, не

больше числа 6; поэтому результат сравнения равен False. Если вам трудно запом-
нить названия операторов сравнения, сделайте шпаргалку и прицепите ее к монитору

компьютера. Еще один хороший прием запоминания таков: воспринимайте символы

< и > как стрелки и следуйте правилу — чтобы результат оказался истинным, стрелка
своей вершиной должна указывать на меньшую из двух сопоставляемых величин.

Листинг 4.4 содержит несколько примеров, иллюстрирующих применение операторов

сравнения литеральных выражений. Далее приводится анализ каждого примера.

Листинг 4.4. Примеры операторов сравнения

1: Sub

 Dim Result As Boolean

Result =
Result =
Result =

(6

 > 5)

(6 >= 5)

("Hello" < "World")

3:
4:
5:
6:
7:

8: Result = (False <> False)

 End Sub

Result = ("Hello" <= "World")
Result = (True = False)

В строке 2 объявляется булева переменная Result — далее она будет использо-

ваться для хранения результатов выполнения всех операций сравнения. (Вообще, опе-

раторы сравнения чаше применяются в логических выражениях. Более подробные

сведения по этой теме приведены в главе "5-й час. Программирование управляющих

 В строке 3 и всех остальных скобки использованы только для удобочитае-

мости; формально они не обязательны, но существенно проясняют смысл выражений.

В результате выполнения строки 3 переменной Result будет присвоено значение
True, поскольку число 6 действительно больше, чем 5. Строка 4 оставляет значение

4-й час. Последовательность действий и выполнение вычислений

75


background image

Result без изменений — выражение 6 >= 5 истинно. Result продолжает сохранять

значение True и после присваивания в строке 4, так как "Hello" меньше, чем

"World". Итог вычислений, выполняемых в строке 5, аналогичен. В строке 6 осуще-

ствляется сравнение литеральных булевых величин и переменной Result присваива-
ется значение False, поскольку True не может быть равно False. Ситуация не изме-
няется и после выполнения оператора в строке 8 — действительно, False не может не
равняться

Листинг 4.4 демонстрирует еще одно применение операторов сравнения — сопос-

тавляться могут не только целые числовые величины. Ничто не мешает сравнивать

булевы значения, числа различных типов и даже строки. При выполнении операций

сравнения значений типа string компилятор Access не учитывает регистр символов.
Символы, занимающие в строках одинаковые позиции, сопоставляются в порядке их

следования в алфавите, независимо от регистра. Поэтому результаты выполнения

строк 4 и 5 листинга 4.4 именно такие, как описаны выше. Независимость результа-

тов сравнения от регистра означает, что, например, строки "hello", "HELLO",

"Hello" и любые другие, обозначающие то же слово и образованные из строчных и

прописных

 считаются одинаковыми.

Логические операторы в истинном свете

Логические операторы, вероятно, несколько сложнее для восприятия. Если вы ни-

когда не имели с ними дела, вам потребуется практика. В табл. 4.3 приведены обозначе-

ния, наименования и описания всех логических операторов, поддерживаемых в VBA.

Таблица 4.3. Логические операторы

Обозначение

And

Eqv

Imp

Not

Or

Xor

Наименование

И

Эквивалентность

Импликация
НЕ

ИЛИ
Исключающее ИЛИ

Описание

Логическая конъюнкция
Логическая эквивалентность
Логическая импликация
Логическое отрицание
Логическая дизъюнкция
Логическое исключение

"Вам уже хорошо известны логические операторы, или вы не осведомлены о них".

Последнее предложение представляет собою логическое выражение. Первое высказы-

вание в нем — "вам уже хорошо известны логические операторы", а второе — "вы не

осведомлены о них". Высказывания связаны между собою союзом (в контексте нашей

темы — оператором) "или".

Бинарные логические выражения на основе оператора And истинны (т.е. вычисля-

ются с результатом True) только в том случае, если оба высказывания-операнда рав-
ны True. Выражения, использующие оператор Or, обращаются в False только тогда,
когда оба операнда равны False. Унарный оператор отрицания (Not) изменяет зна-

чение своего операнда на противоположное. С целью облегчения задачи исчисления

высказываний для каждого логического оператора были разработаны так называемые

таблицы истинности.

 В табл. 4.4 собраны воедино таблицы истинности всех бинарных

логических операторов.

76

Часть I. Азбука программирования в Access


background image

Таблица 4.4. Таблицы истинности бинарных логических операторов

Значения

операндов

False-True

True-True

And

False
False
False

True

Eqv

True

False
False

True

Imp

True
True

False

True

Or

False

True
True
True

Xor

False

True
True

False

Новый термин

Таблица истинности

 — это сжатое представление результатов вычисления

выражения с использованием определенного логического оператора и

различных

 операндов.

Левый столбец табл. 4.4 содержит четыре возможных сочетания значений левого и

правого операндов (так, например, пару

 True-False

 следует воспринимать как обозна-

чение такой комбинации, когда левый операнд равен True, а правый — False). В
следующих пяти столбцах представлены результаты вычисления выражений на основе
определенного оператора для каждого из четырех сочетаний операндов. Например, в
ячейке на пересечении столбца с оператором And и первой строки (соответствующей
сочетанию

 False-False)

 находится значение False. Это значит, что если оба аргумента

оператора And равны

 то результат всего выражения также равен

 Дру-

гими словами, если каждое высказывание ложно, то и их конъюнкция также ложна.

Как нетрудно понять, конъюнкция (выражение на основе оператора And) истинна

тогда и только тогда, когда истинны одновременно оба высказывания (операнда, или
аргумента). Для достижения истинности логической дизъюнкции (выражения на ос-
нове оператора Or) достаточно, чтобы, по меньшей мере, один из операндов был ра-

вен True. Так же несложно узнать о закономерностях "поведения" и всех остальных
бинарных логических операторов, описанных в табл. 4.4. Если у вас возникают за-

труднения с запоминанием правил исчисления логических высказываний, напишите

коротенькую шпаргалку с таблицами истинности операторов и держите ее на виду.

Единственный унарный логический оператор — Not — описывается собственной

таблицей истинности (табл. 4.5).

Таблица 4.5. Таблица истинности логического оператора Not

Значение операнда

Not

False

True

True

False

Результат выполнения выражения на основе оператора отрицания Not — это вели-

чина, обратная значению операнда.

В листинге 4.5 приведены примеры вычисления различных логических выражений.

Комментарии даны ниже. .

Листинг 4.5. Примеры вычисления логических выражений

 Dim Result As Boolean

2: Result = True Or False

 Result = True And True

4: Result = False Xor True

4-й час. Последовательность действий и выполнение вычислений

77


background image

5: Result = False Imp False
6: Result = True Eqv False
7: Result = Not True

Строка 1 содержит выражение объявления булевой переменной Result — она бу-

дет использоваться для хранения результатов вычисления логических выражений,
приведенных далее. Результат выполнения оператора в строке 2 — True. Значение
Result не меняется и после вычисления следующего оператора. Результат выполне-
ния строки 4 также равен True, поскольку выражение на основе

 истинно в тех

случаях,

 значения операндов различны. Результат логической импликации

(строка 5) равен True, так как оба операнда выражения равны False (обратитесь к

данным табл. 4.4). Посмотрим на строку 6: True, разумеется, не эквивалентно False,

и поэтому результат равен False. Наконец, оператор Not, заданный в строке 7, отри-
цает значение своего операнда True — таким образом, результат равен False.

Оператор And

Логическому оператору And соответствует союз "и" русского языка. Запомните: ре-

зультат логической конъюнкции будет истинным тогда и только тогда, когда истинны
одновременно оба ее операнда. В качестве операндов могут выступать как простые
переменные, именованные константы или литералы, так и выражения. Листинг 4.6

демонстрирует несколько примеров использования логического оператора And.

Листинг

 Примеры использования оператора And

1: Dim Result As Boolean

2: Result = False And False
3: Result = (6 > 5) And (7 = 7)

Выражение в строке 2 можно воспринимать как модель конъюнкции двух выраже-

ний, дающих в результате вычисления значения False. False And False равно

False. Оба операнда уравнения в строке 3 — это выражения на основе операторов

сравнения. Каждому

 языка Access VBA поставлено в соответствие то или

иное значение приоритета выполнения (об этом речь пойдет ниже, в разделе "Кто
здесь

 но порядок вычислений легко изменить с помощью скобок. Левый

операнд, 6 > 5, равен True; правый, 7 = 7, также равен True. Поэтому общий ре-
зультат конъюнкции True And True равен True.

Оператор Eqv

Вы вправе спросить, зачем нужен оператор эквивалентности (Eqv), если уже есть

общеизвестный оператор равенства (=). Верно, в логических выражениях оба эти опе-
ратора дают один и тот же результат. Отличие между ними состоит в том, что Eqv
употребляется также при выполнении побитовых операций (подробнее о них расска-
зывается ниже, в одноименном разделе). Рассмотрим код листинга 4.7.

Новый термин

Побитовой

 называется операция, выполняемая над одноименными разряда-

ми двух чисел в двоичном представлении и дающая в результате новое число.

Листинг 4.7. Сравнение операторов = и Eqv

1: Dim I As Integer

2 : Dim В As Boolean

3: В = (5 = 7)

 I = (5 Eqv 7}

78

Часть I. Азбука программирования в Access


background image

Результат сравнения двух целых чисел с помощью оператора = — это значение ти-

па Boolean. Однако, если к тем же операндам применяется оператор Eqv, результат

его выполнения — целое число. Так, переменная в в строке 3 получает значение

False, а переменной I в строке 4 присваивается значение -3.

При сравнении булевых значений операторы равенства и эквивалентности действуют

одинаково. Но когда в качестве операндов выступают целые числа, то оператор = по-

прежнему выполняет логическую проверку, a Eqv

 побитовую операцию.

Напомним: побитовым операциям посвящен одноименный раздел текущей главы.

Оператор Imp

Оператор импликации — это логический инструмент доказательства истинности

утверждений. Например, во фразе "Если на Васе — оранжевый галстук, это свиде-

тельство

 настроения" содержится утверждение о том, что процесс и результат

завязывания на Васиной шее оранжевого галстука напрямую связаны с тем, что пер-

сонаж не в духе. Если на Васе в данный момент нет злополучного галстука, то, со-

гласно приведенной выше формуле, может показаться, что наш герой радуется жизни.

К несчастью, Вася может впасть в уныние даже в том случае, если его оранжевый гал-

стук две недели назад был сдан в химчистку.

Результат импликации становится ложным в единственном случае — когда правый

операнд равен False. Если операция импликации для вас не очевидна, обращайтесь

за помощью к таблице истинности (см. табл. 4.4).

Оператор Or

Оператор Or ("ИЛИ"), как и его ближайший родственник, And ("И"), относитель-

но легко поддается осмыслению и не нуждается в подробных разъяснениях, поскольку

все мы ежедневно и неоднократно пользуемся им в разговорной речи.

Подобно всем рассматриваемым здесь логическим операторам, Or может приме-

няться также и в побитовых операциях (см. раздел "Побитовые операции").

Оператор

Оператор

 называют еще "исключающим ИЛИ" либо даже "не ИЛИ". Последний

вариант — просто недоразумение. Если воспринять его буквально, то может показаться,

что вначале необходимо вычислить результат операции

 а затем применить к нему

оператор отрицания. В итоге — нонсенс. Однако все гораздо проще: результат выполнения

 равен True только в тех случаях, когда значения операндов различны.

Оператор Not

Not — единственный унарный логический оператор. Кроме него, в словаре Access

VBA есть еще один унарный оператор — AddressOf. Используйте Not в тех случаях,

когда необходимо получить противоположное логическое значение.

Побитовые операции

Побитовыми называются операции, выполняемые над одноименными разрядами

чисел в двоичном представлении. Вы, вероятно, знаете, что один байт, грубо говоря,

соответствует символу. Байт состоит из восьми битов. Бит — это двоичное число, спо-

собное принимать одно из двух значений: 0 или

Когда речь идет о логических операторах, применяемых к целым числам, мы под-

разумеваем, что компилятор выполняет действия над битами и сохраняет результат в

целочисленной переменной. Чтобы понять смысл побитовых операций, необходимо

преобразовать пару обычных десятичных чисел в двоичную форму и сравнить значе-

ния их разрядов, расположенных на одинаковых позициях.

4-й час. Последовательность действий и выполнение вычислений 79