КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Отличие циклов с предусловием от циклов с постусловием заключается в том, операторы цикла с постусловием всегда выполняются хотя бы один раз
Do Do Loop Wend Loop Существует несколько типов Операторов повтора Пример 4 Вывести на экран окно сообщения со строкой нечетных чисел Public Sub Prog4() Dim addnum As String For a = 1 To 21 Step 2 addnum = addnum & a & " " Next a MsgBox "Это последовательность нечетных чисел:" & _ Chr(13) & addnum End Sub
В) Операторы повтора Инструкция For…Next применяется в тех случаях, когда известно число повторений. Если число повторений неизвестно, то применяются операторы повтора.
Операторы повтора с предусловием. Синтаксис: Do While <условное выражение> <операторы> [Exit Do] < операторы > While < условное выражение > <операторы> [Exit Do] < операторы > Работа: Вычисляется условное выражение. Если значение условного выражения равно TRUE (истина), то выполняется блок <операторы> и, достигнув слова Loop, опять управление передается в начало оператора повтора, чтобы опять проверить условное выражение. Если вычисленное значение условного выражения равно FALSE (ложь), то управление передается оператору, следующему за оператором повтора. При наличии инструкции Exit Do есть возможность досрочного выхода из цикла. На блок-схеме операторы отображаются следующим образом:
Еще одной формой записи оператора повтора с предусловием, является следующий оператор: Do Until <условие> <операторы> [Exit Do] < операторы > Работа: Вычисляется условное выражение. Если значение условного выражения равно FALSE (ложь), то выполняется блок <операторы> и, достигнув слова Loop, опять управление передается в начало оператора повтора, чтобы опять проверить условное выражение. Если вычисленное значение условного выражения равно TRUE (истина), то управление передается оператору, следующему за оператором повтора.
Операторы повтора с постусловием. Синтаксис: <операторы> [Exit Do] < операторы > Loop While <условное выражение> Работа: Блок операторов выполняется, если <условное выражение> имеет значение TRUE (истина). Оператор повтора прекращает свою работу, если <условное выражение> примет значение FALSE (ложь)
<операторы> [Exit Do] < операторы > Loop Until <условное выражение> Работа: Блок операторов выполняется, если <условное выражение> имеет значение FALSE (ложь). Оператор повтора прекращает свою работу, если <условное выражение> примет значение TRUE (истина).
Примечание: Пример 1: Вычислить значения Y=sin(x)+ex для всех значений хÎ[a,b]
· Программный код с использованием оператора Do While
Public Sub Операторы_повтора1()
Dim a As Double, b As Double, hx As Double Dim x As Double, y As Double Dim i As Integer
a = Worksheets(1).Range("b1") b = Worksheets(1).Range("b2") hx = Worksheets(1).Range("b3")
Worksheets(1).Range("a4") = "Результат" x = a: i = 5 Do While x <= b y = Sin(x) + Exp(x) Worksheets(1).Cells(i, 1) = "x[" & i & "]=" Worksheets(1).Cells(i, 2) = x Worksheets(1).Cells(i, 3) = "y[" & i & "]=" Worksheets(1).Cells(i, 4) = y i = i + 1 x = x + hx Loop
End Sub
· Программный код с использованием оператора While
Public Sub Операторы_повтора2()
Dim a As Double, b As Double, hx As Double Dim x As Double, y As Double Dim i As Integer
a = Worksheets(1).Range("b1") b = Worksheets(1).Range("b2") hx = Worksheets(1).Range("b3")
Worksheets(1).Range("a4") = "Результат" x = a: i = 5 While x <= b y = Sin(x) + Exp(x) Worksheets(1).Cells(i, 1) = "x[" & i & "]=" Worksheets(1).Cells(i, 2) = x Worksheets(1).Cells(i, 3) = "y[" & i & "]=" Worksheets(1).Cells(i, 4) = y i = i + 1 x = x + hx Wend
End Sub
· Программный код с использованием оператора Do While
Public Sub Операторы_повтора1()
Dim a As Double, b As Double, hx As Double Dim x As Double, y As Double Dim i As Integer
a = Worksheets(1).Range("b1") b = Worksheets(1).Range("b2") hx = Worksheets(1).Range("b3")
Worksheets(1).Range("a4") = "Результат" x = a: i = 5 Do While x <= b y = Sin(x) + Exp(x) Worksheets(1).Cells(i, 1) = "x[" & i & "]=" Worksheets(1).Cells(i, 2) = x Worksheets(1).Cells(i, 3) = "y[" & i & "]=" Worksheets(1).Cells(i, 4) = y i = i + 1 x = x + hx Loop
End Sub
· Программный код с использованием оператора Do Until
Public Sub Операторы_повтора3()
Dim a As Double, b As Double, hx As Double Dim x As Double, y As Double Dim i As Integer
a = Worksheets(1).Range("b1") b = Worksheets(1).Range("b2") hx = Worksheets(1).Range("b3")
Worksheets(1).Range("a4") = "Результат" x = a: i = 5 Do Until x >= b y = Sin(x) + Exp(x) Worksheets(1).Cells(i, 1) = "x[" & i & "]=" Worksheets(1).Cells(i, 2) = x Worksheets(1).Cells(i, 3) = "y[" & i & "]=" Worksheets(1).Cells(i, 4) = y i = i + 1 x = x + hx Loop
End Sub
· Программный код с использованием оператора Do … Loop While
Public Sub Операторы_повтора4()
Dim a As Double, b As Double, hx As Double Dim x As Double, y As Double Dim i As Integer
a = Worksheets(1).Range("b1") b = Worksheets(1).Range("b2") hx = Worksheets(1).Range("b3")
Worksheets(1).Range("a4") = "Результат" x = a: i = 5 Do y = Sin(x) + Exp(x) Worksheets(1).Cells(i, 1) = "x[" & i & "]=" Worksheets(1).Cells(i, 2) = x Worksheets(1).Cells(i, 3) = "y[" & i & "]=" Worksheets(1).Cells(i, 4) = y i = i + 1 x = x + hx Loop While x <= b
End Sub
Пример 2 Рассортировать по убыванию одномерный массив, содержащий 10 вещественных элементов. Текст программы приведен ниже
Public Sub Сортировка() Dim a(1 To 10) As Double Dim i As Integer, i1 As Integer Dim n As Integer, imax As Integer Dim j As Integer Dim max As Double Worksheets(1).Range("a1") = "Исходный массив" n = 10 j = 2 For i = 1 To n a(i) = Worksheets(1).Cells(j, 1) j = j + 1 Next i i1 = 1 Do While i1 <= n - 1 max = a(i1) imax = i1 For i = i1 To n If a(i) > max Then imax = i: max = a(i) End If Next i a(imax) = a(i1) a(i1) = max i1 = i1 + 1 Loop Worksheets(1).Range("c1") = "Рассортированный массив" j = 2 For i = 1 To n Worksheets(1).Cells(j, 3) = a(i) j = j + 1 Next i End Sub
Пример 3 Вычислить . Вычисление суммы прекратить, когда при каком-то значении i, общий член ряда станет <=e
Текст программного кода будет выглядеть следующим оьразом
Public Sub Summa_ряда() Const eps = 0.001 Dim sum As Double, ai As Double Dim n As Integer, i As Integer Dim j As Integer Dim f1 As Integer, f2 As Integer
sum = 0 i = 1 ai = 1 / 2 Do Until ai <= eps sum = sum + ai i = i + 1 f1 = 1 For j = 1 To i f1 = f1 * j Next j f2 = 1 For j = 1 To 2 * i f2 = f2 * j Next j ai = f1 / f2 Loop MsgBox "Значение i=" & i & Chr(10) & _ "Значение ai=" & ai & Chr(13) & _ "Значение Sum=" & sum End Sub
Дата добавления: 2014-01-05; Просмотров: 567; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |