Безусловный выход из цикла.

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

Counter = 99 Do Until Counter <= 0 If Counter > 50 Then MsgBox "Начальное значение больше допустимого" Exit Do End If Call MySubroutine Counter = Counter – 2 Loop

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

Цикл While…Wend

Инструкция While…Wend является разновидностью инструкции Do…Loop. В ранних версиях Basic, в которых не было инструкции Do…Loop, весьма эффективно использовалась команда While…Wend. Формат инструкции прост:

While [условие]

инструкции

Wend

Первый пример для инструкции Do…Loop можно с легкостью изменить, чтобы использовать цикл While…Wend:

Counter = 100

While Counter > 0

Call MySub

Counter = Counter - 1

Wend

Инструкция While…Wend в отличие от цикла Do…Loop не имеет второго варианта, в котором проверка условия выполняется в конце цикла. Кроме того, для данного цикла нет инструкции для безусловного выхода, подобной Exit Do.

Цикл For…Next

Инструкцию For…Next можно встретить в большинстве языков программирования. Она позволяет циклически выполнить набор утверждений заданное число раз. Формат инструкции следующий:

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

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

Next счетчик

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

Sub Дни_недели()

For i = 1 To 8

Select Case i

Case 1

День = "Понедельник"

Case 2

День = "Вторник"

Case 3

День = "Среда"

Case 4

День = "Четверг"

Case 5

День = "Пятница"

Case 6

День = "Суббота"

Case 7

День = "Воскресенье"

Case Else

День = "Нет вариантов"

End Select

MsgBox (День)

Next i

End Sub

Обратите внимание, что переменная i автоматически увеличивается по достижении конца цикла. Ее не требуется изменять отдельной командой. Применяемый по умолчанию шаг равный 1, можно изменить, указав необязательное ключевое слово Step и величину шага. Значение шага может быть как положительным, так и отрицательным, что позволяет также создать циклы для счета в обратном направлении.

ПРАКТИЧЕСКОЕ УПРАЖНЕНИЕ

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

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

Чтобы выполнить эту задачу, нам придется воспользоваться несколькими новыми функциями:

Rnd() – генерация случайного числа в диапазоне [0; 1);

Int(число) – целая часть числа;

Chr(13) – перевод строки (аналогично нажатию клавиши Enter).

1. Перейдите в редактор VBA и откройте окно проекта, если до этого оно было закрыто.

2. Отобразите окно модуля.

3. В окне модуля введите следующую процедуру:

Public Sub Выбрасывание_кости() Dim numbers(6) As Double Dim a As Double N = InputBox("Введите число выбрасываний кости") For i = 1 To N a = Int(Rnd() * 6) + 1 numbers(a) = numbers(a) + 1 Next i info = "Число выбрасываний" & Chr(13) & Chr(13) & _ "1 - " & numbers(1) & _ " 4 - " & numbers(4) & Chr(13) & _ "2 - " & numbers(2) & _ " 5 - " & numbers(5) & Chr(13) & _ "3 - " & numbers(3) & _ " 6 - " & numbers(6) MsgBox (info) End Sub

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Нарисовать общую схему команды цикла.

2. Как выглядит общий вид записи оператора цикла с известным числом повторений?

3. Что значат в переводе слова For, Step, Next?

4. Как выполняется оператор цикла с известным числом повторений?

5. Может ли быть шаг цикла отрицательным?

Наши рекомендации