Студопедия

КАТЕГОРИИ:


Архитектура-(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

 

<== предыдущая лекция | следующая лекция ==>
Пример 3. Задана последовательность хiвещественных чисел | End Function
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 567; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.