Операторы И ИЛИ и НЕ и логические переменные — Примеры работы – Составление условий
Предыдущая статья была теоретической. Это было началом разговора о булевой логике и операторах И ИЛИ и НЕ. Но вернемся к работе с кодом и узнаем, как логические операторы работают в JavaScript.
Здесь будут использоваться булевы переменные из прошлой лекции. Напомним, что у персонажа Сары есть водительские права и у нее хорошее зрение.
Для начала, допустим, что переменные hasDriverLicense и hasGoodVision принимают истинное значение true . Условно это переменные А и B.
Исходные данные есть и теперь мы начнем работать с операторами И, ИЛИ и НЕ .
Оператор И — Два амперсанда &&
Оператор И в JavaScript обозначается как два амперсанда && .
Пример 1.1
В результате мы видим true . Так как Истина И Истина в результате дают Истину : true && true —> true
Пример 1.2
Здесь в результате мы видим false . Следует запомнить, что результатом Истины И Лжи является Ложь : true && false —> false .
Оператор ИЛИ — Две вертикальные лини ||
Продолжим работать с примером 1.2. Только теперь будет задействован оператор ИЛИ.
Оператор ИЛИ в JavaScript обозначается как две вертикальные лини || .
Пример 1.3
В результате мы видим true . И это известно из прошлой статьи: Истина ИЛИ Ложь — это Истина : true || false —> true .
В случае с оператором ИЛИ достаточно, чтобы один из операндов имел значение true , чтобы все выражение также было Истинным.
Оператор НЕ — Восклицательный знак !
Оператор НЕ в JavaScript обозначается восклицательным знаком ! .
Пример 1.4
В результате мы видим false . Из прошлой статьи известно, что оператор НЕ инвертирует логическое значение — меняет его на противоположное : A —> true ; !A —> false .
Составление условий и принятие решений
Теперь, когда мы знаем, как себя ведут булевы переменные совместно с логическими операторами И ИЛИ и НЕ, мы можем использовать это для составления условий if-else и принятия решений.
Допустим, мы хотим определить, может ли Сара вести машину или нет. Условием, при котором Сара может водить, является наличие водительских прав и хорошее зрение. В результате мы должны увидеть одну из строк (в зависимости от значения true или false в условии):
Sarah is able to drive — Сара способна водить машину
Someone else should drive — Кто-то другой должен сесть за руль
Итак, используем булевы переменные и булеву логику для моделирования комплексных ситуаций. На самом деле это довольно просто.
Пример 2.1
Условие в блоке if : if(shouldDrive) не что иное, как логическое выражение if(hasDriverLicense && hasGoodVision) . И в данном случае оно ложно — false .
Пример 2.2
Изменим одно из значений: false на true для переменной B.
В результате мы видим Sarah is able to drive — Сара способна водить машину, потому что в этом примере выражение if(hasDriverLicense && hasGoodVision) истинно — true и выполняется блок if .
И и ИЛИ — Больше двух параметров
Код в примерах 2.1 и 2.2 работает правильно, поэтому переходим к следующему этапу и добавим третий параметр isTired — усталость . Таким образом, у нас будет еще одна переменная C .
Пример 3.1
В примере использовался оператор ИЛИ || и в результате мы видим true . При использовании оператора И && результат будет аналогичен — true , так как все переменные истинны: принимают значение true .
Если же при использовании оператора И && одно из значений изменить на false , то и результат будет false .
Пример 3.2
В случае с логическим оператором И достаточно , чтобы хотя бы один из операндов имел значение false , чтобы все выражение также было ложным — false .
Составление условий — Больше двух параметров
Используем пример 3.1 с тремя логическими переменными , чтобы процесс принятия решений при составлении условий зависел от большего числа факторов (см. исходные примеры 2.1 и 2.2).
Немного логики. Переменная isTired обозначает усталость. И в логическом контексте успешного вождения усталости быть не должно .
Поэтому далее в условии конструкции if-else наряду с переменными hasDriverLicense — наличие прав и hasGoodVision — хорошее зрение будет фигурировать !isTired — НЕ усталость (нет усталости).
Пример 4.1
В результате мы видим Someone else should drive. — Кто-то другой должен сесть за руль, так как один из операндов !isTired — НЕ isTired принимает значение false .
Соответственно логическое выражение hasDriverLicense && hasGoodVision && !isTired тоже false .
И так как в условии имеет место ложь false , то выполняется код блока else .
Пример 4.2
Если же переменная isTired изначально будет принимать ложное значение false , то в логическом выражении НЕ isTired будет принимать значение true . И тогда Сара будет допущена к вождению:
Здесь все верно. В результате мы видим Sarah is able to drive , то есть Сара способна водить машину.
Итак, использование логических операторов И, ИЛИ и НЕ в JavaScript позволяет моделировать различные виды комплексных решений, подобных тому, что было рассмотрено.
Не стоит расстраиваться, если для кого-то эта тема оказалась немного запутанной. Потому что с трудностями сталкиваются многие из тех , кто только начинает программировать.
Возможно, следует потратить немного времени после изучения этого материала и снова проанализировать, что здесь происходило. Как вариант нужно вернуться и к прошлой статье. Нужно быть уверенным в том, что эта тема ясна и понятна .
Источник
Основные логические операции. AND, NOT, OR и XOR (исключающее или)
В этой статье мы поговорим о некоторых битовых операциях. Рассмотрим основные из них: XOR (исключающее ИЛИ), AND (И), NOT (НЕ) а также OR (ИЛИ).
Как известно, минимальной единицей измерения информации является бит, который хранит одно из 2-х значений: 0 (False, ложь) либо 1 (True, истина). Таким образом, битовая ячейка может одновременно находиться лишь в одном из двух возможных состояний.
Для манипуляций с битами используют определённые операции — логические или булевые. Они могут применяться к любому биту, вне зависимости от того, какое у него значение — ноль или единица. Что же, давайте посмотрим на примеры использования трёх основных логических операций.
Логическая операция AND (и)
AND обозначается знаком & .
Оператор AND выполняется с 2-мя битами, возьмём, к примеру, a и b. Результат выполнения операции AND равен 1, если a и b равняются 1. В остальных случаях результат равен 0. Например, с помощью AND вы можете узнать, чётное число или нет.
Посмотрите на таблицу истинности операции AND:
Логическая операция OR (ИЛИ)
Оператор OR также выполняется с 2-мя битами (a и b). Результат равен 0, если a и b равны 0, иначе он равен 1. Смотрим таблицу истинности.
Логическая операция XOR (исключающее ИЛИ)
Оператор XOR обозначается ^ .
XOR выполняется с 2-мя битами (a и b). Результат выполнения операции XOR (исключающее ИЛИ) равен 1, когда один из битов b или a равен 1. В остальных ситуациях результат применения оператора XOR равен 0.
Таблица истинности логической операции для XOR (исключающее ИЛИ) выглядит так:
Используя XOR (исключающее ИЛИ), вы можете поменять значения 2-х переменных одинакового типа данных, не используя временную переменную. А ещё, посредством XOR можно зашифровать текст, например:
Согласен, XOR — далеко не самый надёжный метод шифрования, но это не значит, что его нельзя сделать частью какого-либо шифровального алгоритма.
Логическая операция NOT (НЕ)
Это побитовое отрицание, поэтому выполняется с одним битом и обозначается
Результат зависит от состояния бита. Если он в нулевом состоянии, то итог операции — единица и наоборот. Всё предельно просто.
Эти 4 логические операции следует запомнить в первую очередь, т. к. с их помощью можно получить практически любой возможный результат. Также существуют такие операции, как << (побитовый сдвиг влево) и >> (побитовый сдвиг вправо).
Источник
Выпуск 7. Логические операции И, ИЛИ, НЕ. Основы Arduino для начинающих
Это седьмая видео-статья из цикла «Основы Arduino для начинающих» и сегодня мы поговорим о таком важном понятии, как логические операции, без которых не обойтись при решении практически любой задачи.
Предыдущие выпуски вы найдете здесь: 0,1,2,3,4,5,6
Начнем с определения в википедии – логическая операция в программировании, это операция над выражениями логического (булевского) типа, соответствующая некоторой операции над высказываниями в алгебре логики. На первый взгляд – ничего не понятно, давайте подробнее разберемся, что такое логический или булевский тип, а так же алгебра логики.
Фраза логический (он же булевский) тип выражения означает, что это выражение может принимать только два значения – ложь или истина, 0 или 1. Если мы укажем переменной, что она имеет тип bool (boolean), то, как ни крути, значения, которые она сможет в себе нести, будут либо 0, либо 1. Помните, в предыдущих выпусках мы составляли условия, в зависимости от истинности или ложности которых происходили какие-либо действия – как раз тогда мы уже работали с булевыми выражениями.
Итак, кажется, теперь становится более понятной первая строчка определения – логическая операция, это операция над выражениями логического (булевского) типа. Теперь со второй частью об операциях алгебры логики.
Каждый из вас помнит уроки математики в школе, где мы работали с числами в привычной для нас, десятичной системе счисления – то есть с цифрами от 0 до 9. Но мир логики, если так можно сказать, отличается от нашего, ведь там все значения имеют только два состояния — 0 или 1, отсюда и возникает потребность в специальной математике для работы с логическими выражениями. Эта математика носит название «алгебра логики».
В этой алгебре есть три основных операции – сложение, умножение и отрицание, позволяющих реализовать любые логические функции. Давайте разберемся на примерах для микроконтроллера, где нам может понадобиться каждая из этих операций.
Операция сложения, она же операция дизъюнкции либо логическоеИЛИ. Многие из вас помнят, что в прошлом выпуске, при изучении циклов и условий, мы брали примеры с автобусами и остановкой, давайте снова разберем такой пример – наверное, вы замечали, что в относительно новых автобусах по салону распределены кнопки требования остановки. При нажатии на такую кнопку у водителя на приборной панели загорается лампочка и звучит сигнал требования остановки.
Давайте попробуем реализовать такую же систему на Arduino – возьмем, например, три кнопки и подключим их к микроконтроллеру, а так же добавим в схему светодиод и, при наличии, пьезо-извещатель.
Алгоритм работы такой системы достаточно прост и схож с тем, что мы писали для одной кнопки и светодиода, но, в данном случае возникает одна проблема — у нас не одна кнопка, для которой можно написать условие, а целых три. И при нажатии любой из кнопок у нас должен звучать сигнал и гореть светодиод. Что же делать? Можно, конечно, написать три отдельных условия для контроля каждой из кнопок, но код в таком случае выглядит нагроможденным и при увеличении количества кнопок становится жутко не удобным.
Здесь нам на помощь и приходят логические операции, позволяющие составлять не одиночные условия, как мы это делали раньше, а достаточно гибкие и удобные совмещенные.
В нашей задаче необходимо включить оповещение при срабатывании первой или второй или третьей кнопки и, если вы помните, операция сложения так и называлась – логическое ИЛИ.
Давайте создадим три переменных типа boolean, в которые будем сохранять считанный сигнал от каждой из кнопок, и объединим эти переменные в одном условии, поставив между ними логическое ИЛИ. Эта операция записывается в виде двух вертикальных черточек и, что бы понять логику ее работы, давайте взглянем на так называемую таблицу истинности, где указываются операнды, над которыми совершается операция.
Два первых столбца это возможные значения на входах — например, если бы у нас было две кнопки и между ними мы производили дизъюнкцию. Как видите, при комбинации 00 итогом логического сложения так же будет 0. А вот следующая комбинация — 0 или 1 уже дает на выходе логическую единицу, так же, как и оставшиеся комбинации. Нижняя строка 11 так же выдаст единицу, поскольку мы производим сравнение двух положительных значений.
В итоге мы можем сделать вывод, что логическая операция ИЛИ выдаст единичный результат, если на любом из ее входов появится хоть одна единица. Для нашей системы мы можем составить таблицу из трех колонок и перебрать все возможные нажатия кнопок, логика останется прежней – если существует хоть одна единица – ответ будет равен одному.
Источник
Логические операции и таблицы истинности
Основой цифровой техники служат три логические операции, лежащие в основе всех выводов компьютера. Это три логические операции: И, ИЛИ, НЕ, которые называют «тремя китами машинной логики».
В компьютере логические функции реализуют логические элементы. Логический элемент (вентиль) – это часть электронной логической схемы, которая реализует элементарную логическую функцию, т.е. это электронная схема, которая формирует выходной сигнал в соответствии с простой булевой операцией преобразования сигналов, поданных на его входы.
Логическими элементами компьютеров являются электронные схемы И, ИЛИ, НЕ, И–НЕ, ИЛИ–НЕ и другие, а также триггер.
С помощью этих схем можно реализовать любую логическую функцию, описывающую работу устройств компьютера. Обычно у вентилей бывает от двух до восьми входов и один или два выхода.
Самой простой логической операцией является операция НЕ , по-другому ее часто называют отрицанием , дополнением или инверсией и обозначают NOT ( ).
Если А – истинно, то Ā – ложно и наоборот
Результат отрицания всегда противоположен значению аргумента. Логическая операция НЕ является унарной , т.е. действие выполняются над одним операндом. В отличие от нее, операции И (AND) и ИЛИ (OR) являются бинарными, так как представляют собой результаты действий над двумя логическими величинами.
Например, A – идет дождь; Ā – не идет дождь (не(А) или not(A))
Логическое И еще часто называют конъюнкцией , или логическим умножением , а ИЛИ – дизъюнкцией , или логическим сложением .
Операция И (обозначается «И», «and», «&», А•В) имеет результат «истина» только в том случае, если оба ее операнда истинны.
Источник