Многомерные массивы

Массив в Фортране может иметь до семи измерений. Число измерений называется размерностью или рангом массива; количество элементов в измерении называется протяженностью массива в данном измерении.

При выделении памяти для многомерных массивов в атрибуте dimension описания массива следует указать границы индексов по каждому измерению массива:

тип, dimension(список границ):: список имен массивов

Длина списка границ массива равна рангу (размерности) массива. Границы массива – константные целые выражения, задающие нижнюю и верхнюю границы индекса по соответствующему измерению. Размер массива равен произведению его протяженностей по всем измерениям.

Из описания массива array

integer, dimension(0:6,0:12) :: array

следует, что это целочисленный массив, ранг которого равен 2. Протяженности двух измерений массива равны соответственно 7 и 13, размер массива равен 7*13 = 91.

Каждый элемент массива может иметь до семи индексов, характеризующих его положение в массиве, например:

A(3, 4, I, J), B(1, 2, 3, 4, 5, 6, 7), C(I+1).

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

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

Массив, описанный оператором

integer, dimension(1:3,1:4) :: A

можно изобразить в виде матрицы

Подчеркнутый элемент A(2,3) находится в матрице на пересечении строки с номером i=2 и столбца с номером j=3.

Секции массива

Фортран допускает обращение к частям массива и операции с ними. Если в качестве индекса массива указать диапазон значений в рамках границ массива, то получится объект, называемый секцией массива. Секции массивов представляют собой подмножества элементов массива.

Для выбора подмножества элементов в измерении используется триплет вида:

index1:index2:index3

Здесь index1 и index2 – нижняя и верхняя границы диапазона индексов в выбранном измерении, index3 – шаг изменения индексов. Значения index1 и index2 не могут выходить за пределы границ массива в соответствующем измерении.

Все индексы в триплете – необязательные выражения целого типа. Если опущено выражение для верхней или нижней границы, то эта граница секции совпадает с соответствующей границей массива в данном измерении; опущенный шаг предполагается равным единице.

Секция массива, в свою очередь, представляет собой массив.

Примеры секций массива рассмотрим для массивов

integer, dimension(1:30)::A

real, dimension(0:5, 0:9)::B

1) A(i:k:1)– одномерный массив, состоящий из элементов массива A с i-го по k-ый включительно

2) A(:k)– одномерный массив, состоящий из элементов массива с первого по k-ый включительно

3) A(:9:2)– одномерный массив, состоящий из элементов массива A с нечетными индексами с первого по 9-ый включительно (A1, A3, A5, A7, A9)

4) A(i:i)– одномерный массив, состоящий из одного элемента, равного A(i)

5) B(2, 1:n-1:1)- одномерный массив, состоящий из элементов второй строки массива В с первого по (n-1)-ый включительно.

6) B(2, :) – одномерный массив, состоящий из всех элементов второй строки массива В.

7) B(:2, :4) – двумерный массив, левая верхняя четверть массива B.

8) Нижняя граница может превосходить верхнюю, а шаг при этом должен быть отрицательным – это позволяет выбирать элементы массива в обратном порядке, например, секция

B(I, 9:0:-2)

состоит из элементов B(I, 9), B(I, 7), B(I, 5), B(I, 3), B(I, 1)








Дата добавления: 2017-09-19; просмотров: 980;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.