Ниже приведены основные правила, помогающие выбрать наиболее подходящий из этих операторов:
1. если вам заранее известно число повторений тела цикла, лучше всего использовать оператор цикла For;
2. если вам заранее не известно число повторений тела цикла и если окончание цикла зависит от выполнения некоторого условия, лучше использовать конструкции While…Wend, Do While…Loop или Do Until…Loop
3. если необходимо, чтобы цикл всегда выполнялся хотя бы один раз, то используйте конструкции Do …Loop While или Do …Loop Until.
Примечания
· Оператор break используется в теле цикла для преждевременного завершения его выполнения, например, по некоторому условию.
· Оператор continue используется, для того чтобы прервать выполнение данного шага цикла и продолжить со следующего.
· Операторы Exit Do и Exit For служат соответственно для преждевременного выхода из циклов Do и For.
Все перечисленные в данном примечании операторы затрудняют чтение текста программы пользователем, поэтому их использование должно быть ограничено теми местами, где без этого не обойтись.
ДЕМОНСТРАЦИОННЫЕ ПРИМЕРЫ
Пример 1
'Имя файла: From 1 to 20.vbs
'Вывод на экран чисел от 1 до 20 с шагом 2
For x=1 To 20 Step 2
s=s&vbCrLf&x
MsgBox "Последовательность от 1 до 20 с шагом 2: " & s
Next
Пример 2
'Имя файла: For_Next.vbs
'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60
'C использованием конструкции Do ... Loop Until
option explicit
dim a, s
MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"
s=0
For a=1 to 60
s=s+1/a
Next
MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"
Пример 3
'Имя файла: For_Step.vbs
'Вычисление значений функции y=x*x+3 при х изменяющемся от -12 до 12 с 'шагом 2
MsgBox "Вычисление значений функции y=x*x+3"&vbCrLf&_
"при х изменяющемся от -12 до 12 с шагом 2",,_
"Вычисление значений функции"
For i=-12 to 12 Step 2
s1=i*i+3
s="при x="&i&" y="&s1&vbCrLf&s
Next
MsgBox s,,"Значения функции y=x*x+3"
Пример 4
'Имя файла: While_Wend.vbs
'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60
'C использованием конструкции While...Wend
option explicit
dim a, s
MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"
a=1
s=0
While a<=60
s=s+1/a
a=a+1
Wend
MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"
Пример 5
'Имя файла: Do While__Loop.vbs
'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60
'C использованием конструкции Do While...Loop
option explicit
dim a, s
MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"
a=1
s=0
Do While a<=60
s=s+1/a
a=a+1
Loop
MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"
Пример 6
'Имя файла: Do__Loop While.vbs
'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60
'C использованием конструкции Do Loop...While
option explicit
dim a, s
MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"
a=1
s=0
Do
s=s+1/a
a=a+1
Loop While a<=60
MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"
Пример 7
'Имя файла: Do Until__Loop.vbs
'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60
'C использованием конструкции Do Until...Loop
option explicit
dim a, s
MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"
a=1
s=0
Do Until a>60
s=s+1/a
a=a+1
Loop
MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"
Пример 8
'Имя файла: Do __Loop Until.vbs
'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60
'C использованием конструкции Do ... Loop Until
option explicit
dim a, s
MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"
a=1
s=0
Do
s=s+1/a
a=a+1
Loop Until a>60
MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"
Пример 9
'Имя файла: simple.vbs
'Пусть a и b - положительные вещественные числа и a>b.
'Данная программа находит такое минимальное натуральное x, что x*b>a
option explicit
dim a, b, x
a=CDbl(InputBox("Введите положительное вещественное значение a: ","Окно ввода:"))
If a>0 Then
b=CDbl(InputBox("Введите положительное вещественное значение b,
меньшее чем "&a,"Окно ввода:"))
If ((a>b)And(b>0)) Then
x=1
While x*b<=a
x=x+1
Wend
MsgBox "a="&a&" b="&b&vbCrLf&_
"Найдено минимальное натуральное"&_
"x="&x&", при котором x*b>a",,"Результат:"
Else
MsgBox "Вы ввели неправильное значение ",vbCritical,"Ошибка:"
End If
Else
MsgBox "Вы ввели неправильное значение ",vbCritical,"Ошибка:"
End If
Пример 10
'Имя файла: summa.vbs
'Вычислить сумму s=1+1/2+1/3+1/4+... , которая состоит из n слагаемых
'C использованием конструкции Do While...Loop
option explicit
dim a, s, w, n
n=CInt(InputBox ("Введите число слагаемых: ",_
"Вычисление суммы s=1+1/2+1/3+... "))
a=2
w=1
s=1
Do While a<=n
s=s+1/a
w=w& "+1/" &a
a=a+1
Loop If n=1 Then
MsgBox "s=1",,"Результат:"
ElseIf n=0 Then
MsgBox "s=0",,"Результат:"
ElseIf n<0 Then
MsgBox "Вы ввели неправильное значение!",vbCritical,"Ошибка ввода:"
Else
MsgBox "s="&w&"="&s,,"Результат:"
End If
Пример 11
'Имя файла: Palindrom.vbs
'Программа подсчитывает, сколько палиндромических чисел лежат в 'промежутке от 100 до 1000
'(число M называется палиндромическим числом, если оно
'равно своему обращённому).
'Выведите все эти числа.
option explicit
dim x, y, z, d, n, m, s
MsgBox "Сколько палиндромических чисел лежат в промежутке от 100 до 1000",,"Задача:"
For x=1 to 9
For y=0 to 9
For z=0 to 9
n=100*x+10*y+z
m=100*z+10*y+x
If n=m Then
d=d+1
s=s&" "&n
End If
Next
Next
Next
MsgBox "В промежутке от 100 до 1000 лежит "&d&" палиндромов: "&vbCrLf&s
Пример 12
'Имя файла: Otrezok.vbs
'Нахождение всех простых чисел на заданном отрезке
option explicit
dim x1, x2, k, s, i, j
x2=CLng(InputBox("Введите верхню границу отрезка: ",_
"Окно ввода: ","10"))
x1=CLng(InputBox("Введите нижню границу трезка: ","Окно ввода: ","5"))
s="Все простые числа из отрезка ["&x1&", "&x2&"] :"&vbCrLf
For i=x1 to x2
k=0
For j=2 to Fix(Sqr(i))
If i mod j=0 Then
k=k+1
End If
Next
If k=0 Then
s=s&" "&i
End if
Next
MsgBox s,,"Результат: "
Пример 13
'Имя файла: Mnoziteli.vbs
'Программа нахождения всех простых множителей целого положительного 'числа
'Программа учитывает множество условий неправильного ввода
IF boolic THEN 'если мы ввели число, то...
x=CDbl(x)
x2=CLng(x) 'CLng округляет число до целого
If CDbl(x2)-x<>0 Then ' если число не целое изменим флаг
boolic=false
End if
If boolic and (x>1) Then 'если мы ввели мы ввели
'число целого типа, большее 1
m=2
i=0
s="Простые множители числа "&x&":"&vbCrLf
While m<=x 'ищем простые множители числа и записываем их в строку s
If x Mod m=0 Then
s=s&" "&m
x=x/m
i=i+1
Else m=m+1
End If
Wend
If i=1 Then
MsgBox "Число "&x&" нельзя разложить на простые"&_
"множители, так как оно само является простым числом.",,"Результат:"
Else
Msgbox s,,"Результат:"
End If
ElseIf boolic and (x=1) Then ' если введённое число равно 1, то...
MsgBox "Число 1 нельзя разложить на простые множители,"&_
" так как оно само является простым числом.",,"Результат:"
Else
MsgBox "Вы ввели неправильное значение x",vbCritical,"Ошибка"
End If
ELSE ' если введённое значение не числовое...
MsgBox "Вы ввели неправильное значение x",vbCritical,"Ошибка"