Какие операции обладают наибольшим приоритетом. Приоритеты операций

14.02.2020

Пожалуйста, приостановите работу AdBlock на этом сайте.

В математических вычислениях важную роль играет порядок, в котором выполняются действия. Чему, например, равно значение выражения 2+2*2 ? Конечно же шесть, т.к. сначала выполняется умножение.

В C используется знакомый нам со школы порядок выполнения операций. Но т.к. в программировании есть свои особенности, то кое-какие отличия всё же есть. Выпишем приоритет для тех операций, которые мы уже знаем.

  • вычисляются функции (например, sqrt() , cos() и др.)
  • умножение, деление, остаток от деления (слева направо)
  • сложение, вычитание
  • выполняется присваивание

А каково значение переменной x после выполнения следующего кода int x = 8 / 4 / 2;

Правильный ответ 1. Т.к в случае одинакового приоритета операций, команды выполняются слева направо. Другими словами данный код эквивалентен коду int x = (8 / 4) / 2;

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

Листинг 1.

2+2*2 = 6 (2+2)*2 = 8 // действие в скобках будет выполнено прежде умножения

На следующем рисунке над каждым действием отмечено, каким оно выполнится по счёту.

Рис.1 Приоритет операций в языке С. Пример.

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

Сложные математические выражения

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

При этом когда мы пишем программу, любая формула должна быть записана в одну строку. На начальном этапе это может вызвать у вас некоторые затруднения. Чтобы избавиться от этих затруднений, нужно овладеть навыком переводить формулу из стандартной математической записи в ту, которая используется в программировании и обратно.

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

Порядок выполнения операций при вычислении значения выражения определяется расположением знаков операций , круглых скобок и приоритетом операций . Операции с наивысшим приоритетом выполняются в первую очередь. Если в выражении содержится несколько операций одного приоритета на одном и том же уровне, то их обработка производится в соответствии с порядком выполнения – справа налево или слева направо. Если необходимо изменить порядок выполнения операций в выражении, то следует использовать круглые скобки, например (x + y) * z.

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

В приведенной ниже таблице операции языка C++ приведены в порядке убывания приоритета. Операции с разными приоритетами разделены чертой.

Таблица приоритетов операций

Знаки операций

Названия операций

Порядок выполнения

повышение приоритета

постфиксный инкремент

постфиксный декремент

слева направо

sizeof

(тип) выражение и

тип (выражение)

размер операнда в байтах

префиксный инкремент

префиксный декремент

поразрядное Н Е

логическое НЕ

унарные минус, плюс

преобразование типа

справа налево

умножение

остаток от деления целых

слева направо

сложение

вычитание

слева направо

сдвиг влево

сдвиг вправо

слева направо

меньше или равно

больше или равно

слева направо

слева направо

поразрядное И

слева направо

поразрядное исключающее ИЛИ

слева направо

поразрядное ИЛИ

слева направо

логическое И

слева направо

логическое ИЛИ

слева направо

? :

условная

справа налево

*= , /= , %=

+= , - =

<<= , >>=

&= , |= , ^=

присваивание (простое и

составное)

справа налево

операция запятая

слева направо

Приведение (преобразование) типа

Язык программирования С++ , являясь типизированным языком, позволяет тем не менее весьма свободно обращаться с выражениями, оперирующими различными типами данных. В этом случае операнды выражения приводятся к некоторому общему типу.

Автоматически производятся лишь преобразования, которые преобразуют операнды с меньшим диапазоном значений в операнды с большим диапазоном значений, поскольку это происходит без какой-либо потери информации. Например, если в выражении ival + f v al переменная ival типа int , а переменная f v al – типа float , то при выполнении операции (+ ) значение переменной iv al будет приведено к типу float .

Выражения, в которых могла бы теряться информация, например, при присваивании длинных целых более коротким или вещественным целым, могут вызвать предупреждения (Warning), но они допустимы (см. операцию присваивания).

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

(тип ) выражение

тип (выражение)

Операндом операции приведения типа является преобразуемое выражение. Приоритет операции приведения типа такой же, как и у других унарных операций. Например: (long double ) 5; (int ) f; (double) a/2.

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

(int ) x + b * c

(int ) (x + b * c )

В первом случае преобразование относится к переменной x , во втором – ко всему выражению x + b * c .

Приветствую вас, уважаемые читатели блога сайт! В прошлый раз мы рассматривали вопрос о во встроенном языке 1С:Предприятие 8. Сегодня мы поговорим о о приоритетах арифметических операций примитивных типов данных , а также рассмотрим несколько подряд идущих арифметические операций. Давайте, посмотрим!

Из программы школы, вы знакомы с тем, что наивысшими приоритетом в арифметических операциях являются круглые скобки «()».
Если выражение находится в круглых скобках, то прежде всего будет исполняться именно оно. Следующим по приоритету идут унарные операции «+» и «-», унарная операция означает, что указывается операция и одно значение, например «-5». Третьими выполняются операции умножения и деления и в самую последнюю очередь сложение и вычитание. Давайте рассмотрим как это работает:

99+15/5*8

В этом случае вначале 15 будет разделено на 5, полученное число умножено на 6 и третья операция: 99 прибавиться к полученному числу. Далее следующее простое выражение 10+5/2+1. Понятно, что первым будет исполнятся операция деления, дальше будет исполнятся операция сложения. Если использовать скобки:

(90+30)/(7+5)

В этом случае в начале мы сложим 90 и 30 и поделим все это на 7+5 и в этом случае выражение будет равно 10. Рассмотрим другие операции, которые возможны в программном коде 1С:Предприятие 8. Возможно, вы работали в PHP, где возможен такой оператор i++; или i—; . Это инкремент или декремент на одну единицу. Исполнение таких операторов в 1С невозможно, но возможен оператор i++1; и j—1; . Давайте разберём их подробнее. Это вполне нормальный оператор. Откроем модуль любого справочника в Конфигураторе:

Конфигурация -> Справочники -> Номенклатура, правой кнопкой мыши вызовем пункт Открыть модуль объекта .

