Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР3.doc
Скачиваний:
5
Добавлен:
31.08.2019
Размер:
367.62 Кб
Скачать

2. Циклы с предусловием и постусловием

Циклы данного вида используются, когда заранее неизвестно, сколько раз будет выполняться тело цикла. Циклы с предусловием (Do While…Loop, While…Wend, Do Until…Loop) представлены в таблице 3.1, а операторы циклов с постусловием (Do…Loop While, Do…Loop Until) – в таблице 3.2.

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

 

Таблица 3.1 – Циклы с предусловием

Синтаксис

Порядок выполнения

Изображение в блок-схемах

Do While <условие>

<тело цикла>

[Exit Do]

Loop

<Тело цикла> будет выполняться в том случае, когда <условие> имеет значение истина (TRUE) (цикл продолжается при истинном значении <условия>). Если <условие> ложно (FALSE), то выполняются операторы, стоящие за циклом. В первом случае есть возможность досрочного выхода из цикла (это реализовано через Exit Do)

While <условие>

<тело цикла>

Wend

 

Do Until <условие> <тело цикла><Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do)  

Таблица 3.2 – Операторы циклов с постусловием

Синтаксис

Порядок выполнения

Изображение в блок-схемах

Do

<тело цикла>

[Exit Do]

Loop While <условие>

<Тело цикла> будет выполняться в том случае, когда <условие> имеет значение истина (цикл продолжается при истинном значении <условия>). Если <условие> ложно, то выполняются операторы, стоящие за циклом. Предоставлена возможность досрочного выхода из цикла (это реализовано через Exit Do)

Do

<тело цикла>

[Exit Do]

Loop Until <условие>

<Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do) 

Рассмотрим пример, который реализуется с помощью различных операторов цикла.

Пример 3.4. Вычислить значение функции при y = 1.32, на отрезке 1.5 £ x £ 3.5 с шагом Dx = 0,1. Исходные данные для расчетного интервала и значение параметра y задавать на листе MS Excel. Расчетные значения также выводить на лист Excel.

Для решения данной задачи вычисления значения функции на отрезке написать программу с использованием операторов цикла с предусловием, постусловием, а также оператора For.

  •            Реализация с помощью оператора for:

Public Sub Primer_3_3_1()

Dim dx As Single

Dim y As Single

Dim f As Single

Dim begin_x As Single, end_x As Single

Dim i As Integer

i = 3 'номер строки, с которой начать вывод данных

'ввод исходных данных

begin_x = Worksheets(2).Cells(2, 5)

end_x = Worksheets(2).Cells(2, 7)

dx = Worksheets(2).Cells(2, 9)

y = Worksheets(2).Cells(3, 5)

'проверка корректности исходных данных

If y = 0 Then

MsgBox "Некорректное значение параметра y",,"Ошибка!"

Exit Sub

End If

'Организация вычисления значений функции на отрезке

For x = begin_x To end_x Step dx

f = Cos(x / (2 * y)) ^ 3 'вычисление значения функции

'вывод на лист Excel

Worksheets(2).Cells(1 + i, 1) = x

Worksheets(2).Cells(1 + i, 2) = f

i = i + 1 'переход на следующую строку

Next x

End Sub

  •            Рассмотрим фрагменты программного кода для организации вычисления значения функции на отрезке с помощью операторов циклов с предусловием Do While…Loop (1), While…Wend (2), Do Until…Loop (3)

'1. Организация вычисления значений функции на отрезке с помощью оператора Do While…Loop

x = begin_x

Do While x <= end_x

f = Cos(x / (2 * y))^3 'вычисление значения функции

'вывод на лист Excel

Worksheets(2).Cells(1 + i, 4) = x

Worksheets(2).Cells(1 + i, 5) = f

x = x + dx 'переход к следующему значению на отрезке

i = i + 1 'переход на следующую строку

Loop

'2. Организация вычисления значений функции на отрезке с помощью оператора While…Wend

x = begin_x

While x <= end_x

f = Cos(x / (2 * y))^3 'вычисление значения функции

'вывод на лист Excel

Worksheets(2).Cells(1 + i, 4) = x

Worksheets(2).Cells(1 + i, 5) = f

x = x + dx 'переход к следующему значению на отрезке

i = i + 1 'переход на следующую строку

Wend

'3. Организация вычисления значений функции на отрезке с помощью оператора Do Until…Loop

x = begin_x

Do Until x > end_x

f = Cos(x / (2 * y))^3 'вычисление значения функции

'вывод на лист Excel

Worksheets(2).Cells(1 + i, 7) = x

Worksheets(2).Cells(1 + i, 8) = f

x = x + dx 'переход к следующему значению на отрезке

i = i + 1 'переход на следующую строку

Loop

  •            Рассмотрим фрагменты программного кода для организации вычисления значения функции на отрезке с помощью операторов циклов с предусловием DoLoop While (1), DoLoop Until (2):

'1. Организация вычисления значений функции на отрезке с помощью оператора DoLoop While

x = begin_x

Do

f = Cos(x / (2 * y))^3 'вычисление значения функции

'вывод на лист Excel

Worksheets(2).Cells(1 + i, 7) = x

Worksheets(2).Cells(1 + i, 8) = f

x = x + dx 'переход к следующему значению на отрезке

i = i + 1 'переход на следующую строку

Loop While x <= end_x

'2. Организация вычисления значений функции на отрезке с помощью оператора DoLoop Until

x = begin_x

Do

f = Cos(x / (2 * y))^3 'вычисление значения функции

'вывод на лист Excel

Worksheets(2).Cells(1 + i, 7) = x

Worksheets(2).Cells(1 + i, 8) = f

x = x + dx 'переход к следующему значению на отрезке

i = i + 1 'переход на следующую строку

Loop Until x > end_x

Таким образом, в зависимости от того какой оператор цикла используется, указывается свое условие выполнения цикла.