Подобно предыдущему заданию, теперь мы вновь перейдём к изучению программирования и применим полученные знания по алгебре логики на практике.
В прошлом задании мы работали с числовыми типами переменных и учили арифметику, теперь познакомимся с логическим типом переменных, который называется Boolean. Переменные этого типа имеют всего два значения – true и false (соответственно, «истина» и «ложь»). Подобно числовым переменным им можно присваивать значения при помощи оператора присваивания. При этом необходимо строго соблюдать правило совместимости типов. То есть логическим переменным нельзя присваивать числовые значения, а числовым – логические.
В языке Паскаль помимо арифметических операций ещё существует `6` операций сравнения: больше» `(>)`, «больше или равно» `(> =)`, «меньше» `(<)`, «меньше или равно» `(< =)`, «равно» `(=)`, и «не равно» `(<>)`. Операция «не равно» записывается, как последовательность знаков «меньше» и «больше». Результатом каждой из этих операций является логическое значение true или false. Например, операция `5 > 2` выдаст значение true, а операция `x<>3` выдаст значение true, если переменная `X` имеет любое значение, кроме `3`. Сравнивать можно не только числа (причём как целые, так и вещественные), но и логические значения. При этом считается, что значение true больше, чем значение false. При сравнении обязательно соблюдать правило совместимости типов, то есть можно сравнивать числа между собой (причём в отличие от оператора присваивания, здесь никаких ограничений нет). Можно сравнивать между собой логические значения. Но нельзя сравнивать логическое значение с числом любого типа.
Помимо операций сравнения, в паскале существуют четыре логические операции, абсолютно аналогичные операциям алгебры логики.
1) Операция AND (в алгебре логики – «конъюнкция»)
2) Операция OR (в алгебре логики – «дизъюнкция»)
3) Операция XOR (в алгебре логики – «строгая дизъюнкция»)
4) Операция NOT (в алгебре логики – «отрицание»)
Все операнды этих операций должны быть логического типа, а никак не числового. Причём, операции AND, OR и XOR имеют по `2` операнда, а операция NOT – один операнд, который записывается справа от названия операции (аналогично обозначению операции NOT при помощи `¬` в алгебре логики)
Теперь у нас есть достаточно много операций и нужно расставить их по приоритету выполнения. В Паскале есть четыре приоритета операций:
1) Операция not;
2) Операции группы умножения: *, /, div, mod, and;
3) Операции группы сложения: +, – , or, xor;
4) Операции группы сравнения: >, <, <=, >=, =, <>.
Операции одного приоритета выполняются слева направо. Операции в круглых скобках имеют более высокий приоритет, чем вне скобок.
Теперь рассмотрим несколько примеров задач на использование логического типа.
Записать на Паскале логическое выражение истинное при выполнении указанного условия и ложное в противном случае. Результат вычисления данного выражения присвоить переменной F.
Числовая переменная X имеет значение на отрезке [–1,1].
Числовая переменная X имеет значение на отрезке [2,7].
F:=(X>=2)and(X<=7).
Обратите внимание на скобки. Они обязательны, поскольку операции сравнения имеют более низкий приоритет, чем операция and.
Числовая переменная X имеет значение на одном из 2 отрезков: [–10, 3] или [10, 20].
F:=(X>=-10)and(X<=3)or(X>=10)and(X<=20).
Логические переменные A и B имеют различные значения.
По крайней мере 2 из логических переменных A, B и C имеют значение true.
F:=A and B or A and C or B and C.
: