17.06.2024

Логические не или и: Логические операторы И, ИЛИ, НЕ в C++ | Уроки С++

Содержание

Логические операции — урок. Информатика, 8 класс.

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

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

Для записи конъюнкции используются следующие знаки: И,ˆ,⋅,&.

Например: A И B,AˆB,A⋅B,A&B.

Конъюнкцию можно описать в виде таблицы, которую называют таблицей истинности:

 

В таблице истинности перечисляются все возможные значения исходных высказываний (столбцы \(A\) и \(B\)), причём соответствующие им двоичные числа, как правило, располагают в порядке возрастания: \(00, 01, 10, 11\). В последнем столбце записан результат выполнения логической операции для соответствующих операндов.

 

Пример: 

\(A\) = «Джордж Буль создал новую область науки — математическую логику»,

\(B\) = «Клод Шеннон связал математическую логику с работой компьютера».

Построим сложное высказывание A И B: «Джордж Буль создал новую область науки — математическую логику, и Клод Шеннон связал математическую логику с работой компьютера» истинно только в том случае, когда одновременно истинны оба исходных высказывания.

Дизъюнкция

Рассмотрим два высказывания:

\(A\) = «Идея использования в логике математической символики принадлежит Готфриду Вильгельму Лейбницу»,

\(B\) = «Лейбниц является основоположником бинарной арифметики».

Очевидно, новое высказывание «Идея использования в логике математической символики принадлежит Готфриду Вильгельму Лейбницу или Лейбниц является основоположником бинарной арифметики» ложно только в том случае, когда одновременно ложны оба исходных высказывания.

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

Для записи дизъюнкции используются следующие знаки: ИЛИ;∨;|;+.

Например: A ИЛИ B;A∨B;A|B;A+B.

Дизъюнкция определяется следующей таблицей истинности:

 

Обрати внимание!

Дизъюнкцию также называют логическим сложением.

Инверсия

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

Для записи инверсии используются следующие знаки: НЕ;¬;−

Например: НЕ А;¬А;А−.
Инверсия определяется следующей таблицей истинности:

 

 

Обрати внимание!

Инверсию также называют логическим отрицанием.

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

Отрицанием высказывания «Я не знаю китайский язык» будет высказывание «Неверно, что я не знаю китайский язык» или, что в русском языке: «Я знаю китайский язык».

Отрицанием высказывания «Все юноши \(8-х\) классов — отличники» является высказывание «Неверно, что все юноши \(8-х\) классов — отличники», другими словами, «Не все юноши \(8-х\) классов — отличники».

Таким образом, при построении отрицания к простому высказыванию либо используется речевой оборот «неверно, что …», либо отрицание строится к сказуемому, тогда к соответствующему глаголу добавляется частица «не».

 

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

 

Последовательность выполнения логических операций:

  1. Инверсия;
  2. Конъюнкция;
  3. Дизъюнкция.

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

Логические функции (ссылка) — Служба поддержки Office













И

Возвращает значение ИСТИНА, если все аргументы имеют значение ИСТИНА.


ЛОЖЬ

Возвращает логическое значение ЛОЖЬ.


ЕСЛИ

Выполняет проверку условия.


ЕСЛИОШИБКА

Возвращает введенное значение, если вычисление по формуле вызывает ошибку; в противном случае возвращает результат вычисления.


ЕСНД

Возвращает значение, которое задается, если выражение принимает значение #Н/Д. В противном случае возвращает результат выражения.


УСЛОВИЯ

Проверяет соответствие одному или нескольким условиям и возвращает значение для первого условия, принимающего значение ИСТИНА.


НЕ

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


ИЛИ

Возвращает значение ИСТИНА, если хотя бы один аргумент имеет значение ИСТИНА.


ПЕРЕКЛЮЧ

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


ИСТИНА

Возвращает логическое значение ИСТИНА.


ИСКЛИЛИ

Возвращает логическое исключающее ИЛИ всех аргументов.

Информатик БУ — Основы логики. Логические операции.

В математической логике операцией называется логическая связь между двумя высказываниями. Высказывание – это некое суждение, которое, как правило, может быть либо истинным, либо ложным. При этом ложью считается логический ноль (0), а истиной – логическая единица (1).

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


Конъюнкция

Конъюнкция – это логическое умножение. Также принято называть её логическим «И». Обычно записывается в виде символов:

&, *, ˄

Приведем пример.

Чтобы поступить в вуз, нужно сдать ЕГЭ по русскому языку и математике. В данном случае, «сдать русский язык» и «сдать математику» — логические высказывания, а поступление в вуз – результат выражения. Обозначим высказывание «сдать русский язык» переменной А, высказывание «сдать математику» переменной Б, а результат выражения (т. е. поступление в вуз) переменной F:

A ˄ B = F

Таблица истинности для этого выражения будет выглядеть так:






ABF
000
010
100
111

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

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


Дизъюнкция

Дизъюнкция – это логическое сложение. Также принято называть её логическим «ИЛИ». Записывается в виде символов:

|, +, ˅

Приведем пример.

Чтобы поймать рыбу, рыбаку нужна перловка ИЛИ хлеб. В этом случае «есть перловка» и «есть хлеб» — логические высказывания, а результатом выражения может быть пойманная рыба. Обозначим высказывание «есть перловка» переменной А, а высказывание «есть хлеб» переменной B. Результат выражения – «рыба поймана» — переменной F.

А ˅ B = F

Таблица истинности для этого выражения будет выглядеть так:






ABF
000
011
101
111

Проще говоря, чтобы результат («рыба поймана») был истинный, рыбак может взять с собой или перловку, или хлеб, или и то, и другое. Но если он забудет взять наживку – рыбу он не поймает, то есть результатом выражения будет ложь.

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


Импликация

Импликация – это логическое следование. Импликацию можно сравнить с о связкой «если…то». Записывается в виде горизонтальной стрелки, направленной вправо (→).

Импликацию можно обозначить как связь начальника и исполнителя. Приведём пример.

Предположим, учитель задал ученику задание. В этом случае «учитель задал» и «ученик сделал» — высказывания, а оценка будет являться результатом выражения. Обозначим высказывание «учитель задал» переменной A, высказывание «ученик сделал» — переменной B, а результат выражения (оценку) – переменной F.

A B = F

Таблица истинности для этого выражения выглядит так:






ABF
001
011
100
111

Если учитель ничего не задал, и ученик ничего не сделал – учитель двойку не поставит. Если учитель не задал, а ученик сделал – двойки также не будет. Если учитель задал, и ученик выполнил – оценка будет положительной. Но если учитель задал, а ученик не сделал – оценка будет отрицательной.

