Опубликован: 01.04.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Национальный исследовательский университет "Высшая Школа Экономики"
Лекция 5:

Операции с данными

< Лекция 4 || Лекция 5: 123 || Лекция 6 >

Операции сравнения

Операции сравнения являются операциями отношения между данными. Результат операции - логические значения True (Истина) или False (Ложь). Отношения между значениями булевских переменных и переменных типа Date равносильны отношениям между числовыми данными.

Пример

Процедура сравнивает значения двух переменных, которым присвоены значения True и False ( рис. 5.5).

Результат сравнения False. При сравнении логических значений считается, что значению True соответствует - 1 а значению False соответствует 0.

Пример сравнения двух переменных, которым присвоены значения True и False

Рис. 5.5. Пример сравнения двух переменных, которым присвоены значения True и False

Отношения между символьными данными основываются на порядке сортировки символов и знаков, задаваемым инструкцией Option Compare, которая размещается в области Declarations модульного листа. Символы сравниваются попарно слева направо. Могут быть использованы любые знаки операций сравнения.

Инструкция Option Compare Binary задает способ сравнения строковых значений, основанный на внутреннем двоичном представлении символов и соответствует стандартному способу сравнения строк, определяемому кодовой страницей. Например,

A < B < E < Z < a < b < e < z < Б < К < Ш < б < к < ш

Оператор Option Compare Text позволяет задать способ сравнения строковых значений, не принимая в рассмотрение регистр. Например,

(A=a) < (B=b) < (E=e) < (Z=z)< (Б=б) < (К=к) < (Ш=ш)
Оператор Like

Для сравнения символьных строк можно использовать оператор Like, который сравнивает строки с учетом регистра, используя образец сравнения (маску).

Синтаксис оператора: string Like pattern

Оба операнда string (строка) и pattern (образец) являются строковыми переменными. Если значение переменной string соответствует значению переменной pattern, результат сравнения True ; при их несоответствии результат сравнения False. Если любой из операндов имеет значение Null, результат также равен Null. Подробно см. Help.

Примеры использования оператора Like, приводимые в Help.
Оператор Результат Комментарии
"aBBBa" Like "a*a" True Любое количество символов между двумя буквами a
"F" Like "[A-Z]" True Одна любая прописная латинская буква
"F" Like "[!A-Z]" False Один символ, кроме прописных латинских букв
"a2a" Like "a#a" True Одна цифра между двумя буквами a
"aM5b" Like "a[L-P]#[!c-e]" True После буквы a следует заглавная латинская буква от L до P, затем цифра и любая строчная латинская буква, исключая буквы в интервале от c до e
"BAT123khg" Like "B?T*" True После буквы B следует любой символ, после которого буква T и далее любое количество любых символов
"CAT123khg" Like "B?T*" False
Важно:

Операнд pattern должен удовлетворять следующим соглашениям:

  • задаваемая маска, как любая символьная строка, заключается в кавычки;
  • можно использовать подстановочные знаки (символы шаблона) и диапазоны символов:
    • звездочка (*) для замены любого количества символов, знак вопроса (?) для замены одного символа и решетка (#) для замены любой цифры от 0 то 9;
    • диапазоны символов задаются в квадратных скобках перечислением или интервалом через дефис. Например, чтобы указать, что образец сравнения есть прописная буква латинского алфавита, используйте маску "[A-Z]". Для указания, что сравниваемое значение не принадлежит диапазону, поставьте перед диапазоном восклицательный знак. Например, маска "[!A-z]" подразумевает, что тестируемое значение не является буквой латинского алфавита.
Внимание:
  • При задании диапазона значения указываются в алфавитном порядке, т.е. список [ARZ] корректен, а запись [ZAR] не верна.
  • Пустая пара квадратных скобок рассматривается как пустая строка.

Логические операции

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

Таблица истинности логических операций
1 операнд 2 операнд Not And Or Xor Imp Eqv
True True False True True False True True
True False False False True True False False
True Null False Null True Null Null Null
False True True False True True True False
False False True False False False True True
False Null True False Null Null True Null
Null True Null Null True Null True Null
Null False Null False Null Null Null Null
Null Null Null Null Null Null Null Null

Например, запись A>=25 And A<=85 означает проверку, принадлежит значение переменной A отрезку [25;85].

Значение Null в приведенной таблице истинности указывает на отсутствие значения у операнда или у результата.

Символьные операции

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

Внимание:
  • Знак сложения может использоваться как знак операции конкатенации, но если операндами являются числа, то произойдет сложение операндов.

Пример

В процедуре производится распечатка вновь создаваемой строки c текстом "Visual Basic for Application".

Можно использовать встроенные константы vbCrLf, vbCr, vbLf для разбиения текста на строки. Для этого запишите последний оператор процедуры в виде:

Debug.Print a & vbCrLf & b & vbCrLf & c & vbCrLf & d
Пример распечатки вновь создаваемой строки c текстом "Visual Basic for Application"

Рис. 5.6. Пример распечатки вновь создаваемой строки c текстом "Visual Basic for Application"
< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Дмитрий Денисов
Дмитрий Денисов

Еще раз повторяю вопрос  - отправил договор и сканы документов по почте - в начале августа, до  5 го, внес предоплату - летом действовала скидка - чтобы пройти курс в августе, но я уезжал в Москву. По возвращению - и  в течение месяца - никакого ответа, никаких зачислений, ничего. Как проверить, пришли ли мои документы в Интуит, предоплата, почему нет зачисления.

Дмитрий Денисов
Дмитрий Денисов

Как записаться на курс, оплатить, не ориентируюсь в программе.

Ранее у Вас учился.

Работаю преподавателем, есть справка. Как получить скидку, т.е. оплата 2000


 

Елизавета Cафронова
Елизавета Cафронова
Россия, Выкса, НИТУ МИССиС
Иван Чуприков
Иван Чуприков
Россия, пгт. Чульман