Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FORTRAN.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.21 Mб
Скачать

3.3. Функции-операторы.

Функция-оператор определена единственным оператором и по виду подобна оператору присваивания. Функция-оператор может появиться только после операторов описания и перед любыми выполняемыми опера- торами в программной единице.

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

Для информации о синтаксисе и использовании функции-оператора смотрите часть 3 "Операторы".

4. Параметры.

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

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

На входе в подпрограмму или функцию фактические параметры связываются с формальными, во многом подобно тому как оператор EQUIVALENCE связывает два или более массива или переменные, а оператор COMMON в двух или нескольких программных единицах связы- вает списки переменных. Эта связь действует, пока не закончилось выполнение подпрограммы или функции. Поэтому присвоение величины формальному параметру во время выполнения подпрограммы или функции может изменить величину соответствующего фактического параметра.

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

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

Формальный параметр, описанный как переменная, может быть связан с фактическим параметром - переменной, элементом массива, выражением. Формальный параметр, описанный как переменный возврат (*) может быть связан с определителем переменного возврата (*n) в операторе CALL и является повторяемым.

Формальный параметр, описанный как массив, может быть связан с фактическим параметром, являющимся массивом или элементом мас- сива. Число и размер размерностей формального параметра могут быть отличны от этих характеристик фактического параметра, но любая ссылка на формальный массив должна быть в пределах памяти, отве- денной под фактический массив. Когда ссылка на элемент выходит за границы, это не фиксируется как ошибка при исполнение программы на МС-Фортране и результат непредсказуем.

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

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

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

INT SNGL CHAR MAX0 MIN0

INT2 REAL LGE AMAX1 AMIN1

INT4 DBLE LGT DMAX1 DMIN1

IFIX COMPLX LLE AMAX0 AMIN0

IDINT DCMPLX LLT MAX1 MIN1

FLOAT ICHAR MAX MIN

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]