Арифметические выражения

Содержание

Слайд 2

ВЫРАЖЕНИЯ. В Фортране существует четыре класса выражений : Арифметические. Символьные. Отношения. Логические.

ВЫРАЖЕНИЯ.

В Фортране существует четыре класса выражений :
Арифметические.
Символьные.
Отношения.
Логические.

Слайд 3

Арифметические выражения Результатом арифметических выражений являются величины типов INTEGER, REAL, DOUBLE

Арифметические выражения

Результатом арифметических выражений являются величины типов INTEGER, REAL, DOUBLE PRECISION

или COMPLEX.
Простейшие виды арифметических выражений - это:
Константы.
Использование переменных.
Использование элементов массивов.
Использование функций.
Слайд 4

Используемые величины переменных или элементов массивов должны быть определены до того,

Используемые величины переменных или элементов массивов должны быть определены до того,

как они появятся в арифметическом выражении.
Величины целых переменных должны быть арифметическими, а не величинами меток операторов, установленными оператором ASSIGN.
Слайд 5

АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ. Сложные арифметические выражения создаются из простейших форм с использованием скобок и арифметических операторов.

АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ.

Сложные арифметические выражения создаются из простейших форм с использованием скобок

и арифметических операторов.
Слайд 6

АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ. Все операторы могут быть использованы как бинарные, т.е. стоящие

АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ.

Все операторы могут быть использованы как бинарные, т.е. стоящие между

двумя операндами арифметического выражения.

Плюс (+) и минус (-) могут быть также унарными и предшествовать какому-либо одиночному оператору.

Операции равного приоритета, за исключением возведения в степень выполняются слева направо.

Возведение в степень выполняется справа налево.

Каждое из следующих выражений слева эквивалентно выражению справа :

Слайд 7

Фортран запрещает ставить два оператора подряд. нельзя: A * * -

Фортран запрещает ставить два оператора подряд.
нельзя: A * * - B
но

можно: A * * (- B)
Слайд 8

Унарный минус имеет наименьший приоритет. Поэтому выражение -А**В понимается как -(А**В).

Унарный минус имеет наименьший приоритет.
Поэтому выражение -А**В
понимается как -(А**В).

Слайд 9

АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ. Деление целых Результатом деления двух целых чисел является величина,

АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ.

Деление целых

Результатом деления двух целых чисел является величина, равная математическому

частному двух этих величин, округленному до целого в сторону нуля.

Поэтому 7/3 превращается в 2,
а (-7)/3 превращается в -2.
Как 9/10, так и 9/(-10) равны нулю.

Слайд 10

АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ. Преобразования типов арифметических операндов Когда в арифметическом выражении все

АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ.

Преобразования типов арифметических операндов

Когда в арифметическом выражении все операнды одного

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

Когда операнды разного типа, типом результата выражения является тип операнда максимального ранга.

Ранг операнда зависит от его типа данных соответственно следующему списку :
INTEGER * 2 (низший ранг)
INTEGER * 4
REAL * 4
REAL * 8
COMPLEX * 8
COMPLEX * 16 (высший ранг)

Слайд 11

ПРЕОБРАЗОВАНИЯ ТИПОВ АРИФМЕТИЧЕСКИХ ОПЕРАНДОВ. Например: результатом операции над элементами INTEGER*2 и

ПРЕОБРАЗОВАНИЯ ТИПОВ АРИФМЕТИЧЕСКИХ ОПЕРАНДОВ.

Например:

результатом операции над элементами
INTEGER*2 и REAL*4
будет

величина, относящаяся к типу данных
REAL*4.

Специальный случай:

операция над операндами типов
REAL*8 и COMPLEX*8
породит COMPLEX*16, а не COMPLEX*8.

Слайд 12

ПРЕОБРАЗОВАНИЯ ТИПОВ АРИФМЕТИЧЕСКИХ ОПЕРАНДОВ. Целые операции выполняются только над целыми операндами.

ПРЕОБРАЗОВАНИЯ ТИПОВ АРИФМЕТИЧЕСКИХ ОПЕРАНДОВ.

Целые операции выполняются только над целыми операндами.

Дробный

результат от деления в целой арифметике превращается в целое, а не округляется.

Поэтому следующие выражение равно нулю, а не единице : 1/4 + 1/4 + 1/4 + 1/4

Слайд 13

ПРЕОБРАЗОВАНИЯ ТИПОВ АРИФМЕТИЧЕСКИХ ОПЕРАНДОВ. Действительные операции выполняются только над действительными операндами

ПРЕОБРАЗОВАНИЯ ТИПОВ АРИФМЕТИЧЕСКИХ ОПЕРАНДОВ.

Действительные операции выполняются только над действительными операндами или

комбинацией действительного и целого операндов.

Но в следующем операторе сначала осуществляется целое деление I на J, а потом действительное умножение результата на X :
Y = (I/J) * X

Слайд 14

Символьные выражения Результатом символьных выражений является тип CHARACTER. Формы символьных выражений

Символьные выражения

Результатом символьных выражений является тип CHARACTER.
Формы символьных выражений следующие :
Символьные

константы.
Ссылки на символьные переменные.
Ссылки на элементы символьных массивов.
Любые символьные выражения, заключенные в скобки.
Ссылки на символьные функции.
Слайд 15

