Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава8.doc
Скачиваний:
2
Добавлен:
16.04.2019
Размер:
253.95 Кб
Скачать

Глава 8. Организация сложных циклов

8.1. Структура сложного цикла

В процессе решения многих важных практических задач (например, задач оптимизации, статистики и т.д.) возникает необходимость обработки двумерных массивов данных (матриц), которые представляют собой прямоугольные таблицы, состоящие из m строк и n столбцов, содержащие mn чисел:

a11 a12 ... a1n

a21 a22 ... a2n

A = . . . . . . . . . . . .

am1 am2 ... amn

Числа aij, составляющие матрицу A, называются ее элементами. Индексы i и j элемента aij указывают соответственно номера строки и столбца, на пересечении которых расположен элемент.

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

Для обращения к элементам одномерного массива используют, как правило, изменяющийся по заданному закону параметр цикла, который в программе служит индексом элемента массива (см. гл.7). Однако, обращение к элементам матрицы с помощью параметра одного цикла в большинстве случаев невозможно, так как в процессе перебора приходится менять не один, а каждый из двух индексов, которыми снабжены элементы этой матрицы.

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

Алгоритм сложного цикла следующий:

  1. параметру i внешнего цикла присваивается его начальное значение m1, после чего следует вход во внутренний цикл;

2) вычисления, составляющие тело внутреннего цикла, повторяются заданное число раз с параметром j, меняющимся от начального значения n1 до конечного n2 с шагом n3;

3) далее происходит возврат во внешний цикл, его параметр i изменяется на шаг m3, после чего полученное текущее значение параметра ( i ) сравнивается с его конечным значением m2; если i m2, выполняется переход к пункту 2), в противном случае осуществляется выход из внешнего цикла.

Рис.8.1. Структура сложного цикла: а) детализированный вариант; б) упрощенный вариант

8.2. Описание двумерных массивов

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

Пример 8.1

var

bas : array [0..5,1..10] of real ;

В разделе описания переменных объявлен двумерный массив вещественного типа bas, состоящий из 6 строк и 10 столбцов; длина массива 6*10=60 элементов.

П ример 8.2

type

c = array [1..3,1..10] of integer ;

var

maxim : c;

Здесь массив maxim описан в двух разделах – типов и переменных, и состоит из 3 строк и 10 столбцов; базовый тип элементов – целый, длина массива – 30 элементов.

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

Пример 8.3

type

str = array [1..5] of real;

var

matr : array [1..4] of str;

Описан двумерный массив matr, состоящий из 4-х строк, каждая из которых представляет собой одномерный массив (вектор) str, содержащий по 5 элементов.

В приведенном примере к переменной matr можно обращаться и как к элементу одномерного массива matr[i] и как к элементу двумерного matr[i,j].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]