Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИиП_3.doc
Скачиваний:
1
Добавлен:
21.04.2019
Размер:
303.1 Кб
Скачать

3.5. Выражения, операции и присваивания

3.5.1. Арифметическое выражение

Таблица 3.5

Например,

Ранг операнда определяется в соответствии со следующим списком:

INTEGER(1) - низший ранг;

Integer(2)

Integer(4)

REAL(4)

REAL(8)

COMPLEX(8)

COMPLEX(16) - высший ранг.

3.5.2. Выражения отношения и логические выражения

Операции отношения (табл. 3.5):

.LT. - меньше

.LE. - меньше или равно

.GT. - больше

.GE. - больше или равно

.EQ. - равно

.NE. - не равно.

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

Логические операции: .NOT. - отрицание (наивысший приоритет)

.AND. - умножение (средний приоритет)

.OR. - объединение (средний приоритет))

.ХOR. - логическое исключающее ИЛИ (низший приоритет))

.EQV. - эквивалентность (низший приоритет)

.NEQV.- неэквивалентность (низший приоритет)

Таблица 3.4.Таблица истинности

X

y

x.and.y

x.or.y

.not.x

x.xor.y

x.eqv.y

x.neqv.y

И

И

Л

Л

И

Л

И

Л

И

Л

Л

Л

И

И

И

Л

Л

Л

И

И

Л

И

И

Л

И

Л

Л

И

Л

И

И

Л

Пример логического выражения с операндами целого типа.

write(*,*) 8.or.1 ! на печать будет выдано 9

Пример использования маски в логическом выражении.

program ttt

integer(2) :: mask=#00ff ! маска mask и число k заданы в

integer(2) :: k=#5577 ! шестнадцатеричной системе счисления

print *,’(z)’, mask.and.k ! результат в 16-ричной системе: 119

end program ttt

3.5.3. Правила вычисления выражений

Таблица 3.5. Приоритет выполнения встроенных операций

**

*

/

+

-

//

.LT., <

.LE., <=

.GT., >

.GE., >=

.EQ., ==

.NE., /=

.NOT.

.AND.

.OR.

.XOR.

.EQV.

.NEQV.

3.5.4. Константные и описательные выражения

Пример константных выражений.

integer, parameter :: n=10, m=1/2 ! константные выражения

character(*), parameter :: st(3)= (/’январь’,‘февраль’,’март’/) ! инициализирующие

! константные выражения

3.6. Управляющие операторы и конструкции

3.6.1. Операторы условного и безусловного перехода

Оператор безусловного перехода GO TO: GO TO метка

Условный логический оператор IF имеет вид: IF (ЛВ) оператор

Конструкция IF THEN ENDIF имеет вид:

<имя:> IF (ЛВ) THEN

блок

END IF <имя>

Конструкция IF THEN ELSE ENDIF имеет формат:

<имя:> IF (ЛВ1) THEN

Блок1

ELSE IF (ЛВ2) THEN <имя>

Блок2

...........................

< ELSE <имя>

Блокn>

END IF <имя>

Пример использования операторов и конструкций перехода.

program yok1

integer a(15), ap/0/, ae/0/, az/0/, i, x, y/100/ ! описание и инициализация данных

print *, 'Input a(15)' ! вывод сообщения

read *, (a(i), i=1,15) ! ввод массива:

! -2 10 -3 0 3 14 -7 0 4 12 0 8 1 0 2

print *, 'Input x' ! вывод сообщения

read *, x ! ввод переменной: 98

! использование конструкции if then endif

! для нахождение большего из двух чисел

if (x.gt.y) then ! проверка условия: если оно истинно, то

print *, ‘x=’, x ! вывод результата

end if ! завершение проверки условия

print *, ‘y=’, y ! вывод результата, если условие ложно: y=100

! определение числа положительных ap, отрицательных ae и нулевых az

! элементов в массиве а

2 i=1 ! подготовка цикла

3 continue ! точка возврата на повторение цикла

! использование конструкции if then else endif для проверки условий

NAME1: if (a(i)>0) then ! определение количества

ap=ap+1 ! положительных чисел

else if (a(i)<0) then ! определение количества

ae=ae+1 ! отрицательных чисел

else NAME1 ! определение количества

az=az+1 ! чисел, равных нулю

end if NAME1

i=i+1 ! увеличение счетчика цикла

! использование условного логического оператора для проверки условия

if (i<=15) goto 3 ! конца цикла и передача управления по метке

print *, ap,'(>0)', ae,'(<0)', az,'(=0)' ! вывод результатов:

end program yok1 ! 8(>0) 4(<0) 3(=0)