Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
45
Добавлен:
14.04.2015
Размер:
543.74 Кб
Скачать

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

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

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

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)

Размещение массивов в памяти

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

real, dimension(0:6):: A

хранятся в памяти в порядке возрастания их индексов:

a(0), a(1), a(2), a(3), a(4), a(5), a(6)

В Фортране естественным порядком размещения элементов массива является такой, когда крайний левый индекс изменяется быстрее всего, второй слева – медленнее и так далее. Медленнее всего изменяется крайний правый индекс. Каждый индекс последовательно принимает все значения из диапазона индексов.

Например, элементы трехмерного массива

real, dimension(1:2, 1:2, 1:2):: A

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

a(1,1,1), a(2,1,1), a(1,2,1), a(2,2,1), a(1,1,2), a(2,1,2), a(1,2,2), a(2,2,2),

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

Например, элементы матрицы , объявленной оператором

real, dimension(1:2, 1:3):: A

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

a(1,1), a(2,1), a(1,2), a(2,2),a(1,3), a(2,3)

Соседние файлы в папке Фортран_Лекции