Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ.
Логические выражения чаще всего используются в логическом операторе или конструкции IF. Над объектами данных логического типа определены следующие операции (указаны в порядке убывания приоритета, точки в написании обязательны):
ОПЕРАТОР |
ДЕЙСТВИЕ |
.NOT. ЛОГИЧЕСКОЕ ОТРИЦАНИЕ (НЕ) .AND. ЛОГИЧЕСКОЕ ПЕРЕСЕЧЕНИЕ (И) .OR. ЛОГИЧЕСКОЕ ОБЪЕДИНЕНИЕ (ИЛИ) |
Логическими данными могут быть не только переменные и константы логического типа. Данные или выражения любого встроенного типа связанные операцией логического отношения образуют конструкцию логического типа. Такие конструкции могут входить в логические выражения наравне с логическими переменными и константами. Логические отношения имеют более высокий приоритет выполнения по сравнению с логическими операциями. Каждое логическое отношение (утверждение) является элементарным логическим выражением и может принимать значения: ".TRUE." или ".FALSE.", все операции отношения имеют одинаковый приоритет выполнения по отношению друг к другу:
ОБОЗНАЧЕНИЕ |
ОТНОШЕНИЕ |
.EQ. РАВНО .NE. НЕ РАВНО .GT. БОЛЬШЕ .GE. БОЛЬШЕ ЛИБО РАВНО .LT. МЕНЬШЕ .LE. МЕНЬШЕ ЛИБО РАВНО |
Из логических данных и элементарных логических выражений можно выстраивать более сложные логические выражения. В программе LOGEQ показан порядок выполнения логических операций и операций отношения, в соответствии со степенью их приоритета. При записи логических выражений можно использовать круглые скобки. Заключенные в круглые скобки части логического выражения вычисляются в первую очередь:
program LOGEQ
logical X, Y, Z, V, step1, step2, step3, step4
X = 1 .le. 2 .and. 4 .gt. 3 ! Истина
Y = 1.2 .ge. 3.4 .or. 5.6 .lt. 7.8 ! Истина
Z = 1 .eq. 2 .and. 4 .ne. 3 ! Ложь
Y = 1.2 .eq. 3.4 .or. 5.6 .eq. 7.8 ! Ложь
V = X.and.Y ! Истина
print*, X.or.Y.and..not.Z.and.V
step1 = .not.Z; step2 = Y.and.step1
step3 = step2.and.V; step4 = X.or.step3
print'(1x,L3)', step4
print'(1x,L3)', (X.or.Y).and..not.(Z.and.V)
step1 = X.or.Y; step2 = Z.and.V
step3 = .not.step2; step4 = step1.and.step3
print*, step4