Проще говоря, импликация ложна только в одном случае: если первое выражение истинно, а второе – ложно.


Эквиваленция

Эквиваленция – это логическое равенство (тождество) Обозначается «тройным» знаком равенства (≡). Результатом эквиваленции может быть истина только в том случае, если оба выражения, связанные эквиваленцией, равнозначны (эквивалентны).

Таблица истинности для выражения A≡B выглядит так:






ABF
001
010
100
111

Инверсия

Инверсия – это логическое отрицание. Её также называют логическим «НЕ». Записывается в виде символов:

!, ¬,

а также верхним подчеркиванием переменной.

Инверсия меняет значение переменной на противоположное, то есть:


 

Урок 8.3 — Логические элементы

8.3. Логические элементы

Все, абсолютно все электронные компоненты, обрабатывающие цифровые сигналы, состоят из небольшого набора одинаковых «кирпичиков». В микросхемах малой степени интеграции могут быть единицы и десятки таких элементов, а в современных процессорах их может быть очень и очень много. Они называются логические элементы. Логическим элементом называется электрическая схема, предназначенная для выполнения какой-либо логической операции с входными данными. Логический элемент — элемент, осуществляющий определенные логические зависимость между входными и выходными сигналами. Входные данные представляются здесь в виде напряжений различных уровней, и результат логической операции на выходе — также получается в виде напряжения определенного уровня. Логические элементы обычно используются для построения логических схем вычислительных машин, дискретных схем автоматического контроля и управления.

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

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

 При анализе работы логических элементов используется так называемая булева алгебра . Начала этого раздела математики было изложено в работах Джорджа Буля – английского математика и логика 19-го века, одного из основателей математической логики.  Основами булевой алгебры являются высказывания, логические операции, а также функции и законы. Для понимания принципов работы логических элементов нет необходимости изучать все тонкости булевой алгебры, мы освоим ее основы в процессе обучения с помощью таблиц истинности.

Еще несколько замечаний. Логические элементы (как, впрочем, и другие элементы электронных схем) принято обозначать  так, чтобы входы были слева, а выходы справа. Число входов может быть, вообще говоря, любым, отличным от нуля. Реальные цифровые микросхемы могут иметь до 8 входов, но мы ограничимся двумя – этого достаточно для понимания. Условные обозначения соответствуют отечественному ГОСТу, в других стандартах они могут быть иными.

Какие же бывают логические элементы?

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

 

Элемент «И» (AND), он же конъюнктор, выполняет операцию логического умножения:

Условное обозначение — Таблица истинности

Здесь изображен логический элемент «2И» (цифра перед буквой «И» означает число входов).  Знак  & (амперсант) в левом верхнем углу прямоугольника  указывает, что это логический элемент «И». Первые две буквы обозначения  DD1.2  указывают на то, что это цифровая микросхема (Digital), цифра слева от  точки указывает номер микросхемы на принципиальной схеме, а цифра справа от точки – номер логического элемента в составе данной микросхемы. Одна микросхема может содержать несколько логических элементов.

Состояние входов в таблице обозначаются «0» и «1» («ложь» и «истина»). Из таблицы видно, что выход «Y» будет иметь состояние «1» только в том случае, когда на обоих входах «Х1» и «Х2» будут «1». Это легко запомнить: умножение на «0» всегда дает «0».

 

Элемент «ИЛИ» (OR), он же дизъюнктор, выполняет операцию логического сложения:

Условное обозначение — Таблица истинности

Состояние «1»  на выходе будет всегда, пока есть хотя бы одна «1» на входах.

 

Элемент «НЕ» (NOT), он же инвертор, выполняет операцию логического отрицания:

Условное обозначение — Таблица истинности

Состояние на входе обратно состоянию на входе.

Вот из этих трех элементов строятся все цифровые устройства!

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

 

Элемент «И-НЕ» (NAND), конъюнктор с отрицанием:

Условное обозначение — Таблица истинности

Элемент И-НЕ работает точно так же как «И», только выходной сигнал противоположен. Там где у элемента «И» на выходе должен быть «0», у элемента «И-НЕ» будет единица. И наоборот.

 

Элемент «ИЛИ-НЕ» (NOR), дизъюнктор с отрицанием:

Условное обозначение — Таблица истинности

 

Элемент работает так же как и «ИЛИ», но с инверсией выхода.

 

Элемент «Исключающее ИЛИ» (XOR), сумматор по модулю 2:

Условное обозначение — Таблица истинности

В этом элемента «1» на выходе будет только тогда, когда на входах разные состояния.

На таких элементах  строят сумматоры двоичных многоразрядных чисел. Для этого используется еще один дополнительный выход, на котором при появлении на входах двух «1» появляется сигнал переноса разряда.

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

 

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

Содержание:

На данной странице будут рассмотренны 5 логических операций:
конъюнкция,
дизъюнкция,
инверсия,
импликация и
эквивалентность,
которых Вам будет достаточно для решения сложных логических выражений. Также мы рассмотрим порядок выполнения данных логических операций в сложных
логических выражениях и представим таблицы истинности для каждой логической операции. Советуем Вам
воспользоваться нашими программами для решения задач по математике,
геометрии и
теории вероятности.
Помоми большого количества программ для решения задач на сайте работает
форум, на котором Вы всегда можете
задать вопрос и на котором Вам всегда помогуть с решением задач. Пользуйтесь нашими сервисами на здоровье!

Глоссарий, определения логики

Высказывание — это повествовательное предложение, про которое можно определенно сказать
истинно оно или ложно (истина (логическая 1), ложь (логический 0)).

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

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

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

Логические операции и таблицы истинности

1) Логическое умножение или конъюнкция:

Конъюнкция — это сложное логическое выражение, которое считается истинным в том и только том случае, когда
оба простых выражения являются истинными, во всех остальных случаях данное сложеное выражение ложно.
Обозначение: F = A & B.

Таблица истинности для конъюнкции

ABF
111
100
010
000

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

Дизъюнкция — это сложное логическое выражение, которое истинно, если хотя бы одно из
простых логических выражений истинно и ложно тогда и только тогда, когда оба простых логических выраженныя ложны.
Обозначение: F = A + B.

Таблица истинности для дизъюнкции

ABF
111
101
011
000

3) Логическое отрицание или инверсия:

Инверсия — это сложное логическое выражение, если исходное логическое выражение истинно, то результат
отрицания будет ложным, и наоборот, если исходное логическое выражение ложно, то результат отрицания будет истинным. Другими простыми слова,
данная операция означает, что к исходному логическому выражению добавляется частица НЕ или слова НЕВЕРНО, ЧТО.

