Что выполняется первым и или или
Перейти к содержимому

Что выполняется первым и или или

  • автор:

Алгебра логики

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

Понятие алгебры логики

Обратите внимание на этого персонажа:

Я скажу про него две вещи:

  1. Этот кот в галстуке.
  2. Этот кот белого цвета.

Очевидно, что с первым высказыванием и поспорить нельзя, а вот второе — наглая ложь. А если я захочу вас запутать: «Этот кот в галстуке или он белого цвета, из чего следует, что он белого цвета и в галстуке или не белый». Что это в итоге — правда или ложь?

Чтобы это определить, в математике есть отдельный раздел.

Алгебра логики — это раздел математики, который занимается логическими операциями над высказываниями.

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

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

Как вычислить истинность логического выражения?

Термин высказывание, мы теперь знаем. Но что такое логическое выражение? Выражение — это уравнение из высказываний, как математическое уравнение из чисел.

«Этот кот вооружен и его глаза зеленого цвета», — в одном выражении мы использовали два высказывания.

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

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

Так и работают логические операторы — в зависимости от них все выражение и принимает значение истины или лжи.

Основные логические операторы алгебры логики:

    Конъюнкция: логическое умножение или логическое И. В записи обозначается как ∧. А ∧ В дает истину только в том случае, если оба высказывания А и В истинны.

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

Называется логическим сложением за схожесть: если складывать только 0 и 1, чем мы и занимаемся, то достаточно одному слагаемому быть 1, чтобы все выражение не было равно 0.

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

Приоритет этих операторов:

  1. инверсия;
  2. конъюнкция;
  3. дизъюнкция;
  4. импликация;
  5. эквиваленция.

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

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

В логических уравнениях высказывания используются в виде переменных, а главная проблема, которую рассматривает алгебра логики — когда точно неизвестна истинность каждого высказывания. Назовем эту ситуацию “кот в мешке”. Сказать про кота можно что угодно, но будет ли это правдой — мы не узнаем, пока не заглянем в мешок. В таких ситуациях нам может помочь таблица истинности.

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

В этой таблице содержатся все возможные наборы переменных. Количество наборов N зависит от количества различных переменных i как N = 2 i .

Чтобы удобно записать наборы, нумеруем их по порядку начиная с 0, переводим их номер в двоичную систему счисления (2сс) и записываем набор цифр.

Давайте запишем таблицы истинности для известных нам логических операторов:

  • инверсия берет только 1 переменную и сразу меняет ее значение:
  • конъюнкция берет две переменные и возвращает 1 только в том случае, если обе равны 1:
  • дизъюнкция вернет 1, если хотя бы одна из переменных равна 1:
  • эквиваленция вернет 1, если переменные равны, и 0 в противном случае:
  • импликация вернет 0, если из истины будет следовать ложь, и 1 во всех остальных случаях:
Импликацию можно выразить через дизъюнкцию:
А ⇒ В = ¬А ∨ В

Зная таблицы истинности отдельных операторов, давайте попробуем составить таблицу истинности для полного выражения.

Например, для выражения: А ∧ (В ∨ С) ≡ В ⇒ ¬А.

Важно правильно расставить порядок операций. Как и всегда, в первую очередь выполняется действие в скобках, а дальше — в порядке приоритета.

Здесь порядок операций будет следующим:

Создадим таблицу, в которой сразу пропишем все наборы 0 и 1 для переменных А и В и добавим столбцы для каждого шага вычисления.

Чтобы удобно записать наборы, пронумеруем их по порядку начиная с 0. Переведем их номер в 2сс и запишем набор цифр. У нас 3 различные переменные, поэтому должно быть 8 наборов.

  1. Первое действие — сложение В и С. Для каждого набора запишем результат сложения в соответствующий столбец.
  1. Второе действие — инверсия переменной А.
  1. Третье действие — умножение значения А на результат первого действия:
  1. Четвертое — импликация значения В и результата второго действия:
  1. И последнее действие — эквиваленция результатов 3 и 4 действий:

Последний столбец — и есть результат таблицы истинности. По нему можно сказать, что при А = 1, В = 0 и С = 1 все исходное выражение равно 1, а во всех остальных случаях — 0.

Законы логики

Их не так уж и мало: от самых простых и очевидных до достаточно хитрых; от тех, которые встречаются очень часто до довольно редких.

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

Попробуем упростить исходное выражение ¬(¬А ∧ ¬В) ∨ В ∧ С:

  1. Первым можно увидеть закон де Моргана, где у нас идет отрицание целой скобки:

¬(¬А ∧ ¬В) ∨ В ∧ С = ¬(¬А) ∨ ¬(¬В) ∨ В ∧ С

  1. Здесь же появляются переменные А и В, к которым можно применить закон двойного отрицания:

¬(¬А) ∨ ¬(¬В) ∨ В ∧ С = А ∨ В ∨ В ∧ С

  1. Можно заметить закон поглощения — В складывается с умножением В на С:

А ∨ В ∨ В ∧ С = А ∨ В

Итого, уравнение с 3 переменными и множеством отрицаний мы смогли превратить в максимально простую запись, где осталось всего 2 переменные:

¬(¬А ∧ ¬В) ∨ В ∧ С = А ∨ В

Фактчек

  • Алгебра логики — это математика, которая пользуется не числами, а высказываниями, являющимися истинными или ложными. Истина обозначается как 1, а ложь — как 0.
  • Основными логическими операторами являются инверсия, конъюнкция, дизъюнкция, импликация и эквиваленция.
  • Для расчета истинности логического уравнения используется таблица истинности.
  • Законы логики помогают сокращать логические уравнения.

Проверь себя

Задание 1.
Выберите правильный порядок приоритета логических операторов:

  1. Импликация, эквиваленция, конъюнкция, дизъюнкция, инверсия.
  2. Инверсия, конъюнкция, дизъюнкция, импликация, эквиваленция.
  3. Инверсия, конъюнкция, дизъюнкция, эквиваленция, импликация.
  4. Инверсия, дизъюнкция, конъюнкция, эквиваленция, импликация.

Задание 2.
Сопоставьте название логического оператора с упрощенным:

Инверсия А. Умножение
Эквиваленция Б. Отрицание
Импликация В. Следование
Дизъюнкция Г. Равенство
Конъюнкция Д. Сложение

Задание 3.
Чему будет равен последний столбец таблицы истинности для уравнения: А ∨ В ⇒ ¬С?

  1. 11101010
  2. 11101111
  3. 11111110
  4. 11000100

Задание 4.
Сократите логическое выражение: ¬(А ∨ В) ∧ (¬А ∨ С)

  1. ¬(А ∧ В)
  2. ¬А ∨ ¬В ∨ С
  3. ¬А ∧ ¬В ∧ С
  4. ¬А ∧ ¬В

Ответы: 1. — 2; 2. — 1Б, 2Г, 3В, 4Д, 5А; 3. — 1; 4. — 4.

Логические операторы

Здесь мы рассмотрим первые пять, операторы ?? и ??= будет в следующей статье.

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

Давайте рассмотрим их подробнее.

Оператор «ИЛИ» выглядит как двойной символ вертикальной черты:

Традиционно в программировании ИЛИ предназначено только для манипулирования булевыми значениями: в случае, если какой-либо из аргументов true , он вернёт true , в противоположной ситуации возвращается false .

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

Существует всего четыре возможные логические комбинации:

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

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

Например, число 1 будет воспринято как true , а 0 – как false :

Обычно оператор || используется в if для проверки истинности любого из заданных условий.

Можно передать и больше условий:

ИЛИ "||" находит первое истинное значение

Описанная выше логика соответствует традиционной. Теперь давайте поработаем с «дополнительными» возможностями JavaScript.

Расширенный алгоритм работает следующим образом.

При выполнении ИЛИ || с несколькими значениями:

Оператор || выполняет следующие действия:

  • Вычисляет операнды слева направо.
  • Каждый операнд конвертирует в логическое значение. Если результат true , останавливается и возвращает исходное значение этого операнда.
  • Если все операнды являются ложными ( false ), возвращает последний из них.

Значение возвращается в исходном виде, без преобразования.

Другими словами, цепочка ИЛИ || возвращает первое истинное значение или последнее, если такое значение не найдено.

Это делает возможным более интересное применение оператора по сравнению с «чистым, традиционным, только булевым ИЛИ».

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

Например, у нас есть переменные firstName , lastName и nickName , все они необязательные (т.е. они могут быть неопределенными или иметь ложные значения).

Давайте воспользуемся оператором ИЛИ || , чтобы выбрать ту переменную, в которой есть данные, и показать её (или «Аноним», если ни в одной переменной данных нет):

Если бы все переменные были ложными, в качестве результата мы бы наблюдали "Аноним" .

Сокращённое вычисление.

Ещё одной отличительной особенностью оператора ИЛИ || является так называемое «сокращённое вычисление».

Это означает, что ИЛИ || обрабатывает свои операнды до тех пор, пока не будет достигнуто первое истинностное значение, и затем это значение сразу же возвращается, даже не затрагивая другие операнды.

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

