Логические выражения
Логические выражения - это соотношения между переменными или выражениями, которые могут принимать значения «истина» или «ложь». Логические выражения применяются в управляющих операторах, когда в зависимости от некоторых условий требуется изменить последовательность выполнения операторов программы. В логических выражениях используются операции отношения и логические операции.
Существует шесть операций отношения. Все операции бинарные (сравниваются значения двух выражений). Операндами являются либо числовые, либо символьные выражения. Результат вычисления отношения – логический.
Операция | Название | Примеры |
< или .lt.* | Меньше (A<В) | a<b a.lt.b |
> или .gt. | Больше (А>В) | a>b a.gt.b |
== или .eq.** | равно (A=В) | a==b a.eq.b |
<= или .le. | меньше или равно (A≤В) | a<=b a.le.b |
>= или .ge. | больше или равно (A≥В) | a>=b a.ge.b |
/= или .ne. | не равно (A≠В) | a/=b a.ne.b |
* – устаревшее, но не отмененное
** – не путать с логической операцией .eqv. (см. ниже)
Внимание! В связи с приближенным представлением вещественных чисел, вместо сравнения их на равенство (операция «==») следует сравнивать разницу между ними с заданной погрешностью, например abs(x–y) < eps.
Если операция отношения применяется к выражениям, сначала вычисляются значения этих выражений, которые затем сравниваются между собой.
Примеры операций отношения:
Sin(0.5) > 0.5 => 0.48 > 0.5 => .false. (ложь)
4**2 == 48/3 => 16 == 16 => .true. (истина)
x**2 + y**2 < r**2 => графическая интерпретация этого условия: выражение равно .true. (истина) для всех точек с координатами (x, y) находящихся внутри круга радиуса r с центром в начале координат.
Логические операции обладают самым низким приоритетом (старшинством), поэтому они выполняются после вычисления отношений. Существует пять логических операций. Операндами являются логические значения. Результат вычисления также логический.
Операция | Название | Старшинство | Примеры | Комментарии |
.not. | НЕ – отрицание или инверсия | .not.a | Унарная операция | |
.and. | И – конъюнкция или пересечение или логическое умножение | a.and.b | Бинарные операции | |
.or. | ИЛИ – дизъюнкция или объединение или логическое сложение | a.or.b | ||
.eqv. | Эквивалентность | a.eqv.b | ||
.neqv. | Неэквивалентность или «исключающее ИЛИ» | a.neqv.b |
Две логические операции могут следовать в выражении непосредственно друг за другом, только если второй операцией является операция отрицания, например:
a.and..not.b.
Таблицы истинности логических операций наглядно показывают результаты их выполнения в зависимости от операндов. Значения операндов и выражений в таблице обозначены: T – «истина», F – «ложь». На графических интерпретациях множеству истинных значений каждого операнда сопоставлены все точки внутри соответствующего круга. Штриховка показывает, при каких значениях операндов результат выражения равен .true.
A | .NOT.A | |
F | T | |
T | F |
A | B | A.AND.B | |
F | F | F | |
F | T | F | |
T | F | F | |
T | T | T |
A | B | A.OR.B | |
F | F | F | |
F | T | T | |
T | F | T | |
T | T | T |
A | B | A.EQV.B | |
F | F | T | |
F | T | F | |
T | F | F | |
T | T | T |
A | B | A.NEQV.B | |
F | F | F | |
F | T | T | |
T | F | T | |
T | T | F |
Пример логической операции:
L =a>3 .and.a<5. L = .true., когда оба отношения истинны, то есть аÎ(3,5).
Приоритеты групп операций в логических выражениях распределяются следующим образом (в убывающем порядке):
- числовые операции или символьные операции,
- операции отношения,
- логические операции.
Порядок операций можно изменить с помощью круглых скобок.
Пример порядка выполнения операций
1 2 5 3 4 13 6 9 7 8 10 12 11
Abs(y)<=3.and.Abs(x)<=5.or.x**2+(y-3)**2<4.and.x<=0
Дата добавления: 2017-09-19; просмотров: 755;