18+
реклама
18+
Бургер менюБургер меню

Евгений Матвеев – Visual Basic для новичков. Шаг за шагом. Самоучитель / справочник (страница 13)

18

• диапазоном,

• оператором сравнения.

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

выражение_минимум To выражение_максимум

Примеры диапазонов:

1 To 5

varX To varX +20

Оператор сравнения обязательно содержит ключевое слово Is (Есть), которое олицетворяет текущий результат выражения:

Is оператор_сравнения выражение

Данный блок инструкций Case (Вариант) выполняется, если результатом оператора сравнения будет True (Истина). Примеры операторов сравнения:

Is <> 0

Is> varX

Блок инструкций Case Else (Другой вариант) выполняется, если Visual Basic не находит подходящего значения ни в одной из блоков Case (Вариант).

В следующем примере Select Case оценивает значение переменной Mark, которой до этого был присвоен номер школьной оценки в цифровом виде, и расшифровывает ее. Если значение переменной Mark отличается от допустимого (от одного до пяти), то выдается сообщение об этом.

Select Case Mark

Case 1

MsgBox «Единица»

Case 2

MsgBox «Двойка»

Case 3

MsgBox «Тройка»

Case 4

MsgBox «Четверка»

Case 5

MsgBox «Пятерка»

Case Else

MsgBox «Оценка введена неправильно!»

End Select

5.4. Безусловный переход GoTo

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

GoTo метка

Метка является символьным идентификатором одного из операторов программы, используемым для передачи к нему управления. Она представляет собой комбинацию латинских букв и цифр, но должна состоять начинаться с буквы. В конце метки ставится символ двоеточия «:». Вот несколько образцов меток:

L2:

Good_Place:

ThisIsLabel800:

Несмотря на кажущуюся простоту, использование безусловных переходов крайне затрудняет понимание логики работы программы и увеличивает число ошибок. С другой стороны, алгоритмически доказано, что в любой программе можно обойтись без GoTo, применяя вместо этого инструкции If…Then… Else и Do… Loop.

Поэтому применение инструкции GoTo крайне не рекомендуется. Она поддерживается Visual Basic только для совместимости с предыдущими диалектами языка Basic.

5.5 Цикл For…Next

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

For счетчик = начало To конец [Step шаг]

[инструкции]

[Exit For]

[инструкции]

Next [счетчик]

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

По умолчанию при каждой итерации цикла переменная счетчика увеличивается на единицу, но с помощью ключевого слова Step (Шаг) это можно изменить. Переход на новую итерацию цикла осуществляется с помощью инструкции Next.

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

В случае применения оператора Exit For будет продолжаться выполнение других операторов программы, расположенных после цикла.

Например, следующий цикл подает звуковой сигнал 5 раз:

For i = 1 To 5

Beep

Next i

Инструкция For определяет переменную i в качестве счетчика цикла, а также ее начальное и конечное значение. Next каждый раз увеличивает переменную i на единицу.

Кстати, указание имени счетчика после Next не обязательно и обычно используется для облегчения понимания кода программы. Инструкция Beep единственная в теле цикла. Она производит короткий гудок.

Циклы могут быть многократно вложенными. Приведем пример такого цикла, где внутри одного цикла с переменной i вложен другой цикл с переменной j:

For i = 100 To 0 Step -10

For j = 1 To 20

varY = varY * (i / j)

Next j

If i <20 Then Exit For

Next i

5.6. Цикл For Each…Next

Немного похожий своим написанием на предыдущий, цикл For Each…Next повторяет набор операторов для каждого элемента массива или всех объектов одного семейства. Вот его синтаксис:

For Each элемент In группа

[инструкции]