Таблица истинности для инверсии

4) Логическое следование или импликация:

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

Таблица истинности для импликации

ABF
111
100
011
001

5) Логическая равнозначность или эквивалентность:

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

Таблица истинности для эквивалентности

ABF
111
100
010
001

Порядок выполнения логических операций в сложном логическом выражении

1. Инверсия;
2. Конъюнкция;
3. Дизъюнкция;
4. Импликация;
5. Эквивалентность.

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

Слишком сложно?

Основы логики. Логические операции и таблицы истинности не по зубам? Тебе ответит эксперт через 10 минут!

Логические выражения и операторы. Курс «Python. Введение в программирование»

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

Часто в реальной жизни мы соглашаемся с каким-либо утверждением или отрицаем его. Например, если вам скажут, что сумма чисел 3 и 5 больше 7, вы согласитесь, скажете: «Да, это правда». Если же кто-то будет утверждать, что сумма трех и пяти меньше семи, то вы расцените такое утверждение как ложное.

Подобные фразы предполагают только два возможных ответа – либо «да», когда выражение оценивается как правда, истина, либо «нет», когда утверждение оценивается как ошибочное, ложное. В программировании и математике если результатом вычисления выражения может быть лишь истина или ложь, то такое выражение называется логическим.

Например, выражение 4 > 5 является логическим, так как его результатом является либо правда, либо ложь. Выражение 4 + 5 не является логическим, так как результатом его выполнения является число.

На позапрошлом уроке мы познакомились с тремя типами данных – целыми и вещественными числами, а также строками. Сегодня введем четвертый – логический тип данных (тип bool). Его также называют булевым. У этого типа всего два возможных значения: True (правда) и False (ложь).

>>> a = True
>>> type(a)
<class 'bool'>
>>> b = False
>>> type(b)
<class 'bool'>

Здесь переменной a было присвоено значение True, после чего с помощью встроенной в Python функции type() проверен ее тип. Интерпретатор сообщил, что это переменная класса bool. Понятия «класс» и «тип данных» в данном случае одно и то же. Переменная b также связана с булевым значением.

В программировании False обычно приравнивают к нулю, а True – к единице. Чтобы в этом убедиться, можно преобразовать булево значение к целочисленному типу:

>>> int(True)
1
>>> int(False)
0

Возможно и обратное. Можно преобразовать какое-либо значение к булевому типу:

>>> bool(3. 4)
True
>>> bool(-150)
True
>>> bool(0)
False
>>> bool(' ')
True
>>> bool('')
False

И здесь работает правило: всё, что не 0 и не пустота, является правдой.

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

Говоря на естественном языке (например, русском) мы обозначаем сравнения словами «равно», «больше», «меньше». В языках программирования используются специальные знаки, подобные тем, которые используются в математике: > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), == (равно), != (не равно).

Не путайте операцию присваивания значения переменной, обозначаемую в языке Python одиночным знаком «равно», и операцию сравнения (два знака «равно»). Присваивание и сравнение – разные операции.

>>> a = 10
>>> b = 5
>>> a + b > 14
True
>>> a < 14 - b
False
>>> a <= b + 5
True
>>> a != b
True
>>> a == b
False
>>> c = a == b
>>> a, b, c
(10, 5, False)

В данном примере выражение c = a == b состоит из двух подвыражений. Сначала происходит сравнение (==) переменных a и b. После этого результат логической операции присваивается переменной c. Выражение a, b, c просто выводит значения переменных на экран.

Сложные логические выражения

Логические выражения типа kByte >= 1023 являются простыми, так как в них выполняется только одна логическая операция. Однако, на практике нередко возникает необходимость в более сложных выражениях. Может понадобиться получить ответа «Да» или «Нет» в зависимости от результата выполнения двух простых выражений. Например, «на улице идет снег или дождь», «переменная news больше 12 и меньше 20″.

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

Чтобы получить True при использовании оператора and, необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет False, то и все сложное выражение будет ложным.

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

Допустим, переменной x было присвоено значение 8 (x = 8), переменной y присвоили 13 (y = 13). Логическое выражение y < 15 and x > 8 будет выполняться следующим образом. Сначала выполнится выражение y < 15. Его результатом будет True. Затем выполнится выражение x > 8. Его результатом будет False. Далее выражение сведется к True and False, что вернет False.

>>> x = 8
>>> y = 13
>>> y < 15 and x > 8
False

Если бы мы записали выражение так: x > 8 and y < 15, то оно также вернуло бы False. Однако сравнение y < 15 не выполнялось бы интерпретатором, так как его незачем выполнять. Ведь первое простое логическое выражение (x > 8) уже вернуло ложь, которая, в случае оператора and, превращает все выражение в ложь.

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

В языке Python есть еще унарный логический оператор not, то есть отрицание. Он превращает правду в ложь, а ложь в правду. Унарный он потому, что применяется к одному выражению, стоящему после него, а не справа и слева от него как в случае бинарных and и or.

Здесь у < 15 возвращает True. Отрицая это, мы получаем False.

>>> a = 5
>>> b = 0
>>> not a
False
>>> not b
True

Число 5 трактуется как истина, отрицание истины дает ложь. Ноль приравнивается к False. Отрицание False дает True.

Практическая работа

  1. Присвойте двум переменным любые числовые значения.

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

  3. Аналогично выполните п. 2, но уже с оператором or.

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

  5. Напишите программу, которая запрашивала бы у пользователя два числа и выводила бы True или False в зависимости от того, больше первое число второго или нет.

Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса

Советы по поиску

    Основные проблемы с поиском информации часто связаны с неудачным выбором ключевых слов. В качестве ключевых слов могут использоваться как отдельные слова, так и словосочетания, фразы. Все служебные слова (предлоги, союзы, частицы и т.п.) не считаются ключевыми. Термины, частота встречаемости которых мала, не следует включать в поиск, а часто встречающиеся — надо употреблять с другими словами, сужающими их значение. Например, «архитектура Москвы», «памятники Москвы».

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

    Тема: «Принцип историзма в научном исследовании».

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

    Для соединения ключевых слов в поисковой фразе, сужения или расширения поиска используются логические операторы «И» (AND), «ИЛИ» (OR), «НЕ» (NOT) и оператор близости NEAR.






оператор описание работы операторапример запроса  
И (AND)поиск документов, содержащих оба слова, соединенных оператором

музей И публика

