Читать «Теоретический минимум по Computer Science. Все что нужно программисту и разработчику» онлайн - страница 4
Фило В. .
A : Вода в бассейне теплая.
B : Я плаваю.
Они либо истинны (true), либо ложны (false)8. A = True обозначает теплую воду в бассейне, B = False обозначает «Я не плаваю». Переменная B не может быть наполовину истинной, потому что я не способен плавать лишь отчасти. Зависимость между переменными обозначается символом , условным оператором. A B выражает идею, что A = True влечет за собой B = True:
A B : если вода в бассейне теплая, то я буду плавать.
При помощи других операторов можно выражать другие идеи. Для отрицания идеи используется знак !, оператор отрицания. !A противоположно A:
!A : Вода в бассейне холодная.
!B : Я не плаваю.
Противопоставление. Если дано A B, и я при этом не плаваю, что можно сказать о воде в бассейне? Теплая вода влечет за собой плавание, потому, если его нет, вода в бассейне не может быть теплой. Каждое условное выражение имеет противопоставленный ему эквивалент:
Для любых двух переменных A и B
A B тождественно !B !A.
Еще пример: если вы не умеете писать хороший код, значит, вы не прочли эту книгу. Противопоставлением данному суждению является такое: если вы прочли эту книгу, значит, вы умеете писать хороший код. Оба предложения сообщают одно и то же, но по-разному9.
Двусторонняя условная зависимость. Обратите внимание, что высказывание «Если вода в бассейне теплая, то я буду плавать» не означает: «Я буду плавать только в теплой воде». Данное высказывание ничего не говорит насчет холодных бассейнов. Другими словами, A B не означает B A. Чтобы выразить оба условных суждения, используйте двустороннюю условную зависимость:
A <—> B: Я буду плавать, если и только если вода в бассейне теплая.
Здесь теплая вода в бассейне равнозначна тому, что я буду плавать: знание о воде в бассейне означает знание о том, что я буду плавать, и наоборот. Опять же, остерегайтесь обратной ошибки: никогда не предполагайте, что B A следует из A B.
AND, OR и XOR. Эти логические операторы — самые известные, поскольку они часто записываются в исходном коде в явном виде — AND (И), OR (ИЛИ) и XOR (исключающее ИЛИ). AND возвращает True, если все идеи истинны; OR возвращает True, если любая идея истинна; XOR возвращает True, если идеи взаимоисключающие. Представим вечеринку, где подают водку и вино:
A : Вы пили вино.
B : Вы пили водку.
A OR B : Вы пили.
A AND B : Вы пили и то и другое.
A XOR B : Вы пили, не смешивая.
Проверьте, правильно ли вы понимаете, как работают эти операторы. В табл. 1.1 перечислены все возможные комбинации двух переменных. Обратите внимание, что A B тождественно !A OR B, а A XOR B тождественно !(A <—> B).
Таблица 1.1. Логические операции для четырех возможных комбинаций A и B
Булева алгебра
Булева алгебра10 позволяет упрощать логические выражения точно так же, как элементарная алгебра упрощает числовые.