Выражения
В языке существует четыре класса выражений:
Результатом вычисления индексного выражения в фиксированной точке T области являются координаты точки T' области, которые определяются по следующим правилам:
все имена индексных конструкций, входящих в индексное выражение, заменяются на соответствующие им списки индексных выражений из описания индексной конструкции MACRO INDEX
индексы заменяются на указанные константные выражения, значения координат точки T (с учетом индексного смещения, если оно задано) или значения других указанных индексов в точке T
Порядок выполнения операций при вычислении арифметического выражения следующий:
1. вычисление индексных выражений
2. определение фактических параметров функций
3. выполнение операций внутри скобок ( и )
4. выполнение операций возведения в степень **
5. выполнение операций умножения * и деления /
6. выполнение операций сложения + и вычитания -
Если операций уровней 3, 5, 6 несколько то они производятся слева направо, для уровня 4 - справа налево.
Тип результата арифметического выражения определяется типами результатов операций, выполняемых при вычислении арифметического выражения с учетом приведенного выше порядка выполнения операций.
Тип результата операции:
целый, если оба операнда типа целый
двойной, если хотя бы один операнд типа двойной
вещественный иначе
Примеры арифметических выражений:
AL12[J=2*M-1]+STEPLP*JJ
Q+1.0D5/((R[Q-1]-R)*(R[Q-1]-R[Q+1]))
CN*TRAP(STEP, 2*MV+1, MMR ON POLL)
Константное выражение является частным случаем арифметического выражения.
Порядок выполнения операций при вычислении условного (логического) выражения:
1. вычисление арифметических выражений
2. выполнение операций внутри скобок ( и )
3. вычисление отношений =,>,<,>=,<=,<>,><
4. выполнение операций логического отрицания NOT
5. выполнение операций логического умножения AND
6. выполнение операций логического сложения OR
Если операций уровней 2, 3, 5, 6 несколько то они производятся слева направо, для уровня 4 - справа налево.
Примеры логических выражений:
ABS(MOD-X1+Y1)<=1.0D-20
NOT (II=(2*N+1)*(2*NV+1) AND NU=0)
I=J+1