Visual Basic 2010 Express: управляющие конструкции Visual Basic

Материал из УссуриВики
Перейти к: навигация, поиск
Автор Сандул Вероника
                                                       Vb3.jpg

Условные выражения

В Visual Basic, как и во всех языках программирования, существуют конструкции, предназначенные для управления порядком выполнения команд. Различают следующие основные типы управляющих операторов:

  • If, если определяющее условие может принимать два значения: True/False (истина/ложь);
  • Select Case, если определяющее условие является выражением, которое может принимать более двух значений (например, введенный с клавиатуры символ может быть буквой, цифрой, знаком пунктуации, пробелом);

Основанием для принятия решений в управляющих конструкциях являются условные выражения.

Условные выражения – это такие выражения, которые возвращают одно из двух значений: True (Истина) или False (Ложь).

В условных выражениях используются операторы сравнения (таблица 1).

Описание Оператор
Равно =
Больше >
Меньше <
Не равно <>
Больше или равно >=
Меньше или равно <=

Таблица 1 – Операторы сравнения

Над условными выражениями можно выполнять действия логической математики (логические операции), а именно:

  • AND (И) – возвращает значение True, если все участвующие в операции выражения имеют значение True. В остальных случаях возвращается значение False;
  • OR (ИЛИ) – возвращается значение True, если хотя бы одно из участвующих в операции выражений имеет значение True. В случае, когда все выражения имеют значение False, возвращается False;
  • XOR (исключающее ИЛИ) – возвращает значение True, если только одно из участвующих в операции выражений имеет значение True. В остальных случаях возвращает False;
  • NOT (НЕ) – операция отрицания. Возвращает обратное значение для значения выражения, т.е. если выражение равно True, то возвращается False, и наоборот, если значение выражения равно False, то возвращается значение True.

Синтаксис использования логических операций такой же, как и у арифметических.

Например:
(выраж-е1 AND выраж-е2 AND выраж-е3) OR (выраж-е4 XOR выраж-е5)

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

Dim bVar1 As Boolean
Dim bVar2 As Boolean
bVar1 = выражение1 AND выражение2 AND выражение3
bVar2 = (выражение4 XOR выражение5)

Итоговым будет следующее выражение:

bVar1 OR bVar2

Теперь мы можем перейти к рассмотрению основных конструкций.

Конструкция If… Then

Конструкция If… Then применяется в том случае, когда необходимо выполнить один оператор или группу операторов при определенном условии, т.е. когда значение заданного условия равно True. Существует две разновидности данного оператора: однострочный и многострочный. Однострочный оператор имеет следующий синтаксис:

If условие Then операторы

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

If A > 10 Then A = A + 1: B = B + A: C = C + B

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

If условие Then
	операторы
End If

Исходя из синтаксиса, приведенные далее фрагменты программного кода выполняют одни и те же действия:

' Однострочный оператор
IF y>20 Then y=2

' Многострочный оператор
IF y>20 Then У=2 End If

После имени конструкции if должно следовать логическое выражение, содержащее условие. В качестве условия могут выступать следующие логические выражения:

  • сравнение переменной с другой переменной, константой или функцией;
  • любая переменная, выражение, поле базы данных или функция, принимающие значения True или False.

Ключевое слово End if обозначает конец многострочной конструкции и его наличие в команде в этом случае обязательно. Если указанное условие выполняется, то есть результат проверки равен True, то Visual Basic выполнит конструкции, следующие за ключевым словом Then. Если условие не выполняется, то Visual Basic переходит к выполнению операторов, следующих за указанным оператором.

Конструкция If… Then… Else

Конструкция if.. .Then...Else аналогична конструкции if...Then, но позволяет задать действия, исполняемые как при выполнении условий, так и в случае их невыполнения. Конструкция имеет следующий синтаксис:

IF условие Then

Конструкции для обработки истинного условия

Else

Конструкции для обработки ложного условия

End If

Ключевые слова IF и End if имеют тот же смысл, что в конструкции If...Then. Если заданное в конструкции условие не выполняется (результат проверки = False), и конструкция содержит ключевое слово Else, Visual Basic выполнит последовательность конструкций, расположенных следом за Else. После чего управление перейдет к конструкции, следующей после End If.

Например:
If x >= 0 Then
Label1.Caption = "Значение больше или равно 0"
Else
Labell.Caption = "Значение меньше 0"
End If

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

Например:
If x > 0 Then
Label1.Caption = "Значение положительное"
Elself x = 0 Then
Label1.Caption = "Значение равно 0"
Else
Labell.Caption = "Значение отрицательное"
End If

Конструкция Select Case

Конструкция Select case позволяет обрабатывать в программе несколько условий и аналогична блоку конструкций if.. .Then.. .Else. Эта конструкция состоит из анализируемого выражения и набора операторов case на каждое возможное значение выражения. Работает эта конструкция следующим образом. Сначала Visual Basic вычисляет значение заданного в конструкции выражения. Затем полученное значение сравнивается со значениями, задаваемыми в операторах case конструкции. Если найдено искомое значение, выполняются команды, приписанные данному оператору case. После завершения выполнения конструкций управление будет передано конструкции, следующей за ключевым словом End Select. Синтаксис конструкции Select Case следующий:

Select Case сравниваемоеЗначение
CASE значение1
конструкция1
CASE значение2
конструкция2
. . .
End Select

В начале конструкции расположены ключевые слова select case, указывающие, что расположенный рядом с ними параметр сравниваемое значение будет проверяться на несколько значений. Далее следуют группы команд. начинающиеся с ключевого слова Case. Если параметр сравниваемоеЗначение равен значению, указанному в текущем операторе case, то будут выполняться команды, расположенные между этим и следующим ключевым словом case. В качестве примера воспользуемся конструкцией Select Case для решения предыдущей задачи:

