Реферат: Шпаргалки по Fortrany
рассмотренный массив marks является статическим - его размер не может быть изменен в процессе вычислений,
поэтому мы вынуждены задать 6го размер с некоторым запасом (чтобы иметь возможность использовать массив
для любой студенческой группы). Это приводит к тому, что программа, как правило, занимает больше памяти,
чем это требуется на самом деле. Подобного перерасхода памяти можно избежать, если применить динамический
массив и каждый раз выделять под него столько памяти, Сколько нужно. Работа с динамическим массивом происходит так:
выполняется объявление размещаемого массива. В отличие от статических размещаемые массивы объявляются с атрибутом ALLOCATABLE.
Кроме того, каждое измерение размещаемого массива задается в виде
двоеточия, например:
integer, allocatable, dimension(:) :: marks
определяется размер массива;
-
оператором ALLOCATE выделяется память под массив;
-
после выполнения вычислений выделенная память освобождается. Это
-
выполняется оператором DEALLOCATE;
-
после этого массиву вновь может быть выделена свежая область памяти.
При размещении массива параметр STAT= позволяет узнать, удалось ли разместить массив.
Этот параметр может быть опущен, но тогда любая неудача при выделении памяти приведет к ошибке этапа исполнения и остановке
программы. Параметр указывается в операторе ALLOCATE последним. При удачном выделении памяти целочисленная статусная переменная
ierr возвращает нуль, в противном случае возвращается код ошибки размещения. Причиной ошибки может быть, например,
недостаток памяти или "попытка разместить ранее размещенный и не освобожденный оператором DEALLOCATE объект.
Аналогичную роль играет необязательный параметр STAT= и в операторе DEALLOCATE.
Сечение массива
В Фортране можно получить доступ не только к отдельному элементу массива, но и к некоторому подмножеству его элементов.
Такое подмножество элементов массива называется сечением массива. Сечение массива может быть получено в результате применения
индексного триплета или векторного индекса, которые при задании сечения подставляются вместо одного из индексов массива.
Индексный триплет имеет вид: [нижняя граница] : [верхняя граница] [.шаг]
Каждый из параметров триплета является целочисленным выражением. Шаг изменения индексов может быть и положительным и
отрицательным, но не может равняться нулю. Все параметры триплета являются необязательными.
Индексный триплет задает последовательность индексов, в которой первый элемент равен его нижней границе,
а каждый последующий больше (меньше) предыдущего на величину шага. В последовательности находятся все
задаваемые таким правилом значения индекса, лежащие между границами триплета. Если же нижняя граница больше