Оператор цикла Do – Loop
В VBA для организации циклов с неизвестным заранее числом повторений тела цикла используется и оператор цикла Do – Loop.
Существует четыре формы записи этого оператора. Их можно разбить на две группы: циклы с предусловием и циклы с постусловием.
I. Циклы с предусловием.
1. Do While Условие 2. Do Until Условие
Блок операторов Блок операторов
Loop Loop
II. Циклы с постусловием.
1. Do 2. Do
Блок операторов Блок операторов
Loop While Условие Loop Until Условие
Оператор Do While – Loop обеспечивает многократное выполнение блока операторов до тех пор, пока условие истинно, а оператор Do Until – Loop – пока условие ложно.
Операторы Do – Loop While и Do – Loop Until отличаются от первых двух операторов тем, что сначала выполняется блок операторов, а затем проверяется условие. Таким образом, в этих циклах блок операторов, составляющих тело цикла, выполнится по крайней мере один раз.
Приведем примеры использования цикла Do – Loop While.
Задача 1. Составить программу, позволяющую вводить с клавиатуры целые числа до тех пор, пока не будет введено число, кратное 6, и вычислить количество введенных чисел (вместе с последним).
|
|
Программный код
Option Explicit
Sub PR12()
Dim x As Integer, k As Integer
k = 0
Do
x = Val(Inputbox(“Введите число”))
k = k+1
Loop While x mod 6<>0
MsgBox ("количество=" & k)
End Sub
Если использовать оператор Do – Loop Until, то основная часть программы выглядит следующим образом:
k = 0
Do
x = Val(Inputbox(“Введите число”))
k = k+1
Loop Until x mod 6=0
MsgBox ("количество=" & k)
Задача 2. Составить программу, вычисляющую сумму членов последовательности –1, 3, 7, … до тех пор, пока она (сумма) не превысит заданное число Х.
Задачу можно решить, используя различные формы записи цикла Do – Loop.
Программный код
1.
Option Explicit
Sub PR13()
Dim x As Integer, sum As Integer, a As Integer
x = Val(Inputbox(“Введите число”))
sum = 0
a = -1
Do
sum = sum + a
a = a + 4
Loop While sum<=x ‘ или Loop Until sum>x
MsgBox ("Сумма равна" & sum)
End Sub
2.
…
x = Val(Inputbox(“Введите число”))
sum = 0
a = -1
Do While sum<=x ‘ или Loop Until sum>x
sum = sum + a
a = a + 4
Loop
MsgBox ("Сумма равна" & sum)
Задача 3. Вычислить произведение и сумму цифр произвольного числа.
Option Explicit
Sub PR14()
Dim x As Integer, sum As Integer, pr As Long, c As Integer
x = Val(Inputbox(“Введите число”))
sum = 0
pr = 1
While x<>0
c = x mod 10 ‘ вычисляем последнюю цифру в числе
sum = sum + c ‘ вычисляем сумму цифр
pr = pr * c ‘ вычисляем произведение цифр
x = x \ 10 ‘ отбрасываем последнюю цифру числа
Wend
MsgBox ("Сумма = " & sum & ", произведение = " & pr)
End Sub