
Циклы с неявно заданным числом повторений
Достаточно часто при программировании задач приходится выполнять расчеты, повторяющиеся многократно при различных значениях исходных данных. Выход из циклов, реализующих эти расчеты, происходит при достижении некоторого условия, но сказать заранее (до исполнения программы), на каком шаге это произойдет, заранее невозможно. Такие циклы называются циклами с неявно заданным числом повторений и реализуются с помощью операторов цикла Do...Loop.
Для оператора Do...Loop возможны 5 вариантов:
0-й вариант
Do … Loop
1-й вариант
Do … Loop While
2-й вариант
Do … Loop Until
3-й вариант
Do While....... Loop
4-й вариант
Do Until ........ Loop
Do можно перевести как “делай”,
Loop – “петля” или “возврат назад”,
While – “пока”,
Until – “до тех пор пока”.
Синтаксис оператора |
Комментарии |
Пример 1 Вывести через InputBox список фамилий на рабочий лист |
Блок-схема |
Do операторы операторы … Loop |
Строки операторов между Do и Loop являются телом цикла и выполняются бесконечное число раз. Цикл прерывается только с клавиатуры (нажатием клавиш Ctrl + Break). Толку в 0-м варианте Do, казалось бы, мало, однако и он иногда бывает полезен. |
Sub prog0() Dim Фамилия As String, вопрос As String,n n = 1 'счетчик строки Do Фамилия = InputBox("Введите фамилию") Sheets("Лист1").Cells(n, 1) = Фамилия n = n + 1 Loop End Sub |
|
Do … Loop While |
|
|
|
Do операторы операторы
Loop While ‘условие продолжения работы цикла |
Операторы, составляющие тело цикла, выполняются до тех пор, пока условие работы цикла истинно. В противном случае произойдет выход на очередной за Do … Loop While оператор. Конструкция соответствует циклу с постусловием. |
Sub prog1() Dim Фамилия As String, вопрос As String,n n = 1 'счетчик строки Do Фамилия = InputBox("Введите фамилию") Sheets("Лист1").Cells(n, 1) = Фамилия n = n + 1 Loop While Фамилия <> Enter 'пока условие истино End Sub |
Цикл-до
|
Do … Loop Until |
|
|
|
Do операторы операторы … Loop Until ‘условие завершения работы цикла |
Операторы, составляющие тело цикла, выполняются до тех пор, пока условие работы цикла ложно. В противном случае произойдет выход на очередной за Do … Loop Until оператор. Конструкция соответствует циклу с постусловием.
|
Sub prog2() Dim Фамилия As String, вопрос As String,n n = 1 'счетчик строки Do Фамилия = InputBox("Введите фамилию") Sheets("Лист1").Cells(n, 1) = Фамилия n = n + 1 Loop Until Фамилия = Enter 'пока условие ложно End Sub |
Do While … Loop |
|
|
|
Do While ‘условие продолжения работы цикла операторы операторы … Loop
|
Операторы, составляющие тело цикла, выполняются до тех пор, пока условие работы цикла истинно. В противном случае произойдет выход на очередной за Do While … Loop оператор. Конструкция соответствует циклу с предусловием. |
Sub prog3() Dim Фамилия As String, вопрос As String n = 1 'счетчик строки Фамилия = InputBox("Введите фамилию") Do While Фамилия <> Enter 'пока условие истино Фамилия = InputBox("Введите фамилию") Sheets("Лист1").Cells(n, 1) = Фамилия n = n + 1 Loop End Sub |
Цикл-пока
|
Do Until … Loop |
|
|
|
Do Until ‘условие завершения работы цикла операторы операторы … Loop
|
Операторы, составляющие тело цикла, выполняются до тех пор, пока условие работы цикла ложно. В противном случае произойдет выход на очередной за Do … Loop Until оператор. Конструкция соответствует циклу с предусловием. |
Sub prog3() Dim Фамилия As String, вопрос As String n = 1 'счетчик строки Фамилия = InputBox("Введите фамилию") Do Until Фамилия = Enter 'пока условие ложно Фамилия = InputBox("Введите фамилию") Sheets("Лист1").Cells(n, 1) = Фамилия n = n + 1 Loop End Sub |