logo
VBA-методПособие

4.11 Цикл Do…While

 

Общий вид в алгоритме этого оператора следующий:

 

 

 

 

 

 

 

 

 

 

 

 

Нет Да

 

 

 

 

 

 

Синтаксис оператора следующий:

 

Do While <логическое выражение>

P1

P2

.

.

Pn

Loop

 

где Do(выполнить), While(пока), Loop(петля) - зарезервированные слова, P1, P2, Pn - операторы

 

Если логическое выражение после служебного слова While имеет значение True, то выполняются операторы P1, P2, PN , после чего проверка логического выражения повторяется. Если логическое выражение имеет значение False, то происходит выход из цикла. Если условие в заголовке цикла не является истинным с самого начала, цикл Do не выполняется ни разу.

Другая возможная запись цикла:

Do While Until <логическое выражение>

P1

P2

.

.

Pn

Loop

 

Смысл связки Do While Until <логическое выражение> - до тех пор, пока логическое выражение истинно выполнять операторы P1, P2, Pn.

 

Например, следующий цикл Do обрабатывает данные до тех пор, пока не будет введено слово “Обед”:

 

Dim i As Integer

Dim name As String

Do While name<>"Обед"

name = InputBox("Введите Ваше имя или слово Обед для выхода")

If name <> "Обед" Then

MsgBox name

End If

Loop

 

 

Вернёмся к задаче, которая была разобрана ранее: Найти сумму целых чисел от 1 до 50. В цикле с оператором For ответом было число 1275. Что изменится в программе, если применить оператор Do While? Прежде всего, надо позаботиться о том, чтобы какая-нибудь переменная менялась в цикле от 1 до 50. Ведь такой величины как параметр цикла нет в конструкции Do While - Loop. В нашем примере это будет переменная K. Задав в качестве условия выхода из цикла k <> 50, и применяя в цикле, оператор sum = sum + k мы просуммируем все 50 слагаемых и должны получить в ответе 1275.

1. В редакторе Visual Basic создайте процедуру и назовите её Сумма

2. Введите код процедуры, как на рис. 40

Рис. 40 Код процедуры Сумма целых чисел

 

3. Убедитесь, что ответ равен 1275

Рис. 41 Окно с ответом