Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

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

Спецификации или объявления | Тип Character | Логические выражения | Массивы и производные типы | Оператор и конструкция IF | Конструкция SELECT CASE | Упорядочение операторов | Уровни доступа | Спецификация входных-выходных параметров | Объекты допустимого образа |


Читайте также:
  1. II. Порядок выплаты ежемесячной компенсации на оплату проезда до места проведения процедуры гемодиализа инвалидам, находящимся на постоянном диализном лечении.
  2. Административные процедуры как форма реализации компетенции органов внутренних дел.
  3. Административные регламенты как акты управления, устанавливающие административные процедуры.
  4. Внешние и внутренние факторы маркетинговой деятельности
  5. Внешние проблемы или внутренние проблемы
  6. ВНУТРЕННИЕ БОЛЕЗНИ
  7. Внутренние источники информации

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

 

Внутренние процедуры могут быть только вызванными своим хозяином и другими процедурами, внутренними для того же самого хозяина, не смотря на то, что внутренние процедуры могут вызывать другие процедуры (внешние или модуль). Например:

 

PROGRAM outer

REAL:: a, b, c

...

CALL inner(a)

...

CONTAINS

SUBROUTINE inner(a)! доступна только для outer

REAL:: a! передается как параметр

REAL:: b=1.0! переопределяется

c = a + b! c соотносится с хозяйской переменной

END SUBROUTINE inner

END PROGRAM outer

 

 

Программа outer содержит внутреннюю подпрограмму inner. Заметим, что переменные определены у единицы-хозяина и снова переопределены во внутренней подпрограмме. В примере, не смотря на то, что a, b и c определены в outer:

 

•Значение a передается как параметр, переопределяемая переменная (формальный параметр), также называемой a. Передаваемое значение то же самое, что и программе outer, переменные a в outer и inner это различные объекты

 

•Подобно a, переменная b переопределена в подпрограмме и также другой объект чем объект b в хозяйской программе. Значение переменной b не передается параметром и не соотносится с хозяином

 

•c есть единственный объект, общий для outer и inner, соотносится с хозяином.

 

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

Я

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

Внешние процедуры содержатся в собственных программных единицах (подпрограммах или функциях), которые могут содержать (то есть иметь во владении) внутренние процедуры. Например:

 

PROGRAM first

REAL:: x

x = second()

...

END PROGRAM first

FUNCTION second()! внешняя

REAL:: second

...! не соотносится с хозяином

END FUNCTION second

 

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

Я


Дата добавления: 2015-11-14; просмотров: 63 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Использование модуля| Связь с хозяином (Host) - глобальные данные

mybiblioteka.su - 2015-2024 год. (0.007 сек.)