Читайте также: |
|
Оператор While … Wend
While условие
группа_операторов
Wend
Оператор цикла While … Wend работает не заданное количество раз, а пока выполняется условие. Например:
Function Summing()
Dim i As Integer
Dim Sum As Integer
Sum = 0
While i < 50
i = i + 1
Sum = Sum + i
Wend
MsgBox "Сумма чисел от 1 до 50 равна " & CStr(Sum)
End Function
В рассмотренной программе группа операторов внутри цикла выполняется до тех пор, пока переменная i не станет равной 50.
Оператор цикла Do
Может иметь одну из нескольких разновидностей:
Do While условие Do
группа _ операторов группа _ операторов
Loop Loop While условие
Do Until условие Do
группа_операторов группа_операторов
Loop Loop Until условие
Группа операторов внутри цикла выполняется (в случае While) до тех пор, пока условие истинно или (в случае Until) пока условие не станет истинным. В любом месте группы операторов может находиться оператор Exit Do, обеспечивающий выход из цикла Do…Loop и передающий управление оператору, следующему сразу за циклом. Операторы цикла, в которых проверка условий находится после выполняемых операторов, обязательно выполняются как минимум один раз.
Function DW()
Dim Sum As Single, x As Single
Dim i As Integer
i = 1
Sheets("Лист1").Cells(i, 1).Value = " Числа:"
Sheets("Лист1").Cells(i, 2).Value = " Сумма:"
Do
x = InputBox("Введите " & CStr(i) & " - ое число:")
Sum = Sum + x
If x > 5 Then Exit Do
Sheets("Лист1").Cells(i + 1, 1).Value = x
Sheets("Лист1").Cells(i + 1, 2).Value = Sum
i = i + 1
Loop While i < 20
MsgBox "Сумма " & CStr(i) & " введённых чисел равна: " & CStr(Sum)
End Function
В этом примере в диалоговые окна вводятся числа до тех пор, пока количество введённых чисел не достигнет 20 (выход из цикла по условию) или пока введённое число не окажется больше 5 (выход из цикла при помощи оператора Exit Do). Введённые числа суммируются, и результат выводится на экран в диалоговом окне.
В следующем примере создаётся массив с результатами бросания игральной кости. Игральная кость бросается до тех пор, пока не выпадет 6. Размерность массива после каждого броска корректируется с сохранением в нём ранее записанных результатов бросания кости, за счёт применения ключевого слова Preserve:
Sub Attempts()
Dim Result() As Integer ' объявляется динамический массив
Dim Attempt As Integer, Score As Integer
ReDim Result(0) ' начальный размер массива - одномерный, нулевой длины
Attempt = 0: Score = 0
Randomize
Do Until Score = 6 ' цикл выполняется до тех пор,
' пока переменная Score не станет равной 6
Attempt = Attempt + 1
Score = Int(6 * Rnd()) + 1
ReDim Preserve Result(Attempt) ' увеличиваем длину массива на
'еденицу, сохраняя предыдущие значения
Result(Attempt) = Score '
Sheets("Лист3").Cells(Attempt, 1).Value = Result(Attempt)
Loop
End Sub
Дата добавления: 2015-07-11; просмотров: 152 | Нарушение авторских прав