Автоматические массивы

Рефераты, курсовые, дипломные, контрольные (предпросмотр)

Тип: Реферат. Файл: Word (.doc) в архиве zip. Категория: Информатика, IT
Адрес этого реферата http://referat-kursovaya.repetitor.info/?essayId=24744 или
Загрузить
В режиме предпросмотра не отображаются таблицы, графики и иллюстрации. Для получения полной версии нажмите кнопку «Загрузить». Рефераты, контрольные, дипломные, курсовые работы предоставляются в ознакомительных целях, не для плагиата.
Страница 3 из 3 [Всего 3 записей]« 1 2 3

и для чисел после него. Кроме того, сам разделитель находится в нужной позиции, то есть в

дальнейшей сортировке он уже не рассматривается.

Размещаемые массивы

рассмотренный массив marks является статическим - его размер не может быть изменен в процессе вычислений,

поэтому мы вынуждены задать 6го размер с некоторым запасом (чтобы иметь возможность использовать массив

для любой студенческой группы). Это приводит к тому, что программа, как правило, занимает больше памяти,

чем это требуется на самом деле. Подобного перерасхода памяти можно избежать, если применить динамический

массив и каждый раз выделять под него столько памяти, Сколько нужно. Работа с динамическим массивом происходит так:

выполняется объявление размещаемого массива. В отличие от статических размещаемые массивы объявляются с атрибутом ALLOCATABLE.

Кроме того, каждое измерение размещаемого массива задается в виде

двоеточия, например:

integer, allocatable, dimension(:) :: marks

определяется размер массива;

* оператором ALLOCATE выделяется память под массив;

* после выполнения вычислений выделенная память освобождается. Это

* выполняется оператором DEALLOCATE;

* после этого массиву вновь может быть выделена свежая область памяти.

При размещении массива параметр STAT= позволяет узнать, удалось ли разместить массив.

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

программы. Параметр указывается в операторе ALLOCATE последним. При удачном выделении памяти целочисленная статусная переменная

ierr возвращает нуль, в противном случае возвращается код ошибки размещения. Причиной ошибки может быть, например,

недостаток памяти или "попытка разместить ранее размещенный и не освобожденный оператором DEALLOCATE объект.

Аналогичную роль играет необязательный параметр STAT= и в операторе DEALLOCATE.

Сечение массива

В Фортране можно получить доступ не только к отдельному элементу массива, но и к некоторому подмножеству его элементов.

Такое подмножество элементов массива называется сечением массива. Сечение массива может быть получено в результате применения

индексного триплета или векторного индекса, которые при задании сечения подставляются вместо одного из индексов массива.

Индексный триплет имеет вид: [нижняя граница] : [верхняя граница] [.шаг]

Каждый из параметров триплета является целочисленным выражением. Шаг изменения индексов может быть и положительным и

отрицательным, но не может равняться нулю. Все параметры триплета являются необязательными.

Индексный триплет задает последовательность индексов, в которой первый элемент равен его нижней границе,

а каждый последующий больше (меньше) предыдущего на величину шага. В последовательности находятся все

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

верхней и шаг положителен или нижняя граница меньше верхней и шаг отрицателен, то последовательность является пустой.

Пример.

real a(1:10);,

а(3:7:2) = 3.0 ! Триплет задает сечение массива с элементами

! а(3), а(5), а(7), которые получат значение 3.0

а(7:3:-2) = 3.0 ! Элементы а(7), а(5), а(3) получат значение 3.0

RSSСтраница 3 из 3 [Всего 3 записей]« 1 2 3


При любом использовании материалов сайта обязательна гиперссылка на сайт «Репетитор».
Разработка и Дизайн компании Awelan
www.megastock.ru
Проверить аттестат