.EQ. – равно
.NE. – не равно
Логические выражения
Существуют следующие логические операции:
.NOT. – отрицание (наивысший приоритет)
.AND. – и (средний приоритет)
.OR. – или (средний приоритет)
.ХOR. – логическое исключающее ИЛИ (низший приоритет)
.EQV. – эквивалентность (низший приоритет)
.NEQV. – неэквивалентность (низший приоритет)
Пример логического выражения с операндами целого типа:
WRITE (*,*) 8.or.1 ! на печать будет выдано 9
Правила вычисления выражений
Приоритет выполнения встроенных операций
приоритет | операции |
1 | ** |
2 | * / |
3 | + - |
4 | .LT. .LE. .GT. .GE. |
5 | .EQ. .NE. |
6 | .NOT. |
7 | .ADN. |
8 | .OR. |
9 | .XOR. .EQV. .NEQV. |
Операторы ввода/вывода
Оператор ввода DATA
Оператор DATA служит для задания значений переменным или массивам на этапе трансляции программы.
Общая форма записи оператора:
DATA <список переменных> / <список значений>/
В списке имён указываются имена переменных, имена и элементы массивов, которым перед началом выполнения программы должны быть присвоены некоторые значения.
Примечание: список переменных должен соответствовать списку значений: по очередности следования, по типу данных, количество переменных не должно превышать количество значений.
Пример оператора ввода DATA:
DIMENSION C(10)
DATA A, B, K, N / 2.3 , -1.6E-4 , 13 , 9 /
DATA C / 4.1 , 5.5 , 6*0 , -12.7 , 14 /
В результате выполнения этой части программы переменные получат следующие значения: A=2.3, B=-1.6×10-4, K=13, N=9.
Заполнение массива С, состоящего из 10-ти элементов, происходит следующим образом: С(1)=4.1; С(2)=5.5; затем следует групповой множитель 6*0, который означает – шесть раз повторить число 0, т. е. С(3)=С(4)=С(5)=С(6)= С(7)=С(8)= 0; далее С(9)= –12.7; С(10)= 14.
Пример оператора ввода DATA:
DATA C(1) , C(2) , C(8) / 3*7 /
Элементам массива С с индексами 1, 2 и 8 будет присвоено значение 7.
В операторе DATA могут присутствовать данные, как целого и вещественного типа, так и комплексного, текстового и логического типов.
Пример оператора ввода DATA:
COMPLEX D1, D2
CHARACTER*6 E1, E2, E3*12
DATA D1, E1 / (-3.6 , 15.7E3) , ’ОСЕНЬ![]()
’ /
Примечания:
1) оператор DATA действует в программе один раз во время трансляции программы и не может изменить значения переменных при повторном его выполнении;
2) операторов DATA в программе может быть сколько угодно;
3) операторы DATA могут располагаться в любом месте программы.
Оператор ввода READ
Этот оператор позволяет осуществлять ввод данных с клавиатуры или другого устройства (например, внешнего файла) в процессе выполнения программы.
Общий вид оператора:
READ ( n , m ) <список ввода>,
где n и m – натуральные числа, n – номер устройства, с которого производится считывание информации (если вместо n указывается * или цифра 5, то считывание данных производится с клавиатуры); m – номер метки, после которой следует оператор формата записи считываемых величин (если вместо m указывается *, то ввод значений производится в произвольной форме – бесформатный ввод).
Пример оператора ввода READ:
READ (*,*) A
READ (5,*) B
READ (1,*) C
Считывание значений переменных A и B производится с клавиатуры, а переменной С с внешнего устройства 1. Значения этих переменных могут задаваться в произвольной форме (бесформатный ввод).
Пример записи массивов данных:
do i=1,10
read(2,*) x(i), y(i), g(i)
enddo
Оператор вывода WRITE
Этот оператор позволяет осуществлять вывод данных на экран или другое устройство (например, внешний файл) в процессе выполнения программы.
Общий вид оператора:
WRITE ( n , m ) <список вывода>,
где n – номер устройства, на которое производится вывод информации (n – целое число; если вместо n указывается * или цифра 5, то вывод производится на экран); m – номер метки, после которой следует оператор формата.
Пример оператора вывода WRITE:
WRITE (*,*) D
WRITE (5,*) E
WRITE (2,*) F
WRITE (*,*) D+E
Вывод значений переменных D и E производится на экран, а переменной F на внешнее устройство 2. Результат суммы переменных D и E также будет выведен на экран Значения всех переменных будут выводиться в произвольной форме (бесформатный вывод).
Пример считывания массивов данных:
double precision A(2,4)
do i=1,100
write (3,3) (A(i, j), j=1,100)
enddo
3 FORMAT (100F10.3,2x)
Оператор вывода на экран PRINT
Этот оператор позволяет осуществлять вывод данных в процессе выполнения программы только на экран.
Общий вид оператора:
PRINT m , <список вывода>
где m – номер метки, после которой следует оператор формата (если вместо m указывается *, то вывод значений производится в произвольной форме).
Пример оператора вывода на экран PRINT:
PRINT *, K
Вывод значения переменной К производится на экран (бесформатный вывод).
Оператор задания формата ввода-вывода (FORMAT)
Оператор FORMAT является невыполняемым оператором. Он всегда имеет метку, но на эту метку нельзя передавать управление. Он может находиться в любом месте программы. Используется для ввода и вывода информации в сочетании с операторами ввода-вывода READ и WRITE.
В общем виде оператор формата можно записать:
m FORMAT ( <список спецификаций> )
где m – номер метки.
Пример оператора FORMAT:
READ ( 5 , 3 ) I, K
3 FORMAT ( I4 , I5 )
Оператор ввода READ означает: читать с клавиатуры по формату 3 значения переменных I и K.
Оператор FORMAT указывает каким образом будут считываться данные с носителя информации (строка экрана, строка текстового файла или устройство передачи данных) или выводиться на носитель информации.
В списке спецификаций указывается, по какой спецификации будет произведено считывание значений для переменных. Спецификации бывают следующих типов: I, F, E, G, X, T, А.
Спецификации X, T
Спецификация Х служит для отступа (пропуска) указанного числа пробелов.
В общем виде записывается – nX.
При вводе информации обозначает: пропустить, не читая, n позиций. При выводе информации обозначает пропустить n позиций (вывести n пробелов).
Для вывода информации в конкретное место строки используется спецификация Tn, где n – номер позиции, начиная с которой будет вводится или выводится информация.
Спецификации Х и Т по своей сути одинаковы. Отличие заключается в том, что при использовании спецификации Т на экране будет отступ на n-1 позицию, а для Х – n позиций.
Спецификатор I
В общем виде: Iw
где w – количество позиций для записи числа.
Спецификация I используется для ввода-вывода информации только целого типа. Поэтому переменная, которой присваивается считанная величина, обязательно должна быть целого типа (начинаться с букв I, J, K, L, M, N или должна быть описана при помощи оператора INTEGER). В противном случае при трансляции будет обнаружена ошибка.
Пример ввода данных по спецификации I:
READ ( 5, 3 ) I1, K
3 FORMAT ( I4, I5 )
Если ввести подряд 9 цифр, то переменной I1 присвоятся числа из первых 4 позиций, а переменной K присвоятся числа из следующих 5 позиций. Если при вводе цифр будет больше чем 9, то лишние символы будут проигнорированы.
Пример вывода по спецификации I:
WRITE ( 5, 4 ) I1, K
4 FORMAT (1X, ’Переменная I1=’ , I4 , 2X, ’Переменная K=’ , I5 )
При выполнении данного блока в строке отступается один пробел (спецификация 1Х), выводится на экран текст: «Переменная I1=», следом числовое значение переменной I1 будет выведено в четырех позициях, через два пробела после этого выводится текст: «Переменная K=» и в следующих пяти позициях выводится числовое значение переменной К.
Если I1=123, К=10005, то на экране будет представлена следующая информация:
![]()
Переменная I1=![]()
123![]()
![]()
![]()
Переменная K=10005
Примечания:
1) при форматном выводе в начале каждой новой строки целесообразно отступить хотя бы на один пробел, т. к. первая позиция строки служит для управления режимом вывода информации;
2) если количество символов в переменной меньше, чем количество позиций для записи числа, то сначала отступается несколько пробелов, а затем выводится само число. Если же количество символов больше количества позиций, то на экран выводятся символы «*» (звездочка).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 |


