Арифметические выражения. Арифметическое выражение формируется из знаков арифметических операций и арифметических операндов. Как выражение, так и входящие в него операнды идентифицируют значения типа целый, вещественный, двойной точности или комплексный. Знаки арифметических операций:
Знак операции Представляемая операция
+ Сложение
— Вычитание
Умножение
/ Деление
* Возведение в степень
Арифметические операции сложения и вычитания могут быть одноместными и двуместными. В случае одноместных операций сложения и вычитания подразумеваемым первым арифметическим операндом является нуль.
Арифметические операнды — это первичное арифметическое выражение, множитель, терм, терм со знаком, простое арифметическое выражение и арифметическое выражение.
Первичное арифметическое выражение — это либо арифметическое выражение, взятое в скобки, либо константа, либо ссылка на переменную, либо ссылка на элемент массива, либо ссылка на функцию.
Множитель — это либо первичное арифметическое выражение, либо конструкция вида:
первичное арифметическое выражение ** первичное арифметическое выражение
Терм — это либо множитель, либо конструкция одного ИЗ ВИДОВ терм/множитель или
терм* множитель
Терм со знаком — это терм, которому непосредственно предшествует знак + или —.
Простое арифметическое выражение — это либо терм, либо два простых арифметических выражения, разделенные знаком + или —.
Арифметическое выражение — это либо простое арифметическое выражение, либо терм со знаком, либо одна из этих двух конструкций, за которой непосредственно следует знак + или и —, за которым непосредственно следует простое арифметическое выражение.
Первичное арифметическое выражение любого типа может возводиться в степень, показателем которой является первичное арифметическое выражение типа целый; при этом получающийся в результате множитель имеет тот же тип, что и возводимое в степень первичное арифметическое выражение. Первичное арифметическое выражение типа вещественный или двойной точности может возводиться в степень, показателем которой является первичное арифметическое выражение типа вещественный или двойной точности; получающийся в результате множитель имеет тип вещественный, если оба упомянутых первичных арифметических выражения были типа вещественный; в остальных случаях он имеет тип двойной точности. Во всех остальных случаях эффект выполнения операции возведения в степень не определен.
При использовании остальных арифметических операций любой допустимый операнд может сочетаться с любым допустимым операндом того же самого типа; получающийся в результате операнд имеет тот же самый тип. Кроме того, допустимый операнд типа вещественный может сочетаться с допустимым операндом типа двойной точности или комплексный; получающийся в результате операнд имеет соответственно тип двойной точности или комплексный.
Отношения. Отношение состоит из двух арифметических выражений, разделенных знаком операции отношения, и принимает значение «истина» или «ложь» в зависимости от выполнения
или невыполнения этого отношения. Одно из арифметических выражений может быть типа вещественный или двойной точности, тогда другое должно быть также типа вещественный или двойной точности (допустимы все четыре сочетания), либо оба арифметических выражения должны быть типа целым. Если в отношении одно из выражений имеет тип вещественный, а другое — тип двойной точности, то результат будет такой же, как и для отношения, в котором правым арифметическим выражением является нуль двойной точности, левым — разность двух исходных арифметических выражений (в исходном порядке), а знак операции отношения тот же самый. Знаки операций отношения:
П
Знак операции
.LT.
.LE.
.EQ.
.NE.
.GT.
.GE.
редставляемая операцияМеньше
Меньше или равно Равно
Не равно
Больше
Больше или равно
Логические выражения. Логическое выражение формируется из знаков логических операций и логических операндов и принимает значения «истина» или «ложь». Знаки логических операций:
П
Знак операции
.OR.
.AND.
.NOT.
редставляемая операцияЛогическое сложение
Логическое умножение
Логическое отрицание
Логические операнды — это первичное логическое выражение, логический множитель, логический терм и логическое выражение.
Первичное логическое выражение — это либо логическое выражение, взятое в скобки, либо отношение, либо логическая константа, либо ссылка на логическую переменную, либо ссылка на элемент логического массива, либо ссылка на логическую функцию.
Логический множитель — это либо первичное логическое выражение, либо знак .NOT., за которым следует первичное логическое выражение.
Логический терм — это либо логический множитель, либо конструкция вида:
логический терм .AND. логический терм
Логическое выражение — это либо логический терм, либо конструкция вида:
логическое выражение .OR. логическое выражение
Вычисление выражений. Часть выражения нуждается в вычислении только в том случае, если это необходимо для установления значения всего этого выражения. Правила формирования выражений определяют и порядок выполнения операций. Необходимо отметить, что вторым операндом операции вычитания является терм, непосредственно следующий за знаком этой операции. Вычисление выражения может производиться в соответствии с любой правильной последовательностью его формирования с учетом следующих ограничений.
Если два операнда соединены знаком операции, то порядок вычисления этих операндов произвольный. Если математическая операция коммутативна и (или) ассоциативна, то это можно использовать для переупорядочивания операндов при условии сохранения целостности выражений в скобках. Значение множителя или терма типа целый — это ближайшее целое, не превосходящее математического значения, представленного этим множителем или термом. При вычислении термов типа целый, содержащих операцию деления, законы ассоциативности и коммутативности не используются, и, следовательно, вычисление таких термов должно производиться слева направо.
Любое использование имени элемента массива требует вычисления его индекса. Вычисление функции, входящей в выражение, не может изменить значения никакого другого операнда в выражении, операторе присваивания или операторе вызова подпрограммы, содержащих эту ссылку на функцию. Тип выражения, в котором встречается индекс или ссылка на функцию, не влияет (и на него не влияет) на вычисление фактических параметров или индекса.
Не может быть вычислен множитель, требующий возведения первичного арифметического выражения, значение которого отрицательно, в степень, показатель которой имеет тип вещественный или двойной точности. Не может быть вычислен множитель, требующий возведения первичного арифметического выражения, значение которого равно нулю, в степень, значение показателя которой также равно нулю.
Не может быть вычислен никакой операнд, значение которого математически не определено.
ПРЕДЛОЖЕНИЯ
Предложения ФОРТРАНа можно разделить на выполняемые и невыполняемые. Выполняемые предложения — операторы — определяют действия; невыполняемые предложения — объявле- 2—310
ния — описывают характеристики и упорядочение данных, способ редактирования данных, вводимые в употребление функции и классификацию программных модулей.
Операторы. Имеется три типа операторов:
операторы присваивания;
операторы управления;
операторы ввода/вывода.
Операторы присваивания. Существует три типа операторов присваивания:
арифметический оператор присваивания;
логический оператор присваивания;
оператор предписания.
Арифметический оператор присваивания. Арифметический оператор присваивания имеет вид
(v — имя переменной или имя элемента массива любого типа, отличного от логического;
е — арифметическое выражение).
Выполнение такого оператора заключается в вычислении вы
ражения е и изменении значения v в соответствии с табл. 1.
Таблица 1
Тип V |
Тип е |
Действие |
Целый |
Целый |
Приев. |
То же |
Вещественный |
Фикс.; Приев. |
» |
Двойной точности |
Фикс.; Приев. |
» |
Комплексный |
Н |
Вещественный |
Целый |
Плав.; Приев. |
То же |
Вещественный |
Приев. |
» |
Двойной точности |
Дв.; Вещ. приев. |
» |
Комплексный |
Н |
Двойной точности |
Целый |
Дв. плав.; Приев. |
То же |
Вещественный |
Дв.; Приев. |
» |
Двойной точности |
Приев. |
» |
Комплексный |
Н |
Комплексный |
Целый |
Н |
То же |
Вещественный |
Н |
» |
Двойной точности |
Н |
|
Комплексный |
Приев. |
Примечания:
«Н»— недопустимая комбинация.
«Приев.» — передача результирующего значения без изменений.
«Вещ. приев».— передача результирующего значения как вещественного данного с максимальной степенью точности.
«Дв.» — вычисление выражения в соответствии с правилами, изложен- 'ными в п. 6.1 (или более точными), и затем «Дв. плав».
«5. «Фикс.» — отбрасывание дробной части результата и преобразование полученного значения в форму целого данного.
«Плав.» — преобразование значения в форму вещественного данного.
«Дв. плав.» — преобразование значения в форму данного двойной точности с максимальной степенью точности.
(Измененная редакция, Изм. № 1).
Логический оператор присваивания. Логический оператор присваивания имеет вид
v = e
(v — имя логической переменной или имя элемента логического массива;
е — логическое выражение).
Выполнение такого оператора заключается в вычислении логического выражения е и присваивании вычисленного значения логическому объекту V.
Оператор предписания. Оператор предписания имеет вид
ASSIGN к ТО і
(к — метка оператора;
і — имя переменной типа целый).
После выполнения такого оператора последующее выполнение любого оператора перехода по предписанию (п. 7.1.2.1.2), использующего эту переменную, приведет к тому, что следующим (п. 9.2) будет выполняться оператор, помеченный предписанной меткой к, при условии, что к этому времени не было переопределения переменной і. Меткой к должен быть помечен оператор в том жё программном модуле, в котором встречается этот оператор предписания.
После того, как переменная типа целый использована в операторе предписания, на нее нельзя ссылаться ни в каком предложении, кроме оператора перехода по предписанию, до тех пор, пока она не будет переопределена (п. 10.2.3).
7.1.2. Операторы управления. Существует восемь типов операторов управления:
операторы перехода;
условный арифметический оператор;
условный логический оператор;
2* ?
І ₽
« а и иw с с ■ ;
оператор вызова подпрограммы;
оператор возврата;
оператор продолжения;
операторы останова и паузы;
оператор цикла.
Метки, используемые в операторах управления, должны помечать операторы в том же программном модуле, в котором используются эти операторы управления.
7.1.1.3, 7.1.2. (Измененная редакция, Изм. № 1).
Операторы перехода. Существует три типа операторов перехода:
безусловный оператор перехода;
оператор перехода по предписанию;
вычисляемый оператор перехода.
Безусловный оператор перехода. Безусловный оператор перехода имеет вид
GOTO к
(к — метка оператора).
Результат выполнения этого оператора состоит в том, что следующим будет выполняться оператор, помеченный этой меткой к.
Оператор перехода по предписанию. Оператор перехода по предписанию имеет вид
GOTO і, (k,,k2,....,kj
(і — имя переменной типа целый; каждое kj— метка оператора).
К моменту выполнения оператора перехода по предписанию переменной і должно быть присвоено текущее значение предшествующим выполнением оператора предписания (п. 7.1.1.3); этим значением должна быть одна из меток списка, заключенного в скобки. Результат выполнения такого оператора перехода состоит в том, что следующим будет выполняться оператор, помеченный этой меткой.
Вычисляемый оператор перехода. Вычисляемый оператор перехода имеет вид
GOTO (kb k2,..„ kJ, і
(каждое к^ — метка оператора;
і — имя переменной типа целый).
Результат выполнения этого оператора состоит в том, что следующим будет выполняться оператор, помеченный меткой kj где і0 — значение переменной і к моменту выполнения данного оператора перехода. Действие этого оператора определено только для і0, удовлетворяющих условию 1 <і0<п (см. пп. 10.2.8. и 10.3 относительно использования переменной типа целый в вычисляемом операторе перехода).