End Select

Оператор варианта Select Case

END IF

END IF

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

Конструкции управления

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

В алгоритмических языках программирования существуют семь базовых управляющих конструкций (или структур): последовательность, ветвление, обход, выбор, цикл с параметром, цикл с предусловием и цикл с постусловием. Первые четыре из указанных выше структур это структуры принятия решений, остальные три - циклы.

Последовательность - это последовательность операторов, выполняющихся один за другим.

Ветвление - это структура, в которой в зависимости от некоторого условия выполняется одна или другая часть программы (реализуется оператором If).

Обход - это структура, в которой в зависимости от некоторого условия выполняется некоторая часть программы или не выполняется (реализуется оператором If ).

Выбор - это структура, позволяющая "разветвлить" программу на несколько частей, в зависимости от значения некоторого выражения (реализуется оператором Select Case).

Цикл с параметром - это структура, позволяющая повторить некоторую часть программы определенное, заранее известное, количечтво раз (реализуется оператором For…Next).

Цикл с предусловием, Цикл с постусловием - это структура, позволяющая повторять некоторую часть программы пока соблюдается некоторое условие (реализуется оператором Do…Loop).

Цикл - это алгоритмическая структура, при помощи которой реализуется многократное повторение блоков операторов.

Далее рассмотрим управляющие структуры.

 

 

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

IFлогическое выражениеTHEN

then_последовательность

[ELSE

else_последовательность]

Если результатом проверки логического выражения является значение True, то будет выполнен блок then_последовательность, находящийся после ключевого слова Then. С другой стороны, если проверка логического выражения дала результат False, то будет выполнен блок else_последовательность, расположенный после ключевого слова Else.

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

IFлогическое выражение 1THEN

[блок операторов 1]

[ELSEIFлогическое выражение 2 THEN

[блок операторов 2]]

[ELSE

[блок операторов n]]

Блок операторов -это один оператор или последовательность операторов.

Если результатом проверки логического выражения 1, находящегося после ключевого слова If, является значение True, то будет выполнены операторы из блока операторов 1, находящегося после ключевого слова Then. Если же оно ложно, то проверяется логическое выражение 2, находящегося после ключевого слова ElseIf, в случае его истинности выполняются операторы из блока операторов 2 и т. д. Если ни один из этих условий не является истинным, то есть результатом всех проверок является значение False, то выполняются операторы из блока операторов n, расположенные после ключевого слова Else.

Примеры:

If A > 10 Then A = A+1 : B = B + A : GoTo Vstavka 'обход

If Name = "Иван" Then GoTo 555 'обход

 

If Answer = "No" Then 'ветвление

Mark = Mark - 1

Else

If Num_Answer = Max_Num Then

Topic = Topic + 1

Else

Result = Mark

End if

End if

If Answer = "No" Then

Mark = Mark - 1

ElseIf Num_Answer = Max_Num Then

Topic = Topic + 1

Else

Result = Mark

End if

 

 

Когда существует несколько операторов (или блоков операторов), которые необходимо выполнить в случае истинности того или иного условия, то запись If .. Then может оказаться достаточно громоздкой. Поэтому в подобных случаях следует использовать структуру Select Case, которая улучшает читаемость программы. Ее синтаксис выглядит следующим образом:

 

Select Caseвыражение

Caseсписок выражений 1

блок операторов 1

Caseсписок выражений 2

блок операторов 2

Caseсписок выражений n

блок операторов n

[Case Else

блок операторов n+1]

 

Здесь,

выражение-выражение арифметического или символьного типа.

список выраженийможет иметь одну из следующих форм:

- выражение;

- выражение To;

- выражение Is операция отношения выражение.

Если значение выражения содержится в список выражений 1, находящегося после первого по порядку служебного слова Case, то выполняется блок операторов 1. С другой стороны, если значение выражения содержится в список выражений 2, то выполняется блок операторов 2 и т.д. Когда значение выражения не содержится ни в одном из приведенных списков, то выполняется блок операторов n+1, находящийся после служебного словосочетания Case Else, которе является необязательным в рассматриваемой конструкции.

Пример:

Dim x, y As Single

Select Case X

Case 1, 3 'X = 1 или X = 3

Y= X^2

Case 5 To 10 '5 < = X <= 10

Y= X^2/3

Case 12 Is >= 15 'X = 12 или X >= 15

Y= X+3

Case Else 'в противном случае

Y= X

End Select

3.8.3.3. Оператор цикла с параметром For…Next

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

Forпараметр цикла=начальное значениеToконечное значение [Stepшаг]

[блок операторов 1]

[Exit For]

[блок операторов 2]

Next [параметр цикла ]

ПараFor, Nextопределяет начало и конец цикла.

Блок операторов 1 и блок операторов 2 между For и Next составляют тело цикла.

Параметр цикла-это арифметическая переменная, не может быть элементом массива или элементом пользовательского типа данных.

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

Конечное значение - это арифметическое выражение (в частном случае - это константа или переменная). Определяет окончание работы цикла. Цикл выполняется до тех пор, пока значение параметра цикла не выйдет за границу конечного значения.

Exit Forможет находится в любом месте между For и Next, используется для досрочного прекращения выполнения цикла (управление передается оператору, следующему за Next). Применяется обочно в операторе условия, проверяющего условие выхода из цикла, например, в случае ошибки. Причем, если осуществляется досрочное прекращение цикла, то блок операторов 1 выполняется очередной раз, а блок операторов 2 - нет.

После завершения цикла управление передается оператору, следующему за Next.

Цикл выполняется, если выполнены следующие условия

- шаг >=0 и начальное значение <=конечное значение;

или

- шаг <=0 и начальное значение >= конечное значение.

При этом, эти условия проверяются перед каждым выполнением тела цикла.

Пример:

'Заполнение массива символами таблиц ASCII.

Private Sub Create_Table()

Dim I As Integer

Dim C(255) As String

For I = 0 To 255

C(I) = Chr(I)

Next I

End Sub

3.8.3.4. Цикл Do…Loop

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

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

Do [{While | Until}логическое выражение]

[блок операторов 1]

[Exit Do]

[блок операторов 2]