Оператор Select Case.End Select

Для принятия более сложных решений (особенно при наличии нескольких условий) можно воспользоваться блоком Select Case...End Select. Его синтаксис прост:

 

Select Case x

Case Is =3

'Выполнить некоторые действия

Case Is > 17

' Выполнить другие действия

Case Else.

'Действия для случая, когда не выполнено

'ни одно из предыдущих условий

End Select

 

Для каждого оператора Select Case в программе должен быть соответствующий оператор End Select. Количество секций Case между Select Case и End Select может быть любым.

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

В операторе Select Case можно проверять строковые литералы, переменные и диапазоны значений. Например, следующий фрагмент проверяет, что число принадлежит интервалу от 1 до 10:

 

Select Case guess

Case 1 to 10

Предположение верно

Case Else

Предположение неверно

End Select

 

Секция Саsе 1 to 10 выполняется для переменной guess, принадлежащей интер-валу от 1 до 10. Секция Case Else обрабатывает остальные ситуации.

Оператор Select Case...End Select применяется и для строк. Например, в вашей про-грамме может присутствовать следующий фрагмент:

 

Select Case x

Case Is = "3"

Выполнить некоторые действия

Case Is > "17"

Выполнить другие действия

Case Else

Действия для случая, когда не выполнено

ни одно из предыдущих условий

End Select

 

Программный код, выполняемый при выполнении условия, находится в соответствующей секции Case. Секция Case может содержать несколько команд (см. пример с угадыванием чисел). Обратите внимание: для завершения секции Case не используется оператор End. Становится понятно, почему так важно структурировать программный код с помощью символов табуляции и пробелов — это позволяет визуально сгруппировать взаимосвязанный код. Такой подход не только упрощает чтение программы, но и снижает вероятность ошибок.

 

ПОДСКАЗКА О написании структурированных программ рассказано в уроке 12, «Отладка приложений».

 

При проверке строковых значений следует помнить о том, что пользователь может вводить данные в верхнем, нижнем или смешанном регистрах. Следовательно, ваша программа должна обрабатывать возможные ситуации. Для этого необходимо решить две задачи. Во-первых, вы должны удалить из строки все ведущие и завершающие пробелы. Иногда пользователь случайно вводит пробелы до или после данных. Чтобы удалить их, следует передать строку функции Trim$(). Во-вторых, текст необходимо преобразовать к одному регистру, верхнему или ниж нему. Для этого можно воспользоваться функцией UCase$() или LCase$(,).Boз-можные варианты выглядят так:

 

If Trim$(UCase$(txtInput.Text)) = "АДМИНИСТРАТОР" Then

' Выполнить некоторые действия

End If

 

If Trim$(LCase$(txtInput.Text)) = "администратор" Then

' Выполнить некоторые действия

End If

 

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

 

Выполнение повторяющихся действий

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

 

Цикл For...Next

Основная форма циклов в Visual Basic — цикл For,..Next. Он используется для выполнения определенного количество итераций. Циклы For...Next обычно используются для работы со счетчиками и в других ситуациях, когда количество итераций известно заранее. Они имеют следующий синтаксис:

 

For Счетчик=НачальноеЗначение To КонечноеЗначение

Повторяющиеся действия

Next Счетчик

 

Несмотря на простоту этого фрагмента, обратите внимание на некоторые обстоятельства:

О Переменная Счетчик имеет числовой тип (Integer или Long) и указывается программистом (например, I).

О НачальноеЗначение определяет состояние переменной, с которого начинается отсчет.

О КонечноеЗначение определяет состояние переменной, в котором отсчет прекращается.

Например, чтобы переменная x в цикле принимала значения от 1 до 5, Счетчик заменяется на x, НачальноеЗначение — на 1, а КонечноеЗначение — на 5. В первой строке цикла For...Next может присутствовать ключевое слово Step. Оно позволяет изменить приращение счетчика (по умолчанию оно равно 1). Например, если значение счетчика каждый раз увеличивается на 3, строка For будет завершаться Step 3. Если счетчик увеличивается на 2, строка завершается Step 2. В следующем фрагменте счетчик изменяется от 10 до 100 с приращением 5:

 

For I = 10 To 100 Step 5

