Для числовых типов Фортрана (INTEGER, REAL и COMPLEX) всех разновидностей (п. 3.4) определены арифметические операции (Таблица. 4.2) и скобочные конструкции, соответствующие стандартным (математическим) правилам арифметики.
С помощью арифметических операций со скобочными конструкциями и числовых объектов данных (переменных, а также буквальных и именованных констант) можно программировать арифметические выражения любой сложности.
Операторы «+» и «–», представленные выше могут применяться для унарных операций, например для выражений именованными объектами как: +Z или X**(–Y) или буквальными константами числовых типов: – (–1). Отметим, что в последнем случае унарный минус применяется к буквальной константе «–1», для которой ее знак является неотъемлемой частью.
Вернемся к бинарным операциям (сложению, вычитанию, умножению и делению). Наивысшим приоритетом (в 1-ю очередь), при вычислении арифметических выражений обладают скобочные конструкции. Если имеет место вложенность скобочных конструкций, то сначала будет произведен расчет выражений во внутренних скобках. Между собой скобочные конструкции имеют равный приоритет – т.е вычисляются по мере их появления в выражении.
В последнюю очередь (по порядку, с равным приоритетом) производится сложение и вычитание – перед сложением и вычитанием с равным приоритетом (в порядке следования в выражении) выполняется умножение или деление. Если в выражении присутствует возведение в степень, то его вычисление должно предшествовать умножению или делению, но при этом осуществляться после вычислений в скобках (при наличии таковых).
Приоритет арифметических вычислений рассмотрен на примере вычисления арифметического выражения:
Сначала на печать выводится расчет по единой формуле, а затем разбирается ее пошаговое вычисление (Пример 4.2). Критерием правильности пошаговых вычислений является их совпадение с результатом, полученным по единой формуле.
Необходимо отметить важную особенность операции возведения в степень. Например, вычисление выражения A**B**C (Пример 4.3), так же как вычисление выражения с любым количеством последовательных возведений в степень, всегда выполняется справа налево. Т.е. сначала будет вычислено B**C, а полученный результат послужит степенью, в которую будет возведено A.
Важнейшим вопросом компьютерных вычислений является преобразование типов данных, одновременно присутствующих в арифметических выражениях. Арифметическое выражение может содержать операнды нескольких числовых типов Фортрана. При этом операнды всегда попарно связаны арифметическими операциями. Перед выполнением каждой арифметической операции, операнды проверяются на соответствие типов и если типы операндов (включая KIND) совпадают, то результат будет того же типа.
Если же типы (или KIND при совпадении типов) различны, то перед выполнением операции производится сравнение типов операндов. Операнд с более мощным типом никак не преобразуется, а операнд с менее мощным типом преобразуется к более мощному типу, таким же будет и тип результата операции. Мощность числового типа возрастает по цепочке INTEGER–REAL–COMLEX, а в пределах каждого типа растет с увеличением значения параметра разновидности KIND.
Зависимость типа результата арифметической операции, если это сложение, вычитание, умножение или деление, в зависимости от типов операндов представлена в Таблице 4.3, а операции возведения в степень соответствует Таблица 4.4.