
- •Технология программирования вложенных циклов
- •Правила работы с вложенными циклами:
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Описание многомерных массивов
- •Обозначение элементов многомерного массива
- •Создание двумерного массива
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Параллельно вложенные циклы
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Программирование задачи с графическим интерфейсом
- •Сортировка элементов массивов
- •Ранжирование числовых массивов
- •Ранжирование по убыванию основным методом
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Ранжирование по возрастанию методом «пузырька»
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Ранжирование символьных массивов
- •Ранжирование символов в строке по алфавиту
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Ранжирование массива символьных строк по алфавиту
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Заключение
- •Вопросы для контроля
-
Технология программирования вложенных циклов
В предыдущих главах рассмотрены варианты простых (одинарных) циклов и смешанных вычислительных процессов, объединяющих один внешний цикл с внутренним линейным и/или ветвящимся процессами. Это позволяет перейти к рассмотрению более сложных структур с вложенными циклами.
Вычисления с вложенными циклами – процесс, в котором хотя бы один цикл расположен внутри другого.
Вложенный (внутренний) – цикл, расположенный внутри другого.
Внешний (наружный) – цикл, внутри которого располагаются другие циклы.
При многократном вложении циклов некоторые из них могут быть внутренними и внешними одновременно.
Разновидности вложенных циклов определяет форма их расположения (рис. 9.1).
Рис. 9.1. Разновидности вложенных циклов
Последовательно размещенные (вложенные) циклы – структура, в которой каждый следующий цикл полностью расположен внутри предыдущего (другого);
Параллельно размещенные (вложенные) циклы – структура, во внешнем цикле которой два или более цикла расположены один под другим.
Графические изображения различных вариантов вложений (сплошные линии – тело цикла, штриховые – передача управления) представлены следующими структурами:
-
Последовательно вложенные циклы
Минимальное количество последовательно вложенных циклов – один. Максимальное – не ограничено.
-
Последовательно вложенные циклы с общим основанием
Разновидностью последовательно вложенных циклов являются циклы с общим основанием.
Этот вид вложенных циклов является единственным, где осуществляется соединение циклов в какой-либо точке (по основанию тела цикла).
Ц
-
Параллельно вложенные циклы
Минимальное количество параллельно вложенных циклов – два. Максимальное – не ограничено.
-
Смешанный (универсальный) вариант.
Ц
Цикл 4 – последовательно вложен в цикл 3 и параллельно в цикл 2.
Максимальное количество вложений – не ограничено.
Правила работы с вложенными циклами:
-
пересечение циклов запрещается;
-
каждый из них составляется и выполняется как обычный цикл;
-
передача управления из вложенного цикла в наружный разрешается, так как для вложенного цикла такая передача является искусственным выходом из цикла, а для внешнего – обычным ветвлением внутри него;
-
передача управления из внешнего цикла во внутренний разрешается только естественным путём – через начало (заголовок) цикла. Другие варианты запрещаются ввиду нарушения выполнения внутреннего цикла;
-
из вложенного цикла разрешается передача управления вне внешнего цикла с условием возврата в точку выхода. Такая передача используется при работе с подпрограммами.
Предмашинная подготовка вычислительных процессов с вложенными циклами детализировано рассмотрена ниже на конкретных примерах.
-
Последовательно вложенные циклы
Типовое использование последовательно вложенных циклов – обработка многомерных массивов (задач, в которых они используются) и преобразования одномерных массивов (сортировка элементов).
Варианты использования (функционального назначения) вложенных циклов представлены на рис. 9.2.
Рис. 9.2. Функциональное назначение вложенных циклов
-
Обработка элементов многомерных массивов
Рассмотрим обработку многомерных массивов на конкретной задаче (9.1) о расчете элементов двумерного массива.
-
Постановка задачи
Имеется двумерный массив X размером
(mn).
Рассчитать аналогичный ему массив
Y(m
n),
каждый элемент которого равен частному
от деления соответствующего элемента
массива X на два.
-
Формирование математической модели
Исходные данные
m – размер,
определяющий число строк матрицы X
();
n – размер,
определяющий число столбцов матрицы X
().
Модель матрицы X(mn):
x11 |
x12 |
... |
x1j |
... |
x1n |
x21 |
x22 |
... |
x2j |
... |
x2n |
... |
... |
... |
... |
... |
... |
xi1 |
xi2 |
... |
xij |
... |
xin |
... |
... |
... |
... |
... |
... |
xm1 |
xm2 |
... |
xmj |
... |
xmn |
1i
m
– диапазон изменения номера i
строки;
1j
n
– диапазон изменения номера j
столбца.
Расчётные зависимости
Вычисление текущего элемента искомой матрицы Y:
,
для всех 1
i
m
и 1
j
n
М
1
1i
m
j
n
n):
y11 |
y12 |
... |
y1j |
... |
y1n |
y21 |
y22 |
... |
y2j |
... |
y2n |
... |
... |
... |
... |
... |
... |
yi1 |
yi2 |
... |
yij |
... |
yin |
... |
... |
... |
... |
... |
... |
ym1 |
ym2 |
... |
ymj |
... |
ymn |