1. Арифметические выражения. Арифметическое выражение формируется из знаков арифметических операций и арифметиче­ских операндов. Как выражение, так и входящие в него операнды идентифицируют значения типа целый, вещественный, двойной точности или комплексный. Знаки арифметических операций:

Знак операции Представляемая операция

+ Сложение

— Вычитание

  1. Умножение

/ Деление

  1. * Возведение в степень

Арифметические операции сложения и вычитания могут быть одноместными и двуместными. В случае одноместных операций сложения и вычитания подразумеваемым первым арифметиче­ским операндом является нуль.

Арифметические операнды — это первичное арифметическое выражение, множитель, терм, терм со знаком, простое арифмети­ческое выражение и арифметическое выражение.

Первичное арифметическое выражение — это либо арифмети­ческое выражение, взятое в скобки, либо константа, либо ссыл­ка на переменную, либо ссылка на элемент массива, либо ссыл­ка на функцию.

Множитель — это либо первичное арифметическое выражение, либо конструкция вида:

первичное арифметическое выражение ** первичное арифмети­ческое выражение

Терм — это либо множитель, либо конструкция одного ИЗ ВИ­ДОВ терм/множитель или

терм* множитель

Терм со знаком — это терм, которому непосредственно пред­шествует знак + или —.

Простое арифметическое выражение — это либо терм, либо два простых арифметических выражения, разделенные знаком + или —.

Арифметическое выражение — это либо простое арифметиче­ское выражение, либо терм со знаком, либо одна из этих двух конструкций, за которой непосредственно следует знак + или и —, за которым непосредственно следует простое арифметическое вы­ражение.

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

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

  1. Отношения. Отношение состоит из двух арифметических выражений, разделенных знаком операции отношения, и прини­мает значение «истина» или «ложь» в зависимости от выполнения

  2. или невыполнения этого отношения. Одно из арифметических выражений может быть типа вещественный или двойной точности, тогда другое должно быть также типа вещественный или двойной точности (допустимы все четыре сочетания), либо оба арифметических выражения должны быть типа целым. Если в отношении одно из выражений имеет тип вещественный, а дру­гое — тип двойной точности, то результат будет такой же, как и для отношения, в котором правым арифметическим выражением является нуль двойной точности, левым — разность двух исход­ных арифметических выражений (в исходном порядке), а знак операции отношения тот же самый. Знаки операций отношения:

П

Знак операции

.LT.

.LE.

.EQ.

.NE.

.GT.

.GE.

редставляемая операция

Меньше

Меньше или равно Равно

Не равно

Больше

Больше или равно

  1. Логические выражения. Логическое выражение формиру­ется из знаков логических операций и логических операндов и принимает значения «истина» или «ложь». Знаки логических опе­раций:

П

Знак операции

.OR.

.AND.

.NOT.

редставляемая операция

Логическое сложение

Логическое умножение

Логическое отрицание

Логические операнды — это первичное логическое выражение, логический множитель, логический терм и логическое выражение.

Первичное логическое выражение — это либо логическое вы­ражение, взятое в скобки, либо отношение, либо логическая кон­станта, либо ссылка на логическую переменную, либо ссылка на элемент логического массива, либо ссылка на логическую функ­цию.

Логический множитель — это либо первичное логическое вы­ражение, либо знак .NOT., за которым следует первичное логи­ческое выражение.

Логический терм — это либо логический множитель, либо кон­струкция вида:

логический терм .AND. логический терм

Логическое выражение — это либо логический терм, либо конструкция вида:

логическое выражение .OR. логическое выражение

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

Если два операнда соединены знаком операции, то порядок вычисления этих операндов произвольный. Если математическая операция коммутативна и (или) ассоциативна, то это можно ис­пользовать для переупорядочивания операндов при условии со­хранения целостности выражений в скобках. Значение множителя или терма типа целый — это ближайшее целое, не превосходя­щее математического значения, представленного этим множите­лем или термом. При вычислении термов типа целый, содержа­щих операцию деления, законы ассоциативности и коммутатив­ности не используются, и, следовательно, вычисление таких тер­мов должно производиться слева направо.

Любое использование имени элемента массива требует вы­числения его индекса. Вычисление функции, входящей в выра­жение, не может изменить значения никакого другого операнда в выражении, операторе присваивания или операторе вызова подпрограммы, содержащих эту ссылку на функцию. Тип выра­жения, в котором встречается индекс или ссылка на функцию, не влияет (и на него не влияет) на вычисление фактических пара­метров или индекса.

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

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

  1. ПРЕДЛОЖЕНИЯ

Предложения ФОРТРАНа можно разделить на выполняемые и невыполняемые. Выполняемые предложения — операторы — определяют действия; невыполняемые предложения — объявле- 2—310

ния — описывают характеристики и упорядочение данных, способ редактирования данных, вводимые в употребление функции и клас­сификацию программных модулей.

  1. Операторы. Имеется три типа операторов:

операторы присваивания;

операторы управления;

