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

Спецификация входных-выходных параметров

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


Читайте также:
  1. Виды диагностических параметров
  2. ВИДЫ ДИАГНОСТИЧЕСКИХ ПАРАМЕТРОВ (ДП)
  3. Влияние оптических параметров на процесс лазерной резки
  4. ВСЕХ ПАРАМЕТРОВ И ЛУЧШИМИ И ХУДШИМИ НАБОРАМИ ПАРАМЕТРОВ ДЛЯ ПРЕДЫДУЩИХ ПЕРИОДОВ
  5. Выбор параметров АЦП. 34
  6. Задание точных значений параметров преобразования
  7. Изменение параметров внутреннего стандарта.

Для каждого аргумента в спецификации переменных подпрограммы мы можем теперь дать его вид INTENT как IN, OUT или INOUT. Если задан IN, то фактический параметр может быть выражением подобным X+Y или SIN(X) или константой как 37, после чего значение может быть передано подпрограмме, но новое значение не может быть возвращено вызывающей единице. Переменной в этом случае может быть присвоено новое значение в подпрограмме. Если задан OUT, в другом случае, то фактический параметр может быть переменной. На входе в подпрограмму в этом случае переменная не определена. Третий случай, когда возможно одно значение на входе и другое на выходе или то же самое значение. В этом случае фактический параметр должен быть переменной. Если переменная имеет атрибут указателя, то INTENT не должен задаваться. Реализован INTENT еще не всеми компиляторами.

Я

Модуль

Одно из возможных использований программной единицы MODULE состоит заботе о глобальных данных. Как замена для BLOCK DATA. Другое использование в создании пакета новых типов данных. Примеролм может служить пакет интервальной арифметики. Связывая с каждым значением X вы имеете интервал (X_lower; X_upper). Используя пакет вы будете иметь только имя переменной X в смысле интервала. Переменная X теперь поддержана новым типом данных "интервал". Вот из файла интервальной арифметики file interval_arithmetics.f90 или intv_ari.f90.

 

MODULE INTERVAL_ARITHMETICS

TYPE INTERVAL

REAL LOWER, UPPER

END TYPE INTERVAL

INTERFACE OPERATOR (+)

MODULE PROCEDURE INTERVAL_ADDITION

END INTERFACE

INTERFACE OPERATOR (-)

MODULE PROCEDURE INTERVAL_SUBTRACTION

END INTERFACE

INTERFACE OPERATOR (*)

MODULE PROCEDURE INTERVAL_MULTIPLICATION

END INTERFACE

INTERFACE OPERATOR (/)

MODULE PROCEDURE INTERVAL_DIVISION

END INTERFACE

CONTAINS

FUNCTION INTERVAL_ADDITION(A, B)

TYPE(INTERVAL), INTENT(IN):: A, B

TYPE(INTERVAL):: INTERVAL_ADDITION

INTERVAL_ADDITION%LOWER = A%LOWER + B%LOWER

INTERVAL_ADDITION%UPPER = A%UPPER + B%UPPER

END FUNCTION INTERVAL_ADDITION

FUNCTION INTERVAL_SUBTRACTION(A, B)

TYPE(INTERVAL), INTENT(IN):: A, B

TYPE (INTERVAL):: INTERVAL_SUBTRACTION

INTERVAL_SUBTRACTION%LOWER = A%LOWER - B%UPPER

INTERVAL_SUBTRACTION%UPPER = A%UPPER - B%LOWER

END FUNCTION INTERVAL_SUBTRACTION

FUNCTION INTERVAL_MULTIPLICATION(A, B)

! POSITIVE NUMBERS ASSUMED

TYPE(INTERVAL), INTENT(IN):: A, B

TYPE (INTERVAL):: INTERVAL_MULTIPLICATION

INTERVAL_MULTIPLICATION%LOWER = A%LOWER * B%LOWER

INTERVAL_MULTIPLICATION%UPPER = A%UPPER * B%UPPER

END FUNCTION INTERVAL_MULTIPLICATION

FUNCTION INTERVAL_DIVISION(A, B)

! POSITIVE NUMBERS ASSUMED

TYPE(INTERVAL), INTENT(IN):: A, B

TYPE(INTERVAL):: INTERVAL_DIVISION

INTERVAL_DIVISION%LOWER = A%LOWER / B%UPPER

INTERVAL_DIVISION%UPPER = A%UPPER / B%LOWER

END FUNCTION INTERVAL_DIVISION

END MODULE INTERVAL_ARITHMETICS

 

Компиляция выше приведенного приведет к созданию файла interval_arithmetics.mod. Этот файл включает интересную модифицированную версию вышеприведенного кода. Любая программа, которая будет использовать этот пакет, должна содержать оператор USE INTERVAL_ARITHMETICS в начале операторов спецификации. Тогда будут доступны тип данных INTERVAL и четыре арифметических действия с этим типом. В некоторых случаях -желательно только включить некоторые средства в модуль. В таком случае вы можете использовать атрибут ONLY внутри оператора USE.

USE module_name, ONLY: список_выбранных_подпрограмм

Я


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


<== предыдущая страница | следующая страница ==>
Уровни доступа| Использование модуля

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