4.2 Описание массива
Все массивы в программе должны быть объявлены, и размерность определяется в объявлении (описании). При описании массива необходимо указать его тип, размерность и диапазон изменения индексов. Размерность массива ⎯ это количество измерений. Бывают одномерные (векторы), двухмерные (матрицы или таблицы) и многомерные массивы. Обычно массивы описываю в операторах описания переменных INTEGER, REAL, CHARACTER, LOGICAL и т.д. Описание массива имеет вид:
name(d1,d2,...,dn),
где name - имя массива; d1,d2,...,dn – диапазон изменения индексов; n – размерность массива. При этом di имеют вид (n1:n2) (n1 – нижняя, а n2 – верхняя граница изменения индексов). Размерность массива n не может превышать семи. В случае, если n1 равно 1, т.е. нумерация элементов массива начинается с 1, применяется упрощенная форма задания di – (n), где n количество переменных в массиве.
Примеры.
1. Описание массива на рис. 4.1 можно представить следующим образом:
real x(9)
или
real, dimension (9):: х
Это означает, что создан два массив с именем Х, элементы которого вещественного типа и нумеруются от 1 до 9.
2. Real a(0:100),b(3,3),c(-2:4)
Описываются три действительных массива a, b и c.
В массиве a число элементов 101: a0, a1, ..., a100. Массив b является матрицей состоящей из 9 элементов b1,1, b2,1, b3,1, b1,2, b2,2, b3,2, b1,3, b2,3, b3,3. В памяти двухмерные массивы хранятся по столбцам. Массив c состоит из семи элементов c-2, c-1, c0, c1, c2, c3, c4.
Обращение к элементу массива производится по имени массива, за которым следует в круглых скобках индексы разделенными запятыми.
Например
X(1)=5
Следую различать индекс элемента массива и значение элемента массива. В примере индекс элемента 1, а значение элемента 5.
K=4
X(k)=7 ! четвертому элементу массива присвоено значение 7
Массив может иметь нулевой размер, если при объявлении первый индекс превосходит последний.
При описании размер массива рекомендуется задавать в виде констант, что в дальнейшем даст возможность использовать циклы для обработки элементов.
Integer, parameter :: n=9
Real, dimension (1:n):: x,y
4.3 Одномерные массивы
Примером одномерного массива может служить шеренга солдат, которые упорядочены по росту, кроме этого, у каждого солдата в шеренге есть свой порядковый номер в расчете. В математике примером одномерного массива может служить вектор Х={x1, x2,...,xn}. Здесь Х – имя массива, xі – компоненты (элементы) массива, і=1, 2, …, п – индексы или номера элементов массива. Значение индексного множества одномерного массива равно 1.
Конструктор массива служит для его инициализации, то есть присваиванию значений в момент описания:
INTEGER:: a(7)=(/1,2,3,4,5,6,7/)
Схематически целочисленный массив А выглядит следующим образом (рис.4.2):
Рис. 4.2. Расположение элементов массива А в памяти ЭВМ
Так как индексы массива следуют по порядку, то удобно использовать циклы при работе с ними, особенно цикл с параметром. Где параметр цикла можно использовать в качестве обозначения индекса элемента массива.
Ввод/вывод одномерного массива
Ввод/вывод элементов одномерного массива можно осуществлять следующими способами (см. табл. 4.1):
Таблица 4.1 Способы ввода/вывода элементов одномерного массива
Ввод/вывод массива (фрагмент программы) |
Описание способа ввода/вывода массива |
read *,a |
ввод всех элементов массива с клавиатуры (согласно его описанию) |
read*,(a(i),i=1,n) |
ввод элементов массива с клавиатуры с номерами 1…n с неявным использованием циклического списка |
do i=1,n read*,a(i) end do |
ввод элементов массива с клавиатуры с использованием циклической структуры |
do i=1,n а(i)=5*i**2-i end do |
ввод элементов массива с использованием циклической структуры по расчетной формуле |
a(1)=2 a(4)=6 a(2)=-3 |
ввод элементов массива с помощью оператора присваивания (наименее эффективны способ) |
print *,a |
вывод всех элементов массива (согласно его описанию) |
write(*,*),(a(i),i=1,n) |
вывод элементов массива с номерами 1…n с неявным использованием циклического списка |
write(*,’(100(f5.2))’), (a(i),i=1,n) |
форматный вывод элементов массива с номерами 1…n с неявным использованием циклического списка. n<=100 |
print*,a(i) end do |
вывод значений элементов массива с номерами 1…n |
print ’(a,i2,a,f5.2)’,’a(’,I,’)=’,a(i) end do |
форматный вывод элементов с указанием номера выводимого элемента и его значения |
Полный массив – имя переменной (или именованная константы), которая является массивом. Появление полного массива в выполняемом операторе специфицирует выполнение операции со всеми элементами массива.
Например:
Integer a(5)
A=7 ! всем элементам массива присваивается 7
A=a-2 ! всем элементам массива присваивается 5