Select Case x
CASE 1 То 9
Labell.Caption = "Значение больше 0"
CASE 0
Labell.Caption = "Значение равно 0"
CASE -9 То -1
Label1.Caption = "Значение меньше 0"
End Select 

Замечание

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

Циклы

Vb1.png

В программах Visual Basic для выполнения повторяющихся действий используются циклы. Они бывают следующих типов:

  • For...Next
  • For Each...Next
  • Do. . . Loop

Рассмотрим перечисленные конструкции.

Цикл с использованием конструкции For...Next

Конструкция For...Next выполняет последовательность команд определенное число раз. Такую конструкцию называют циклом, а выполняемые ею программные коды – телом цикла. Синтаксис конструкции For.. .Next следующий:

For счетчик = начЗначение То конЗначение [Step шаг]
конструкции
Next[счетчик]

Первый аргумент конструкции – счетчик – определяет имя переменной, которая будет "считать" количество выполнении цикла. Параметр назначение указывает числовое значение, которое присваивается переменной-счетчику перед первым проходом цикла. Цикл выполняется до тех пор, пока значение счетчика не превысит конечного значения, указанного после ключевого слова то. После каждого прохода цикла значение счетчика изменяется на величину шаг, указанную за ключевым словом step. Ключевое слово Next обозначает конец тела цикла и является обязательным. Перед каждым проходом цикла Visual Basic сравнивает значения счетчика и аргумента конЗначение. Если значение счетчика не превышает установленного значения конЗначение, выполняются конструкции тела цикла. В противном случае управление переходит к следующей за Next конструкции.

Например:
For nCountVar = 1 То 10 Step 2
nNextWeek(nCountVar) = nCountVar * 2
Next

Здесь цикл выполняется пять раз при значениях счетчика nCountVar 1, 3, 5, 7 и 9. Обратите внимание, что переменная-счетчик используется в теле цикла в качестве обычной переменной. Шаг изменения счетчика может быть отрицательным.

Например:
For nCounter = 100 То 1 Step -10
nDecades(nCounter) = nCounter *2
Next

В этом случае цикл будет выполняться до тех пор, пока nCountVar больше 1. Если значение шага цикла отрицательно, то начальное значение счетчика должно быть больше конечного. Ключевое слово step можно опустить. В этом случае значение шага по умолчанию принимается равным 1. Возможны ситуации, при которых выполнение цикла невозможно или, наоборот, его выполнение становится бесконечным.

Например:
  • Невыполняемый цикл: начальное значение счетчика
  • больше конечного при положительном шаге цикла
For nCounter=100 To 1
nDecades (nCounter) = nCounter
Next
  • Бесконечный цикл: значение счетчика
  • изменяется в теле и никогда не превысит 10 For nCounter = 1 То 10
nCounter = 1
Next 

Цикл с использованием конструкции For Each... Next

Цикл с использованием конструкции For Each...Next похож на цикл For.. .Next, но используется для обработки всех элементов некоторого набора объектов или массива. Его особенно удобно использовать в том случае, когда количество обрабатываемых элементов не известно. Синтаксис конструкции For Each.. .Next следующий:

For Each элемент In группа
конструкции
Next элемент

Пример использования конструкции приведен ниже.

Dim objControl As Control
For Each objControl In Controls
objControl.Caption = "Test " & objControl.Caption
Next objControl 

Замечание

При использовании конструкции For Each.. .Next необходимо иметь в виду, что для набора объектов параметр элемент может быть только переменной типа Variant, общей переменной типа Object или объектом, перечисленным в Object Browser. Для массивов параметр элемент может быть только переменной типа Variant.

Цикл с использованием конструкции Do...Loop

Цикл, задаваемый конструкцией Do... Loop, выполняется до тех пор, пока истинно задаваемое в цикле условие. Синтаксис конструкции DO. . .Loop следующий:

Do While условие
конструкции
Loop

Аргумент конструкции условие является логическим выражением, значение которого проверяется перед каждым проходом цикла. Если это значение равно True, то выполняется последовательность команд, которые расположены между Do while и ключевым словом Loop. Эти конструкции образуют тело цикла. Если при очередном проходе цикла условие равно False, то происходит выход из цикла и управление передается конструкции, следующей за Loop. Возможна ситуация, при которой операторы цикла не выполняются ни разу. Она возникает в том случае, если при первой проверке условия оно оказывается ложным. В Visual Basic существует еще один вид цикла конструкции DO... Loop. Он отличается от рассмотренного ранее местом расположения условия. Если в предыдущей конструкции условие, по которому выполняется цикл, расположено в заголовке, то в этой конструкции условие располагается в конце цикла:

Do
конструкции
Loop While условие

При использовании этой формы оператора тело цикла выполняется хотя бы один раз, после чего осуществляется проверка заданного условия. Есть еще две разновидности конструкции цикла Do. . .Loop. Они аналогичны рассмотренным ранее, но отличаются тем, что цикл выполняется до тех пор, пока условие ложно, а не истинно. Данные операторы имеют следующий синтаксис:

Do Until условие
конструкции
Loop

и

Do
конструкции
Loop Until условие

Пример использования конструкции приведен ниже.

nCounter = 2
Do While nCounter < 10
nDecades(nCounter) = nCounter * 2
nCounter = nCounter * 2
Loop

Список источников:

1. Иллюстрированный самоучитель по Visual Basic 6.0"

2. Дукин А.Н., Пожидаев А.А. Самоучитель Visual Basic 2010. - СПб.:БХВ-Петербург, 2010. - 560 с.

3. Зиборов В. Visual Basic 2010 на примерах. - СПб.:БХВ-Петербург, 2010.- 336 с. (+CD)

4. Интерактивный учебник по Visual Basic