Loop Loop While / Until условие
Private Sub Proc7_DoWileLoop ()
Dim LotteryEntry As Integer
LotteryEntry = 0
Do While LotteryEntry <> 7
LotteryEntry = Int (10*Rnd ())
Beep
Loop
MsgBox "Ваш номер равен"& LotteryEntry & ".Вы выиграли!!! "
End Sub
Однако цикл Do-Loopпозволяет переписать эту процедуру еще несколькими способами.
Private Sub Proc8_DoUntilLoop () Dim LotteryEntry As Integer LotteryEntry = 0 Do Until LotteryEntry = 7 LotteryEntry = Int (10*Rnd ()) Beep Loop MsgBox "Ваш номер равен"& LotteryEntry &". Вы выиграли!!!" End Sub | Private Sub Proc9_DoLoopUntil () Dim LotteryEntry As Integer Do LotteryEntry = Int (10*Rnd ()) Beep Loop Until LotteryEntry = 7 MsgBox "Ваш номер равен"& LotteryEntry &". Вы выиграли!!!" End Sub |
D программе Ргос9 ключевое слово Do остав. в начале цикла, а условие завершения и ключевое слово Until переместилось в его конец, за ключевое слово Loop. В таком варианте цикл обязат. выполняется хотя бы один раз, поскольку условие завершения не проверяется, пока не будут выполнены все операторы из тела цикла. Поэтому можно убрать оператор для инициализации переменной Lottery Entry.
№ 25 Управляющая структура For-Each-Next
Это самый мощный цикл VB.Предназ.для выполнения одной и той же группы действий над каждым объектом семейства или структуры массива. Это особ. выгодно, если точно не известно, ск-ко эл-тов содерж. коллекция. Синтаксис:
For Each элемент In коллекция
блок операторов
Next элемент
Пример: Sub Proc10_ForEachNext ()
Dim CountryArray (5) As String
Dim Country As Variant
CountryArray (1) = "India "
CountryArray (2) = "Peru "
CountryArray (3) = "Greeke "
CountryArray (4) = "Canada "
CountryArray (5) = "Kenya"
For Each Country In CountryArray
MsgBox Country
Next End Sub
В Ргос10 эл-ты массива CountryArray заполняются названием стран, кот. затем по очереди выводятся на экран в структуре For-Each-Next в виде следующего сообщения(MsgBox)
For Each | Ключевые слова, отмечающие начало структуры For-Each-Next. |
Country | Переменная, которой присваиваются значения элементов |
In | Ключевое слово, отделяющее переменную от группы. |
Country Array | группа, т.е. массив или семейство объектов. Кол-во повторений цикла совпадает с числом эл-тов в группе. Переменной цикла при первом выполнении присваивается значение первого элемента группы, затем — всех последующих элементов. |
MsgBox Country | Действие, которое выполняется над элементом группы. |
Next | Ключевое слово, отмеч. конец структуры. Достигнув его, программа возвращается к началу цикла - структуры For Each. Если значение переменной цикла совпадает с последним элементом группы, выполнится последовательность операторов, написанная сразу после Next. |
№26 Оператор Exit
В некоторых случаях необходимо прервать выполнение цикла до его завершения. Это можно сделать с помощью команды безусловного перехода Exit (завершает выполнение цикла и передает управление следующей за циклом конструкции). Синтаксис этого оператора внутри цикла For выглядит так:
Exit For. Внутри цикла Do синтаксис оператора Exit Do.
ForСчетчикЦикла =НачальноеЗначение То
КонечноеЗначение [Step шаг]
Блок операторов_1
[Exit For]
Блок операторов_2
Next [СчетчикЦикла]
Do [{While / Until} условие]
Блок операторов_1
[Exit Do]
Блок операторов_2
Loop [{While/ Until} условие]
Например:
For nCounter=100 To 1 Step -10
nDecades(nCounter) = nCounter * 2
If nDecades(nCounter) > 20 Then Exit For
Next
Оператор Exit служит также для выхода из процедур Sub и Function. Синтаксис операторов в этом случае соответственно Exit Sub и Exit Function. Эти операторы могут находиться в любом месте тела процедуры. Они использ., когда процедура выполнила нужные действия и из нее необходимо выйти.