Renaissance AND Humanism

(оба слова должны быть в найденных документах)

ИЛИ (OR)

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

оператором

 

Также данный оператор используется для альтернативных вариантов

 

вето ИЛИ запрет

(или слово » вето» или слово «запрет»должно

быть в найденных документах)   

whigs OR tory

Молдова ИЛИ Молдавия

USA OR United States 

Second World War OR World War II

 НЕ (NOT)

 употребляется перед словами, наличие которых в документе необходимо

исключить. Оператор НЕ  используется  только   лишь в случае полного

отрицания понятий

 Античная история НЕ Юлий Цезарь

(из поиска будут исключены документы, в которых встречается

словосочетание «Юлий Цезарь»)

presbyterian NOT England

 Near

/n

 оператор близости показывает, что второй термин должен находиться на

расстоянии от первого, не превышающем определенного числа слов.

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

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

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

 во второй/0 половине/XV

war NEAR5 prisoners of war

Наполеон/1 Москва

Reformation NEAR5 Germany

                   Логические операторы можно сочетать друг с другом    

                 Византия И крестносцы ИЛИ крестовые походы

Точный поиск по фразе


  »  »           

 двойные кавычки — оператор строго соответствия. Используется для поиска

точных терминов или фраз.Слова, заключенные в кавычки, появвятся во

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

применения морфологического склонения слов.

Дефис, тире являются аналогом оператора НЕ и поэтому слова и

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

 

    «Крымская война»  

    «double standards»     

 «1917-1921 гг.»

   «советско-финская война»     

 

        «Сухово-Кобылин»                                                   

Для построения сложных запросов можно воспользоваться круглыми скобками ( )

 они задают порядок действия логических операторов (сначала выполняются операции внутри скобок, а затем — между скобками)            

  (Россия /5 Германия) И «1914-1917» Не рецензия   

   (literature AND («second half» AND XIX))

Для расширения поиска можно использовать дополнительные параметры поиска — подстановочные знаки.

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

развед* (разведка, разведданные, разведывательная деятельность)

histor* (history, historic, historiograhy)

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

Леваш?в (Левашов, Левашёв)

wom?n (woman, women)

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

Не забывайте проверять орфографию в написании слов.

Получить консультации по поиску в электронных ресурсах вы можете в справочно-библиографическом отделе (ком.306), в кабинете биографики (ком.321б) или по e-mail [email protected] (c пометкой консультация).

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

Кеннет Лерой Басби и Дэйв Брауншвейг

Обзор

Логический оператор — это символ или слово, используемое для соединения двух или более выражений, так что значение полученного составного выражения зависит только от значения исходных выражений и от значения оператора. Общие логические операторы включают AND, OR и NOT.

Обсуждение

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

Логические операторы часто используются для создания тестового выражения, которое контролирует выполнение программы. Этот тип выражения также известен как логическое выражение, потому что при вычислении они создают логический ответ или значение. Есть три общих логических оператора, которые дают логическое значение, манипулируя другим логическим операндом (ами). Символы и / или названия операторов различаются в зависимости от языка программирования:

Язык И ИЛИ НЕ
С ++ && || !
С # && || !
Java && || !
JavaScript && || !
Python и или не
Swift && || !

Вертикальные черточки или символ трубопровода находятся на той же клавише, что и обратная косая черта \. Вы используете клавишу SHIFT, чтобы получить его. На большинстве клавиатур он находится чуть выше клавиши Enter. Это может быть сплошная вертикальная линия на некоторых клавиатурах и отображаться как сплошная вертикальная линия на некоторых печатных шрифтах.

В большинстве языков существуют строгие правила формирования правильных логических выражений. Пример:

6> 4 && 2 <= 14
6> 4 и 2 <= 14

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

true && true
True and True

Окончательная оценка выражения: истина.

Мы можем сказать это по-английски так: Верно, что шесть больше четырех, а два меньше или равно четырнадцати.

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

(6> 4) && (2 <= 14)
(6> 4) и (2 <= 14)

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

6> 4 && 8
6> 4 и 8

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

true && true
True and True

Для сравнения 6 с 4 и 8 вместо этого будет записано как:

6> 4 && 6> 8
6> 4 и 6> 8

Это будет ложно как:

истина и ложь
истина и ложь

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

Обычный способ показать логические отношения - это таблицы истинности.

Логика и (&&)
x л x и y
ложный ложь ложь
ложный правда ложь
истинное ложь ложь
истинное правда правда
Логический или (||)
x л x или y
ложный ложь ложь
ложный правда правда
истинное ложь правда
истинное правда правда
Логическое НЕ (!)
x не x
ложный правда
истинное ложь

Примеры

Я называю этот пример того, почему я ненавижу «и» и люблю «или».

Каждый день, когда я приходил из школы с понедельника по четверг; Я спрашивал маму: «Можно мне выйти на улицу поиграть?» Она отвечала: «Если ваша комната чистая и у вас сделана домашняя работа, вы можете выйти на улицу и поиграть». Я научился ненавидеть слово «и». Мне удалось выполнить одно из заданий и у меня было время поиграть до обеда, но оба… ну, я ненавидел «и».

В пятницу моя мама приняла более расслабленную точку зрения, и когда меня спросили, могу ли я выйти на улицу и поиграть, она ответила: «Если ваша комната чистая или у вас сделана домашняя работа, вы можете выйти на улицу и поиграть.«Я научился быстро убирать свою комнату в пятницу днем. Что ж, разумеется, я любил «или».

В качестве следующего примера представьте, что подросток разговаривает со своей матерью. Во время разговора мама говорит: «Ведь папа у тебя разумный!» Подросток говорит: «Разумно. (короткая пауза) Нет. "

Может быть, профессора колледжей подумают, что все их студенты готовились к экзамену. Ха-ха! Нет. Что ж, надеюсь, вы уловили суть.

Примеры:

  • 25 <7 || 15> 36
  • 15> 36 || 3 <7
  • 14> 7 && 5 <= 5
  • 4> 3 && 17 <= 7
  • ! ложь
  • ! (13! = 7)
  • 9! = 7 &&! 0
  • 5> 1 && 7

Дополнительные примеры:

  • 25 <7 или 15> 36
  • 15> 36 или 3 <7
  • 14> 7 и 5 <= 5
  • 4> 3 и 17 <= 7
  • не Ложь
  • нет (13! = 7)
  • 9! = 7, а не 0
  • 5> 1 и 7

Ключевые термины

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

Список литературы

Программирование на Lua: 3.3

Программирование на Lua: 3.3