Чтобы не было ошибки объявим переменную в этом программном коде:

A=0; b=a++1;

Если проверить на синтаксические ошибки, то их не будет. Даже если выражение разместить на разных строках:

A=0; b=a+ +1;

Вообще, переводы строк не оказывают влияния на выполнение операторов. Как будет работать подобный оператор? Компилятор языка 1С вначале выполнит унарную операцию плюса, то есть +1 даст 1 и потом к a прибавит единицу. Это то же самое что сложить a с единицей. Точно так же можно написать:

A=0; b=a+-1;

Сначала выполняется унарная операция минуса, получается -1, затем складывается минус и плюс и получается -1. Соответственно это тоже самое, что и i-1 . Нужно знать о таких специфических операциях и понимать, как они будут выполнятся. Это поможет правильно расставлять приоритеты арифметических операциях в соответствии с тем порядком, о котором мы говорим.

Итак, мы выяснили, что система спокойно отрабатывает операцию где встречается две подряд арифметические операции например ++ , +-, -+, а что будет если мы напишем несколько арифметических операций подряд? Это можно проверить. Для этого откроем 1С:Предприятие из Конфигуратора в режиме отладки, клавиша «F5». Поставим точку останова, клавиша «F9», в конце нашего выражения и введём простое выражение в табло. В Конфигураторе откроем пункт меню Отладка -> Табло.

Запишем в табло выражение 3+++5 , обратите внимание, на выходе у нас получается ошибка в выражении. Платформа такого преобразования сделать не может. Выражение 3++5 срабатывает, а вот с тремя плюсами система уже не понимает, чего конкретно от неё хотят. Но если поставить скобки 1++(+2) , то всё это будет выполнено корректно. Как видим, чтобы правильно организовать работу арифметических операций, необходимо хорошо понимать приоритеты их выполнения. В следующей статье мы рассмотрим .

Если выражение содержит несколько операций, то приоритет их выполнения следующий:

1. Сначала выполняются арифметические операции в таком порядке, как они представлены в таблице 2.2.

Таблица 2.2. Приоритет арифметических операций

3. Последними выполняются логические операции в таком порядке, как они представлены в таблице 2.3.

Таблица 2.3. Приоритет логических операций

Описание операции Обозначение в VВА
Логическое отрицание Not
Логическое "И" And
Логическое "ИЛИ" Or

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

Выражения бывают арифметические, отношения и логические.

Арифметические выражения записываются с помощью операндов числовых типов и арифметических операций, а результатом является числовое значение. В арифметическом выражении можно использовать стандартные математические функции, которые приведены в таблице 2.4.

Таблица 2.4. Стандартные математические функции VBA

