Характеристики массива
В современном Фортране свойства объектов, в частности, массивов описывают так:
список_атрибутов ::список_объектов
Характеристики и атрибуты массива.
1. Имя массива, как объекта.
2. Тип массива– одного из базовых типовinteger,real,complex,logical,characterили определяемого типа type(имя_типа).
3. Количество измерений или ранг массива – допускается от 1 до 7, причем по каждому измерению указывается пара целых чисел [нижняя:]верхняя границы индекса:
a. либо диапазон индекса как нижняя:верхняя границы индекса
протяженность = верхняя – нижняя + 1 ; протяженность – это неотрицательное число, указывающее на количество возможных значений индекса по выбранному измерению;
b. либотолько верхняя граница, с нижней границей по умолчанию равной 1; в этом случае верхняя граница - это протяженность, например, число строк или число столбцов матрицы.
4. Форма массива, по-английски Shape – целочисленный вектор, составленный из протяженностей в порядке следования измерений. Форма характеризует порядок размещения элементов в памяти компьютера. Массивы, одинаковые по форме, называют, конформными. Форма измеряется функцией shape(Array).
5. Число элементов – это произведение протяженностей по всем измерениям массива, измеряется функцией size(Array)
size(Array)=product(shape(Array)).
6. Объем памяти, занимаемый массивом
<объем_памяти > = < память на один элемент >* size(array)
– ограничивается лишь объемом памяти компьютера.
7. Когда и как массив размещается в памяти компьютера – статический или динамический (allocatable); в процедуре, дополнительно – динамический автоматический, передаваемый по адресу.
8. Назначение (intent) массива как аргумента процедуры: intent(in) – входной аргумент, intent(out) – выходной аргумент, intent(inout) – входной-выходной аргумент.
9. Прочие атрибуты: public|private,pointer|target,parameter,save.
Предупреждение. Выбор элемента неописанного массива компилятор воспринимает как вызов неизвестной функции, причем об этом сообщает не компилятор, а компоновщик приложений.
Пример. Подсчитать s – среднее значение и D – среднее отклонение от среднего значения в массиве x
.
В раннем Фортране массив суммировали поэлементно, в Фортране-90 всё выглядит проще – «читаем – считаем – печатаем». Добиться краткости позволяет важный принцип современного Фортрана – практически везде, где используется простая переменная, можно использовать массив, как в abs(X-s), кроме того, функция sum(X) суммирует массив.
Program sumX ! sum(X)-встроенная функция суммирования вектора
Real,Dimension(1:10)::X; real s
read(1,*)X; s=sum(X)/10; print *, 'среднее =',s
! читаем – считаем – печатаем
print *, 'среднее отклонение D=',sum(abs(X-s))/10
End Program sumX
Дата добавления: 2016-02-13; просмотров: 5036;