Основная программа - это любая программная единица, у которой первый оператор - это не FUNCTION,SUBROUTINE или BLOCK DATA. Первым оператором основной программы может быть оператор PROGRAM. Если у основной программы нет оператора PROGRAM, ей будет присвоено имя MAIN. Имя MAIN тогда не может быть использовано как имя любого другого глобального объекта.

Выполнение программы всегда начинается с первого выполняемого оператора основной программы. Соответственно, в каждой выполняемой программе должна быть только одна основная программа.

Для дополнительной информации о программах и операторе PROGRAM смотрите часть 3 "Операторы".

Подпрограмма - это программная единица, которая может быть вызвана из другой программной единицы c помощью оператора CALL. Будучи вызванной, подпрограмма производит набор действий, определенных ее выполняемыми операторами, и затем возвращает управление на оператор, следующий непосредственно за вызвавшим ее оператором, или на оператор, определенный как переменный возврат (смотрите оператор CALL в части 3).

Подпрограмма не возвращает величину прямо, хотя величины могут быть возвращены в вызывающую программную единицу через параметры и COMMON-блоки.

Для более подробной информации о подпрограммах смотрите часть 3 "Операторы".

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

  1. Внешние функции
  2. Встроенные функции
  3. Функции-операторы.

Каждый из них описан более подробно в дальнейших параграфах.

Ссылка на функцию может появиться в арифметическом или логическом выражении. Когда выполняется ссылка на функцию, функция вызывается, а величина результата используется как операнд в выражении, которое содержит ссылку на функцию. Форма ссылки на функцию следующая: Правила для параметров функций аналогичны правилам для подпрограмм (за исключением переменного возврата, который недопустим) и приведены в описании оператора CALL в части 3. Некоторые дополнительные ограничения, применимые для функций-операторов и встроеных функций, описаны ниже в этой части.

Внешняя функция определена программной единицей функции. Она начинается оператором FUNCTION и заканчивается оператором END. Она может содержать любые виды операторов, кроме PROGRAM, FUNCTION, SUBROUTINE или BLOCK DATA.

Встроенные функции определены в языке МS-Фортран и доступны для использования в программе на МS-Фортране. В таблице 5-1 приведены имена, назначения, типы параметров и типы функций для всех встроенных функций, допустимых в МS-Фортране, с дополнительными примечаниями после таблицы.

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

Имя встроенной функции может появиться в операторе INTRINSIC. Имя встроенной функции может также появиться в операторе описания типа, но только если тип тот же самый, что и стандартный тип этой встроенной функции.

Параметры некоторых встроенных функций ограничены назначением этих функций. Например, логарифм отрицательного числа математически не определен и поэтому недопустим.

Многие встроенные функции имеют общие имена, что позволяет ссылаться на функцию без уточнения типа параметров при ссылке. Когда ссылаются на общее имя компилятор выбирает соответствующую относительно специфическую функцию в зависимости от типа параметра(ов) в ссылке на функцию.

Например, функция INT - это общее имя шести чуть отличающихся функций: одна с собственным именем, совпадающим с основным, три с особыми именами (IFIX,IDINT,ICHAR) и две - безымянных (для типов данных COMPLEX*8 и COMPLEX*16).

Все углы в таблице 5-1 выражены в радианах. Все параметры в ссылке на встроенную функцию должны быть того же типа. Х и У - действительные, Z - комплексное, I и J - целые, а С,С1 и С2 - символьные величины. Числа в квадратных скобках в колонке 1 ссылаются на примечания после таблицы.

В дальнейшем REAL эквивалентно REAL*4, DOUBLE PRECISION - REAL*8, a COMPLEX - COMPLEX*8. Если в указанном типе параметра - INTEGER, то тип может быть INTEGER*2 или INTEGER*4. Если указанный тип функции - INTEGER, тип будет целый по умолчанию определенный метакомандой $STORAGE. (Для более полной информации смотрите часть 6). Примечания к таблице 5-1:

  1. Для Х типа INTEGER INT(X)=X. Для Х типа REAL или REAL*8, если Х - неотрицательно, то INT(X) - наибольшее целое, не превышающее Х; а если Х - отрицательно, то INT(X) - наибольшее отрицательное целое не меньшее чем Х. Для Х типа REAL IFIX(X) то же самое, что INT(X).
  2. Для Х типа REAL REAL*(X)=X. Для Х типа INTEGER или REAL*8 REAL(X) это значащая часть наибольшей точности Х, которую может содержать данный тип REAL. Для Х типа INTEGER FLOAT(X) - то же самое, что REAL(X).
  3. Для Х типа REAL*8 DBLE(X)=X. Для Х типа INTEGER или REAL DBLE(X) - это значащая часть наибольшей точности Х, которую может содержать тип данных двойной точности.
  4. COMPLEX и DCMPLX могут иметь один или два параметра. Если использован один параметр, он может быть типа INTEGER, REAL, DOUBLE PRECISION, COMPLEX или DOUBLE PRECISION COMPLEX. Если использованы два параметра, то они должны быть одного и того же типа и при этом допустимы типы INTEGER, REAL или DOUBLE PRECISION.

