Site Loader

Логическое «или» | это… Что такое Логическое «или»?

Дизъю́нкция — логическая операция, по своему применению максимально приближенная к союзу «или» в смысле «или то, или это, или оба сразу». Синонимы: логи́ческое «ИЛИ», включа́ющее «ИЛИ», логи́ческое сложе́ние, иногда просто «ИЛИ».

Это бинарная инфиксная операция, то есть, она имеет два операнда и стоит между ними. Чаще всего встречаются следующие варианты записи:
|| | .

Содержание

  • 1 Булева алгебра
  • 2 Многозначная логика
  • 3 Классическая логика
  • 4 Программирование
  • 5 Связь с естественным языком
  • 6 См. также

Булева алгебра

В булевой алгебре дизъюнкция — это функция двух переменных (они же — операнды операции). Переменные Правило: результат равен , если оба операнда равны ; во всех остальных случаях результат равен .

Таблица истинности

Многозначная логика

В многозначной логике операция дизъюнкции может определяться другими способами. Чаще всего применяется схема: , где . Возможны и другие варианты. Как правило, стараются сохранить совместимость с булевой алгеброй для значений операндов .

Классическая логика

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



С помощью этих аксиом можно доказать другие формулы, содержащие операцию дизъюнкции. Обратите внимание, что в классическом исчислении высказываний не происходит вычисления результата по значениям операндов (как в булевой алгебре), а требуется доказать формулу как единое целое на основе аксиом и правил вывода.

Программирование

В компьютерных языках используется два основных варианта дизъюнкции: логическое «ИЛИ» и побитовое «ИЛИ». Например, в языках C/C++ логическое «ИЛИ» обозначается символом «||», а побитовое — символом «|».

Логическое «ИЛИ» применяется в операторах условного перехода или в аналогичных случаях, когда требуется получение результата или . Например:

if (a || b) 
{
    /* какие-то действия */
};

Результат будет равен , если оба операнда равны или . В любом другом случае результат будет равен .

При этом применяется стандартное соглашение: если значение левого операнда равно , то значение правого операнда не вычисляется (вместо может стоять сложная формула). Такое соглашение ускоряет исполнение программы и служит полезным приемом в некоторых случаях. Например, если левый операнд проверяет необходимость вычисления правого операнда:

if (a == NULL || a->x == 0) 
{
    /* какие-то действия */
};

В этом примере, благодаря проверке в левом операнде, в правом операнде никогда не произойдет разыменования нулевого указателя.

Побитовое «ИЛИ» выполняет обычную операцию булевой алгебры для всех битов левого и правого операнда попарно. Например,

если
a =
b =
то
a ИЛИ b =

Связь с естественным языком

Часто указывают на сходство между дизъюнкцией и союзом «или» в естественном языке, когда он употребляется в смысле «или то, или то, или оба сразу».

В юридических документах часто пишут: «и/или», подразумевая «или то, или то, или оба сразу». Составное утверждение «A и/или B» считается ложным, когда ложны оба утверждения A и B, в противном случае составное утверждение истинно. Это в точности соответствует определению дизъюнкции в булевой алгебре, если «истину» обозначать как 1, а «ложь» как 0.

Неоднозначность естественного языка заключается в том, что союз «или» используется в двух значениях: то для обозначения дизъюнкции, то для другой операции — исключающего «ИЛИ».

См. также

  • Логическая операция
  • Конъюнкция
  • Импликация
  • Отрицание

Логическое сложение (дизъюнкция)

Основы

Логическое сложение — одна из трех базовых операций логической алгебры.

Соединение двух (или нескольких) высказываний союзом

ИЛИ называется дизъюнкцией или логическим сложением. Логическое сложение схоже с союзом ИЛИ в естественном языке, если он употребляется в смысле «или то, или это, или оба сразу». Операцию логического сложения часто называют операцией ЛОГИЧЕСКОГО ИЛИ.

Высказывание А+В истинно (равно 1) тогда, когда истинно хотя бы одно из входящих в него высказываний А или В, и ложно только тогда, когда ложны оба слагаемых (равны 0).

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 1

Следует обратить внимание на то, что при сложении двух логических единиц получается логическая единица. Алгебра логики оперирует только двумя значениями — ложью (логический 0) и истиной (логическая 1). Истина не может быть двойной или истиной в квадрате, поэтому при сложении двух истин мы получаем просто истину. Точно также при сложении двух логических сигналов высокого уровня мы получаем логический сигнал высокого уровня.

