Общие понятия
При создании программ появляется необходимость выполнять некоторую последовательность команд (инструкций) в различных местах программы. Эту последовательность можно записать необходимое количество раз, но, во-первых, это удлинит текст программы и уменьшит ее читабельность (последнее, несомненно, хуже для программиста), а, во-вторых, существенно увеличит вероятность внесения ошибок в программу.
При разработке алгоритма исходная задача, как правило, разбивается на отдельные подзадачи. Квалификация программиста во многом определяется его способностью рационально разбить исходную задачу на фрагменты, которые впоследствии реализуются в виде отдельных программных единиц.
В Фортране можно создать такие программные единицы:
̶ главная программа;
̶ модули;
̶ внешние процедуры;
̶ внутренние процедуры;
̶ BLOCK DATA.
В этой теме будут рассмотрены особенности использования внешних и внутренних процедур.
Внешняя процедура является самостоятельной программной единицей и существует независимо от использующих ее программных единиц. К любой внешней процедуре можно обратиться из главной программы и любой другой процедуры.
Внешние процедуры могут компилироваться отдельно от использующих их программных единиц.
Внутренняя процедура задается в главной программе, процедуре.
Главная программа или процедура называются носителями содержащихся в них внутренних процедур. Обратиться к внутренней процедуре можно только внутри ее носителя. Сами же внутренние процедуры уже не могут содержать в себе других внутренних процедур.
Преимущество использования программные единиц:
̶ позволяют сократить расходы на создание программы;
̶ улучшают читаемость программы и, следовательно, облегчают ее последующую модификацию;
̶ приводят к сокращению исходного кода;
̶ могут быть включены в библиотеки и вызваны из любой программы;
̶ позволяют разделить работу над программой между разными программистами.
Процедура – это фрагмент кода, который вынесен из основной программы и имеющий уникальное имя. Тогда в месте, где необходимо выполнить эту последовательность кода, необходимо просто сослаться на ее имя. Это называется вызовом программной компоненты.
Например, необходимо несколько раз напечатать несколько одинаковых строчек.
print *,’---------------------------‘
print *,’*********************‘
print *,’---------------------------‘
Вместо того, чтобы несколько раз в теле программы набирать (или копировать, что несколько лучше) эти 3 строки, можно оформить их в виде подпрограммы:
subroutine PrtSomething ! имя подпрограммы
print *,’---------------------------‘
print *,’*********************‘
print *,’---------------------------‘
End
Теперь в любом месте программы, где должна производиться соответствующая печать, нужно вызвать эту подпрограмму по ее имени:
call PrtSomething
Когда использовать процедурі? Есть мнение, что если в какой-то программе больше 10 строк кода, то ее надо разбить на процедуры. Общие правила написания структурированных, хорошо читаемых программ – если некоторый участок кода имеет какое-то обособленное смысловое значение – выделяйте его в виде процедуры. Это дает несколько преимущества: удобство чтения, уменьшение вероятности внесения