Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PP_KR22.doc
Скачиваний:
5
Добавлен:
10.12.2018
Размер:
377.86 Кб
Скачать
  1. Операторы языка Фортран 90

1. Оператор присваивания: <переменная> = <выражение>

** - возведение в степень

2. Логические отношения:

.EQ, .NE, .LT, .GT, .GE, .LE

3. Логические операции:

.NOT, .AND, .OR, .XOR

4. Логические константы:

.TRUE, .FALSE

Переход GOTO <метка>

Логический IF <логическое выражение> <оператор1> <оператор2>

Арифметический IF <арифметическое выражение> (M1, M2, M3)

Если меньше нуля, то переход на M1, равно нулю M2, больше M3.

Цикл: DO <метка> <оператор цикла> = <начальное значение>, <верхняя граница>

<тело цикла>

<метка>

Оператор CONTINUE – аналогия break

Вызов процедуры CALL <имя процедуры> (список операторов)

Операторы ввода и вывода В языке фортран осуществляется форматный ввод и вывод, т.е. операторы ввода и вывода применяются в паре с форматом, которое может быть помещено в любой части программы. Обычно номер канала: ввода 5, вывода 6.

(READ (№ канала, метка формата) список ввода. WRITE (№ канала) список вывода.)

Метка формата это FORMAT (I4, F8.3 …). Каждая спецификация может иметь кратность повторения и заключаться в скобки : 2(4I4,5F8.3). Работает как цикл. Первый вывод при выводе – управляющий: 1X. Для размещения введенного формата есть спецификации целых I, (доп. еще E, F), затем идет число позиции, например I4. Для F – F8.3, затем число позиций после запятой. Для E10.5.1 : второе – для мантиссы, а третье для изображения чисел после запятой. Для порядка обозначатся E+01. Спецификация L – для логических переменных (например, L4), спецификация X – пробег (2X – два пробега)

Для ввода/вывода массива можно использовать неявный цикл

DIMENSION A(5), B(3,3)

WRITE (6,1) ((B(I,J), J=1,3), I=1,3)

1FORMAT(1X,3F8.3)

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

REAL X(10,10), Y(40), Z(-9:10)

X(10,:) = 2.9 + Y(2:40:2) + SQR(Z)

X(:,3) = 3.5

Здесь оператор присваивания выполняется над секциями массивов в обычном порядке, т.е. каждому элементу секции слева ставится в соответствие элемент секции, получающийся при вычислении выражения справа. Элементы секции перебираются слева направо. Условием является согласованность секций в левой и правой части.

Пример:

REAL X(10)

…………

X(1:10)=X(10:1:-1)

Такой оператор присваивания – встроенный, его особенности: 1)сначала выполняются все операции в правой части над элементами исходных массивов, 2)затем все операции в индексной части слева. После этого → само присваивание. В результате элементы массива X разместятся в обратном порядке.

Присваивание по маске. Рассмотрим следующий пример

WHERE (Y.NE.0)

X(10,:) = 4.1 + Z/Y

ELSE WHERE

X(10,:) = 0.0

END WHERE

В этом примере задается маска в виде лог. выражения над массивом Y. Для тех элементов, где оно истинно, над элементами массивов Z, X, Y выполняется первая часть конструкции, а для остальных – вторая часть конструкции. Конструкция WHERE может не содержать вторую часть ELSE WHERE.

В ФОРТРАН 90 имеются функции, возвращающие в качестве результата массив. Есть возможность использовать традиционные функции в суперскалярном режиме.

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