Дизъюнкция обозначается символом v или знаком сложения ( + ).

Правила логического сложения двух высказываний можно свести в следующую таблицу:

A
B
A + B
0
0
0
0
1
1
1
0
1
1
1
1

Такая таблица называется таблицей истинности для дизъюнкции.

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

Дизъюнкция n переменных ложна тогда и только тогда, когда все составляющие ее переменные ложны.

В логических схемах BEAM-роботов логическое ИЛИ используется для согласования двух логических сигналов.

Другие базовые операции в алгебре логики

Логическое умножение
Логическое отрицание

логических операторов | Помощь — Zoho Coluge

Выберите, где вы хотели бы запустить

Соглашение
  • Обзор
  • Примеры
  • Фактор претендента

Обзор

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

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

Существует 3 типа логических операторов:

  • && (И)  — должны выполняться условия с обеих сторон.

    Следующая таблица истинности показывает возможные результаты при объединении двух условий с И. В левом столбце таблицы показаны значения истинности первого условия, в верхней строке показаны значения истинности второго условия, а каждое пересечение показывает результат И.

    И TRUE FALSE
    TRUE TRUE FALSE
    FALSE FALSE FALSE
  • || (ИЛИ)  – необходимо выполнить условие с одной или обеих сторон

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

    OR TRUE FALSE
    TRUE TRUE TRUE
    FALSE TRUE FALSE​
  • ! (НЕ)  – условие не должно выполняться. В отличие от условий И и ИЛИ, он не связывает два условия. Вместо этого он отрицает (меняет) одно условие.

    Следующая таблица истинности показывает результат НЕ во втором столбце на основе истинностного значения условия в первом столбце.

    Condition NOT
    True False
    False True

Examples

Как указано выше, возможны многочисленные комбинации условий и операторов.

Фактор приоритета

  • Выражение внутри самого внутреннего набора скобок обрабатывается первым, за ним следует следующее самое глубокое, продвигаясь наружу, пока не будут обработаны все скобки.
  • Одинаковые логические операторы в выражении будут обрабатываться слева направо.
  • Среди логических операторов порядок приоритета следующий:
    • НЕ, И и ИЛИ для всех сервисов Zoho, кроме Zoho Creator
    • НЕ, ИЛИ и И для Zoho Creator.

Примечание: Мы работаем над унификацией порядка старшинства между Zoho Creator и другими сервисами Zoho.

Освоение JavaScript && и || логические операторы | by Nicolas Marcora

Это распространенное заблуждение, что использование AND && или OR || Операторы всегда должны возвращать true или false . Это НЕ так, и в этом коротком посте я хотел бы изучить, как цепочка из && с и || будут вести себя на самом деле, и как мы можем использовать это в своих интересах.

Приведение типов

Прежде всего, краткое примечание о приведении типов: true и false являются логическими значениями . Превратить значение в логическое означает взять любое значение, НЕ являющееся истинным или ложным , и попытаться преобразовать его в любое из них. В JavaScript вы можете легко проверить результат любого значения, преобразованного в логическое значение, набрав: Логическое значение (значение) . Давайте попробуем это в консоли:

Вы можете видеть, что некоторые значения оцениваются как true , а другие как false . Эти значения обычно называют истинными и ложными значениями. Таким образом, вы можете сказать, что любое значение, которое при преобразовании в логическое значение становится истинным , является истинным, а любое значение, которое становится ложным , является ложным.

Теперь, когда мы разобрались с этим, давайте перейдем к тому, как && и || вести себя.

Оператор И ( && )

В цепочке && каждое значение будет оцениваться слева направо. Если какое-либо из этих значений окажется ложным , это значение будет возвращено, и цепочка не будет продолжена. Если цепочка не разорвется до достижения конца, будет возвращено последнее значение в цепочке.

Давайте откроем нашу консоль и проверим это:

Вы это видите? Давайте пошагово:

В первом примере мы проверяем наше первое значение, оно истинно, поэтому мы переходим к следующему значению, которое является ложным, поэтому мы возвращаем его и останавливаемся на этом.

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

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

Последний пример показывает, что когда все значения в цепочке истинны, возвращается последнее значение в цепочке.

Оператор ИЛИ ( || )

|| Оператор ведет себя точно так же, как && , только наоборот! В то время как цепочка && разорвется, если будет найдено ложное значение, цепочка || сломается, когда найдет истинное значение . И, как и в случае с && s, если нет истинных значений и достигнут конец цепочки, возвращается последнее значение в этой цепочке.

