Читайте также: |
|
Ниже пример очень простой главной программы для тестирования интервальной арифметики. Он из файла interval.f90 или intv.f90.
USE INTERVAL_ARITHMETICS
IMPLICIT NONE
TYPE (INTERVAL):: A, B, C, D, E, F
A%LOWER = 6.9
A%UPPER = 7.1
B%LOWER = 10.9
B%UPPER = 11.1
WRITE (*,*) A, B
C = A + B
D = A - B
E = A * B
F = A / B
WRITE (*,*) C, D
WRITE (*,*) E, F
END
Запуская эту программу на компьютере Sun с компилятором NAG получили следующий результат на выводе:
% f90 interval_arithmetics.f90 interval.f90
interval_arithmetics.f90:
interval.f90:
% a.out
6.9000001 7.0999999 10.8999996 11.1000004
17.7999992 18.2000008 -4.2000003 -3.7999997
75.2099991 78.8100052 0.6216216 0.6513762
% exit
Мы компилировали программу компилятором f90, и счетная программа была автоматически названа a.out. Прямо с выше приведенным (первый модуль) компиляция работала с SunSoft и компилятором Digital compilers!
Я
PRIVATE и PUBLIC
В модуле некоторые понятия могут быть определены как PRIVATE, которое означает, что программная единица закрывает использования этого понятия извне. В противовес этому может быть использовано явное описание PUBLIC, обычно PUBLIC имеет место по умолчанию. Следующие операторы
PRIVATE
PUBLIC:: VAR1
Объявляют все переменные локальными, но VAR1 глобальный. Заметим, что оба понятия (PUBLIC и PRIVATE) могут быть даны как оператор, например
INTEGER:: IVAR
PRIVATE:: IVAR
Или как атрибут
INTEGER, PRIVATE:: IVAR
Я
Процедуры
Описание всех сторон понятия "процедура" включает следующие разделы
Фактические и формальные параметры | Переменные в процедуре | Параметры процедур |
Внутренние процедуры | SAVE | Объекты допустимого образа |
Внешние процедуры | Локальные объекты | Вид параметра (атрибут INTENT) |
Подпрограммы и функции | Соответствие параметров | Ключевые параметры |
Subroutine | Правила области действия | Необязательные параметры |
Function | Связь с хозяином (Host) - глобальные данные | Процедуры в качестве параметров |
Блок взаимодействия | Рекурсия |
Процедуры это самостоятельные программные единицы, каждая со своим именем, которое служит для обращения к этим единицам. Структура текста процедуры такова
procedure name [(argument list)]
[specification statements]
[executable statements]
...
[CONTAINS
internal procedures]
END procedure [name]
Где вместо procedure может быть одно из слов SUBROUTINE или FUNCTION.
Имеется некоторое различие типов процедур:
•Internal - внутри другой программной единицы
•External - внешняя (возможно на языках, отличных от Fortran 90)
•Module - размещаемая внутри модуля.
Чтобы использовать процедуры (независимо от типа) требуется оператор вызова. Подпрограммы вызываются оператором CALL, а функции вызываются по имени:
CALL name [(список параметров)]
result = name ([список параметров])
В обоих случаях управление передается процедуре из вызывающего оператора и возвращается в тот же оператор по выходе из процедуры. Список параметров пуст или несколько переменных или выражений, значения которых используются процедурой. Заметим, что функция должна включать скобки, заключающие список параметров, даже если список пуст.
Из процедур могут быть созданы их множества. Существуют
•встроенные (их в Fortran 90 имеется 113),
•библиотеки, напрмер, NAg fl90 Numerical Library has 300+, BLAS, IMSL, LaPACK, Uniras
•модули, много свободно распространяемых, см. WWW.
Библиотечные процедуры обычно работают быстрее, даже быстрее чем встроенные!
Я
Дата добавления: 2015-11-14; просмотров: 62 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Спецификация входных-выходных параметров | | | Внутренние процедуры |