Система автоматизации библиотек ИРБИС

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


Логические выражения используются для вычисления истинности одного или более условий. Операндами логического выражения могут быть:



Выражения отношений:

они сравнивают два значения и определяют, удовлетворяют ли они отношению, например, mfn<10;

Логические функции:

такие, например, как p(v24), которые возвращают значение "истина" или "ложь" в зависимости от наличия поля, специфицированного в аргументе (см. п. 8.3).

Выражение отношения позволяет определять находятся ли указанные два значения в соответствующем соотношении или нет. Общий вид выражения отношения следующий:

выражение-1  оператор-отношения  выражение-2,

где:

выражение-1

числовое или строковое выражение;

оператор-отношения

может быть одним из следующих:

     =      равно;

    <>     не равно;

    <       меньше;

    <=     меньше или равно;

>       больше;

    >=     больше или равно;

    :        содержит (используется только для

             строковых выражений);

выражение-2

выражение того же типа, что и выражение-1, т. е. выражение-1 и выражение-2 должны быть либо оба числовыми, либо оба строковыми.

Операторы отношений =, <>, <, <=, >, >= имеют обычное значение при их применении к числовым выражениям. При сравнении строковых выражений применяются следующие правила:

1.   Кроме оператора "содержит" (:) строки сравниваются в точности в том виде, в каком они есть, т.е. прописные и строчные буквы сравниваются по своим кодам (например, код буквы А будет меньше кода буквы а);

2.   Два строковых выражения не считаются равными, если они не имеют одинаковой длины. Если два выражения, представляющие строки различной длины, таковы, что посимвольно совпадают до конца более короткой строки, то считается, что более короткая строка является меньше более длинной строки.

Оператор "содержит" (:) проверяет наличие вхождения строки символов, определенной выражением-2, в другую строку, определенную выражением-1.
При наличии такого вхождения выражение принимает значение истина. Этот оператор является нечувствительным к прописным и строчным буквам: для него соответствующие прописные и строчные буквы одинаковы.

Например, результатом выражения

v10 : 'химия'

будет истина, если поле 10 содержит в качестве своей подстроки строку химия, в противном случае результатом будет ложь. Отметим, что вторым операндом может быть произвольная строка символов, которая не обязательно совпадает со словом. Так, в приведенном выше примере, результат будет истина не только, когда поле 10 содержит слово химия, но и когда поле содержит такие слова, как биохимия, фотохимия и др.

Операнды логических выражений могут объединяться с помощью следующих логических операторов:

NNOT

оператор дает значение истина, когда операнд имеет значение ложь, и значение ложь, когда операнд - истина. Оператор NOT может использоваться только как унарный, т.е. он всегда применяется к логическому выражению, следующему за ним.

AAND

этот оператор дает значение истина, когда оба операнда истинны. Если хотя бы один из операндов имеет значение ложь, то результатом является ложь.

OOR

этот оператор выполняет операцию включающего ИЛИ. Результатом является истина, когда один или оба операнда истинны, в противном случае результатом является ложь.

При вычислении логических выражений, при отсутствии скобок, сначала выполняются операции NOT, затем операции AND, и, наконец, операции OR. Последовательность из двух или более операторов одного уровня обрабатывается слева направо. Можно использовать скобки для изменения порядка вычисления: выражения, заключенные в скобки, вычисляются первыми, а выражения с большей глубиной вложенности вычисляются перед выражениями с меньшей глубиной вложенности скобок.

На рис. 10 приведены примеры логических выражений.

         Выражения                          Значения

    ----------------------------------    ----------------------

    mfn=34                                                      Истина

    not mfn=34                                                Ложь

    not (not mfn=34)                                        Истина

    v20 = 'люди'                                              Ложь

    v200 : 'люди'                                             Истина

    v200 : 'ЛЮДИ'                                           Истина

    v210^c.6 = 'Военное'                                Ложь

    v210^c.7 = ‘Военное'                                Истина

(v200 : 'люди') AND (v210^c.7= 'Военное')  Истина

Рис. 10


Содержание раздела