В приведенном ниже примере срабатывает только второй alert :

В первой строке оператор ИЛИ || останавливает выполнение сразу после того, как сталкивается с истинным значением ( true ), поэтому сообщение не показывается.

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

||= (Логическое присваивание ИЛИ)

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

Вот его синтаксис:

Оператор ||= принимает два операнда и выполняет следующие действия:

  • Вычисляет операнды слева направо.
  • Конвертирует a в логическое значение.
  • Если a ложно, присваивает a значение b .

Концепция оператора ||= заключается в «сокращённом вычислении», принцип работы которого мы разобрали ранее.

Теперь давайте перепишем a ||= b под вид «сокращённого вычисления»:

Мы уже знаем, что ИЛИ || возвращает первое истинное значение, поэтому, если a является таковым, вычисление до правой части выражения не дойдёт.

Основные логические операции. 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:

1-20219-a11fa6.jpg

Логическая операция OR (ИЛИ)

Оператор OR также выполняется с 2-мя битами (a и b). Результат равен 0, если a и b равны 0, иначе он равен 1. Смотрим таблицу истинности.

2-20219-a4e8af.jpg

Логическая операция XOR (исключающее ИЛИ)

Оператор XOR обозначается ^ .

XOR выполняется с 2-мя битами (a и b). Результат выполнения операции XOR (исключающее ИЛИ) равен 1, когда один из битов b или a равен 1. В остальных ситуациях результат применения оператора XOR равен 0.

Таблица истинности логической операции для XOR (исключающее ИЛИ) выглядит так:

3-20219-7c562b.jpg

Используя XOR (исключающее ИЛИ), вы можете поменять значения 2-х переменных одинакового типа данных, не используя временную переменную. А ещё, посредством XOR можно зашифровать текст, например:

Согласен, XOR — далеко не самый надёжный метод шифрования, но это не значит, что его нельзя сделать частью какого-либо шифровального алгоритма.

Логическая операция NOT (НЕ)

Это побитовое отрицание, поэтому выполняется с одним битом и обозначается

Результат зависит от состояния бита. Если он в нулевом состоянии, то итог операции — единица и наоборот. Всё предельно просто.

4-20219-fd7aab.jpg

Эти 4 логические операции следует запомнить в первую очередь, т. к. с их помощью можно получить практически любой возможный результат. Также существуют такие операции, как << (побитовый сдвиг влево) и >> (побитовый сдвиг вправо).

§ 4. Логические операции И и ИЛИ

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

4.1. Логическая операция И

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

Составное высказывание А И В, образованное в результате объединения двух простых высказываний А и B логической операцией И, истинно тогда и только тогда, когда А и В одновременно истинны (пример 4.1 и пример 4.2).

Операцию И называют логическим умножением. Равенства 1 · 1 = 1, 1 · 0 = 0, 0 · 1 = 0, 0 · 0 = 0, верные для обычного умножения, верны и для логического умножения.

Представим таблицу истинности для логической операции И:

А И В

Если хотя бы одно из простых высказываний, связанных операцией И, будет ложным, то и составное высказывание будет ложным.

Для записи логической операции И используют следующие обозначения: A И B, A AND B, A · B, A * B, AB, A & B.

4.2. Логическая операция ИЛИ

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

Другими словами, составное высказывание А ИЛИ В будет истинным, если истинно хотя бы одно из двух составляющих его простых высказываний (пример 4.4).

Таблица истинности для логической операции ИЛИ имеет следующий вид:

Операцию ИЛИ называют логическим сложением. Равенства 1 + 0 = 1, 0 + 1 = 1, 0 + 0 = 0, верные для обычного сложения, верны и для логического сложения.

Для записи логической операции ИЛИ можно использовать следующие выражения: A ИЛИ B, A OR B, A + B, AB, A | B.

Если в логическом выражении присутствует несколько логических операций, то важно определить порядок их выполнения. Наивысшим приоритетом обладает операция НЕ. Логическая операция И, т. е. логическое умножение, выполняется раньше операции ИЛИ — логического сложения (пример 4.5* и пример 4.6*).

Для изменения порядка выполнения логических операций используют скобки: в этом случае сначала выполняются операции в скобках, а затем — все остальные.

Логические операции И и ИЛИ подчиняются переместительному закону:

A И B = B И A ;

A ИЛИ B = B ИЛИ A .

Чтобы определить значение составного логического выражения, иногда достаточно знать значение только одного простого высказывания.

Так, если в составном высказывании с операцией И значение хотя бы одного простого высказывания является ложным, то и значение составного высказывания будет ложным. Если в составном высказывании с операцией ИЛИ значение хотя бы одного простого будет истинным, то и значение составного высказывания будет истинным (пример 4.7).

Данное высказывание является составным, поскольку оно содержит два простых высказывания:

«Число 456 трехзначное» (высказывание А) и «Число 456 четное» (высказывание В). Высказывания А и В соединены вместе логической операцией И, в результате получено составное высказывание А И B. Высказывание А истинно, высказывание В истинно. Поэтому высказывание А И B истинно: (А И B) = 1.

Пример 4.2. Высказывание А: «Геракл — герой древнегреческой мифологии». Истинно, А = 1.

Высказывание В: «Геракл — сын бога Зевса». Истинно, B = 1.

Высказывание А И В: «Геракл — герой древнегреческой мифологии И сын бога Зевса». Истинно, (А И В) = 1.

Пример 4.3. Проанализируем высказывание «Семиклас-сники изучают философию или астрономию».

Данное составное высказывание образовано из двух простых высказываний: «Семиклассники изучают философию» (высказывание А), «Семиклас-сники изучают астрономию» (высказывание В), которые связаны логической операцией ИЛИ. В результате получилось составное высказывание А ИЛИ B. Высказывание А ложно, высказывание В ложно. Поэтому высказывание А ИЛИ B ложно: (А ИЛИ B) = 0.

Пример 4.4. Высказывание А: «Франциск Скорина — белорусский первопечатник». Истинно, А = 1.

Высказывание В: «Стефан Баторий — турецкий султан». Ложно, B = 0.

Высказывание «Франциск Скорина — белорусский первопечатник, ИЛИ Стефан Баторий — турецкий султан» будет истинным, (А ИЛИ В) = 1.

Пример 4.5*.
Рассмотрим выражение: А ИЛИ B И НЕ С. Распишем по действиям вычисление значения логического выражения:

  1. 1) D = НЕС;
  2. 2) E = BИD;
  3. 3) F = АИЛИE.

Значение высказывания F, полученное в 3-м действии, определит значение исходного логического выражения.

Пример 4.6*.
Пусть высказывание А = 1, B = 0, С = 0. Найдем значение логического выражения: А ИЛИ B И НЕ С.

  1. 1) D = НЕС = 1;
  2. 2) E = BИD = 0 И 1 = 0;
  3. 3) F = АИЛИE = 1 ИЛИ 0 = 1.

Значит, при начальных значениях А = 1, B = 0, С = 0 значение логического выражения А ИЛИ B И НЕ С истинно.

Пример 4.7. Высказывание А: «Прогноз погоды обещает дожди». Высказывание В: «Сейчас на улице идет дождь».

Высказывание А И B будет ложным, если мы увидели, что на улице нет дождя (независимо от того, что обещал прогноз погоды).

1 В каких условиях составное высказывание А И В может быть истинным?

  • Если А ложно и В истинно.
  • Если А ложно, а В истинно.
  • Если А истинно и В истинно.
  • Если А истинно, а В ложно.

2 В каких случаях составное высказывание А ИЛИ В может быть ложным?

  • Если А истинно и В истинно.
  • Если А ложно, а В истинно.
  • Если А истинно, а В ложно.
  • Если А ложно и В ложно.

  1. Мяч круглый, ИЛИ Земля плоская.
  2. Кролики — домашние животные, И баобаб растет в Беловежской пуще.
  3. Клавиатура — устройство ввода информации, ИЛИ винчестер — устройство вывода информации.
  4. М. Ю. Лермонтов написал стихотворение «Парус», И И. А. Крылов написал басню «Квартет».
  5. Сосна — хвойное дерево, И кедр — не хвойное дерево.
  6. Процессор — устройство обработки информации в компьютере, ИЛИ наушники — не устройство ввода информации.
  7. Континенты и острова — это большие участки суши.

2 О том, как прошли летние каникулы, Кира рассказала своим друзьям следующее:

  1. Я была у бабушки в деревне, и рядом с деревней было озеро.
  2. По озеру плавала лодка или утка.
  3. Мы с бабушкой насобирали малины и смородины.
  4. Я составила букет из цветов. В нем были ромашки или гвоздики.

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

3 Откройте файл с рисунком и разложите грибы по корзинкам так, чтобы было истинным следующее высказывание: «В большой корзине все грибы съедобные, и в маленькой корзине все грибы несъедобные».

4 Откройте файл с рисунком и поставьте все цветы в вазы так, чтобы было истинным высказывание: «В синей вазе все цветы розы, или в красной вазе все цветы не красного цвета».

5* Найдите значения логических выражений, если А = 1, B = 1, С = 0, D = 0.

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

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