Это первое издание было написано для Lua 5.0. Хотя все еще в значительной степени актуально для более поздних версий, есть некоторые отличия.
Четвертое издание предназначено для Lua 5.3 и доступно в Amazon и других книжных магазинах.
Покупая книгу, вы также помогаете поддерживать проект Lua.


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

Логические операторы
и , или , и не .
Как и управляющие структуры, все логические операторы
считать ложным, и nil, - ложным, а все остальное - истинным.
Операторы и возвращают свой первый аргумент, если он ложен;
в противном случае он возвращает свой второй аргумент.
Оператор или возвращает свой первый аргумент.
если это не ложь;
в противном случае он возвращает свой второй аргумент:

    печать (4 и 5) -> 5
    print (nil и 13) -> nil
    печать (ложь и 13) -> ложь
    печать (4 или 5) -> 4
    печать (ложь или 5) -> 5
 

И , и , и или используют ускоренную оценку,
то есть они оценивают свой второй операнд только при необходимости.

Полезная идиома Lua: x = x или v ,
что эквивалентно

    если не x, то x = v конец
 

т.е. он устанавливает x на значение по умолчанию v , когда
x не задано
(при условии, что x не установлено на false ).

Еще одна полезная идиома - (a и b) или c .
(или просто a и b или c ,
поскольку и имеют более высокий приоритет, чем или ),
что эквивалентно выражению C

    а? до н.э
 

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

    max = (x> y) и x или y
 

Когда x> y , первое выражение и истинно,
поэтому и приводят к его второму выражению ( x )
(что тоже верно, потому что это число),
а затем выражение или приводит к значению
его первое выражение, x .
Когда x> y ложно, выражения и ложны
Таким образом, или дают второе выражение: y .

Оператор , а не всегда возвращает true или false :

    печать (не ноль) -> истина
    печать (не ложь) -> истина
    печать (не 0) -> ложь
    печать (не ноль) -> ложь
 


Copyright © 2003–2004 Роберто Иерусалимши. Все права защищены.

Операторы сравнения и логические операторы | Codecademy

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

  • Операторы сравнения - операторы, которые сравнивают значения и возвращают true или false . Операторы включают: > , <, > = , <= , === и ! == .
  • Логические операторы - операторы, объединяющие несколько логических выражений или значений и обеспечивающие один логический вывод. К операторам относятся: && , || и ! .
Операторы сравнения

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

  • Меньше чем ( <) - возвращает true , если значение слева меньше значения справа, в противном случае возвращается false .
  • Greater than (> ) - возвращает true , если значение слева больше значения справа, в противном случае возвращает false .
  • Меньше или равно ( <= ) - возвращает true , если значение слева меньше или равно значению справа, в противном случае возвращается false .
  • Больше или равно (> = ) - возвращает true , если значение слева больше или равно значению справа, в противном случае возвращается false .
  • Equal to ( === ) - возвращает true , если значение слева равно значению справа, в противном случае возвращает false .
  • Не равно (! == ) - возвращает true , если значение слева не равно значению справа, в противном случае возвращает false .
Логические операторы

Операторы сравнения позволяют нам утверждать равенство оператора с JavaScript. Например, мы можем утверждать, равны ли два значения или выражения с === , или одно значение больше другого с > .

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

Оператор && требует, чтобы оба выражения были истинными, чтобы выражение было истинным. Поскольку одно выражение ложно, а другое истинно, выражение ложно и оценивается как false .

Что такое логическая логика? Примеры логической логики

5 ноября 2018 г.

Что такое логическая логика?

Булева логика - это форма алгебры, в основе которой лежат три простых слова, известные как булевы операторы: «Или», «И» и «Не».В основе логической логики лежит идея, что все значения либо истинны, либо ложны. В платформе Lotame использование логической логики позволяет создавать более сложные определения аудитории, позволяя создавать аудитории в соответствии с очень конкретным набором определений. В этой статье исследуется использование отдельных логических операторов и их отношение к созданию аудитории.

Пример «ИЛИ»

Пример «И»

Пример «НЕ <»

Логическая логика, проиллюстрированная

Пример работы логической логики при построении аудитории: OR

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

Например, для создания аудитории, включающей всех, кто любит мексиканскую, китайскую или французскую кухню, будет применяться следующее определение аудитории:

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

Пример логической логики при построении аудитории: AND

В качестве логического оператора «И» указывает, что ВСЕ указанные условия должны быть выполнены, чтобы запрос вернул истину.

В случае, если клиент собирал аудиторию и хотел нацелиться только на пользователей, которые проявили интерес к спортивным автомобилям и Fishing и History, будет применяться следующее определение аудитории:

Использование оператора «И» означает, что пользователь должен соответствовать ВСЕМ указанным критериям, чтобы быть включенным в аудиторию; пользователи, которым просто нравится Рыбалка или только Рыбалка и История (т. д.), будут исключены из этого определения аудитории.

Пример логической логики при построении аудитории: НЕ

<

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

Например, для создания аудитории пользователей старше 18 лет (НЕ 13-17 лет), проявляющих интерес к фильмам, будет использоваться следующее определение аудитории:

В данном случае «НЕ» перед 13-17 означает, что в это определение аудитории не будут включены пользователи в этом возрастном диапазоне.Также стоит отметить, что здесь также используется оператор «И». В переводе на простой английский это определение будет читаться как «Пользователи в возрасте от 13 до 17 лет, которые интересуются фильмами.

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

Узнайте больше о DMP в этом коротком видео:


Хотите узнать больше? Давай переписываться. Мы хотели бы показать вам демонстрацию нашей платформы и то, как она может помочь вашему маркетингу работать на вас, чтобы повысить вовлеченность и коэффициент конверсии. Заполните форму ниже и свяжитесь с нами!

Арифметика, сравнение, логика и многое другое.

Что такое операторы в Python?

Операторы - это специальные символы в Python, которые выполняют арифметические или логические вычисления.Значение, с которым работает оператор, называется операндом.

Например:

  >>> 2 + 3
5  

Здесь + - оператор, выполняющий сложение. 2 и 3 - операнды, а 5 - результат операции.


Арифметические операторы

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

Оператор Значение Пример
+ Добавить два операнда или унарный плюс х + у + 2
Вычесть правый операнд из левого или унарный минус х - у- 2
* Умножение двух операндов х * у
/ Разделить левый операнд на правый (всегда получается число с плавающей точкой) х / у
% Модуль - остаток от деления левого операнда на правый x% y (остаток от x / y)
// Деление этажа - деление на целое число с поправкой на левую часть числовой строки х // у
** Экспонента - левый операнд в степени правого x ** y (x в степени y)

