Читайте также: |
|
Выражения, содержащие логические переменные и/или операции отношения, могут быть объединенны в логическое выражение с использованием следующих операций:
Операция логического пересечения .AND., требует двух выражений или переменных, дает результат .TRUE. только в том случае, если оба выражения истинны, в противном случае дает значение .FALSE.. Рассмотрим следующий пример:
LOGICAL:: test, employed=.true. INTEGER:: age=50... test = employed.AND. (age<45)! test=.false.Здесь два подвыражения, один имеет значение .TRUE., второй .FALSE..Поэтому результат .FALSE..
Операция логического объединения .OR. требует двух выражений или переменных, дает результат .TRUE. в том случае, если хотя бы одно из выражений истинно, в противном случае дает значение .FALSE.. Рассмотрим следующий пример:
LOGICAL:: test CHARACTER(LEN=10):: name = 'James'... test = (name='Dimitris').OR. (name='James')! test=.true.
Операция логического отрицани .NOT. используется для отрицания (инверсии) логического значения выражения, то есть .TRUE. дает .FALSE. и наоборот. Например:
INTEGER:: big=100, small=2 LOGICAL:: test... test =.NOT. (big>small)! test=.false. test =.NOT. test! test=.true.где оператор, заключенный (необязательные) получает значение, которое инвертируется.
Операция логического тождества .EQV.чтобы проверить совпадение значений операндов (переменных или выражений) (оба могут иметь значения .TRUE. или .FALSE.). Если значения совпадают, результат .TRUE., в противном случае .FALSE..Например, в:
LOGICAL:: test... test = (5*3>12).EQV. (6*2>8)! test=.true. test = (5*3<12).EQV. (6*2<8)! test=.true.обоих операторах вычисляется.TRUE., поскольку подвыражения в обоих операторах имеют одинаковые значения.
Операция отрицания логического тождества .NEQV. используется для получения значения .TRUE. только если операнды имеют различные логические значения, в противном случае значением станет .FALSE.. Например, в:
LOGICAL:: test... test = (5*3>12).NEQV. (6*2>13)! test=.true. test = (5*3>12).NEQV. (6*2<13)! test=.false.первое выражение имеет одну истинную компоненту и одну ложную, поэтому результат .TRUE.. Второе выражение имеет две истинные компоненты, поэтому результат .FALSE..
Когда сравниваются значение REAL со значением INTEGER компилятор будет конвертировать values the целое к типу REAL. Сравнение значения типа REAL с REAL должно выполняться с осторожностью; ошибки округления по точности переменных типа REAL могут означать, что два числа REAL никогда не будут равны, если их значения численно близки. Поэтому, рекомендуется тестировать их разницу, чем фактические значения:
Дата добавления: 2015-11-14; просмотров: 50 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Тип Character | | | Массивы и производные типы |