
- •Lesson 4 Массивы
- •Одномерные массивы Описание одномерных массивов
- •Ввод и вывод одномерных массивов Ввод одномерного массива
- •Вывод одномерного массива
- •Integer:: I
- •Примеры задач.
- •Многомерные массивы
- •Секции массива
- •Размещение массивов в памяти
- •Ввод и вывод массивов
- •Ввод двумерного массива
- •Вывод двумерного массива
- •Примеры задач.
- •Характеристики массивов
- •Форма массива. Конформные массивы
- •Функции shape и size
- •Выражения с массивами и присваивание массивов
- •Оператор и конструкция where
- •Динамические массивы
Integer:: I
real, dimension(1:Len) :: array
open(1, file=’out.txt’)
write(1,40) (array(i),i=Len/2+1,Len)! длина списка вывода равна 128
40 format(10F6.2)
Список вывода длиной 128 элементов выводится в 13 строк по 10 элементов в строке (последняя строка неполная, в ней 8 элементов)
Примеры задач.
Пример 3. Создать и вывести в два столбца целочисленный массив, значения элементов которого – квадраты чисел натурального ряда от 1 до 10
program make_array
integer, parameter :: count = 10 ! количество элементов
integer, dimension(1:count) :: Q ! целочисленный массив
integer :: i ! индексная переменная
do i=1, count
Q(i) = i**2
enddo
open(1, file=’out.txt’)
write(1,40) Q
40 format(2I6)
Список вывода длиной 10 элементов выводится в 5 строк по 2 элемента в строке.
Пример 4. Вычислить средний балл, полученный на экзамене группой студентов, и количество студентов, чья оценка выше среднего балла. Предполагается, что студентов не больше 100.
Количество студентов вводится из первой строки исходного файла, а оценки студентов, представленные целыми числами, – из остальных строк. Входные данные в файле разделяются запятыми, пробелами или переводом строки. Исходные данные, подготовленные в файле 'in.txt', имеют вид:
10
20 50 44 37 17 14 48 39 19 30
Результаты выполнения программы с этими исходными данными должны иметь вид:
Оценки 10 студентов
20 50 44 37 17
14 48 39 19 30
Средняя оценка: 31.8
Количество студентов с оценкой выше средней: 5
Программа
Многомерные массивы
Массив в Фортране может иметь до семи измерений. Число измерений называется размерностьюилирангоммассива; количество элементов в измерении называетсяпротяженностьюмассива в данном измерении.
При выделении памяти для многомерных массивов в атрибуте 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.