- •Казанский Государственный Технологический Университет
- •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. Параметры.
2.5.2. Деление целых.
Результатом деления двух целых чисел является величина, равная математическому частному двух этих величин, округленного до целого в сторону нуля. Поэтому 7/3 превращается в 2, а (-7)/3 превращается в -2. Как 9/10, так и 9/(-10) равны нулю.
2.5.3. Преобразования типов арифметических операндов.
Когда в арифметическом выражении все операнды одного типа, то величина, являющаяся результатом этого выражения, этого же типа.
Когда операнды разного типа, типом результата выражения является тип операнда максимального ранга.
Ранг операнда зависит от его типа данных соответсвенно следующему списку:
1. INTEGER * 2 (низший ранг)
2. INTEGER * 4
3. REAL * 4
4. REAL * 8
5. COMPLEX * 8
6. COMPLEX * 16 (высший ранг)
Например, результатом операции над элементами INTEGER*2 и REAL*4 будет величина, относящаяся к типу данных REAL*4.
Специальный случай: операция над операндами типов REAL*8 и COMPLEX*8 породит COMPLEX*16, а не COMPLEX*8.
Тип данных всего выражения - это тип данных результата последней операции, выполненной при вычислении всего выражения.
Типы данных операций могут быть INTEGER*2, INTEGER*4, REAL*4, REAL*8, COMPLEX*8 или COMPLEX*16.
Целые операции выполняются только над целыми операндами. Дробный результат от деления в целой арифметике превращается в целое, а не округляется. Поэтому следующее выражение равно нулю, а не единице:
1/4 + 1/4 + 1/4 + 1/4
Распределение памяти для типа INTEGER без указания длины *2 или *4 в определении типа зависит от использования метакоманды $STORAGE.
Действительные операции выполняются только над действительными операндами или комбинацией действительного и целого операндов. Целые операнды сначала преобразуются в действительные прибавлением к каждому дробной части равной нулю. Затем для вычисления выражения используется действительная арифметика. Но в следующем операторе сначало осуществляется целое деление I на J, а потом действительное умножение результата на X:
Y = (I/J) * X
2.5.4. Символьные выражения.
Результатом символьных выражений является тип CHARACTER. Формы символьных выражений следующие:
1. Символьные константы.
2. Ссылки на символьные переменные.
3. Ссылки на элементы символьных массивов.
4. Любые символьные выражения, заключенные в скобки.
5. Ссылки на символьные функции.
В символьных выражениях нет операторов.
2.5.5. Выражения отношения.
Выражения отношения сравнивают величины двух арифметических или двух символьных выражений. Арифметическое выражение нельзя сравнивать с символьным, пока не определена метакоманда $NOTSTRICT. В этом случае арифметические выражения сравнимы с символьными. Результатом выражения отношения является тип LOGICAL. Для сравнеия величин в выражениях отношения можно использовать любой оператор, указанный в таблице 3.
Таблица 3 - Операторы отношения
-
Оператор
Операция
.LT.
Меньше чем
.LE.
Меньше или равно
.EQ.
Равно
.NE.
Не равно
.GT.
Больше чем
.GE.
Больше или равно
Все операторы отношения бинарные и появляются между двумя операндами. Среди операторов отношения нет относительного старшинства или сочетательности и поэтому выражение следующего вида нарушает правила типов для операндов:
A .LT. B .NE. C
Выражения отношения могут появляться только в логических выражениях.
Выражения отношения с арифметическими операндами могут иметь один операнд типа INTEGER и один операнд типа REAL. В этом случае перед вычислением выражения отношения целый операнд будет преобразован в тип REAL.
Выражения отношения символьных операндов сравнивают положение этих операндов в упорядоченной последовательности ASCII. Операнд является меньше чем другой, если он появляется раньше в упорядоченной последовательности. Если сравниваются операнды разной длины, то более короткий рассматривается как доплненный справа пробелами до такой же длины, как и длинный.