
- •Лабораторная работа № 3
- •1. Оператор цикла с параметром (For…Next) 1
- •2. Циклы с предусловием и постусловием 2
- •3. Понятие массива и способы его объявления 5
- •4. Размещение элемента управления на рабочем листе ms Excel 9
- •1. Оператор цикла с параметром (For…Next)
- •2. Циклы с предусловием и постусловием
- •3. Понятие массива и способы его объявления
- •1) Одномерный статический массив
- •2) Двумерный статический массив
- •3) Динамический массив:
- •Пример 4. Сортировка элементов массива (методом выбора)
- •3.2 Типовые алгоритмы обработки двумерного массива Пример 5. Определить сумму и количество положительных элементов в массиве целых чисел.
- •Схемы для обращения к элементам на главной (побочной) диагоналях
- •3.3 Типовые алгоритмы обработки динамического массива
- •4. Размещение элемента управления на рабочем листе ms Excel
- •Порядок выполнения работы:
- •Задание 1.
- •Задание 2.
- •Контрольные вопросы:
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
Рассмотрим фрагменты программного кода для организации вычисления значения функции на отрезке с помощью операторов циклов с предусловием Do…Loop While (1), Do…Loop Until (2):
'1. Организация вычисления значений функции на отрезке с помощью оператора Do…Loop 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. Организация вычисления значений функции на отрезке с помощью оператора Do…Loop 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
Таким образом, в зависимости от того какой оператор цикла используется, указывается свое условие выполнения цикла.