Программирование >>  Проектирование интерфейса пользователя 

1 ... 15 16 17 [ 18 ] 19 20 21 ... 153


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 истинны (т.е. вычисляются с результатом True) только в том случае, если оба высказывания-операнда равны True. Выражения, использующие оператор Or, обращаются в False только тогда, когда оба операнда равны False. Унарный оператор отрицания (Not) изменяет значение своего операнда на противоположное. С целью облегчения задачи исчисления высказываний для каждого логического оператора были разработаны так называемые таблицы истинности. В табл. 4.4 собраны воедино таблицы истинности всех бинарных логических операторов.



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

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

False-False

False

True

True

False

False

False-True

False

False

True

True

True

True-False

False

False

False

True

True

True-True

True

True

True

True

False

Новый термин

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

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

ячейке на пересечении столбца с оператором And и первой строки (соответствующей

сочетанию False-False) находится значение False. Это значит, что если оба аргумента оператора And равн se, то результат всего выражения также раве Ise. Другими словами, если каждое высказывание ложно, то и их конъюнкция также ложна. Как нетрудно понять, конъюнкция (выражение на основе оператора And) истинна тогда и только тогда, когда истинны одновременно оба высказывания (операнда, или аргумента). Для достижения истинности логической дизъюнкции (выражения на основе оператора Or) достаточно, чтобы, по меньшей мере, один из операндов был равен True. Так же несложно узнать о закономерностях поведения и всех остальных бинарных логических операторов, описанных в табл. 4.4. Если у вас возникают затруднения с запоминанием правил исчисления логических высказываний, напишите коротенькую шпаргалку с таблицами истинности операторов и держите ее на виду.

Единственный унарный логический оператор - Not - описывается собственной таблицей истинности (табл. 4.5).

Таблица 4.5. Таблица

истинности логического оператора Not

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

False

True

True

False

Результат выполнения выражения на основе оператора отрицания Not - это величина, обратная значению операнда.

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

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

Dim Result As Boolean Result = True Or False Result = True And True

Result = False Xor True



5: Result 6: Result 7: Result

False Imp False True Eqv False 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: 3 :

Dim Result As Boolean Result = False And False 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)

4: I = (5 Eqv 7}



1 ... 15 16 17 [ 18 ] 19 20 21 ... 153

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика