Читать книгу «Visual Basic для новичков. Шаг за шагом. Самоучитель / справочник» онлайн полностью📖 — Евгения Матвеева — MyBook.
image

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 группа

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

[Exit For]

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

Next [элемент]


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


For Each ArrItem In MyArray

Print ArrItem

Next

5.7. Цикл Do… Loop

Do… Loop – цикл, который выполняется до тех пор, пока не будет выполнено некоторое условие, указанное вначале или в конце цикла.

Он имеет следующий синтаксис (вариант проверки условия в начале):


Do [{While | Until} условие]

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

[Exit Do]

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

Loop


Допустима также другая форма написания этого цикла (вариант проверки условия в конце) :


Do

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

[Exit Do]

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

Loop [{While | Until} условие]


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

• условие, записанное после ключевого слова While (Пока [истина]), принимает значение False (Ложь),

• условие, записанное после ключевого слова Until (Пока не [истина]), принимает значение True (Истина).

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

Без указания условий цикл Do… Loop будет работать бесконечно. Поэтому для досрочного выхода из цикла можно применять инструкцию Exit Do.

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


intDig1 = 5

Do While intDig1> 0

print 100 / intDig1

intDig1 = intDig1 – 1

Loop


1
...
...
13