Давайте также проверим это в консоли:

Вы можете видеть, что они также следуют одному и тому же шаблону:

В первом примере цепочка заканчивается, когда это верное найдено и возвращено.

Во втором примере цепочка обрывается, потому что "Я правдив" является истинным значением, поэтому цепочка разрывается и возвращается "Я правдив" .

В третьем примере , несмотря на то, что ВСЕ значения в цепочке верны, цепочка разрывается после того, как первое значение оказывается правдивым и возвращается, поэтому две другие строки, следующие за ним, никогда не оцениваются.

В последних 2-х примерах видно, как, когда все значения в цепочке ложны, возвращается последнее значение в цепочке.

Внутри оператора if

Вот что происходит, когда вы используете эти цепочки внутри оператора if :

Получение немного большей функциональности

Использование логических операторов таким более практичным способом обычно называется оценкой короткого замыкания .

До сих пор мы видели только такие значения, как строки, undefined, null и оцениваемые объекты. Это уже может быть полезно само по себе, но что, если я скажу вам, что вы также можете помещать функции внутрь этих цепочек?

Что здесь происходит?

Сначала проверяется истинная переменная , и, поскольку это непустая строка, она оценивается как истинная , и поэтому код переходит к проверке следующего значения… Только это значение является функцией! Итак, функция запускается, и JavaScript оценивает все, что возвращает функция . Таким образом, truey && doSomeStuff() в конечном итоге становится «Я правдивый» && «хороший» после оценки обоих значений, и «хороший» возвращается, потому что это последняя истина в этой цепочке && . Но для того, чтобы добраться до этого «хорошего» значения , функция должна была быть выполнена, и выполнял действия , которые были зарегистрированы в консоли. Это означает, что когда функция оценивается, она запускается, и любой код, который мы туда вставляем, выполняется. Надеюсь, мы начинаем видеть, как мы можем использовать это в наших интересах! до true или false , говорящие нам о том, вошел ли пользователь в систему или нет. Теперь мы можем сделать что-то вроде этого в нашем коде:

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

Эта единственная строка будет делать то же самое, что и этот код:

Но разве это не выглядит намного чище? Я лично думаю, что да!

Пойдем немного дальше:

Здесь мы хотим выполнить эту функцию sendLetter() , но только если пользователь существует, у него есть адрес и в адресе есть первая строка. Если в какой-либо точке цепочки значение окажется ложным, то цепочка разорвется и sendLetter() не будет вызываться.

Использование логических операторов в дикой природе

Это компонент React. Если вы посмотрите на строку 8 , вы увидите 9Оператор 0203 && используется для включения приветствия h2 пользователю, но только если доступно имя пользователя.

Если вы хотите узнать немного больше о React с самого начала, я рекомендую вам взглянуть на мою предыдущую статью: React from Scratch.

Я нашел эту функцию в официальной кодовой базе React на Github, вы можете найти ее здесь. Он используется для проверки того, является ли объект действительным элементом React, и возвращает true , если все условия выполнены, или false, если любое из условий равно 9.0203 ложь и разорвать цепочку.

Смешивание вещей

Хотя не рекомендуется смешивать && и || вместе, я просто хотел указать, что && имеет приоритет над || при вычислении, подобно тому, как умножение * имеет приоритет над сложением + в математике. Итак:

'весна' && 'зубная паста || 'зима' && 'конфеты'

будут оцениваться как:

("весна" && "зубная паста") || ("зима" && "конфеты")

Другими словами, && будут сгруппированы вместе.

Предупреждение

Вполне вероятно, что когда вы впервые начнете изучать JavaScript, вы будете использовать и находить эти операторы только внутри операторов if , и это совершенно нормально. Но по мере того, как вы начнете продвигаться вперед и читать более продвинутые базы кода, такие как библиотеки, вы начнете видеть их и чаще использовать, чтобы сделать свой код чище и лаконичнее.

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

Подводя итог

Логические операторы && и || очень универсальны и часто неправильно понимаются. Понимание того, как они работают, может открыть целый мир возможностей и поднять ваши навыки работы с JavaScript на новый уровень.

Цепочка операторов, например something && somethingElse() && extraStuff() всегда будет возвращать значение и выполнять весь код по пути, пока не будет достигнут конец или цепочка не разорвется.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *