Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GRIGOREV.DOC
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
608.26 Кб
Скачать

2.3. Описание переменных, правила умолчания, операторы

IMPLICIT, DATA, PARAMETER

Переменные в языке FORTRAN описываются в виде:

тип имя1 , имя2 , ...

Язык FORTRAN допускает использование нигде не описанных переменных, в этом случае их тип определяется правилами умолчания: идентификаторы, начинающиеся с I, J, K, L, M, N, имеют тип INTEGER, все остальные - тип REAL. Стандартные правила умолчания для неописанных переменных можно изменить с помощью оператора IMPLICIT:

Implicit тип ( буквы ) , ...

Здесь тип - описание типа, буквы - список латинских букв. В списке букв можно использовать конструкцию буква - буква , задающую диапазон, например:

IMPLICIT REAL*8 (D,F-H,W-Z,A), INTEGER*1 (B,C,I-K)

Явное описание типа переменной во всех случаях отменяет правило умолчания для этой переменной. Правила умолчания можно полностью отменить оператором IMPLICIT NONE. Если в программе есть такой оператор, то каждая переменная должна быть явно описана.

Инициализировать переменные, т.е. присвоить им начальные значения можно в операторе DATA :

DATA список имен / список констант /

список имен - это имена переменных, разделенные запятыми, список констант - константы, разделенные запятыми. Несколько повторяющихся значений можно записать в виде повторитель * значение , где повторитель - целая константа, например:

DATA a,b,i,j,k,c /1.2,3.141,2*5,-100,0/,x,y/2*0/

Операторы DATA должны располагаться в тексте программы после всех операторов описания и до первого исполняемого оператора. Переменные также могут инициализироваться непосредственно в операторе описания, например:

REAL a/1.2/, b/3.141/, c/0/, x/0/, y/0/

INTEGER i/5/, j/5/, k/-100/

но в этом случае нельзя инициализировать список имен, каждая переменная должна быть инициализирована отдельно (но повторители при инициализации массивов использовать можно).

Для определения именованных констант служит оператор PARAMETER, аналогичный оператору CONST в языке PASCAL:

PARAMETER ( имя = константное выражение , ... )

Можно предварительно описать тип константы в операторе описания типа, например:

LOGICAL*1 TRUE

REAL*4 b,c

PARAMETER(TRUE=.TRUE.,b=-1.5353,c=2)

PARAMETER(Number=#FF)

Именованные константы могут использоваться точно так же, как и неименованные, в частности, при инициализации переменных в операторах DATA или операторах описания.

2.4. Оператор присваивания. Операции

Оператор присваивания записывается в виде:

имя = выражение

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

В языке FORTRAN существует пять арифметических операций: сложение + , вычитание - , умножение * , деление / , возведение в степень ** . Операция ** имеет наивысший приоритет и выполняется в последовательности справа налево, остальные операции выполняются слева направо. Операция деления / для вещественных операндов означает вещественное деление, для целых операндов - деление нацело (точно так же, как в языке C). Если операнды арифметической операции имеют разные типы, то они приводятся к одному типу согласно правилу старшинства типов : INTEGER*1 < INTEGER*2 < INTEGER*4 < REAL*4 < REAL*8 < COMPLEX*8 < COMPLEX*16 . Если один операнд имеет тип REAL*8, а второй - COMPLEX*8, то оба они приводятся к типу COMPLEX*16. Кроме того, компилятор следит за корректностью выполнения целочисленных вычислений, поэтому результат арифметической операции над операндами INTEGER*1 будет иметь тип INTEGER*2, а результат арифметической операции над операндами INTEGER*2 будет иметь тип INTEGER*4.

Операции сравнения записываются в виде .LT. - меньше, .LE. - меньше либо равно, .GT. - больше, .GE. - больше либо равно, .EQ. - равно, .NE. - не равно. Они применимы к арифметическим и символьным операндам. Для комплексных операндов определены лишь операции .EQ. и .NE. Результат операции сравнения имеет тип LOGICAL.

Логические операции применимы к логическим операндам и записываются в виде .NOT. - логическое отрицание, .AND. - логическое “и”, .OR. - логическое “или” , .EQV. - эквивалентно, .NEQV. - не эквивалентно; обратите внимание, что ни одна операция сравнения, в том числе .EQ. и .NE., к логическим операндам неприменима.

Для символьных операндов определена только одна операция - операция сцепления // .

Приоритеты операций в языке FORTRAN определены следующим образом : ** > { * , / } > { + , - } > // > {.EQ. , .NE. , .LT. , .LE. , .GT. , .GE.} > .NOT. > .AND. > .OR. > .EQV. > .NEQV.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]