Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




End

Endif

If (YesPlus) then

End interface

Interface

Endif

If (Yes) then

Enddo

Enddo

Endif

Yes = cPos>0! признак наличия положительных элементов

Ar = Summa / cPos

Geom = Prod ** (1./cPos)

end subroutine Primer

В главной программе:

implicit none! оператор должен быть в каждой программной единице

integer, parameter:: cR = 6, cCol = 8

real, dimension (1:cR, 1:cCol):: Array

! локальные переменные

logical:: YesPlus! признак – есть эл-ты >0

real:: Ar, Geom! средние значения

! интерфейс подпрограммы

subroutine Primer(Matrix, Yes, Ar, Geom)! заголовок процедуры

implicit none! оператор должен быть в каждой программной единице

! формальные параметры

real, dimension (:,:), intent(in):: Matrix! матрица

logical, intent(out):: Yes! признак – есть эл-ты >0

real, intent(out):: Ar, Geom! средние значения

end subroutine Primer

! исполняемые операторы:

...

call Primer(Array, YesPlus, Ar, Geom)

...! печать результатов

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

Среди исполняемых операторов подпрограммы с помощью функции shape определяется форма массива-параметра – одномерный массив Shape_Matr. Протяженности массива по измерениям равны Shape_Matr(1) (количество строк матрицы) и Shape_Matr(2) (количество ее столбцов).

Внутренние процедуры, в отличие от внешних, не могут содержать собственных внутренних процедур и имеют вид:

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

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

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

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

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

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

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

Среди внутренних процедур различаются процедуры-функции function и процедуры-подпрограммы subroutine.

Пример внутренней процедуры-функции:

program main




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 390; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.