Оператор управления потоком для цикла
Синтаксис
Do [ { Until | While } condition ]
[ statement block ]
Loop
или
Do
[ statement block ]
Loop [ { Until | While } condition ]
Описание
Заявление
Do выполняет инструкции в следующем
statement block
до тех пор/в то время как
condition, если таковое имеется,
оценивается как
TRUE.
Если используется
Until, заявление
Do
останавливает итерацию
statement block когда
condition
оценивается как true. Ключевое слово
While имеет обратный
эффект, останавливает цикл, если
condition оценивается как false.
Если оба
condition и либо
Until либо
While
опущены, заявление
Do превращается в бесконечный цикл.
Если заявление
Exit Do
встречается внутри
statement block, цикл завершается, и
выполнение возобновляется сразу же после его заявления
Loop.
Если заявление
Continue Do
встречается , остальная часть
statement block пропускается и
выполнение возобновляется с заявления
Do.
В первом синтаксисе,
condition проверяется , когда
заявление
Do встречается впервые, и если
condition
удовлетворяется,
statement block будет пропущен. Во втором
синтаксисе,
condition первоначально проверяется после
выполнения
statement block. Это означает, что
statement block
всегда гарантированно выполнится по крайней мере один раз.
condition может быть любым допустимым выражением, False (ноль)
или True (не ноль).
Пример
В этом примере, цикл
Do используется для подсчета общего
количества нечетных чисел от 1 до 10. Цикл будет повторяться
until(пока) условие
n > 10
выполняется:
Dim As Integer n = 1 '' число
для проверки
Dim As Integer total_odd = 0 '' нарастающий
итог нечетных чисел
Do Until( n > 10 )
If( ( n Mod 2 ) > 0 ) Then total_odd += 1 '' добавить
в общую сложность, если n нечетное (есть остаток от деления на 2)
n += 1
Loop
Print "total odd numbers: " ; total_odd '' напечатает '5'
End 0
Здесь бесконечный цикл DO используется для того, чтобы подсчитать общее
количество четных чисел. Мы размещаем условную проверку внутри цикла
посредством заявления
If...Then,
который заставит выполниться команде
Exit DO
(прервать цикл), когда условие
n > 10 станет true:
Dim As Integer n = 1 '' число
для проверки
Dim As Integer total_even = 0 '' нарастающий
итог четных чисел
Do
If( n > 10 ) Then Exit Do '' выход
из цикла, если проверены 10 чисел
If( ( n Mod 2 ) = 0 ) Then total_even += 1 '' добавить
в общую сложность, если n четное (нет остатка от деления на 2)
n += 1
Loop
Print "total even numbers: " ; total_even '' напечатает '5'
End 0
Различия диалектов
Отличия от QB
См. также