Основы VB.NET Урок 23. Операторы циклов While и Do...Loop
Циклы которые мы рассмотрим на этом уроке, в отличие от циклов типа For...Next, выполняются заранее неизвестное число раз. Т. е. если в вашей программе вы точно не знаете, сколько раз должно выполниться то или иное действие, то размещайте его в цикле While или в цикле Do...Loop. Типичный пример - это запрос пароля у пользователя. Со скольки попыток полькозателю удасться набрать правильный пароль - никто не знает, так что в этом случае надо использовать циклами из этого урока.
У таких циклов есть две разновидности - Do...Loop и собственно While. До того, как переходить к конкретному синтаксису этих разновидностей, отметим, что Do...Loop точно один раз выполнится (а может и больше), а While может не выполнится ни одного раза.
Теперь конкретный синтаксис.
Пример использования цикла While:
Dim password As String
Console.WriteLine("Введите пароль")
password = Console.ReadLine()
While password <> "qwerty"
Console.WriteLine("Неправильный пароль")
Console.WriteLine("Введите пароль")
password = Console.ReadLine()
End While
Console.WriteLine("Правильный пароль")
Условием продолжения цикла While является значение True после ключевого слова While. Т. е. в данном случае пока пользователь не введет qwerty в качестве пароля, цикл будет выполняться еще и еще.
Теперь поговорим о цикле Do...Loop. У него есть несколько разновидностей (4 штуки). Так, проверка того, продолжать ли цикл или нет, может находиться или в его начале, или в конце:
Do
'Некоторые операторы
Loop While k>0
Do While k>0
'Некоторые операторы
Loop
Кроме того, вместо слова While можно писать противоположное слово Until. В отличие от While, прикотором цикл будет продолжаться когда условие после While истинно, вариант с Until будет продолжаться, когда условие после Until - ложно. Until, как и While, может стоять как в начале, так и в конце цикла. Вот так, например, можно запрашивать пароль использую ключевое слово Until:
Dim password As String
Console.WriteLine("Введите пароль")
password = Console.ReadLine()
Do Until password = "qwerty"
Console.WriteLine("Неправильный пароль")
Console.WriteLine("Введите пароль")
password = Console.ReadLine()
Loop
Console.WriteLine("Правильный пароль")
Вообще говоря цикл Do...Loop со своими разновидностями выглядит более логичным. Что же до цикла While...Do While, то он эквивалентен варианту
Do While s>21 'Условие продолжения
'Некоторые операторы
Loop
цикла Do...Loop.
|