При Z=COMPLEX*8, COMPLEX(Z)=Z. Для Z=INTEGER, REAL и REAL*8 COMPLEX(Z)=комплексной величине, действительная часть которой REAL(Z), а мнимая часть равна нулю.

COMPLEX(X,Y)= комплексной величине, действительная часть которой - REAL(X), а мнимая - REAL(Y).

При Z=COMPLEX*16, DCMPLX(Z)=Z. Для Z=INTEGER, REAL и REAL*8 DCMPL(Z)=комплексной величине, у которой действительная часть - REAL*8, а мнимая равна нулю. Для Z=COMPLEX*8 DCMPLX(Z) имеет действительную часть равной DBLE(Z), а мнимую равной DBLE(AIMAG(Z)).

DCMPLX(X,Y)=комплексной величине, у которой действительная часть - REAL*8(X), а мнимая - REAL*8(Y).

  • ICHAR преобразует символьную величину в целую. Целая величина символа - это внутреннее представление символа в коде ASCII, лежащее в диапазоне от 0 до 255. Для любых двух символов С1 и С2 (С1.LE.C2) будет .TRUE. тогда и только тогда если (ICHAR(C1).LE.ICHAR(C2)) есть .TRUE. Функция CHAR(I) возвращает 1-й символ таблиц ASCII. Это величина типа CHARACTER длиной один символ, при этом I должно быть целым выражением, величина которого принадлежит диапазону 0 ≤ i ≤ 255.

    CHAR(ICHAR(C)) = C для любого С из набора ASCII

  • DIM(X,Y) - это Х-Y, если X>Y, или нуль в противном случае.
  • LGE(X,Y) возвращает .TRUE. если Х=Y или если Х следует за Y в таблице кодов ASCII; иначе возвращается .FALSE.

    LGT(X,Y) возвращает .TRUE. если Х следует за Y в таблице кодов ASCII; иначе возвращается .FALSE.

    LLE(X,Y) возвращает .TRUE. если X=Y или если Х предшевствует Y в таблице ASCII; иначе возвращается .FALSE.

    LLT(X,Y) возвращает .TRUE. если Х предшевствует Y в таблице ASCII; иначе возвращается .FALSE.

    Если у операндов неравная длина, то более короткий дополняется справа пробелами.

  • EOF(X) возвращает .TRUE. если устройство, определенное этим параметром находится на или после записи конец-файла; иначе возвращается .FALSE. Величина Х должна соответствовать открытому файлу или нулю, что соответствует экрану или клавиатуре.
  • Функция-оператор определена единственным оператором и по виду подобна оператору присваивания. Функция-оператор может появиться только после операторов описания и перед любыми выполняемыми операторами в программной единице.

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

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

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

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

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

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

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

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

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

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

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

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

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



    Формулы для статистики


    Узнать стоимость за 15 минут
    • Тип работы
    • Часть диплома
    • Дипломная работа
    • Курсовая работа
    • Контрольная работа
    • Реферат
    • Научно - исследовательская работа
    • Отчет по практике
    • Ответы на билеты
    • Тест/экзамен online
    • Монография
    • Эссе
    • Доклад
    • Компьютерный набор текста
    • Компьютерный чертеж
    • Рецензия
    • Перевод
    • Репетитор
    • Бизнес-план
    • Конспекты
    • Проверка качества
    • Единоразовая консультация
    • Аспирантский реферат
    • Магистерская работа
    • Научная статья
    • Научный труд
    • Техническая редакция текста
    • Чертеж от руки
    • Диаграммы, таблицы
    • Презентация к защите
    • Тезисный план
    • Речь к диплому
    • Доработка заказа клиента
    • Отзыв на диплом
    • Публикация статьи в Вак
    • Публикация статьи в Scopus
    • Дипломная работа MBA
    • Повышение оригинальности
    • Шрифт, pt
    • 12 pt
    • 14 pt
    • Другой
    Прикрепить файл
    Заказать