операторы ввода/вывода.

  1. Операторы присваивания. Существует три типа операто­ров присваивания:

арифметический оператор присваивания;

логический оператор присваивания;

оператор предписания.

  1. Арифметический оператор присваивания. Арифметиче­ский оператор присваивания имеет вид

(v — имя переменной или имя элемента массива любого типа, от­личного от логического;

е — арифметическое выражение).

Выполнение такого оператора заключается в вычислении вы­

ражения е и изменении значения v в соответствии с табл. 1.

Таблица 1

Тип V

Тип е

Действие

Целый

Целый

Приев.

То же

Вещественный

Фикс.; Приев.

»

Двойной точности

Фикс.; Приев.

»

Комплексный

Н

Вещественный

Целый

Плав.; Приев.

То же

Вещественный

Приев.

»

Двойной точности

Дв.; Вещ. приев.

»

Комплексный

Н

Двойной точности

Целый

Дв. плав.; Приев.

То же

Вещественный

Дв.; Приев.

»

Двойной точности

Приев.

»

Комплексный

Н

Комплексный

Целый

Н

То же

Вещественный

Н

»

Двойной точности

Н


Комплексный

Приев.

Примечания:

  1. «Н»— недопустимая комбинация.

  2. «Приев.» — передача результирующего значения без изменений.

  3. «Вещ. приев».— передача результирующего значения как вещественного данного с максимальной степенью точности.

  4. «Дв.» — вычисление выражения в соответствии с правилами, изложен- 'ными в п. 6.1 (или более точными), и затем «Дв. плав».

«5. «Фикс.» — отбрасывание дробной части результата и преобразование по­лученного значения в форму целого данного.

  1. «Плав.» — преобразование значения в форму вещественного данного.

  2. «Дв. плав.» — преобразование значения в форму данного двойной точ­ности с максимальной степенью точности.

(Измененная редакция, Изм. № 1).

  1. Логический оператор присваивания. Логический опера­тор присваивания имеет вид

v = e

(v — имя логической переменной или имя элемента логического массива;

е — логическое выражение).

Выполнение такого оператора заключается в вычислении ло­гического выражения е и присваивании вычисленного значения логическому объекту V.

  1. Оператор предписания. Оператор предписания имеет вид

ASSIGN к ТО і

(к — метка оператора;

і — имя переменной типа целый).

После выполнения такого оператора последующее выполнение любого оператора перехода по предписанию (п. 7.1.2.1.2), исполь­зующего эту переменную, приведет к тому, что следующим (п. 9.2) будет выполняться оператор, помеченный предписанной меткой к, при условии, что к этому времени не было переопределения переменной і. Меткой к должен быть помечен оператор в том жё программном модуле, в котором встречается этот оператор пред­писания.

После того, как переменная типа целый использована в опе­раторе предписания, на нее нельзя ссылаться ни в каком пред­ложении, кроме оператора перехода по предписанию, до тех пор, пока она не будет переопределена (п. 10.2.3).

7.1.2. Операторы управления. Существует восемь типов опе­раторов управления:

операторы перехода;

условный арифметический оператор;

условный логический оператор;

2* ?

І

« а и иw с с ■ ;

оператор вызова подпрограммы;

оператор возврата;

оператор продолжения;

операторы останова и паузы;

оператор цикла.

Метки, используемые в операторах управления, должны по­мечать операторы в том же программном модуле, в котором ис­пользуются эти операторы управления.

7.1.1.3, 7.1.2. (Измененная редакция, Изм. № 1).

  1. Операторы перехода. Существует три типа операторов перехода:

безусловный оператор перехода;

оператор перехода по предписанию;

вычисляемый оператор перехода.

  1. Безусловный оператор перехода. Безусловный опера­тор перехода имеет вид

GOTO к

(к — метка оператора).

Результат выполнения этого оператора состоит в том, что сле­дующим будет выполняться оператор, помеченный этой меткой к.

  1. Оператор перехода по предписанию. Оператор пере­хода по предписанию имеет вид

GOTO і, (k,,k2,....,kj

(і — имя переменной типа целый; каждое kj— метка оператора).

К моменту выполнения оператора перехода по предписанию переменной і должно быть присвоено текущее значение предшест­вующим выполнением оператора предписания (п. 7.1.1.3); этим значением должна быть одна из меток списка, заключенного в скобки. Результат выполнения такого оператора перехода сос­тоит в том, что следующим будет выполняться оператор, поме­ченный этой меткой.

  1. Вычисляемый оператор перехода. Вычисляемый опе­ратор перехода имеет вид

GOTO (kb k2,..„ kJ, і

(каждое к^ — метка оператора;

і — имя переменной типа целый).

Результат выполнения этого оператора состоит в том, что сле­дующим будет выполняться оператор, помеченный меткой kj где і0 — значение переменной і к моменту выполнения данного оператора перехода. Действие этого оператора определено только для і0, удовлетворяющих условию 1 <і0<п (см. пп. 10.2.8. и 10.3 относительно использования переменной типа целый в вычисляе­мом операторе перехода).