' Повторяющиеся действия

Next

 

После ключевого слово Next можно не указывать имя переменной-счетчика. В этом случае цикл For...Next просто завершается ключевым словом Next. Более того, тесты показали, что без указания имени переменной программа выполняется быстрее. Однако код должен быть структурирован, чтобы вы могли легко найти соответствие между различными For и Next.

 

ПОДСКАЗКА По умолчанию в цикле For...Next приращение счетчика равно 1. Чтобы использовать другое приращение, следует указать ключевое слово Step, а после него — нужное значение.

 

Счетчик даже может изменяться в обратном направлении. Для этого следует задать начальное значение больше конечного и выбрать отрицательное приращение после ключевого слова Step. Например, в следующем фрагменте счетчик изменя-етсяот 10 до 1:

 

For I = 10 To 1 Step -1

Повторяющиеся действия

Next

 

А здесь счетчик изменяется от 100 до 0 с уменьшением на 10:

 

For I = 100 To 0 Step -10

' Повторяющиеся действия

Next

 

Чтобы выйти из цикла до того, как счетчик достигнет конечного значения, воспользуйтесь командой Exit For. Например:

 

For I = 1 To 100 Step 5

X = I * 10

If X > 100 Then

Exit For

End If

Next

 

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

 

Цикл Do...Loop

Другой тип циклов реализуется с помощью конструкции Do...Loop. Эта конструкция используется в тех ситуациях, когда точное количество повторений заранее неизвестно или вы хотите дождаться выполнения некоторого условия. Например, можно в цикле перебирать содержимое набора записей, полученного из базы данных. Скорее всего, точное количество записей будет неизвестно заранее, но зато можно определить, что вы достигли конца набора. Цикл Do...Loop прекрасно справляется с этой задачей.

Цикл Do...Loop может выполняться бесконечно:

 

Do

' Повторяющиеся действия

Loop

 

Цикл с условием завершения выглядит так:

 

Do While X < 10

X = X + 1

Loop

 

Он продолжает выполняться до тех пор, пока значение переменной остается меньше 10. Поскольку X не присваивалось конкретного значения, цикл будет выполняться 10 раз. Вместо ключевого слова While можно воспользоваться ключевым словом Until, но тогда вместо условия продолжения вычислений формулируется условие завершения. Наш фрагмент эквивалентен следующему:

 

Do Until X = 10

X = X + 1

Loop

 

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

 

ПОДСКАЗКА Для выхода из цикла также применяется команда Exit Do. Oco-бенно часто она используется в сочетании с оператором If...Then.

 

Цикл While...Wend

Другая форма цикла, похожая на конструкцию Do...Loop, — цикл While...Wend. В нем последовательность команд выполняется до тех пор, пока остается истинным указанное условие. Например, следующий цикл:

 

While X < 10

X = X + 1

Wend

 

выполняется до тех пор, пока значение X не достигнет 10. Поскольку цикл While-Wend эквивалентен конструкции Do...Loop, выбор между ними является делом вкуса.

Mny76

Перебор коллекций

В Visual Basic существует еще один тип циклов, предназначенный для переборов коллекций. Для этой цели используются циклы For Each...Next. Такой способ особенно полезен в ситуации, когда точное количество объектов в коллекции неизве-стпо заранее.

 

ПРИМЕЧАНИЕ Коллекцией называется объект, который содержит другие, взаимосвязанные объекты.

 

Цикл для перебора всех объектов коллекции может выглядеть так:

 

Dim cmd As CommandButton

*

For Each cmd In Form1

With cmd

If.Index <> Index Then

MsgBox "Кнопка " & Trim$(Str$(.Index)) &_

не была нажата"

End If

End With

Next

 

В первой строке объявляется объект класса CommandButton. Bo второй строке Visual Basic перебирает все объекты CommandButton на форме Form1. Далее следует оператор With cmd, который сообщает о том, что операции блока With...End With выполняются с текущим объектом коллекции cmd.

Циклы по элементам коллекций используются во многих задачах, среди которых перебор элементов деревьев и табличных списков, дочерних форм приложений MDI и объектов, принадлежащих документам DHTML (см. урок 18, «Программирование для Интернета на Visual Basic»).

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: