Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сидорова-004.С34.doc
Скачиваний:
91
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

8.2.3. Вложенные циклы

Часто в инженерных задачах возникает необходимость рассчитать значения функции при различных значениях входящих в нее констант, т. е. получить семейство характеристик. Для этой цели используют вложенные циклы.

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

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

Пример организации вложенных циклов:

For x = …

[Операторы…]

Тело внутреннего цикла

Тело внешнего цикла

For y = …

[Операторы…]

Next y

[Операторы…]

Next x

Пример ЦВ1. Составить таблицу умножения чисел от 1 до 9.

Схема алгоритма решения задачи с использованием вложенного цикла (в краткой форме) приведена на рис. 24. Программа для составления таблицы умножения имеет вид:

Sub Пример_ЦВ1() 'Таблица умножения

Dim i As Byte, j As Byte 'Объявление переменных

For i = 1 To 9 'Заголовок внешнего цикла

For j = 1 To 9 'Заголовок внутреннего цикла

Debug.Print i * j ; 'Символ «;» – для

'подавления перехода на новую строку

Next j 'Конец внутреннего цикла

Debug.Print 'Переход на новую строку

Next i 'Конец внешнего цикла

End Sub

Пример ЦВ2. Вычислить: ,

где a = 7÷9, ∆a = 0,5; x = 10÷20, ∆x = 2,

и организовать вывод результатов расчета на лист Excel в три столбца по образцу рис. 25.

Графическая схема алгоритма решения задачи с изображением цикла в полной форме приведена на рис. 26, а в краткой – на рис. 27.

Программа расчета значений функции y с последовательным выводом результатов в три столбца на лист Excel имеет вид:

Рис. 25. Фрагмент листа Excel с выводом результатов в три столбца

Sub Пример_ЦВ2_стб() 'Семейство характеристик (вывод в три столбца)

Worksheets("Лист1").Select 'Выбор рабочего листа "Лист1"

Range("A:IV").Clear 'Очистка рабочего листа Excel

Dim a As Single, x As Byte, y As Single, nstr As Byte

nstr = 1 'Установка начальной строки вывода

Cells(nstr, 1) = "a" : Cells(nstr, 2) = "x" : Cells(nstr, 3) = "y" 'Заголовки столбцов

For a = 7 To 9 Step 0.5 'Заголовок внешнего цикла (по a)

For x = 10 To 20 Step 2 'Заголовок внутреннего цикла (по x)

y = (Exp(a) + Sqr(x)) / (2 * a) 'Расчет значения y

nstr = nstr + 1 'Наращивание номера строки

Cells(nstr, 1) = a : Cells(nstr, 2) = x 'Вывод значений a и x

Cells(nstr, 3) = y 'Вывод результата y

Next x 'Конец внутреннего цикла

nstr = nstr + 1 'Для пропуска строки перед очередным значением a

Next a 'Конец внешнего цикла

End Sub

Рассмотрим тот же пример ЦВ2, но с выводом результатов на лист Excel в виде таблицы значений по образцу рис. 28.

Рис. 28. Фрагмент листа Excel с выводом результатов в виде таблицы

Программа в этом случае имеет вид:

Sub Пример_ЦВ2_табл() 'Семейство характеристик (вывод в таблицу)

Worksheets("Лист1").Select 'Выбор рабочего листа "Лист1"

Range("A:IV").Clear 'Очистка рабочего листа

Dim a As Single, x As Byte, y As Single

Dim nstr As Byte 'Номер строки для вывода

Dim nstb As Byte 'Номер столбца для вывода

Cells(1, 1) = "x"

nstr = 1 'Установка начальной строки вывода

For x = 10 To 20 Step 2 'Цикл вывода столбца значений x

nstr = nstr + 1

Cells(nstr, 1) = x

Next x

nstb = 1 'Установка начального столбца вывода

For a = 7 To 9 Step 0.5 'Заголовок внешнего цикла (по a)

nstb = nstb + 1 'Наращивание номера столбца

nstr = 1 'Номер первой строки в столбце вывода

Cells(nstr, nstb) = "a=" & a 'Вывод заголовка столбца

For x = 10 To 20 Step 2 'Заголовок внутреннего цикла (по x)

y = (Exp(a) + Sqr(x)) / (2 * a) 'Расчет значения y

nstr = nstr + 1 'Наращивание номера строки

Cells(nstr, nstb) = y 'Вывод результата y

Next x 'Конец внутреннего цикла

Next a 'Конец внешнего цикла

End Sub

Пример ЦВ3. Вычислить: ,

где a = {2,5; 3,45; 1,6}, x = 10÷20, ∆x = 2.

Этот пример повторяет пример ЦВ2 за исключением того, что переменная a изменяется не с постоянным шагом, а принимает заданные значения. Если параметр цикла изменяется не с постоянным шагом, а принимает произвольные значения, то используется цикл со счетчиком (см. п. 8.2.2).

ГСА решения данной задачи приведена на рис. 29. В отличие от примера ЦВ2 (см. рис. 27) внешний цикл здесь организован по переменной k, являющейся счетчиком количества значений переменной a. Текст программы имеет вид (комментарием (*) отмечены строки, отличающиеся от Примера_ЦВ2_стб):

Sub Пример_ЦB3_стб()

'Семейство характеристик и

'цикл со счетчиком

Worksheets("Лист1").Select

Range("A:IV").Clear

Dim a As Single, x As Byte

Dim y As Single, nstr As Byte

Dim k As Byte '(*)

nstr = 1

Cells(nstr, 1) = "a" : Cells(nstr, 2) = "x"

Cells(nstr, 3) = "y"

For k = 1 To 3 '(*)

a = Val(InputBox("Введите a")) '(*)

For x = 10 To 20 Step 2

y = (Exp(a) + Sqr(x)) / (2 * a)

nstr = nstr + 1

Cells(nstr, 1) = a : Cells(nstr, 2) = x

Cells(nstr, 3) = y

Next x

nstr = nstr + 1

Next k '(*)

End Sub