В символьных выражениях нет операторов.

В символьных выражениях нет операторов.

Слайд 16

Выражения отношения Выражения отношения сравнивают величины двух арифметических или двух символьных выражений

Выражения отношения

Выражения отношения сравнивают величины двух арифметических или двух символьных выражений

Слайд 17

ВЫРАЖЕНИЯ ОТНОШЕНИЯ. Результатом выражения отношения является тип LOGICAL. Арифметическое выражение нельзя

ВЫРАЖЕНИЯ ОТНОШЕНИЯ.

Результатом выражения отношения является тип LOGICAL.

Арифметическое выражение нельзя сравнивать с

символьным, пока не определена метакоманда $NOTSTRICT.

В этом случае арифметические выражения сравнимы с символьными.

Для сравнения величин в выражениях отношения можно использовать любой оператор, указанный в таблице:

Слайд 18

ВЫРАЖЕНИЯ ОТНОШЕНИЯ. Все операторы отношения бинарные и появляются между двумя операндами.

ВЫРАЖЕНИЯ ОТНОШЕНИЯ.

Все операторы отношения бинарные и появляются между двумя операндами.

Среди операторов

отношения нет относительного старшинства или сочетательности

поэтому выражение следующего вида нарушает правила типов для операндов: A .LT. B .NE. C

Выражения отношения могут появляться только в логических выражениях.

Слайд 19

ВЫРАЖЕНИЯ ОТНОШЕНИЯ. Выражения отношения с арифметическими операндами могут иметь один операнд

ВЫРАЖЕНИЯ ОТНОШЕНИЯ.

Выражения отношения с арифметическими операндами могут иметь один операнд типа

INTEGER и один операнд типа REAL

В этом случае перед вычислением выражения отношения целый операнд будет преобразован в тип REAL.

Выражения отношения символьных операндов сравнивают положение этих операндов в упорядоченной последовательности ASCII

Операнд является меньше чем другой, если он появляется раньше в упорядоченной последовательности.
Если сравниваются операнды разной длины, то более короткий рассматривается как дополненный справа пробелами до такой же длины как и длинный.

Слайд 20

Логические выражения Результатом логического выражения является величина типа LOGICAL. Простейшие формы

Логические выражения

Результатом логического выражения является величина типа LOGICAL.
Простейшие формы логических выражений

следующие:
Логические константы.
Ссылки на логические переменные.
Ссылки на элементы логических массивов.
Ссылки на логические функции.
Выражения отношения.
Слайд 21

ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ. Сложные логические выражения состоят из простейших логических форм с

ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ.

Сложные логические выражения состоят из простейших логических форм с использованием

скобок и логических операторов, указанных в таблице.
Слайд 22

ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ Операторы .AND., .OR., .EQV., .NEQV. являются бинарными и появляются

ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ

Операторы .AND., .OR., .EQV., .NEQV. являются бинарными и появляются между

двумя операндами логических выражений.

Оператор .NOT. - унарный и предшествует своему операнду.

Два .NOT. не могут соседствовать друг с другом.
Хотя A .AND. .NOT. B - это пример допустимого выражения с двумя операторами подряд.

Слайд 23

ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ. A .AND. B .AND. C эквивалентно (A .AND. B)

ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ.

A .AND. B .AND. C
эквивалентно (A .AND. B) .AND.

C
.NOT. A .OR. B .AND. C
выполняется как (.NOT. A) .OR. (B .AND. C)
.NOT. A . EQV. B .OR. C .NEQV. D .AND. E
выполняется как ((.NOT. A) .EQV. (B .OR. C)) .NEQV. (D .AND. E)

Операции равного приоритета выполняются слева направо, поэтому, например:

Слайд 24

ПРИОРИТЕТЫ ОПЕРАТОРОВ. Когда в одном выражении встречаются арифметические, логические операторы и

ПРИОРИТЕТЫ ОПЕРАТОРОВ.

Когда в одном выражении встречаются арифметические, логические операторы и операторы

отношения, они выполняются со следующими приоритетами :
Арифметические (высший).
Отношения (средний).
Логические (низший).
Слайд 25

ПРАВИЛА ВЫЧИСЛЕНИЯ ВЫРАЖЕНИЙ. Любая переменная, массив, элемент или функция, на которые

ПРАВИЛА ВЫЧИСЛЕНИЯ ВЫРАЖЕНИЙ.

Любая переменная, массив, элемент или функция, на которые ссылаются

в выражении, должны быть определены до момента ссылки.
Целые переменные должны быть определены арифметической величиной, не величиной метки оператора, устанавливаемой оператором ASSIGN.
Слайд 26

Математически неопределенные арифметические операции, такие как деление на нуль, возведение нулевого

Математически неопределенные арифметические операции, такие как деление на нуль, возведение нулевого

операнда в нулевую или отрицательную степень и возведение отрицательного операнда в степень типа REAL запрещены.
Слайд 27

Ссылки на элемент массива Ссылка на элемент массива определяет один элемент

Ссылки на элемент массива

Ссылка на элемент массива определяет один элемент массива.
Ее

синтаксис следующий:
массив ( индекс [, индекс ] . . . )
Где
массив - это имя массива
индекс - это индексное выражение, являющиеся целым выражением для выбора заданного элемента массива.