Математическая запись Имя функции в VBA Описание
½Х½ Abs(число) Возвращает значение, тип которого совпадает с типом переданного аргумента, равное абсолютному значению указанного числа.
arctg X Atn(число) Возвращает значение типа Double, содержащее арктангенс числа.
cos X Cos(число) Возвращает значение типа Double, содержащее косинус угла.
]X[ Int(число) Возвращает значение типа, совпадающего с типом аргумента, которое содержит целую часть числа.
ln X Log(число) Возвращает значение типа Double, содержащее натуральный логарифм числа.
e X Exp(число) Возвращает значение типа Double, содержащее результат возведения числа e (основание натуральных логарифмов) в указанную степень.
Sign X Sgn(число) Возвращает значение типа Variant (Integer), соответствующее знаку указанного числа.
sin X Sin(число) Возвращает значение типа Double, содержащее синус угла.
Sqr(число) Возвращает значение типа Double, содержащее квадратный корень указанного числа.
tg X Tan(число) Возвращает значение типа Double, содержащее тангенс угла.

Выражения отношения определяют истинность или ложность результата при сравнении двух операндов. Сравнивать можно данные любого одинакового типа. Результат операции отношения только логический: True - "истина" или False - "ложь".

Логические выражения. Результатом логического выражения является логическое значение True или False. Простейшими видами логических выражений являются: логическая константа, логическая переменная, логическая функция, выражение отношения. Логические операции выполняются только над операндами логического типа.

Пример . Записать 1£Х£5 и определить значение выражения при Х=3.1

Выражение в VВА будет выглядеть так:

X>=1 And X<=5

Результатом выражения будет True.

Чтобы получить перечень всех математических функций, достаточно набрать имя любой известной математической функции (например, SIN ), а затем нажать клавишу F1 Математические функции . В полученном перечне можно получить справку о назначении любой из встроенных математических функций и ее аргументе.

Чтобы получить перечень всех производных математических функций и правила их формирования, достаточно набрать имя любой известной математической функции (например, SIN ), а затем нажать клавишу F1 и ниже описания выбранной функции выбрать ссылку на Производные математические функции .

Ниже, в таблице 2.5, приведен список функций, которые могут быть получены с помощью встроенных математических функций.

Таблица 2.5. Производные математические функции

Математическая запись Название функции Комбинация встроенных функций
sc X Секанс 1/Cos(X)
csc X Косеканс 1/Sin(X)
ctg X Котангенс 1/Tan(X)
arcsin X Арксинус Atn(X/Sqr(-X*X+1))
arccos X Арккосинус Atn(-X/Sqr(-X*X+1))+2*Atn(1)
arcsc X Арксеканс Atn(X/Sqr(X*X-1))+Sgn((X)-1)*2*Atn(1)
arccsc X Арккосеканс Atn(X/Sqr(X*X-1))+(Sgn(X)-1)*2*Atn(1)
arcctg X Арккотангенс Atn(X)+2*Atn(1)
sh X Гиперболический синус (Exp(X)-Exp(-X))/2
ch X Гиперболический косинус (Exp(X)+Exp(-X))/2
th X Гиперболический тангенс (Exp(X)-Exp(-X))/(Exp(X)+Exp(-X))
sch X Гиперболический секанс 2/(Exp(X)+Exp(-X))
csch X Гиперболический косеканс 2/(Exp(X)-Exp(-X))
сth X Гиперболический котангенс (Exp(X)+Exp(-X))/(Exp(X)-Exp(-X))
arsh X Гиперболический арксинус Log(X+Sqr(X*X+1))
arch X Гиперболический арккосинус Log(X+Sqr(X*X-1))
arth X Гиперболический арктангенс Log((1+X)/(1-X))/2
arsch X Гиперболический арксеканс Log((Sqr(-X*X+1)+1)/X)
arcsch X Гиперболический арккосеканс Log((Sgn(X)*Sqr(X*X+1)+1)/X)
arcth X Гиперболический арккотангенс Log((X+1)/(X-1))/2
log n X Логарифм по основанию N Log(X)/Log(N)

Основные операторы языка VBA

3.1. Правила записи операторов

При записи операторов необходимо придерживаться следующих правил:

Каждый новый оператор записывается с новой строки.

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

Если оператор не помещается в одной строке, то необходимо поставить в конце строки пробел и знак подчеркивания (_), а затем продолжить не поместившуюся часть на следующей строке.

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

Оператор присваивания используется, если какой-то переменной нужно присвоить новое значение. Он имеет следующий синтаксис:

ИМЯ_ПЕРЕМЕННОЙ = ВЫРАЖЕНИЕ

Сначала вычисляется выражение в правой части, а затем результат присваивается переменной, стоящей в левой части.

Например . Записать с помощью оператора присваивания следующее математическое выражение:

На VВА это выражение можно записать в виде следующего оператора:

Y = a^(1/3)+(a^2+Exp(-b))/(Sin(a)^2-Log(b))

3.3. Операторы ввода-вывода

3.3.1. Оператор и функция MsgBox

Оператор MsgBox осуществляет вывод информации в диалоговом окне и устанавливает режим ожидания нажатия кнопки пользователем.

Он имеет следующий синтаксис:

MsgBox Сообщение[,Кнопки][, Заголовок]

Аргументы:

Сообщение - обязательный аргумент, задающий в окне выводимое информационное сообщение. Может состоять из нескольких текстовых строк, объединенных знаком &. Использование в этом аргументе Chr(13) приводит к переходу на новую строку при выводе информации.

Кнопки - значение этого аргумента определяет категории появляющихся в окне кнопок. От значения аргумента кнопки зависит также, появляется ли в окне какой-либо значок. Если не указано, какие кнопки необходимо отображать в окне сообщений, то используется значение по умолчанию, соответствующее кнопке ОК. В табл. 3.1 приведены возможные комбинации кнопок и значков в окне сообщений.

Заголовок - задает заголовок окна.

Функция MsgBox возвращает значение типа Integer, указывающее, какая кнопка была нажата в диалоговом окне.

Таблица 3.1. Допустимые значения переменной кнопки

Отображение Аргумент
Кнопка ОК VbOKOnly
Кнопки ОК и Отмена VbOKCancel
Кнопки Да и Нет VbYesNo
Кнопки Да, Нет и Отмена VbYesNoCancel
Кнопки Прекратить, Повторить и Игнорировать VbAbortRetryIgnore
Кнопки Повторить и Отмена. VbRetryCancel
Информационный знак VbInformation
Знак VbCritical
Знак вопроса VbQuestion
Знак восклицания VbExclamation

Например . Вывести сообщение о текущей дате.

MsgBox "Сегодня на календаре" & Date , "Внимание"

В результате будет выведено следующее окно (рис.3.1).

После щелчка по кнопке ОК окно сообщения закроется, и выполнение программы возобновится с оператора, стоящего непосредственно за вызовом MsgBox.

3.3.2. Функция InputBox

Функция InputBox осуществляет ввод значений переменных с помощью окна ввода и имеет следующий синтаксис:

Имя_Переменной = InputBox(Сообщение[, Заголовок] )

Аргументы:

Сообщение - обязательный аргумент. Задает в окне информационное сообщение, обычно поясняющее смысл вводимой величины

Заголовок - задает заголовок окна.

Например , Ввести значение переменной N с клавиатуры, предусмотрев значение по умолчанию равное 10.

Для этого можно использовать следующий оператор:

N = InputBox("Введите N", "Ввод исходных данных",10)

В результате будет выведено следующее окно для ввода значения переменной N (рис.3.2).

Если значение по умолчанию подходит пользователю, то после щелчка кнопки ОК окно ввода закроется, переменной N присвоится значение 10 и выполнение программы возобновится с оператора, стоящего непосредственно за вызовом InputBox.

Если же значение по умолчанию не подходит пользователю, то перед щелчком по кнопке ОК необходимо ввести нужное значение переменной N.

3.4. Условный оператор IF

Для реализации разветвляющегося вычислительного процесса в VBA используется оператор If…Then…Else, который представляет собой простейшую форму проверки условий. Он имеет следующий синтаксис:

If УСЛОВИЕ Then ОПЕРАТОР_1 Else ОПЕРАТОР_2

ОПЕРАТОР_1 выполняется, если УСЛОВИЕ истинно, в противном случае выполняется ОПЕРАТОР_2 . При этом оператор If…Then…Else записывается в одну строку.

УСЛОВИЕ – это выражение логического типа. Результат выражения всегда имеет булевский тип. Выражение может быть простым и сложным. При записи простых условий могут использоваться все возможные операции отношения, указанные в табл. 3.2.

Таблица 3.2. Логические отношения

Сложные условия образуются из простых путем применения логических операций и круглых скобок. Список логических операций приведен в табл. 3.3.

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

В условном операторе допустимо использование блока операторов вместо любого из операторов. В этом случае условный оператор имеет вид:

If УСЛОВИЕ Then

БЛОК_ОПЕРАТОРОВ_1

БЛОК_ОПЕРАТОРОВ_2

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

If УСЛОВИЕ_1 Then

БЛОК_ОПЕРАТОРОВ_1

ElseIf УСЛОВИЕ_2 Then

БЛОК_ОПЕРАТОРОВ_2

Пример 1 . Написать часть программы для алгоритма на рис. 3.3.

Пример 2. Написать часть программы для алгоритма на рис. 3.4.

3.5. Оператор выбора Select Case

Оператор Select Case удобно использовать, когда в зависимости от значения некоторого выражения, имеющего конечное множество допустимых значений, необходимо выполнить разные действия. Он также относится к условным операторам, но имеет другой вид:

Select Case ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ

Case ЗНАЧЕНИЯ_1

ОПЕРАТОРЫ_1

Case ЗНАЧЕНИЯ_2

ОПЕРАТОРЫ_2

Case ЗНАЧЕНИЯ_N

ОПЕРАТОРЫ_N

[ Case Else

ИНАЧЕ_ОПЕРАТОРЫ]

ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ может иметь любой скалярный тип, кроме вещественного. ЗНАЧЕНИЯ состоят из произвольного количества значений или диапазонов, отделенных друг от друга запятыми.

Тип ЗНАЧЕНИЙ должен совпадать с типом ПРОВЕРЯЕМОГО_ВЫРАЖЕНИЯ .

Сначала вычисляется ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ . Если его значение совпадает с одним из значений ЗНАЧЕНИЯ_I , то выполнятся ОПЕРАТОРЫ_I и управление передается оператору, стоящему после End Select. Если его значение не совпадает ни с одним из значений ЗНАЧЕНИЯ_I , то выполнятся ИНАЧЕ_ОПЕРАТОРЫ и управление передается оператору, стоящему после End Select

Например. Написать часть программы для алгоритма на рис. 3.5, определяющего значение переменной S в зависимости от значения переменной n.

3.6. Операторы цикла

Для реализации циклического вычислительного процесса, т. е. многократного выполнения одного или нескольких операторов, служит оператор цикла For…Next, который имеет следующий синтаксис:

For СЧЕТЧИК=НАЧ_ЗНАЧЕНИЕ Тo КОН_ЗНАЧЕНИЕ Step ШАГ

БЛОК_ОПЕРАТОРОВ

БЛОК_ОПЕРАТОРОВ

Next СЧЕТЧИК

Цикл For…Next перебирает значения переменной СЧЕТЧИК , которая является параметром цикла, от начального до конечного значения с указанным шагом изменения. При этом обеспечивается выполнение блока операторов тела цикла при каждом новом значении счетчика. Если Step ШАГ в конструкции отсутствует, то по умолчанию считается, что шаг равен 1. По оператору Exit For можно выйти из оператора цикла до того, как СЧЕТЧИК достигнет последнего значения.*

Для перебора объектов из группы подобных объектов, например, ячеек из диапазона или элементов массива, удобно использовать оператор цикла For… Each…Next.

For Each Элемент In Группа

БЛОК_ОПЕРАТОРОВ

БЛОК_ОПЕРАТОРОВ

Next Элемент

В VBA для организации циклов с неизвестным заранее числом повторений используются и другие операторы цикла:

циклы с предусловием – Do While … Loop,

Do Until … Loop;

циклы с постусловием – Do … Loop While,

Do … Loop Until.

Ниже приведен синтаксис этих операторов цикла:

" Цикл с предусловием Do While … Loop

Do While УСЛОВИЕ

БЛОК_ОПЕРАТОРОВ

БЛОК_ОПЕРАТОРОВ

" Цикл с предусловием Do Until … Loop

Do Until УСЛОВИЕ

БЛОК_ОПЕРАТОРОВ

БЛОК_ОПЕРАТОРОВ

" Цикл с постусловием Do … Loop While

БЛОК_ОПЕРАТОРОВ

БЛОК_ОПЕРАТОРОВ

Loop While УСЛОВИЕ

" Цикл с постусловием Do … Loop Until

БЛОК_ОПЕРАТОРОВ

БЛОК_ОПЕРАТОРОВ

Loop Until УСЛОВИЕ

Оператор Do While…Loop обеспечивает многократное повторение блока операторов до тех пор, пока УСЛОВИЕ соблюдается, а оператор Do Until…Loop пока УСЛОВИЕ не соблюдается. Операторы Do…Loop While, Do…Loop Until отличаются от перечисленных выше операторов тем, что сначала блок операторов выполняется по крайней мере один раз, а потом проверяется УСЛОВИЕ .

Для избежания зацикливания в теле цикла должен быть хотя бы один оператор, который изменяет значения переменных, стоящих в УСЛОВИИ .

Оператор Exit Do обеспечивает досрочный выход из оператора цикла.

Пример 1. Составить фрагмент программы для алгоритма на рис. 3.6.

Пример 2 . Составить фрагмент программы для алгоритма на рис. 3.7.

Пример 3 . Составить фрагмент программы, соответствующей алгоритму

Структура программы. Модули, процедуры и функции

Модуль представляет собой текстовый ASCII-файл с программным кодом, содержащим подпрограммы, переменные и константы. Проект может состоять из множества программных модулей. Для их создания необходимо выполнить команду Вставка Модуль. Рабочее окно модуля представлено на рис. 4.1.

Основу программ в VBA составляют процедуры и функции.

Процедура Sub– это обособленная совокупность операторов VBA, выполняющая определенные действия. В общем случае процедура принимает некоторые параметры (переменные, которые передаются процедуре в качестве исходных данных), выполняет программу и может возвращать результирующие значения, которые присваиваются параметрам внутри процедуры. Однако чаще используются процедуры без параметров. Например, процедуры, выполняющиеся при возникновении определенных событий. Вложенность процедур в другие процедуры не допускается. Структура процедуры следующая:

[ДОСТУП] Sub ИМЯ_ПРОЦЕДУРЫ ([СПИСОК_ПАРАМЕТРОВ] )

ТЕЛО_ ПРОЦЕДУРЫ

Ключевое слово ДОСТУП является необязательным и определяет область видимости процедуры. Public указывает, что процедура доступна для всех других процедур во всех модулях (глобальная). Private указывает, что процедура доступна для других процедур только того модуля, в котором она описана (локальная). СПИСОК_ПАРАМЕТРОВ также является необязательным элементом и позволяет передавать процедуре различные исходные данные при вызове, которые называются формальными параметрами. При этом ключевое слово Dim не указывается. ТЕЛО_ПРОЦЕДУРЫ состоит из описательной части и блока операторов, выполняющихся один за другим. Если необходимо прекратить выполнение процедуры в некотором конкретном месте, это можно сделать с помощью оператора Exit Sub. ИМЯ_ПРОЦЕДУРЫ – это любой идентификатор, определенный пользователем. Идентификатор – это последовательность букв, цифр и символа подчеркивания, начинающаяся с буквы (пробелы внутри идентификатора недопустимы). Имя процедуры всегда определяется на уровне модуля. Для использования процедуры в тексте программы (т.е. для её вызова), необходимо указать имя процедуры и список фактических параметров, которые должны по типу и порядку следования совпадать с формальными параметрами.

Функция Function во многом похожа на процедуру, но в отличие от неё при вызове всегда возвращает значение. Функция получает параметры, называемые аргументами, и выполняет с ними некоторые действия, результат которых возвращается функцией. Структура функции следующая:

[ДОСТУП] Function ИМЯ_ФУНКЦИИ (СПИСОК_АРГУМЕНТОВ ) As ТИП

ТЕЛО_ ФУНКЦИИ

ИМЯ_ФУНКЦИИ = ВЫРАЖЕНИЕ

ТИП определяет тип данных возвращаемого результата. В теле функции обязательно должен присутствовать, по крайней мере, один оператор, присваивающий имени функции значение вычисляемого выражения. Досрочное завершение функции возможно с помощью оператора Exit Function. В программе вызов функции осуществляется с помощью оператора присваивания, в правой части которого указывается имя функции с перечнем фактических параметров, как и любой другой встроенной функции, например, Sqr, Cos или Chr.

Процедуры и функции, не описанные явно с помощью ключевых слов Public или Private, по умолчанию являются общими.

Для быстрого добавления в модуль подпрограмм удобно воспользоваться командой Вставка Процедура. В появившемся окне (рис. 4.2) нужно выбрать необходимые опции.

В MS Excel с функциями, созданными пользователем, можно работать с помощью Мастера функций точно так же, как и со встроенными функциями рабочего листа.

Пример. В MS Excel создать функцию пользователя, математически определенную следующим образом:

y = sin(x) ∙ e -5x

Создадим модуль, как указано выше (рис 4.2), и введем в него текст следующей программы:

Public Function Y(x As Single) As Single

Y = Sin(x) * Exp(- 5 * x)

Для использования созданной функции на рабочем листе MS Excel введем в ячейку А2 число 0.1. В ячейке В2 вычислим значение функции Y при x = 0.1. Для этого в ячейку В2 достаточно ввести формулу =Y(A2). Это можно сделать и с помощью Мастера функций, который будет содержать функцию Y наряду с другими встроенными функциями MS Excel (рис 4.3).

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

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

Разделителем операторов в одной строке при записи программы является символ “:”.

Для переноса оператора на другую строку используется символ “_” (знак подчеркивания).

Иногда внутри программы удобно помещать комментарии – пояснительный текст, который игнорируется компилятором и может быть записан в любом месте программы. Комментарии удобно также использовать при отладке программы для временного отключения операторов. Каждая строка комментариев начинается со знака апострофа.

Пример организации модуля:

‘ PI – глобальная константа

Const PI As Double = 3.14159

‘ x - глобальная переменная

‘ Функция Disc вычисляет площадь круга

Public Function Disc(R As Double) As Double

Disc = PI * R ^ 2

‘ Функция Rec вычисляет площадь треугольника

Public Function Rec(a As Double, b As Double, c As Double) As Double

‘ p – локальная переменная

p = (a + b + c) / 2

Rec = Sqr (p * (p – a)* (p – b) * (p – c))

‘ Процедура Result вызывает функции Disc и Rec и выводит результаты

Public Sub Result ()

‘R_1, R_2, a, b, c - локальные переменные

Dim R_1 As Double

Dim R_2 As Double

R_1 = Disc(2. 5)

MsgBox “ Площадь круга = “ & CStr(R_1) & “, x = “ & CStr (x)

R_2 = Rec (a, b, c)

MsgBox “ Площадь треугольника = “ & CStr(R_2)

Здесь инструкция Option Explicit указывает на необходимость описания типов переменных, используемых на данном листе модуля.

Инструкция Option Base 1 указывает, что индексация элементов массива будет начинаться с 1.

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

Функция CStr переводит числовой формат в строковый.

Создание форм в VBA и включение их в проекты

Скачать без регистрации новинки фильмов, музыки, фильмов и остально. Например скачать бесплатно Создание форм в VBA и включение их в проекты без регистрации

Комментарии (0)

5.1. Создание форм. Свойства, события и методы форм

Форма – это главный объект, образующий визуальную основу приложения. По своей сути форма представляет собой окно, в котором можно размещать различные управляющие элементы при создании приложений. Для создания формы необходимо выполнить команду Вставка UserForm. В окне Конструктора форм появится форма, имеющая стандартный вид для ОС Windows (рис. 5.1).

Как и любой другой объект VBA форма имеет набор свойств, основные из которых приведены в таблице 5.1. Для получения справки по любому свойству достаточно выделить его в окне свойств и нажать F1.

Таблица 5.1. Основные свойства формы

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

frmForm1.Caption = "Привет"

Программы для компьютера в ОС Windows управляются событиями. Каждый раз, когда нажимается кнопка, перемещается мышь, изменяются размеры формы и т.д., ОС генерирует сообщение. Сообщение доставляется соответствующему объекту, например форме, а та генерирует соответствующее событие. Следовательно, можно составить фрагмент программы, в котором объект будет реагировать на событие определенным образом, т.е. любому стандартному событию соответствует определенная процедура. Чтобы просмотреть события связанные с формой, необходимо в режиме конструирования дважды щелкнуть на ней – появится окно программы, в котором щелкнуть на списке Процедура. В табл. 5.2 приведены наиболее часто используемые события.

Таблица 5.2. Основные события форм

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

Private Sub UserForm_Activate()

frmForm1.Caption = "Щелчок на форме уменьшает её размеры"

Private Sub UserForm_Click()

frmForm1.Width = frmForm1.Width / 2

frmForm1.Height = frmForm1.Height / 2

frmForm1.Caption = "Сделай это еще раз!"

Также форма обладает набором методов и инструкций. Метод определяет действие, которое может быть выполнено с объектом. Инструкция инициирует действие. Она может выполнить метод или функцию, В табл. 5.3 и 5.4 приведены наиболее часто используемые методы и инструкции для работы формами.

Таблица 5.3. Основные методы форм

В следующем примере предполагается, что в проекте созданы две формы frmForms. При запуске проекта происходит событие Initialize для формы frmForm1, форма frmForm2 загружается и выводится на экран. Когда при помощи мыши выбирается frmForm2, она делается невидимой, и появляется форма frm Form1. Если же выбирается frmForm1, frmForm2 появляется вновь.

"Событие Initialize формы frmForm1.

" Событие Click для формы frmForm2

Private Sub UserForm_Click()

" Событие Click для формы frmForm1

Private Sub UserForm_Click()

5.2. Выбор и использование управляющих элементов

Создание управляющих элементов на форме выполняется с помощью Панели инструментов, которая выводится на экран командой Вид Панель элементов (рис. 5.2).

С помощью кнопок этой панели можно поместить в форму необходимый элемент управления. Для этого нужно щелкнуть на значке элемента управления, далее при нажатой левой кнопке мыши определить размер и место расположения элемента в форме. Когда элемент на форме выделен (рамка объекта содержит маленькие прямоугольники) можно изменять его размеры и перемещать с помощью мыши, а также просматривать и изменять его свойства в окне свойств.

Каждый управляющий элемент (объект) характеризуется набором свойств (которые можно изменять в режимах конструирования или выполнения), событий и методов.

Для каждого объекта проекта необходимо определить его имя. В соответствии с общепринятыми соглашениями об именах объектов первые три символа имени должны отражать вид элемента, а остальные символы - назначение. В табл. 5.5. представлены сочетания первых трех символов для наиболее часто используемых элементов.

Командная кнопка является самым распространенным элементом управления, и может использоваться для организации выполнения вычислений и других действий, вызова процедур и функций пользователя, открытия форм и т.д. Основные свойства командной кнопки представлены в табл. 5.6. В свойстве Caption можно ставить символ & перед буквой, которая будет использоваться в сочетании с клавишей Alt для ускоренного доступа к кнопке. Также можно перейти к кнопке клавишей Tab, а затем нажать Enter.

Таблица 5.6. Свойства командных кнопок

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

Наиболее полезным методом командной кнопки является SetFocus, позволяющий вернуться к кнопке (передать ей фокус). Например, следующая команда позволяет вернуться к кнопке по умолчанию после ввода данных в текстовое поле: cmdMyButtum.SetFocus

Текстовое поле применяется для ввода или вывода информации. Основные свойства текстового поля представлены в табл. 5.7.

Таблица 5.7. Свойства текстового поля

Например, для очистки содержимого текстового поля в ходе выполнения программы необходимо ввести в требуемом месте программного кода команду:

txtResult.Text=" "

Основным событием текстового поля является Change, происходящее при вводе или удалении символов. Например, команду cmdMyButtum.SetFocus можно поместить в процедуру события Change текстового поля.

Надпись применяется как самостоятельно для вывода справочной информации, так и в виде "подсказок" для текстового поля, списка или другого элемента. Главное её отличие от текстового поля в том, пользователь не может изменить текст надписи (хотя его можно изменить как свойство во время выполнения программы). Основные свойства надписи представлены в табл. 5.8.

Таблица 5.8. Свойства надписи

Список позволяет работать с перечнем из нескольких вариантов. Пользователь может просмотреть содержимое списка и выбрать один из вариантов для последующей обработки. Прямое редактирование содержимого списка невозможно. Если в списке помещаются не все строки, то автоматически добавляется вертикальная полоса прокрутки. Основные свойства списка представлены в табл. 5.9.

Таблица 5.9. Свойства списка

Для списка чаще всего используются события Click и DblClick (двойной щелчок левой кнопкой мыши на одной из строк списка). Во втором случае пользователь одновременно выделяет строку и начинает ее обработку.

Работа со списком начинается с его заполнения методом AddItem, который может вызываться несколько раз подряд. Часто метод AddItem помещается в процедуру UserForm_Initialize(), чтобы список заполнялся при загрузке формы. Метод RemoveItem удаляет строки из списка. Метод Clear очищает сразу весь список. Следующий пример показывает, как работают списки, при этом предполагается, что в проекте создана форма с двумя списками (List1 и List2). Двойной щелчок на любой строке одного списка перемещает её в другой список. Строка включается в другой список до того, как она будет удалена из текущего.

Private Sub UserForm_Initialize()

List1.AddItem "Стол"

List1.AddItem "Стул"

List1.AddItem "Диван"

List1.AddItem "Кресло"

List1.AddItem "Кровать"

Private Sub List1_DblClick()

List2.AddItem List1.Text

List1.RemoveItem

Private Sub List2_dblClick()

List1.AddItem List2.Text

List2.RemoveItem

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

Таблица 5.10. Свойства переключателя

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

Флажок частично аналогичен переключателю, но в отличие от него может использоваться как отдельный самостоятельный элемент. Даже объединенные в группу флажки работают независимо друг от друга. Основные свойства флажков такие же, как и у переключателя (см. табл. 5.10). Однако свойство Value может принимать три значения (флажок находится в установленном состоянии, снятом или неопределенном).

Наиболее часто используемым событием флажков является Click, в процедуре которого можно проверять состояние флажка по свойству Value. Следующий пример иллюстрирует работу флажков, при этом предполагается, что в проекте создана форма с двумя флажками (ChkBold и ChkInalic) и текстовым полем TxtExam (рис.5.3). После ввода символов в текстовое поле, с помощью флажков можно делать текст полужирным или курсивом. Свойства FontBold и FontItalic текстового поля устанавливают способы начертания текста.

Рис. 5.3. Использование флажков

Private Sub Chkbold_Click()

If ChkBold.Value = True Then

TxtExam.FontBold = True

TxtExam.FontBold = False

Private Sub ChkItalic_Click()

If ChkBold.Value = True Then

TxtExam.FontItalic = True

TxtExam.FontItalic = False

Рамка используется для группировки переключателей или флажков, и помещается на форму раньше элементов, находящихся внутри неё. Переключатели находящиеся внутри рамки, работают как самостоятельная группа и не влияют на состояние переключателей в других рамках. Основным свойством рамки является Caption, которое задает текст, определяющий назначение элементов в рамке.

Рисунок используется для простейшего вывода изображения на форме. Он может отображать растровые файлы (.BMP), значки (.ICO), метафайлы (WMF), а также файлы в формате JPEG (.JPG) и GIF (.GIF). Основные свойства рисунка представлены в табл. 5.11.

Таблица 5.11. Свойства рисунка

События и методы рамок и рисунков практически не используются.

Лекция 4 Кафедра Прикладной математики М-703, тел. 362-79-62 К.т.н., профессор Глаголев Виктор Борисович, комн. Ж-405б, тел. 362-73-28 http://glagvik.narod2.ru/index.htm Арифметические операции Приоритет арифметических операций Математические функции Массивы Логические операции Приоритет операций


Операции и функции VB располагает большим набором встроенных функций. Их можно разделить на несколько категорий: Финансово-математические функции Математические функции Функции обработки строк Функции преобразования типов Прочие функции


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


Арифметические операции

Операции отношения


Приоритет операций Если в выражении использовано несколько операций, то в первую очередь выполняются операции, имеющие наивысший приоритет. Если приоритет операций одинаковый, то они выполняются слева направо. a + b/c + d (a + b)/(c + d) Примеры Выражение Код


Математические функции

Углы выражаются в радианах. В проекте необходимо выполнить импорт пространства имен System.Math, добавив в начало исходного кода (до объявления первого модуля или класса) строку Imports System.Math. Иначе перед именем каждой функции будет необходимо добавлять название класса, например: Math.Sin(x)


Импорт в проект пространства имен System.Math


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


Различие между функциями Int и Fix состоит в том, что для отрицательного значения аргумента функция Int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, а Fix ближайшее отрицательное целое число, большее либо равное указанному. Например, функция Int преобразует -8.4 в -9, а функция Fix преобразует -8,4 в -8.


Функция Rnd возвращает значение типа Single, содержащее случайное число, меньшее 1 и большее или равное 0. Перед первым вызовом функции Rnd надо использовать инструкцию Randomize () без аргумента для инициализации генератора случайных чисел.


Пример. Игра «Угадай число» Условие игры Компьютер загадывает некоторое случайное целое число k из диапазона 0 – 100. Следует угадать загаданное число, сделав как можно меньше попыток. После каждой попытки компьютер сообщает, загаданное число больше или меньше предложенного числа.


Таблица данных


Блок-схема алгоритма Генерация случайного числа k от 0 до 100 Ввод k1 a



Интерфейс


Значения свойств


Программный код

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


Например, ссылки a(7) или a1(2, 9) означают, что: а – это имя одномерного массива (вектора) с одним индексом, элемент массива имеет значение индекса равное 7. а1- это имя двумерного массива (матрицы). Об этом говорит применение двух индексов для определения элемента массива.


Первый индекс двумерного массива трактуется как номер строки, в которой находится элемент массива, а второй индекс, как номер столбца. Индексом может быть выражение целого типа с неотрицательным значением. Нижняя граница индекса всегда равна 0. Верхняя граница каждого индекса массива задается при его объявлении.


Имя массива Индекс (номер позиции) элемента массива km Пример массива c именем km типа Integer показаний счетчика километров на спидометре автомобиля в начале каждого месяца в течении года:


Как и простые переменные, массивы объявляются с помощью инструкций Dim, Static, Private или Public. Примеры объявления массивов: Dim x() As Single Dim y(,) As Single


Объявлен одномерный массив с именем x и двумерный массив y. Об этом говорят скобки в объявлении после имени каждого массива. При объявлении двумерного массива между скобок должна стоять запятая. Объявление верхних границ индексов в этих примерах отложено на потом (такие массивы называют динамическими). Одномерный массив называют вектором. Двумерный массив называют матрицей.


Для объявления верхней границы индекса и размещения в памяти массивов следует поместить инструкцию: Redim x(10), y(4,5) Здесь заданы значения верхних границ каждого индекса массивов.


Индекс массива x может принимать значение в диапазоне от 0 до 10. Массив x имеет 11 элементов. Первый индекс массива y может принимать значение в диапазоне от 0 до 4. Второй индекс массива y может принимать значение в диапазоне от 0 до 5. Массив y имеет 30 элементов (произведение числа строк на число столбцов).


При объявлении массива можно выполнить его инициализацию: Dim z() As Single = {1.3, -2.7, _ 14.6, -5} В этом примере объявлен одномерный массив z, имеющий 4 элемента, значения которых заданы списком инициализации. Массив, при объявлении которого верхние границы индексов не были указаны (динамический массив), можно неоднократно переобъявлять с помощью инструкции ReDim.


Среди инструкций внутри процедуры можно записать: ReDim y(5, 10) Далее этот массив может быть переобъявлен: ReDim y(5, 20)


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


Инструкция ReDim Preserve может увеличить размер массива, сохраняя при этом его содержимое. В следующем примере показывается, как можно увеличить размер массива a4 на 10 элементов без уничтожения текущих значений элементов массива. Пусть был объявлен массив: Dim a4 () As Integer Затем в программе установлен размер этого массива: ReDim a4 (n)



Если при объявлении массива задаются верхние границы индексов, то такой массив называется фиксированным. Пример Dim s(10) As Single Dim b(4, 5) As Integer К фиксированным массивам инструкция ReDim неприменима.


Имеется возможность присвоить содержимое одного массива другому так же, как это делается для простых переменных. Но эти массивы должны иметь одинаковую размерность и одинаковое количество элементов.


Если же в левой части оператора присвоения стоит динамический массив, то совпадение числа элементов не обязательно. Число элементов массива в левой части оператора присвоения при необходимости изменится.


Пример. Dim a() As Integer = {1, 2, 3, 4}, _ b(), i As Integer b = a For i = 0 To 3 MsgBox(b(i)) Next Последовательно на экране в окне функции MsgBox будет выведено: 1, 2, 3, 4.


Пример 1 Вычислить среднее арифметическое k заданных чисел.


Применяемые данные Исходные данные: k – переменная целого типа, число заданных величин; a() – массив типа Single, значения заданных величин. Результаты: s – переменная типа Single, значение среднего арифметического.


Промежуточные: Сумма – переменная типа Single, значение суммы первых k элементов массива a; i – переменная целого типа, значение индекса элемента массива a.


Блок-схема алгоритма (1) (2) 1


(3) (4) (5) (6) (7) (8) 1 2 Нет



Посмотрим на эту блок-схему с точки зрения базовых структур, которые в нее входят. Блоки 1 – 2 составляют последовательную структуру (следование), которую мы назовем Структура 1. Блоки 3 – 8 относятся к циклу. Эту структуру мы назовем Структура 2. Блоки 9 и 10 – это опять последовательная структура, которую мы назовем Структура 3.


Структура 1, Структура 2 и Структура 3, рассматриваемые в совокупности также являются структурой следования. В блок-схеме любого структурированного алгоритма всегда можно ясно увидеть базовые структуры, из которых строится алгоритм.


Интерфейс проекта Текстовое поле предназначено для вывода результатов вычислений. Нажатие на кнопку приведет к запуску вычислений.


Интерфейс проекта


Код проекта При создании проекта система автоматически создает показанную ниже заготовку кода, связанного с формой Form1, которая является объявлением класса Form1. Весь код, связанный с формой, должен находиться внутри этой заготовки.


Выполнение проекта должно начаться с щелчка на кнопке BtnПуск. Следовательно в код проекта должна входить подпрограмма BtnПуск_Click, выполнение которой запускается событием Click, происшедшим с кнопкой BtnПуск (щелчком на этой кнопке).


Следующим шагом по созданию кода проекта должно быть включение в код проекта заготовки подпрограммы BtnПуск_Click, которая создается системой, если сделать, например, двойной щелчок на кнопке BtnПуск.


Ниже показан код, который получится после создания заготовки подпрограммы BtnПуск_Click.

После запуска проекта на выполнение программный код начнет выполняться только после нажатия на кнопки BtnПуск. В этом случае для этой кнопки происходит событие Click, что и приводит к выполнению событийной процедуры BtnПуск_Click. Результаты решения

В строках с 1 по 5 тела этой процедуры объявляются данные. В строке 6 выполняется очистка текстового поля. Для этого применяется метод Clear. Если этого не сделать, то при многократных запусках проекта информация, выводимая в текстовом поле при очередном запуске, будет добавляться к информации, выведенной в нем при предыдущих запусках.


В строке 7 обеспечивается ввод значения переменной k. Правильность выполнения ввода данных рекомендуется всегда контролировать. Именно с этой целью в строке 8 значение переменной k выводится в текстовом поле. В строке 9 выполняется размещение массива a в памяти.


В строках с 10 по 12 выполняется ввод значений элементов массива a. Значение элемента a(0) при этом не вводится. Наличие этого элемента мы будем игнорировать. Он ни где не будет применяться. В строках с 13 по 16 значения введенных элементов массива a выводятся для контроля в текстовом поле.


В строках с 17 по 20 выполняется вычисление значения переменной s. И, наконец, в строке 21 обеспечивается вывод значения переменной s в текстовом поле.


Обратите внимание на то, что в программе нет инструкции i = 1, а также инструкции i = i + 1, несмотря на то, что эти инструкции есть в блок-схеме. Нет также проверки условия i <= k. Выполнение всех этих действий обеспечивает инструкция цикла For … Next.


Обратите внимание на то, что в программе также нет инструкции sum = 0. Значение 0 переменная sum получила в результате ее объявления. Можно удалить инструкцию Dim i As Integer. Инструкция цикла For … Next является блоком. Переменная i внутри блока получит тип Integer автоматически (по типу начального и конечного значений параметра), но действовать будет только внутри блока.


Логические операции В VB.NET определены логические операции: And (логическое умножение), Or (логическое сложение), Not (логическое отрицание), а также Xor (логическое исключительное сложение). Операция Not имеет следующий синтаксис: Not Операнд


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


Операция Not Not Операнд


Операция And имеет два операнда:Операнд 1 And Операнд 2 Результат операции And определяет таблица:


Операция And имеет значение True только тогда, когда оба операнда имеют значение True. Пример Неравенство a ? x ? b следует записать: a <= x And x <= b Неправильно написать: a <= x <= b


Операция Or также имеет два операнда: Операнд 1 Or Операнд 2 Результат операции Or дан в таблице:


Операция Or имеет значение True, если хотя бы один операнд (и даже оба вместе) имеют значение True. Пример: Условие «х не принадлежит отрезку » следует записать: x < a Or x > b или Not(a <= x And x <= b)


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


В VB.NET определены также логические операции: AndAlso и OrElse. Операция AndAlso очень похожа на операцию And. Она также выполняет логическое умножение для двух логических операндов (Boolean).


Основным различием между AndAlso и And является то, что AndAlso допускает сокращенное, неполное вычисление операндов. Если для первого операнда в AndAlso вычисляется значение False, второй операнд не вычисляется и возвращается значение False операции AndAlso.


Аналогично операция OrElse очень похожа на операцию Or. Она выполняет сокращенное логическое сложение двух логических операндов. Если первый операнд в выражении OrElse равен True, второй операнд не вычисляется и возвращается True для операции OrElse.

Похожие статьи