Dim sum1 As Integer, sum2 As Integer, i As Integer
Randomize
‘решение задачи с помощью цикла с предусловием
i = 10
Do While i > 0
‘цикла выполняется, пока логическое условие истинно
sum1 = sum1 + Int((10 * Rnd) + 1)
i = i - 1
Loop
MsgBox "Сумма чисел=" & sum1
‘решение задачи с помощью цикла с постусловием
i = 10
Do
‘цикла выполненяется, пока логическое условие ложно
sum2 = sum2 + Int((10 * Rnd) + 1)
i = i - 1
Loop Until i = 0
MsgBox "Сумма чисел=" & sum2
End Sub
Особенностью интерпретатора VBA является то, что значения переменных числовых типов перед выполнением процедуры полагаются равными 0. Поэтому в программе отсутствуют команды присваивания вида: sum1 = 0 и sum2=0.
Пример 2. Найти максимальное из n введенных с клавиатуры чисел. Приведены два варианта решения задачи с использованием циклов разных видов.
Option Explicit
Sub Max_n_while()
Dim n As Byte, k As Single, i As Byte, Max As Single
n = Val(InputBox("Введите количество чисел"))
i = 1
Do While i <= n
k = Val(InputBox("Введите число", "Ввод чисел"))
If i = 1 Then Max = k
If k > Max Then Max = k
i = i + 1
Loop
MsgBox "Наибольшее из чисел " & Max
|
|
End Sub
Option Explicit
Sub Max_n_until()
Dim n As Byte, k As Single, i As Byte, Max As Single
n = Val(InputBox("Введите количество чисел"))
i = 1
Do Until i > n
k = Val(InputBox("Введите число", "Ввод чисел"))
If i = 1 Then Max = k
If k > Max Then Max = k
i = i + 1
Loop
MsgBox "Наибольшее из чисел " & Max
End Sub
Если из текста программ удалить строку: If i = 1 Then Max = k, то программа будет работать корректно только в случае, когда хотя бы одно вводимое число неотрицательно. Это объясняется тем, что начальное значение переменной Max считается равным 0.
Пример 3. Найти сумму n первых членов ряда 1, 1/2, 1/3,... 1/n,…
Option Explicit
Sub Summ_n()
Dim n As Byte, i As Byte, sum As Single
n = Val(InputBox("Введите количество членов ряда"))
For i =1 To n
sum = sum + 1 / i
Next
MsgBox "Сумма " & sum
End Sub
Пример 4. Найти сумму всех четных чисел в первой десятке:
Option Explicit
Sub Summa ()
Dim j As Integer, sum As Integer
For j = 2 To 10 Step 2
sum = sum + j
Next
MsgBox "Сумма равна " & sum
End Sub
Пример 5. Написать программу, осуществляющий вывод на экран введенного числа после его проверки. Ввод должен завершиться, когда вводимое значение окажется положительным числом.
Sub Пример()
Dim d As Integer
Do
d = Val(InputBox("Введите положительное чиcло", "Ввод числа"))
Loop Until d > 0 And (IsNumeric(d))
MsgBox "Введеное число " & d