Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2017-09-30 | 226 |
5.00
из
|
Заказать работу |
Модуль, как трёхуровневая структура, может содержать (contains) модульные процедуры, которые, в свою очередь, могут содержать (contains) внутренние процедуры. Имена общедоступных public -объектов модуля - заимствуют его модульные и их внутренние процедуры. Эти имена также заимствуют все, кто использует этот модуль, как-то: другие модули, внешние программы и, транзитом, их внутренние процедуры. Атрибут public по умолчанию имеют все объекты модуля. Модульныепроцедуры также имеют атрибут public и их можно вызывать из используемого модуля. В то же время их внутренние процедурынедоступны в программной единице, использующей модуль. Private -объектымодуля доступнытолькомодульным процедурам и их внутренним процедурам. Глобальный объект проекта можно однократно описать в модуле. Затем в проекте любой сложности, используя модуль, можно получить доступ к его объектам и модульным процедурам. Важно иерархическое описание объектов, которое реализуется через иерархию использования модулей.
Таблица 36. Видимыми объектами модуля являются [1-6]
Module имя _ модуля! уровень 1 [1] use имя_другого_модуля и его объекты [2] описания производных типов данных [3] public! описания общедоступных переменных (по умолчанию) [4] private! описания переменных, доступных только в модуле [5] описания интерфейсов [6] описания списков Namelist ! д е й с т в и й в м о д у л е н е т contains |
.... пачка модульных процедур …. End module имя_модуля |
Вызов процедур и использование модулей
Различают два вида процедур:
- Function – процедура-функция, вызываемая в выражении, например, p=имя_функции(аргументы), аргументы только входные с атрибутом intent(in); способы определения функции разнообразны – встроенные, операторные, внутренние, внешние, модульные, чистые, однако вызов любой из них аналогичен вызову простейшей встроенной функции max z = (x+y) / max(x,y);
- Subroutine – процедура-подпрограмма, вызываемая оператором вызова call имя(аргументы), аргументы входные –intent(in), выходные – intent(out), изменяющиеся – intent(inout).
Неисполняемый оператор использования модуля use имя_модуля пишут сразу после заголовка ПЕ. Любая ПЕ, как программа, так и другой модуль может использовать модуль, присоединяя общедоступные объекты с атрибутом public и делая доступными модульные процедуры.
Передача данных через аргументы процедуры.
Объекты вызывающей программы в скобках после имени вызываемой процедуры называют фактическими аргументами. Объекты вызываемой программы в скобках после имени в заголовке процедуры, называют формальными аргументами. Количество фактических и формальных аргументов должно совпадать. Попарно в порядке следования фактические и формальные аргументы должны соответствовать по типу, назначению и форме. Совпадения имен сопоставляемых фактических и формальных аргументов не требуется, но и не запрещается.
Память под формальные аргументы, в том числе и под массивы, в процедуре не резервируется: из вызывающей программы передается адрес объекта, с которым работает процедура.
Возвращаемое значение функции связано с её именем и по форме может быть скаляром, вектором, матрицей, многомерным массивом, описываемым атрибутом dimension.
На аргументы процедур в связи с их назначением накладывается ряд ограничений:
1. формальные аргументы могут быть только переменными и массивами;
2. фактические аргументы, соответствующие входным формальным аргументам с атрибутом intent(in), могут быть:
- переменными, константами, выражениями,
- массивами, секциями массивов, элементами массивов,
- именами внешних или встроенных функций;
3. фактические аргументы, соответствующие формальным выходным аргументамс атрибутом intent(out)и изменяющимся аргументам с атрибутомintent(inout), могут быть только переменными, элементами массивов, массивами, секциями массивов.
Оператор Interface
В вызывающей ПЕ, а лучше в используемом модуле, для внешней процедуры пишут оператор interface, который описывает правила её вызова. Для модульных и внутренних процедур интерфейсы считаются явными и их описывать не надо. Оператор interface описывает:
- вид процедурыFunction илиSubroutine;
- имена и порядок следования формальных аргументов;
- формальный аргумент пишут с атрибутом intent – назначение, имеющим одно из трёх значений: intent(in), intent(out), intent(inout).
Оператор interface– это самостоятельный составной оператор описания с локализованными внутри описаниями формальных аргументов
Interface
описание процедуры и её формальных аргументов
....
описание процедуры и её формальных аргументов
End Interface
Особенностью оператора Interfaceявляется то, что вложенные в него описания процедур и их аргументов локализованы в каждой из процедур и независимы друг от друга и от описаний той программной единицы, где написан оператор интерфейса. До Фортрана-90 оператора интерфейса не было. Спрашивается, надо ли его описывать?
– Ответ не односложный:
1. для встроенных, внутренних и модульных процедур интерфейс считается явным, и его описывать не требуется;
2. интерфейс внешних процедур описывать рекомендуется - это помогает исключить ошибки вызова; рекомендуется собрать интерфейсы в модуле, а не дублировать их в вызывающих программах;
3. интерфейс нужно описывать или он должен быть явным:
- для процедур с необязательными и ключевыми аргументами,
- для функций с атрибутомdimension,
- длячистых (pure) функций и подпрограмм,
- в случае перегрузки типов, формы, операций и присваиваний.
Операторы End, Stop, Return
К оператору End применимы следующие правила:
1. послеоператораEnd рекомендуется повторять заголовок ПЕ
Subroutine name ( аргументы )
Операторы
End Subroutine name
2. End – это последний оператор ПЕ, не только конец текста, но и нормальное завершение программы, что означает:
- в главной программе – закрытие файлов, освобождение памяти и возврат в ОС,
- в процедуре – освобождение динамической памяти и возврат в вызывающую программу.
Оператор Stopпо действию похож на Endглавнойпрограммы, только может встретиться в любом месте проекта – это, скорее всего, прекращение приложения из-за ошибки, на консоли – stop program terminated.
Оператор Return по действию похож на Endпроцедуры. Смысл оператора Return в следующем: он может появляться в любом месте любой из процедур – это всегда досрочное завершение активной процедуры.
Обмен данными в проекте
Программные единицы (ПЕ) проекта получают данные и формируют результаты. Помимо передачи данных через аргументы в Фортране-90 появились два новых способа доступа к объектам носителя данных по именам:
- вложенные процедуры импортируют объекты внешней ПЕ;
- объекты модуля общедоступны там, где модуль используют (use) и модуль является носителем данных, объекты модуля по умолчанию являются общедоступными (атрибутpublic), а локальные объекты модуля должны быть помечены атрибутом private.
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!