- •Казанский Государственный Технологический Университет
- •1. Обзор языка
- •1.1. Метакоманды мs-Фортрана.
- •1.2. Программы и компилируемые части программ.
- •1.3. Ввод/Вывод.
- •1.4. Операторы.
- •1.5. Выражения.
- •1.6. Имена.
- •1.7. Типы.
- •1.8. Строки.
- •1.9. Символы.
- •2. Термины и концепции
- •2.1. Запись программ.
- •2.1.1. Буквенноцифровые символы.
- •2.1.2. Пробелы.
- •2.1.3. Табуляторы.
- •2.2. Строки и операторы.
- •2.2.1. Начальные строки.
- •2.2.2. Строки продолжения.
- •2.2.3. Строки коментария.
- •2.2.4. Операторы описания данных и порядок следования операторов.
- •2.3. Типы данных.
- •2.4. Имена.
- •2.4.1. Область действия имен Фортрана.
- •2.4.2. Имена Фортрана по умолчанию.
- •2.5. Выражения.
- •2.5.1. Арифметические выражения.
- •2.5.2. Деление целых.
- •2.5.3. Преобразования типов арифметических операндов.
- •2.5.4. Символьные выражения.
- •2.5.5. Выражения отношения.
- •2.5.6. Логические выражения.
- •2.5.7. Приоритеты операторов.
- •2.5.8. Правила вычисления выражений.
- •3. Операторы
- •3.1. Категории операторов.
- •3.1.1. Операторы program, subroutine, function и block data.
- •3.1.2. Операторы описания.
- •3.1.3. Опepaтop data.
- •3.1.4. Oпepaтop format.
- •3.1.5. Oпepaтop пpиcвaивaния.
- •3.1.6. Oпepaтopы упpaвлeния.
- •3.1.7. Oпepaтopы ввoдa/вывoдa.
- •4. Программы, подпрограммы и функции.
- •4.1. Основная программа.
- •4.2. Подпрограммы.
- •4.3. Функции.
- •4.3.1. Внешние функции.
- •4.3.2. Встроенные функции.
- •4.3.3. Функции-операторы.
- •4.4. Параметры.
4. Программы, подпрограммы и функции.
4.1. Основная программа.
Основная программа - это любая программная единица, у которой первый оператор - это не FUNCTION,SUBROUTINE или BLOCK DATA. Первым оператором основной программы может быть оператор PROGRAM. Если у основной программы нет оператора PROGRAM, ей будет присвоено имя MAIN. Имя MAIN тогда не может быть использовано как имя любого другого глобального объекта.
Выполнение программы всегда начинается с первого выполняемого оператора основной программы. Соответственно, в каждой выполняемой программе должна быть только одна основная программа.
4.2. Подпрограммы.
Подпрограмма - это программная единица, которая может быть вызвана из другой программной единицы c помощью оператора CALL. Будучи вызванной, подпрограмма производит набор действий, определенных ее выполняемыми операторами, и затем возвращает управление на оператор, следующий непосредственно за вызвавшим ее оператором, или на оператор, определенный как переменный возврат.
Подпрограмма не возвращает величину прямо, хотя величины могут быть возвращены в вызывающую программную единицу через параметры и COMMON-блоки.
4.3. Функции.
На функцию ссылаются в выражении, и она возвращает величину, которая используется при вычислении этого выражения. Существует три вида функций:
1. Внешние функции
2. Встроенные функции
3. Функции-операторы.
Ссылка на функцию может появиться в арифметическом или логическом выражении. Когда выполняется ссылка на функцию, функция вызывается, а величина результата используется как операнд в выражении, которое содержит ссылку на функцию. Форма ссылки на функцию следующая:
имя-функции ([пар[,пар]...])
имя-функции - это определенное пользователем имя внешней или встроеной функции или функции-оператора.
пар - это фактический параметр.
Правила для параметров функций аналогичны правилам для подпрограмм (за исключением переменного возврата, который недопустим).
4.3.1. Внешние функции.
Внешняя функция определена программной единицей функции. Она начинается оператором FUNCTION и заканчивается оператором END. Она может содержать любые виды операторов, кроме PROGRAM, FUNCTION, SUBROUTINE или BLOCK DATA.
4.3.2. Встроенные функции.
Встроенные функции определены в языке МС-Фортран и доступны для использования в программе на МС-Фортране.
Оператор IMPLICIT не может изменять тип встроенной функции. Для этих встроенных функций, которые допускают различные типы параметров, при одном обращении все параметры должны быть одного и того же типа.
Имя встроенной функции может появиться в операторе INTRINSIC. Имя встроенной функции может также появиться в операторе описания типа, но только если тип тот же самый, что и стандартный тип этой встроенной функции.
Параметры некоторых встроенных функций ограничены назначением этих функций. Например, логарифм отрицательного числа математически не определен и поэтому недопустим.
Многие встроенные функции имеют общие имена, что позволяет ссылаться на функцию без уточнения типа параметров при ссылке. Когда ссылаются на общее имя компилятор выбирает соответствующую относительно специфическую функцию в зависимости от типа параметра(ов) в ссылке на функцию.
Например, функция INT - это общее имя шести чуть отличающихся функций: одна с собственным именем, совпадающим с основным, три с особыми именами (IFIX,IDINT,ICHAR) и две - безымянных (для типов данных COMPLEX*8 и COMPLEX*16).
В дальнейшем REAL эквивалентно REAL*4, DOUBLE PRECISION - REAL*8, a COMPLEX - COMPLEX*8. Если в указанном типе параметра - INTEGER, то тип может быть INTEGER*2 или INTEGER*4. Если указанный тип функции - INTEGER, тип будет целый по умолчанию определенный метакомандой $STORAGE.