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

18

Lesson 4 1

Массивы 1

Одномерные массивы 2

Описание одномерных массивов 2

Ввод и вывод одномерных массивов 3

Примеры задач. 5

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

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

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

Ввод и вывод массивов 9

Примеры задач. 11

Характеристики массивов 13

Форма массива. Конформные массивы 14

Функции shape и size 14

Выражения с массивами и присваивание массивов 15

Оператор и конструкция where 16

Динамические массивы 17

Lesson 4 Массивы

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

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

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

Чтобы продолжить аналогию, будем говорить, что простая переменная соответствует скалярув математике.

Общая форма записи элемента массива:

Name(список индексов)

Здесь Name – имя массива;список индексов– список индексных выражений. Индексное выражение может быть целой константой, целой переменной или целым выражением.

Примерызаписи элементов массивов:

A(3),A(J),A(I+1) – элементы одномерного массиваA.

B(3, 4),B(I,J),B(I+1,I+2) – элементы двумерного массиваB.

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

Выделение памяти для хранения одномерных массивов производится с помощью атрибута dimensionв описании массива:

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

Здесь тип массива– типвсех элементовмассива, один из типов данных, используемых в Фортране.

Границы массива– константные целые выражения, разделенные двоеточием и задающие диапазон индексов его элементов. Элементы массива располагаются в порядке возрастания индекса, начиная с нижней границы массива.

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

Индексомэлемента массива называется его номер в массиве. Значение индекса не должно выходить за пределы границ массива.

Предупреждение. Выбор элемента неописанного массива компилятор воспринимает как вызов неизвестной функции, причем об этом сообщает не компилятор, а компоновщик приложений.

Примерыописания одномерных массивов.

  1. Описание вещественных массивов А, В, С:

real, dimension(1:20) :: A, B, C то же, что

real, dimension(20) :: A, B, C

Объявлены три вещественных массива из 20 элементов с номерами от 1 до 20.

  1. Описание целочисленного массива Number:

integer, dimension(-3:3) :: Number

Объявлен целочисленный массив из 7 элементов с номерами от –3 до 3.

  1. Описание символьного массива student:

character*20,dimension(1:30)::student

Для массива studentвыделено 30 строк по 20 байт, всего 600 байт.

  1. При объявлении массивы можно инициализировать с помощью конструктора массива, например:

integer, dimension(1:10):: digit=(/0,1,2,3,4,5,6,7,8,9/)

  1. С помощью конструктора массива можно создавать массивы констант, например:

integer, parameter, dimension(1:5):: digit=(/0,1,2,3,4/)

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

integer, parameter:: L_digit=10

integer:: i

integer, dimension(L_digit: L_digit+10):: digit

do i=L_digit, L_digit+10

digit(i)=i

enddo

В программе объявлен целочисленный массив из 11 элементов с номерами от 10 до 20. Каждому элементу массива присваивается значение, равное его номеру.

  1. Устаревшее допустимое, но не рекомендуемое описание массивов:

integer A(34), B(34), C(7)

Лучше записать так:

integer, dimension(1:34):: A, B

integer, dimension(1:7):: С

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