Пример 1: Арифметические операторы в Python

  х = 15
у = 4

# Вывод: x + y = 19
print ('х + у =', х + у)

# Вывод: x - y = 11
print ('х - у =', х-у)

# Вывод: x * y = 60
print ('х * у =', х * у)

# Вывод: x / y = 3.75
печать ('х / у =', х / у)

# Вывод: x // y = 3
print ('х // у =', х // у)

# Вывод: x ** y = 50625
print ('х ** у =', х ** у)  

Выход

  х + у = 19
х - у = 11
х * у = 60
х / у = 3,75
х // у = 3
х ** у = 50625  

Операторы сравнения

Операторы сравнения используются для сравнения значений. Он возвращает либо True , либо False в зависимости от условия.

Оператор Значение Пример
> Больше - Истина, если левый операнд больше правого x> y
< Меньше чем - Истина, если левый операнд меньше правого х <у
== Equal to - Истина, если оба операнда равны х == у
! = Not equal to - Истина, если операнды не равны х! = У
> = Больше или равно - Истина, если левый операнд больше или равен правому x> = y
<= Меньше или равно - Истина, если левый операнд меньше или равен правому х <= у

Пример 2: Операторы сравнения в Python

  х = 10
у = 12

# Вывод: x> y ложно
print ('x> y is', x> y)

# Вывод: x  = y равно False
print ('x> = y is', x> = y)

# Вывод: x <= y is True
print ('x <= y is', x <= y)  

Выход

  x> y ложно
x  = y ложно
x <= y истинно  

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

Логические операторы - это операторы и , или , , а не .

Оператор Значение Пример
и Истинно, если оба операнда верны x и y
или Истинно, если любой из операндов истинен x или y
не Истинно, если операнд ложный (дополняет операнд) не x

Пример 3: Логические операторы в Python

  x = Истина
y = ложь

print ('x и y есть', x и y)

print ('x или y равно', x или y)

print ('not x is', not x)  

Выход

  x и y ложны
x или y истинно
not x is False  

Вот таблица истинности для этих операторов.


Побитовые операторы

Побитовые операторы действуют с операндами, как если бы они были строками двоичных цифр. Они работают по крупицам, отсюда и название.

Например, 2 - это 10 в двоичной системе, а 7 - это 111 . у = 14 ( 0000 1110 ) >> Побитовый сдвиг вправо x >> 2 = 2 ( 0000 0010 ) << Побитовый сдвиг влево x << 2 = 40 ( 0010 1000 )


Операторы присвоения

Операторы присваивания используются в Python для присвоения значений переменным.

a = 5 - это простой оператор присваивания, который присваивает значение 5 справа переменной a слева.

В Python есть различные составные операторы, например a + = 5 , которые прибавляют к переменной, а затем назначают то же самое. Это эквивалентно a = a + 5 .

Оператор Пример Эквивалент
= х = 5 х = 5
+ = х + = 5 х = х + 5
- = х - = 5 х = х - 5
* = х * = 5 х = х * 5
/ = х / = 5 х = х / 5
% = х% = 5 х = х% 5
// = х // = 5 х = х // 5
** = х ** = 5 х = х ** 5
& = x & = 5 x = x & 5
| = х | = 5 x = x | 5
^ = х ^ = 5 х = х ^ 5
>> = х >> = 5 х = х >> 5
<< = x << = 5 х = х << 5

Специальные операторы

Язык

Python предлагает несколько специальных типов операторов, таких как оператор идентификации или оператор членства.Они описаны ниже с примерами.

Операторы идентификации

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

Оператор Значение Пример
это Истинно, если операнды идентичны (относятся к одному и тому же объекту) x истинно
не Истинно, если операнды не идентичны (не относятся к одному и тому же объекту) x не соответствует действительности

Пример 4: Операторы идентификации в Python

  x1 = 5
y1 = 5
x2 = 'Привет'
y2 = 'Привет'
x3 = [1,2,3]
y3 = [1,2,3]

# Вывод: Ложь
печать (x1 не y1)

# Вывод: True
печать (x2 - y2)

# Вывод: Ложь
print (x3 is y3)  

Выход

  Ложь
Правда
Ложь  

Здесь мы видим, что x1 и y1 являются целыми числами с одинаковыми значениями, поэтому они равны и идентичны.То же самое с x2 и y2 (строки).

Но x3 и y3 - это списки. Они равны, но не идентичны. Это потому, что интерпретатор размещает их в памяти отдельно, хотя они равны.


Операторы членства

в и не в являются операторами членства в Python. Они используются для проверки того, найдено ли значение или переменная в последовательности (строка, список, кортеж, набор и словарь).

В словаре мы можем проверить только наличие ключа, но не значения.

Оператор Значение Пример
дюйм Истинно, если значение / переменная найдено в последовательности 5 дюймов x
не в Истинно, если значение / переменная не найдена в последовательности 5 не в x

Пример № 5: Операторы членства в Python

  x = 'Привет, мир'
y = {1: 'a', 2: 'b'}

# Вывод: True
print ('H' в x)

# Вывод: True
print ('привет' не в x)

# Вывод: True
печать (1 в г)

# Вывод: Ложь
print ('a' in y)  

Выход

  Верно
Правда
Правда
Ложь  

Здесь 'H' находится в x , но 'hello' отсутствует в x (помните, Python чувствителен к регистру).Точно так же 1 является ключевым, а 'a' - значением в словаре y . Следовательно, 'a' в y возвращает False .

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

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

IDL поддерживает три логических оператора: &&, || и ~. При работе с логическими операторами ненулевые числовые значения, непустые строки и непустые переменные кучи (указатели и ссылки на объекты) считаются истинными, все остальное - ложным.

Примечание: Программисты, знакомые с языком программирования C и многими языками, которые разделяют его синтаксис, могут ожидать ~ выполнения побитового отрицания (дополнение до единицы), а для! использоваться для логического отрицания.В IDL этого не происходит:! используется для ссылки на системные переменные, оператор NOT выполняет побитовое отрицание, а ~ выполняет логическое отрицание.

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

Оператор

Описание

Пример

&&

логическое И

Возвращает истину (1), если оба его операнда истинны; в противном случае возвращает false (0).Ненулевые числовые значения, непустые строки и ненулевые переменные кучи (указатели и ссылки на объекты) считаются истинными, все остальное - ложным.

Операнды должны быть скалярами или одноэлементными массивами. Оператор && замыкает накоротко ; второй операнд не будет оцениваться, если первый ложен. Подробнее см. Короткое замыкание.

 ПЕЧАТЬ, 5 && 7 

IDL Отпечатков:

1

 ПЕЧАТЬ, 5 && 2 

IDL Отпечатков:

1

 ПЕЧАТЬ, 4 && 0 

IDL Отпечатков:

0

 ПРИНТ, "" && "солнце" 

IDL Отпечатков:

 0 

||

Логическое ИЛИ

Возвращает истину (1), если любой из его операндов истинен; в противном случае возвращает false (0).Использует тот же тест на «истину», что и оператор &&.

Операнды должны быть скалярами или одноэлементными массивами. || оператор замыкает накоротко ; второй операнд не будет оцениваться, если первый истинен. Подробнее см. Короткое замыкание.

 IF ((5 GT 3) || (4 GT 5)) 

долл. США

 ТОГДА ПЕЧАТЬ, 'True' 
 

IDL Отпечатков:

Верно

~

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

Возвращает истину (1), если его операнд ложен; в противном случае возвращает false (0).
Использует тот же тест на «истину», что и оператор &&.

Для списков и хешей оператор логического отрицания возвращает истину (1), если список или хеш пуст; в противном случае возвращается false (0).

 ПЕЧАТЬ, ~ [1, 2, 0] 
 

IDL Отпечатков:

0 0 1

 список = СПИСОК () 
 IF (~ список) $ 
 ЗАТЕМ ПЕЧАТЬ, «Пустой список» 
 

IDL Отпечатков:

Пустой список

Короткое замыкание


&& и || логические операторы, добавленные в IDL в версии 6.0, это замыкающих операторов. Это означает, что IDL не оценивает второй операнд, за исключением случаев, когда это необходимо для определения правильного общего ответа. Короткое замыкание может быть мощным, так как оно позволяет вам основывать решение для вычисления значения второго операнда на значении первого операнда. Например, в выражении:

 Результат = Op1 && Op2 

IDL не оценивает Op2, если Op1 ложно, потому что он уже знает, что результат всей операции будет ложным.Аналогично в выражении:

 Результат = Op1 || Op2 

IDL не оценивает Op2, если Op1 истинно, потому что он уже знает, что результат всей операции будет истинным.

Чтобы гарантировать вычисление обоих операндов (возможно, потому что операнд является выражением, которое изменяет значение при вычислении), используйте функции LOGICAL_AND и LOGICAL_OR или побитовые операторы AND и OR.

Дополнительные примеры логических операторов


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

         
         
 (A LE 50) && (A GE 25) 
 
         
         
 (A GT 50) || (A LT 25) 

5.7 - Логические операторы | Изучите C ++

Хотя реляционные операторы (сравнения) могут использоваться для проверки того, является ли конкретное условие истинным или ложным, они могут проверять только одно условие за раз.Часто нам нужно знать, выполняются ли одновременно несколько условий. Например, чтобы проверить, выиграли ли мы в лотерею, мы должны сравнить, все ли выбранные нами числа совпадают с выигрышными числами. В лотерее с 6 числами это будет включать 6 сравнений, , все из которых должны быть верными. В других случаях нам нужно знать, выполняется ли какое-либо из нескольких условий. Например, мы можем решить пропустить работу сегодня, если мы заболели, или если мы слишком устали, или если мы выиграли в лотерею в нашем предыдущем примере.Это будет включать проверку того, является ли какое-либо из 3 сравнений правдой.

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

C ++ имеет 3 логических оператора:

Оператор Символ Форма Операция
Логическое НЕ!! Х истина, если x ложь, или ложь, если x истинна
Логическое И && х && у истина, если и x, и y истинны, иначе ложь
Логическое ИЛИ || x || y истина, если x или y истинны, иначе ложь

Логическое НЕ

Вы уже сталкивались с унарным оператором логического НЕ в уроке 4.9 - Логические значения. Мы можем суммировать эффекты логического НЕ так:

Логическое НЕ (оператор!)
Операнд Результат
истинное ложь
ложный правда

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

Логическое НЕ часто используется в условных выражениях:

bool tooLarge {x> 100}; // tooLarge истинно, если x> 100

if (! tooLarge)

// делаем что-нибудь с x

else

// выводим ошибку

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

#include

int main ()

{

int x {5};

int y {7};

if (! X> y)

std :: cout << x << "не больше, чем" << y << '\ n';

else

std :: cout << x << "больше, чем" << y << '\ n';

возврат 0;

}

Эта программа напечатает:

 5 больше 7
 

Но x не больше y , так как же это возможно? Ответ заключается в том, что поскольку оператор логического НЕ имеет более высокий приоритет, чем оператор «больше чем», выражение ! x> y фактически оценивается как (! x)> y .Поскольку x равно 5,! X оценивается как 0 , а 0> y ложно, поэтому выполняется оператор else !

Правильный способ написать приведенный выше фрагмент:

#include

int main ()

{

int x {5};

int y {7};

if (! (X> y))

std :: cout << x << "не больше, чем" << y << '\ n';

else

std :: cout << x << "больше, чем" << y << '\ n';

возврат 0;

}

Таким образом, сначала будет вычислено x> y , а затем логическое НЕ изменит логический результат.

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

Простое использование логического НЕ , например if (! Value) , скобки не нужны, потому что приоритет не играет роли.

Логическое ИЛИ

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

Логическое ИЛИ (оператор ||)
Левый операнд Правый операнд Результат
ложный ложь ложь
ложный правда правда
истинное ложь правда
истинное правда правда

Например, рассмотрим следующую программу:

#include

int main ()

{

std :: cout << "Введите число:";

int value {};

std :: cin >> value;

if (value == 0 || value == 1)

std :: cout << "Вы выбрали 0 или 1 \ n";

else

std :: cout << "Вы не выбрали 0 или 1 \ n";

возврат 0;

}

В этом случае мы используем логический оператор ИЛИ, чтобы проверить, истинно ли левое условие (значение == 0) или правое условие (значение == 1).Если один из них (или оба) истинны, оператор логического ИЛИ принимает значение «истина», что означает выполнение оператора if . Если ни один из них не является истиной, логический оператор OR принимает значение false, что означает выполнение оператора else .

Вы можете связать вместе несколько операторов логического ИЛИ :

if (value == 0 || value == 1 || value == 2 || value == 3)

std :: cout << "Вы выбрали 0, 1, 2 или 3 \ n";

Новые программисты иногда путают оператор логического ИЛИ (||) с побитовым оператором ИЛИ (|) (будет рассмотрено позже).Несмотря на то, что в названии обоих есть ИЛИ , они выполняют разные функции. Их смешение, вероятно, приведет к неверным результатам.

логическое И

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

Логическое И (оператор &&)
Левый операнд Правый операнд Результат
ложный ложь ложь
ложный правда ложь
истинное ложь ложь
истинное правда правда

Например, нам может потребоваться узнать, находится ли значение переменной x между 10 и 20 .Фактически это два условия: нам нужно знать, больше ли x , чем 10 , а также, меньше ли x , чем 20 .

#include

int main ()

{

std :: cout << "Введите число:";

int value {};

std :: cin >> value;

if (value> 10 && value <20)

std :: cout << "Ваше значение от 10 до 20 \ n";

else

std :: cout << "Ваше значение не находится между 10 и 20 \ n";

возврат 0;

}

В этом случае мы используем логический оператор И , чтобы проверить, истинны ли левое условие (значение> 10) И правое условие (значение <20).Если оба значения истинны, логический оператор AND принимает значение true, а оператор if выполняется. Если ни один из них не является истиной или только один из них, логический оператор И принимает значение ложно, и выполняется оператор else .

Как и в случае с логическим OR , вы можете связать вместе множество операторов логического AND :

if (value> 10 && value <20 && value! = 16)

// делаем что-то

else

// делаем что-то еще

Если все эти условия верны, будет выполнен оператор if .Если какое-либо из этих условий неверно, будет выполнен оператор else .

Оценка короткого замыкания

Для того, чтобы логическое И и возвращали истину, оба операнда должны быть истинными. Если первый операнд оценивается как ложь, логическое И знает, что он должен вернуть ложь, независимо от того, оценивается ли второй операнд как истинное или ложное. В этом случае логический оператор AND сразу же вернет false, даже не оценив второй операнд! Это известно как оценка короткого замыкания и выполняется в основном в целях оптимизации.

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

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

if (x == 1 && ++ y == 2)

// что-то сделать

, если x не равно 1 , все условие должно быть ложным, поэтому ++ y никогда не оценивается! Таким образом, y будет увеличиваться только в том случае, если x оценивается как 1, что, вероятно, не то, что планировал программист!

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

Как и в случае с логическим и побитовым ИЛИ, новые программисты иногда путают логический оператор И (&&) с оператором побитового И (&).

Смешивание AND и OR

Смешивание логических операторов ИЛИ и и логических ИЛИ в одном выражении часто невозможно избежать, но это область, полная потенциальных опасностей.

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

Новые программисты часто пишут такие выражения, как value1 || значение2 && значение3 . Поскольку логическое И имеет более высокий приоритет, это оценивается как значение1 || (значение2 && значение3) , а не (значение1 || значение2) && значение3 .Надеюсь, это то, чего хотел программист! Если программист предполагал оценку слева направо (как это происходит со сложением / вычитанием или умножением / делением), программист получит результат, которого он или она не ожидал!

При смешивании логического И И и логического ИЛИ в одном выражении рекомендуется явно заключить в скобки каждый оператор и его операнды. Это помогает предотвратить ошибки приоритета, упрощает чтение кода и четко определяет, как вы планировали оценивать выражение.Например, вместо записи value1 && value2 || value3 && value4 , лучше писать (value1 && value2) || (значение3 && значение4) .

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

Закон Де Моргана

Многие программисты также ошибаются, полагая, что ! (X && y) - это то же самое, что ! X &&! Y .К сожалению, вы не можете «распределить» логическое НЕ таким образом.

Закон Де Моргана говорит нам, как логическое НЕ должно распределяться в этих случаях:

! (X && y) эквивалентно ! X || ! y
! (x || y) эквивалентно ! x &&! y

Другими словами, когда вы распределяете логическое НЕ , вам также необходимо перевернуть логическое И на логическое ИЛИ , и наоборот!

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

Где оператор логического исключающего ИЛИ (XOR)?

Логический XOR - это логический оператор, представленный на некоторых языках, который используется для проверки истинности нечетного числа условий.

Логический XOR
Левый операнд Правый операнд Результат
ложный ложь ложь
ложный правда правда
истинное ложь правда
истинное правда ложь

C ++ не поддерживает логический оператор XOR .В отличие от логического ИЛИ или или логического И , логическое ИЛИ не может быть оценено коротким замыканием. По этой причине создание логического оператора XOR из операторов логического OR и логического AND является сложной задачей. Однако вы можете легко имитировать логический XOR , используя оператор неравенства (! =):

if (a! = B) ... // a XOR b, если a и b являются логическими

Это может быть расширено до нескольких операндов следующим образом:

если (a! = B! = C! = D)... // a XOR b XOR c XOR d, предполагая, что a, b, c и d являются логическими

Обратите внимание, что приведенные выше шаблоны XOR работают только в том случае, если операнды являются логическими (не целыми числами). Если вам нужна форма логического XOR , которая работает с не-логическими операндами, вы можете static_cast их в bool:

if (static_cast (a)! = Static_cast (b)! = Static_cast (c)! = Static_cast (d))... // a XOR b XOR c XOR d, для любого типа, который может быть преобразован в bool

Время викторины

Оцените следующие выражения.

Примечание: в следующих ответах мы «объясняем нашу работу», показывая вам шаги, предпринятые для получения окончательного ответа. Шаги разделены символом => . Выражения, которые были проигнорированы из-за правил короткого замыкания, помещены в квадратные скобки. Например,
(1 <2 || 3! = 3) =>
(true || [3! = 3]) =>
(true) =>
true
означает, что мы оценили (1 <2 || 3! = 3), чтобы прийти к (true || [3! = 3]), и вычислил это, чтобы прийти к «true».3! = 3 никогда не выполнялся из-за короткого замыкания.

a) (верно && верно) || ложь

Показать решение

(true && true) || false =>
true || [false] =>
верно

b) (false && true) || правда

Показать решение

(false && [true]) || true =>
ложь || true =>
правда

Короткое замыкание происходит только в том случае, если первый операнд || - это , правда .

c) (false && true) || ложь || правда

Показать решение

(false && [true]) || ложь || истина =>
ложь || ложь || истина =>
ложь || истина =>
истина

г) (5> 6 || 4> 3) && (7> 8)

Показать решение

(5> 6 || 4> 3) && (7> 8) =>
(ложь || истина) && ложь =>
истина && ложь =>
ложь

e)! (7> 6 || 3> 4)

Показать решение

! (7> 6 || 3> 4) =>
! (True || [3> 4]) =>
! True =>
false

.

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

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