Циклы Do…Loop

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

Синтаксис логического цикла:

Do While условие

операторы

Loop

Для того, чтобы решить: продолжать цикл или нет, оператор Do…Loop оценивает выполнение заданного условного перехода типа If…Then.

 

Примеры применения циклов Do…Loop:

- отображение сообщения об ошибке снова и снова, пока пользователь не введет верную информацию;

- чтение данных из файла на диске, пока не будет обнаружен конец файла;

- организация холостой работы программы в течение некоторого времени;

- выполнение некоторых действий по отношению ко всем элементам массива;

- выполнение некоторых действий по отношению ко всем элементам массива или семейства, удовлетворяющихопределенным критериям.

 

Типы оператора цикла Do…Loop

Операторы Do…Loop повторяют выполнение действий, пока некоторый условный оператор внутри цикла не выполнит команду End (слово Loop означает "петля"):

- Do While(условие)Loop -цикл выполняетсяв случае и до тех пор,пока заданное условие имеет значение True (слово While - значит "пока"), т. е. выполнение кода может не состояться ни разу, если заданное условие не является истинным (логический цикл с предусловием);

- Do … Loop While (условие) – оператор начинает процедуру и выполняет блок кода один раз, т. к. условие проверяется после выполнения цикла, а затем повторяет выполнение цикла, пока заданное условие имеет значение True (логический цикл с постусловием);

- Do Until (условие) Loop - начинает и повторяет выполнение блока кода, в случае и до тех пор,пока заданное условие принимает значение False(логический цикл с предусловием);

- Do … Loop Until (условие) - выполняет блок программного кода один раз, а затем повторяет выполнение, пока заданное условие имеет значение False (логический цикл с постусловием).

Пример оператора Do While (условие) Loop
(цикл с предусловием)

Dim ВводимыеИмена As String = " "

Do While ВводимыеИмена <> "Готово"

ВводимыеИмена = InputBox("Введите Ваше имя или для выхода - слово 'Готово', 'Цикл While с предусловием'")

MsgBox("Введённое имя " & ВводимыеИмена)

Loop

End

VB трактует код, как "исполнять цикл до тех пор, пока переменная ВводимыеИмена не будет содержать значение "Готово". Если содержанием этой переменной сразу же является текстовая строка "Готово", то цикл Do не выполнится ни разу, и программа выполнит оператор End.

После объявления переменной ВводимыеИмена следует придать её нулевое значение, иначе при проверке предусловия может возникнуть неопределённость.

Пример оператора Do Loop While (условие)
(цикл с постусловием)

Dim Число As Integer

Do

Число = InputBox("Вводите числа < 10")

MsgBox("Введённое число " & Число)

Loop While Число < 10

End

Такой вариант даёт возможность изменения переменной Число до проверки условия, поэтому в случае невыполнения ранее присвоенного переменной значения "Число <10" цикл не будет пропущен, а гарантированно выполнится один раз.

Использование оператора Do …Until Loop (условие)

Dim Отклик As String

Do

Отклик = InputBox("Нажмите 'Q' и Enter для выхода")

MsgBox(Отклик)

Loop Until Отклик = "Q"

End

В данном примере для более простой записи условия: Отклик = "Q"(вместо знака "<>" используется знак "=") применён оператор цикла Do … Loop Until (условие), т. е. при этом цикл продолжается до тех пор, пока не выполнится условие: Отклик = "Q"

Оператор цикла While… End While

Dim Количество As Integer = 5

WhileКоличество >= -2

MsgBox("Количество = " & Количество)

Количество -= 1 'это краткая запись равенства Количество = Количество - 1