Отличие циклов с предусловием от циклов с постусловием заключается в том, операторы цикла с постусловием всегда выполняются хотя бы один раз.

Пример 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 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 вещественных элементов.

Отличие циклов с предусловием от циклов с постусловием заключается в том, операторы цикла с постусловием всегда выполняются хотя бы один раз. - student2.ru

Текст программы приведен ниже

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

Вычислить Отличие циклов с предусловием от циклов с постусловием заключается в том, операторы цикла с постусловием всегда выполняются хотя бы один раз. - student2.ru . Вычисление суммы прекратить, когда при каком-то значении 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

Наши рекомендации