Сделай Сам Свою Работу на 5

Операторы сравнения. Логические операторы





Операторы сравнения и логические операторы используются для формирования какого-либо условия. Результат имеет тип Boolean. Сравнивать можно поименованные и непоименованные константы, переменные совместимых друг с другом типов, любые выражения и функции, результаты которых совместимы по типу.

 

Операторы сравнения

Таблица 7

оператор синтаксис описание
= N1=N2 Равно. Если операнды равны – True, иначе False.
< N1<N2 Меньше. Если N1меньше N2 – True, иначе False.
<= N1<=N2 Меньше или равно. Если N1меньше или равно N2 – True, иначе False.
> N1>N2 Больше. Если N1больше N2 – True, иначе False.
>= N1>=N2 Больше или равно. Если N1больше или равно N2 – True, иначе False.
<> N1<>N2 Неравно. Если операнды неравны – True, иначе False.
Is N1 Is N2 Является. Оба операнда должны иметь тип Object. Если оба операнда указывают на один и тот же объект – True, иначе False.
Like N1 Like N2 Подобно. Операнды должны иметь тип String. Если N1 соответствует образцу, содержащемуся в N2 – True, иначе False.

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

Сравнение строк

Две строки считаются равными тогда и только тогда, когда количество и расположение символов в них одинаково, например:



“abc” = “abc” - верно

“abc” = “abc “ - неверно.

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

В VBA существует два способа сравнения строк: текстовое и бинарное.

При бинарном сравнении VBA «видит» кодовые значения символов, а при текстовом – только содержание, т.е. при бинарном сравнении строки “ААА” и “ааа” считаются неравными, а при текстовом – равными. Причина тому – разные коды для букв, набранных в верхнем и нижнем регистре, причем, символы верхнего регистра имеют меньшие по значению коды, т.о., при бинарном сравнении “ААА” < “ааа”.

Чтобы указать тип сравнения строк необходимо использовать директиву компилятора Option Compare [Text : Binary],

Например: Option Compare Text - текстовое сравнение.

Оператор Like

Этот оператор применим только к строкам, служит для отыскания в тексте заданных образцов. Синтаксис:

StrExpr1 Like StrExpr2

StrExpr1, StrExpr2 – любые строковые выражения, StrExpr2 – специально сконструированное строковое выражение, служащее образцом для сравнения с StrExpr1. Для использования оператора Like существуют специальные символы:



# - любая цифра,

* - любая строка,

? – любой одиночный символ,

[список] – любой символ из списка,

[!список] – любой символ, не входящий в список.

Пустые квадратные скобки игнорируются. В квадратных скобках могут стоять диапазоны значений, т.е. [а-р], но в алфавитном порядке, вариант [р-а] – неверное. В случае, когда нужно проверить, являются ли специальные символы (# * ? [ ) частью строки, нужно заключать их в квадратные скобки, кроме ! и ], их нужно писать без квадратных скобок. Для поиска символа «-» его нужно поместить в конце или в начале строки поиска, иначе он будет воспринят, как указание диапазона. На работу оператора Like так же действует директива Option Compare [Text : Binary].

Рассмотрим примеры поиска образа в строке:

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

“12-23-44” Like “##-##-##” → true

Определим, содержит ли строка шестизначный номер в любом формате

“12-23-44” Like “##*##*##” → true

Определим, содержит ли строка шестизначный код в любом формате с еще одним символом в конце строки.

“12-23-44” Like “##*##*##?” → false (ответ ложный, т.к. знак ? обозначает обязательное присутствие любого символа).

“23.00 руб.” Like “##.## руб.” → true

“23.00 руб.” Like “##.##руб.” → false (результат ложный, т.к. в образ строки не включен пробел)

“??.??*” Like “” → true (заметьте, что * включает также и пробел)

“23.00 руб.” Like “*руб.*” → true (в конце строки образа стоит *, которая включает также отсутствие символов или пустую строку)



Определим наличие в строке цифры в диапазоне от 1 до 8.

“text5” Like “*[1-8]*” → true

“ text5” Like “[1-8]*” → false (значение ложно, т.к. строка не начинается с цифры.

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

1. Применяются для формирования сложных условий;

2. Операнды – значения типа Boolean или любые, преобразуемые в этот тип. VBA считает 0 – false, все остальные числа true.

3. Значение логического выражения может быть типа Boolean или иметь значение Null, если хотя бы один из его операторов имеет значение Null. Empty заменяется на 0.

 

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

Таблица 8

Оператор Синтаксис Описание
And E1 And E2 Конъюнкция. Выражение истинно, если истинны оба его операнда.
Or E1 Or E2 Дизъюнкция. Выражение истинно, если истинен хотя бы один из его операндов.
Not Not E1 Отрицание. Выражение истинно, если E1 ложно и наоборот.
Xor E1 Xor E2 Исключающая дизъюнкция. Выражение истинно, если истинен только один его операнд.
Eqv E1 Eqv E2 Эквивалентность. Выражение истинно, если значения E1 и E2 совпадают.
Imp E1 Imp E2 Импликация. Выражение ложно, если E1 – истинно, а E2 – ложно.

 

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

Таблица 9

And
Операнд1 Операнд2 Значение выражения
True True True
True False False
False True False
False False False
Or
True True True
True False True
False True True
False False False
Not
True   False
False   True
Xor
True True False
True False True
False True True
False False False
Eqv
True True True
True False False
False True False
False False True
Imp
True True True
True False False
False True True
False False True

 

Оператор AND

Оператор AND, как и другие логические операторы, можно использовать для нескольких операндов, например:

(5<7) AND (4>3) AND (5=6) результатом будет False

Независимо от количества операндов результатом логической операции AND будет True только в том случае, когда все операнды выражения будут иметь значение True. В любом другом случае результатом будет False. Обратите внимание, что операнды заключаются в круглые скобки. VBA сначала вычисляет значение каждого операнда внутри скобок, а затем уже все выражение полностью. Чаще всего логические операторы используют в совокупности с операндами-переменными.

Оператор OR

Значение выражения, содержащего в качестве операторов только OR будет истинным, если истинным является хотя бы один его операнд.

Например: (9=0) OR (8<12) OR (8>12) результатом будет True, т.к. выражение-операнд (8<12) истинно.

Операторы AND и OR можно комбинировать:

((5<7) AND (4>3)) OR (5=6) результатом будет True

Оператор NOT используют применительно к одному операнду. Этот оператор меняет значение True на False и значение False на True. Операнд NOT применяют тогда, когда легче сформулировать обратное условие нужному, например, если какие-либо действия нужно выполнить при условии, что какое либо число не попадает в один из диапазонов. В этом случае, можно записать условие попадания в эти диапазоны, объединив диапазоны оператором OR, а условия попадания в границы диапазона оператором AND, а потом добавить отрицание NOT:

NOT((a<10) AND (a>-3)) OR ((a>-20) AND (a<-10))

Оператор XOR

Выражение с применением этого оператора истинно, когда два аргумента не равны. XOR можно выразить через операторы AND, OR и NOT:

(х1 AND NOT x2) OR (NOT x1 AND x2)

Если применить оператор XOR более, чем к двум операндам, то значение выражения будет вычисляться последовательно (рис. 37).

 

Рис. 37. Последовательность вычисления выражения с оператором XOR

 

Оператор EQV – эквивалентность - дает истинное значение тогда, когда операнды равны, т.е. либо они оба истинны, либо оба ложны. Таким образом, эквивалентность противоположна исключающему или. Соответственно эквивалентность также можно выразить через операторы AND, OR и NOT:

NOT((х1 AND NOT x2) OR (NOT x1 AND x2))

Или через оператор XOR:

NOT (x1 XOR x2)

Оператор IMP – импликация. Логически реализует связку естественной речи " если : то". Например, в обычной речи мы часто логически рассуждаем примерно так: "Если на улице идет дождь, то асфальт на тротуаре мокрый". Нетрудно заметить, что два высказывания: x 1 -" на улице идет дождь" и x 2 -" Асфальт мокрый" связаны операцией импликации x 1x 2. Данное умозаключение будет истинным, если при истинном x 1 истинно x 2 . Логическое выражение будет ложным, если при истинном x 1 оказывается ложным x 2, т.к. при наличие дождя на улице асфальт на тротуаре не может оставаться сухим в общем случае.

Если x 1 = 0 (высказывание - предположение ложно, или, говорят, ложная посылка), то x 2 ( следствие) может быть как истинным ("Асфальт мокрый", x 2 =1), так и ложным ("Асфальт сухой", x 2 = 0).

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.