Операторы.
Логические, арифметические, сравнения.
|
По порядку: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Арифметические: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
^ * / \ Mod + - |
оператор целочисленного деления |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сравнения: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
< > <= >= = <> Is Like |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Конкатенации: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+ & |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Логические: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
And Eqv Imp Not Or Xor |
оператор логического умножения оператор логической эквивалентности оператор логической импликации |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
оператор ^ (возведение в степень) Этот оператор предназначен для возведения числа в степень. Синтаксис: результат = число ^ степень Параметры: результат - обязателен; любая числовая переменная Замечания: число может быть отрицательное, только в том случае, когда степень - целое число. Если в одном выражении используется несколько операторов ^, то вычисление происходит слева направо. Обычно тип результата - Double. Однако, если или степень, или число - Null выражение, то результат тоже Null. Пример:
Dim
MyValue Советы: Если вам необходимо возвести число в постоянную степень, то лучше использовать несколько операторов - умножений, чем один - возведение в степерь, судите сами, цикл в миллион проходов с вычислением выражения проходил:
test1
= 2 ^ 8 ' 893мс
Используется для перемножения двух чисел. Синтаксис: результат = число1 * число2 Параметры: результат - обязателен; любая числовая переменная Замечания: Тип данных результата обычно такой же, как и самый точный тип из двух чисел. Порядок точности, от большего к меньшему - Byte, Integer, Long, Single, Currency, Double, Decimal. Правда, есть исключения:
Если число1 или число2 - Null, то оно интерпретируется просто как обычный 0. Порядок точности в умножение отличен от тех, что используются в сложении и вычитании. Пример:
Dim
MyValue
Используется для деления двух чисел и получить результат с плавающей точкой. Синтаксис: результат = число1 / число2 Параметры: результат - обязателен; любая числовая переменная Замечания: Результат обычно имеет тип Double. Правда, есть исключения:
Если число1 или число2 - Null, то оно интерпретируется просто как обычный 0. Примеры:
Dim
MyValue
оператор \ (целочисленное деление) Используется для деления двух чисел и получить целочисленный результат. Синтаксис: результат = число1 \ число2 Параметры: результат - обязателен; любая числовая переменная Замечания: Перед тем, как происходит такое деление, выражения округляются до Byte, Integer или Long выражений. Обычно тип данных результата Byte, Byte variant, Integer, Integer variant, Long, or Long variant. Любая дробная часть обрезается. Однако, если любое из выражений Null, то и результат Null. Любое выражение, содержащее Empty интерпретируется как 0. Примеры:
Dim
MyValue
оператор Mod (остаток от деления) Используется для деления двух чисел и получение остатка от их деления. Синтаксис: результат = число1 Mod число2 Параметры: результат - обязателен; любая числовая переменная Замечания: При делении числа с правающей точкой округляются. Например, результат следующего выражения равен 5: A = 19 Mod 6.7 Что здесь происходит? Сначала округляется число 6.7 до 7. Затем происходит деление, получаем 2.7.... Остаток от деления = 5. (2 * 7 = 14, 19 - 14 = 5). Результат обычно имеет тип Byte, Byte variant, Integer, Integer variant, Long, или Variant содержащий Long. Если любое из выражений Null, то и результат Null. Любое выражение, содержащее Empty интерпретируется как 0. Примеры:
Dim
MyResult
Используется для сложения двух чисел. Синтаксис: результат = выражение1 + выражение2 Параметры: результат - обязателен; любая числовая переменная Замечания: Когда вы используете оператор +, вы не можете определить что произойдёт, сложение или конкатенация строк. Для конкатенации используйте оператор &, чтобы избежать недоразумений и сделать код более читабельным. Если одно из выражений не Variant, то применяются следующие правила:
Если оба выражения Variant, то применяются следующие правила:
Для обычного сложения тип данных результата обычно такой же, как и самый точный тип из двух чисел. Порядок точности следующий - Byte, Integer, Long, Single, Double, Currency, и Decimal. Есть исключения:
Если одно или оба выражения Null, то результат тоже Null. Если оба из выражений содержат Empty, результат Integer. Если только одно, то в качестве результата возвращается не изменённое второе выражение. Порядок точности в сложении и вычитании отличен от тех, что используются в умножении. Примеры:
Dim
MyNumber, Var1, Var2
Var1
= "34"
Var1
= "34" Советы: Оператор сложение (+) можно использовать для сложения дат, т.е. переменных типа Date:
Dim
d As Date
оператор - (вычитание, смена знака) Используется для нахождения разницы между двумя числами, или, также, для изменения знака выражения. Синтаксис: результат = выражение1 - выражение2 или -выражение Параметры: результат - обязателен; любая числовая переменная Замечания: В первом синтаксисе, оператор "-" необходим для нахождения разницы между двумя числами. Во втором синтаксисе, "-" используется для смены знака у выражения. Тип данных результата обычно такой же, как и самый точный тип из двух чисел. Порядок точности следующий - Byte, Integer, Long, Single, Double, Currency, и Decimal. Есть исключения:
Если одно или оба выражения Null, то результат тоже Null. Если одно из выражений Empty, то оно интерпретируется как 0. Порядок точности в сложении и вычитании отличен от тех, что используются в умножении. Примеры:
Dim
MyResult Советы: Как и оператор сложение, оператор вычитание может быть применён для вычисления разницы (в днях) между двумя датами:
Dim
d1 As Date Используются для сравнения некоторых выражений. Имеют 3 синтаксиса: Синтаксис: результат = выражение1 операторсравнения выражение2 Параметры: результат обязателен; любая численная переменная Замечания: Следующая таблица содержит список операторов сравнения и условия, по которым определяется результат выражения (True или False).
Операторы Is и Like выполняют специфические функции, и их таблица сравнения
отличается от приведённой (их мы рассмотрим ниже).
Если и первое выражение и второе имеют тип Variant, то выражения сравниваются, согласно тем типам данных, которые содержит Variant:
Когда Single переменная сравнивается с Double, то Double округляется до точности Single. Если Currency сравнивается с Single или Double, то Single или Double конвертируются в Currency. Точно так же, при сравнении Decimal с Single или Double, то Single или Double конвертируются в Decimal. Для Currency любая дробная часть меньшая, чем .0001, может быть утеряна. Для Decimal это значение 1E-28, или может произойти ошибка. Таким образом, при потере дробной части, выражения могут интерпретироваться как равные, хотя на самом деле, одно от другого будет отличаться. (хоть и на маленькое значение). Примеры:
Dim
MyResult, Var1, Var2
Var1
= "5": Var2 = 4 ' в VB можно использовать
двоеточие,
Var1
= 5: Var2 = Empty
Var1
= 0: Var2 = Empty
Этот оператор используется для сравнения объктных переменных. Синтаксис этого оператора приведён выше. Замечания: Если объект1 и объект1 ссылаются на один и тот же объект, то результат - True, если нет, то False. Две переменные могут ссылается на один и тот же объект несколькими путями. В следующем примере, A ссылается на тот же объект, что и B: Set A = B Следующий пример делает так, что переменные A и B ссылаются на один и тот же объект - C:
Set
A = C Примеры:
Dim
MyObject, YourObject, ThisObject, _
оператор сравнения строк - Like Оператор сравнения строк Like используется для сравнения строк. Синтаксис этого оператора уже рассмотрен выше. Замечание: Этот оператор можно использовать для проверки строки String на маску Pattern. Это очень мощный оператор, почти аналог регулярных выражений в Perl. Итак, работает этот ператор следующим образом. Если строка подходит под маску, то результат True. Если нет - False. Если одно из выражений Null - результат тоже Null. Поведение оператора Like зависит от установленного по умолчанию типа сравнения строк. (оператор Option Compare). Если установлен тип Binary (т.е. двоичное сравнение), то строки сравниваются согласно их Ascii кодам (в разных кодировках она разная). Обычно используется такая последовательность: A < B < E < Z < a < b < e < z < А < К < Я < а < к < я Если установлен тип Text (текстовое сравнение). При таком сравнении последовательность отличается от предыдущей, здесь большие и маленькие буквы - равны: (A=a) < (А=а) < (B=b) < (E=e) < (К=к) < (Z=z) < (Я=я) Самое главная функция оператора Like - это проверка на принадлежность строки какой-нибудь маске. В маске можно использовать следующие спец. символы: ? Любой отдельный символ Здесь небольшое замечание. Для того чтобы проверить принадлежность строки на маске, содержащую спец. симолы (т.е. проверить, к примеру, есть ли в строке симолы [,?,#,],*), то нужно заключить из в квадратные скобки []. Просто так ставить отдельную скобку [ или ], нельзя. При указании списка символов, можно использовать тире (–). Например, чтобы задать последовательность от A до Z, нужно использовать маску [A-Z]. Всё, что находится в скобках не должно содержать никаких разделителей (пробелов, запятых и т.д.), иначе они тоже будут включены в последовательность. Есть и другие важные правила при проверки по маске:
Примеры:
Dim
MyCheck myString = "312T-87GD-8922" If myString Like "###[A-Z]-##[A-Z][A-Z]-####" Then ... Вообще-то, чтобы соединить строки в Visual Basic, можно использовать всего 2 оператора. Это & и +. Оператор + описан выше. Поговорим об операторе &.
Оператор конкатенации строк - & Используется для конкатенации двух выражений. Синтаксис: результат = выражение1 & выражение2 результат обязателен; Любая String или Variant переменная Замечания: Если в выражение не строка, то она конвертируется в String Variant. Тип данных результата - String только тогда, когда оба выражения имеют тип String. Иначе результат String Variant. Если оба выражения Null, то результат тоже Null. Однако, если только одно из выражений содержит Null значение, то оно интерпретируется как пустая строка "". Empty также интерпретируется как пустая строка "". Примеры:
Dim
MyStr Логические операторы Это самая интересная группа оператором. При программировании вы обязаны знать их работу и применение (причём не только на Visual Basic). В Visual Basic их 6 штук. Рассмотрим каждый оператор подробно.
Используется для совершения логичкого умножения над двумя выражениями. Синтаксис: результат = выражение1 And выражение2 результат обязателен; Любая числовая (включая Boolean) переменная Замечания: Следующая таблица показывает как работает оператор And:
Оператор And также используется для проверки битов числа. Для битов оператор And работает следующим образом (смотреть слева направо) 0 0 0 Результат выделен жирным шрифтом. Примеры:
Dim
A, B, C, D, MyCheck Последний пример рассмотрим подробнее. Число 10 представляется в виде битов следущим образом (как тетрада, т.е. 4 бита): 1010 А число 8 вот так: 1000 В результате работы оператора And, согласно вышеприведённой таблице мы получим: 1000 Т.е. 8. Для чего мы это делали? Мы делали это для того, чтобы проверить, установлен ли четвёртый бит у числа A? Получив B, мы убедились в том, что этот бит установлен.
Используется для совершения логичкого сложения двух выражений. Синтаксис: результат = выражение1 Or выражение2 результат обязателен; Любая числовая (включая Boolean) переменная Замечания: Следующая таблица показывает как работает оператор Or:
Оператор Or используется для установки определённых битов числа. Для битов оператор Or работает следующим образом (смотреть слева направо) 0 0 0 Результат выделен жирным шрифтом. Примеры:
Dim
A, B, C, D, MyCheck Давайте последний пример рассмотрим подробнее. Число 10 представляется в виде битов следущим образом (как тетрада, т.е. 4 бита): 1010 А число 5: 0101 В результате работы оператора Or, согласно вышеприведённой таблице мы получим: 1111 Т.е. 15. Как видите, оператор Or очень легко и удобно использовать не только в выражениях сравнения, но и для установки определённых битов числа.
Используется для совершения логичкого отрицания двух выражений. Синтаксис: результат = выражение1 Xor выражение2 результат обязателен; Любая числовая (включая Boolean) переменная Замечания: Следующая таблица показывает как работает оператор Xor:
Оператор Xor используется для инвертирования определённых битов числа. Для битов оператор Xor работает следующим образом (смотреть слева направо) 0 0 0 Результат выделен жирным шрифтом. Xor отличается от Or, только тем, что когда оба бита единицы, Xor выдаёт 0. Оператор Xor интересен тем свойством, то при его двойном применении он выдаёт то же число. Это часто используют в криптографии. Примеры:
Dim
A, B, C, D, MyCheck Интересным примером использования оператора Xor является обмен значениями двух численных переменны:
Dim
a As Long, b As Long Теперь переменная a содержит значение переменной b, и наоборот.
Используется для совершения логичкого инвертирования двух выражений. Синтаксис: результат = Not выражение результат обязателен; Любая числовая (включая Boolean) переменная Замечания: Следующая таблица показывает как работает оператор Not:
Оператор Not инвертирует все биты выражения. Для битов оператор Not работает следующим образом (смотреть слева направо): 0 1 Результат выделен жирным шрифтом. Примеры:
Dim
A, B, C, D, MyCheck Рассмотрим подробнее последний пример. Число 10 представляется в виде битов следущим образом (как байт, т.е. 8 битов): 0000 1010 После инвертирования всех битов получим: 1111 0101 А это и есть -11.
Используется для совершения логической эквивалентности двух выражений. Синтаксис: результат = выражение1 Eqv выражение2 результат обязателен; Любая числовая (включая Boolean) переменная Замечания: Следующая таблица показывает как работает оператор Eqv:
Для битов оператор Eqv работает следующим образом (смотреть слева направо) 0 0 1 Примеры:
Dim
A, B, C, D, MyCheck
Используется для совершения логической импликации двух выражений. Синтаксис: результат = выражение1 Imp выражение2 результат обязателен; Любая числовая (включая Boolean) переменная Замечания: Следующая таблица показывает как работает оператор Imp:
Для битов оператор Imp работает следующим образом (смотреть слева направо) 0 0 1 Примеры:
Dim
A, B, C, D, MyCheck
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вернутся на главную Вернутся на предыдущую. |