Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 5.doc
Скачиваний:
7
Добавлен:
20.03.2016
Размер:
217.6 Кб
Скачать

13

Структура программы 1

Главная программа 1

Внешние процедуры 2

Процедуры-функции 3

Процедуры-подпрограммы 5

Параметры процедур 6

Интерфейсы 8

Внутренние процедуры 10

Встроенные функции 10

Модули 11

Пример присоединения объектов модуля. 12

Структура программы

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

Блоки, выделенные для подзадач, называются программными единицами. В Фортране различаются три виданезависимыхпрограммных единиц:

  • главная программа,

  • внешняя процедура,

  • модуль.

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

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

Главная программа

Главная программаявляется обязательным компонентом любой программы. При запуске программы операционная система передает управление операторам главной программы. Главная программа должна быть единственной, иначе невозможно определитьточку входа– оператор, с которого начинается выполнение программы.

Структура главной программы такова:

[programимя программы]

[Операторы описания]

[Исполняемые операторы]

[contains

внутренние подпрограммы]

end[programимя программы]

В квадратные скобки заключены необязательные части текста программы, которые могут отсутствовать. Как видно, единственным обязательным элементом главной программ является оператор end. Отличительным признаком главной программы являетсяотсутствиеспециальных операторов (subroutine,function или module)в ее заголовке: именно это характеризует этот компонент какглавную программу.

Оператор endглавной программы не только отмечает конец программного компонента, но и является сигналом к остановке всей программы. Хорошая организация программы предусматривает возврат управления в главную программу на завершающей стадии работы, но если необходимо остановить программу в другом месте, используется операторstop.

Если оператор endсодержит имя программы, то оно должно совпадать с именем, указанным в оператореprogramв заголовке.

Блок Операторы описания, если он есть, должен предшествовать блоку Исполняемые операторы. Отсутствие блокаИсполняемые операторывозможно, но бессмысленно.

Оператор containsотделяет исполняемые операторы от описаниявнутренних процедур.

Внешние процедуры

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

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

Общий вид внешней процедуры:

Заголовок процедуры

[Операторы описания]

[Исполняемые операторы]

[contains

внутренние процедуры]

Операторendпроцедуры

Для того, чтобы процедура начала выполняться, необходимо ее вызвать. Программная единица, из которой осуществляется вызов процедуры, называется вызывающейпрограммной единицей. Процедуры вызываются из главной программы или из других процедур и при завершении возвращают управлениевызывающей программной единице.

Возврат управления из процедуры в вызывающую программную единицу, в точку вызова процедуры, осуществляется оператором return. Оператор endне только указывает на конец процедуры, но и действует как операторreturn. Операторreturnможет прекратить выполнение процедуры в любом ее месте и передать управление в место вызова. Как и операторstop, он может быть частью условного оператора.

Все процедуры должны иметь возможность обмениваться данными с вызывающими программными единицами – получить входные данные от вызывающей программы и передать ей результаты своей работы. Обмен информацией с процедурами может происходить через параметры(аргументы) процедур и/или через глобальные данные. Организация глобальных данных рассматривается в разделе «Модули».

При передаче данных через параметры в заголовке процедуры указывается список формальных параметров– перечень переменных и/или массивов, которые используются в ходе выполнения процедуры.

В операторах вызова процедурыуказывается списокфактических параметров. При вызове процедуры происходит подстановка фактических параметров вместо формальных параметров.

Каждый параметр процедуры имеет следующие основные характеристики:

  • тип;

  • ранг – размерность или количество измерений; ранг переменной равен 0;

  • назначение параметра – входной, выходной или универсальный (изменяемый).

Назначениеформального параметра определяет атрибутintent:

intent(in)– входной параметр;

intent(out)– выходной параметр;

intent(inout)– универсальный параметр.

Если атрибут назначения параметра не указан, то по умолчанию параметр считается универсальным (inout).

Имеется два основных вида процедур: процедуры-функции function и процедуры-подпрограммы subroutine.