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

Данные какого типа возвращают логические выражения

  • автор:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#6 Boolean Логический тип данных. Логические выражения. Операции AND и OR. Таблицы истинности. Приоритет операция. Паскаль

vedro-compota's picture

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

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

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

Переменные типа boolean

Объявление переменных логического типа

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

Литералы логического типа (логические литеры) и присваивание значений переменным

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

а для обозначение лжи литерал:

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

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

Значение переменных логического типа после объявления

Сразу после объявления переменные логического типа имеют значение false.

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

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

В этом уроке мы рассмотри три логические операции:

  1. OR — т.н. логическое ИЛИ (или «логическая сумма» или «дизъюнкция»).
  2. AND — т.н. логическое И (или «логическое умножение» или «конъюнкция»).
  3. Not — отрицание («инверсия»)

Операция OR (логическое ИЛИ) — логическая сумма

Операция OR принимает два операнда логического (boolean) типа (один слева другой справа) и возвращает результат, опять же, логического типа.

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

Если условно считать, что $true$ это $1$, а $false$ это $0$, то таблицу истинности логическое операции OR можно переписать так:

— обычно её записывают в математике именно с нулями и единицами.

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

Или в виде картинки:

Посмотрим на любую из двух таблиц — можно видеть, что:

Операция $OR$ возвращает $true$, если хотя бы один аргумент истинен, а в остальных случаях $false$.

Проиллюстрируем это ещё одной картинкой:
логическое ИЛИ Паскаль таблица истинности как работает схема

Операция AND (логическое И) — логическое умножение

Операция AND, как и OR, принимает два операнда логического (boolean) типа (один слева другой справа) и возвращает результат, опять же, логического типа.

Её таблица истинности:

логическое произведение Паскаль операция И пример

Или в виде картинки:

Операция $AND$ возвращает $true$, только если оба аргумента истинны, а в остальных случаях $false$.

Если использовать более длинную форму записи, то получим:

Ещё одна иллюстрация работы AND (логическое И):
логическое сложение И Паскаль таблица истинности

Операция Not — отрицание (логическое отрицание)

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

Не правда — это ложь, а не ложь — это истина

— на этом высказывании и основа таблица истинности для операции not:

логическое отрицание NOT Паскаль пример таблица истинности

Или:

Или ещё более красочная иллюстрация, объясняющая работу данной операции:
Паскаль операция НЕ логические операции отрицание схема

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

Логические выражения — это выражения, результат которых имеет тип boolean.

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

Если есть скобки

Если есть в выражении есть скобки, то подвыражения вычисляются также как в математике — то есть сначала вычисляются те подвыражения, которые окружает наибольшее число скобок, например:

Если в выражении только AND или только OR и нет скобок

Если используется одна и та же операция и нет скобок, то вычисление происходит слева направо, например (запишем, упрощая выражение):

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

Посчитаем значения для тех же самых операндов, но заменив OR на AND:

Если есть и OR и AND и без скобок. Приоритет операций

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

Поясним порядок вычисления выражения, скажем:

— это выражение эквивалентно выражению со скобками (в силу приоритета AND над OR — точно так же как арифметическое умножение выполняется раньше сложения в ситуации, когда нет скобок):

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

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

Возьмём какое-нибудь выражение из уже рассмотренные выше, например:

Мы можем вынести какое-нибудь из значений в этом выражении в переменную и результат присвоить какой-то другой переменной, например:

Можно и вообще все значения хранить в переменных (значение $b$ от этого не изменится):

Вывод данных логического типа на экран

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

или вменсте с аргументами другого типа:

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

Значения типа boolean как результат сравнения данных других типов

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

  • $=$ (проверка на равенство)
    Например:
  • $\lt>$ — «не равно» (проверка на неравенство)
    Например:
  • $>$ («больше«)
    Например:
  • $>=$ («больше либо равно«)
    Например:
  • $\lt $ («меньше«)
    Например:
  • $\lt= $ («меньше либо равное«)
    Например:

ВЫВОД: результат сравнения данных всегда обладает логическим типом.

Смешанные выражения

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

Вычислим это выражение по шагам:
— скобки имеют приоритет, потому сначала вычисляем арифметическое выражение с наиболее высоким приоритетом — его результат типа integer и =3, а именно:

Далее сравниваются два целых числа, результат же сравнения имеет уже тип boolean:

— true, т.к. $3$ действительно больше либо равно $3$. Далее просто считаем слева направо:

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

Разбор задач

Пример №1

Сравните число $5$ и число $2.3$ результат сравнения выведите на экран.

Самое простое решение:

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

Ну и наконец если требуется записать результат сравнения в переменную, то:

Пример №2

Дано целое число A. Проверить истинность высказывания: «Число A является положительным».

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

Пример №3

Дано целое число A. Проверить истинность высказывания: «Число A является нечетным».

Для того чтобы узнать, является ли данное число нечетным в Паскале предусмотрена специальная функция Odd, которая возвращает true, если число нечетное и false, если число четное.

Запустите код и проверьте как работает программа.

Пример №4

Дано целое число A. Проверить истинность высказывания: «Число A является четным».

Для того чтобы узнать является ли число нечетным, используем уже известную нам функцию, затем инвертируем результат (используя логическую операцию Not — см. правила её работы выше):

Пример №5

Даны три целых числа: $A$, $B$, $C$. Проверить истинность высказывания: «Число $B$ находится между числами $A$ и $C$».

В решении этой задачи нам потребуется операция логического умножения, таблица истинности которой требует одновременности выполнения условий:

Видео-пояснения

Для этого урока имеются следующие видео (см. в таком порядке):

Самостоятельная работа — вопросы и задачи

Теоретические вопросы:

  1. Чтобы такое логический тип данных? Для чего он нужен?
  2. Какие литералы логического типа вы знаете? Сколько их?
  3. Какие выражения могут возвращать логический тип данных?
    Какой тип возвращает выражение:

? А какой тип у выражения:

Практические задачи:

Следующие задачи решите в виде программы:

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

Данные какого типа возвращают логические выражения

#6 Boolean Логический тип данных. Логические выражения. Операции AND и OR. Таблицы истинности. Приоритет операция. Паскаль

vedro-compota's picture

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

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

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

Переменные типа boolean

Объявление переменных логического типа

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

Литералы логического типа (логические литеры) и присваивание значений переменным

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

а для обозначение лжи литерал:

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

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

Значение переменных логического типа после объявления

Сразу после объявления переменные логического типа имеют значение false.

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

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

В этом уроке мы рассмотри три логические операции:

  1. OR — т.н. логическое ИЛИ (или «логическая сумма» или «дизъюнкция»).
  2. AND — т.н. логическое И (или «логическое умножение» или «конъюнкция»).
  3. Not — отрицание («инверсия»)
Операция OR (логическое ИЛИ) — логическая сумма

Операция OR принимает два операнда логического (boolean) типа (один слева другой справа) и возвращает результат, опять же, логического типа.

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

Если условно считать, что $true$ это $1$, а $false$ это $0$, то таблицу истинности логическое операции OR можно переписать так:

— обычно её записывают в математике именно с нулями и единицами.

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

Или в виде картинки:

Посмотрим на любую из двух таблиц — можно видеть, что:

Операция $OR$ возвращает $true$, если хотя бы один аргумент истинен, а в остальных случаях $false$.

Проиллюстрируем это ещё одной картинкой:
логическое ИЛИ Паскаль таблица истинности как работает схема

Операция AND (логическое И) — логическое умножение

Операция AND, как и OR, принимает два операнда логического (boolean) типа (один слева другой справа) и возвращает результат, опять же, логического типа.

Её таблица истинности:

логическое произведение Паскаль операция И пример

Или в виде картинки:

Операция $AND$ возвращает $true$, только если оба аргумента истинны, а в остальных случаях $false$.

Если использовать более длинную форму записи, то получим:

Ещё одна иллюстрация работы AND (логическое И):
логическое сложение И Паскаль таблица истинности

Операция Not — отрицание (логическое отрицание)

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

Не правда — это ложь, а не ложь — это истина

— на этом высказывании и основа таблица истинности для операции not:

логическое отрицание NOT Паскаль пример таблица истинности

Или ещё более красочная иллюстрация, объясняющая работу данной операции:
Паскаль операция НЕ логические операции отрицание схема

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

Логические выражения — это выражения, результат которых имеет тип boolean.

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

Если есть скобки

Если есть в выражении сразу есть скобки, то подвыражения вычисляются также как в математике — то есть сначала вычисляются подвыражения, которые окружает наибольшее число скобок, например, рассмотрим вычисление выражения:

Если в выражении только AND или только OR и нет скобок

Если используется одна и та же операция и нет скобок, то вычисление происходит слева направо, например (запишем, упрощая выражение):

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

Посчитаем значения для тех же самых операндов, но заменив OR на AND:

Если есть и OR и AND и без скобок. Приоритет операций

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

Поясним порядок вычисления выражения, скажем:

— это выражение эквивалентно выражению со скобками (в силу приоритета AND над OR — точно так же как арифметическое умножение выполняется раньше сложения в ситуации, когда нет скобок):

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

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

Возьмём какое-нибудь выражение из уже рассмотренные выше, например:

Мы можем вынести какое-нибудь из значений в этом выражении в переменную и результат присвоить какой-то другой переменной, например:

Можно и вообще все значения хранить в переменных (значение $b$ от этого не изменится):

Вывод данных логического типа на экран

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

или вменсте с аргументами другого типа:

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

Значения типа boolean как результат сравнения данных других типов

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

  • $=$ (проверка на равенство)
    Например:
  • $\lt>$ — «не равно» (проверка на неравенство)
    Например:
  • $>$ («больше«)
    Например:
  • $>=$ («больше либо равно«)
    Например:
  • $\lt $ («меньше«)
    Например:
  • $\lt= $ («меньше либо равное«)
    Например:

ВЫВОД: результат сравнения данных всегда обладает логическим типом.

Смешанные выражения

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

Вычислим это выражение по шагам:
— скобки имеют приоритет, потому сначала вычисляем арифметическое выражение с наиболее высоким приоритетом — его результат типа integer и =3, а именно:

Далее сравниваются два целых числа, результат же сравнения имеет уже тип boolean:

— true, т.к. $3$ действительно больше либо равно $3$. Далее просто считаем слева направо:

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

Разбор задач

Пример №1

Сравните число $5$ и число $2.3$ результат сравнения выведите на экран.

Самое простое решение:

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

Ну и наконец если требуется записать результат сравнения в переменную, то:

Пример №2

Дано целое число A. Проверить истинность высказывания: «Число A является положительным».

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

Пример №3

Дано целое число A. Проверить истинность высказывания: «Число A является нечетным».

Для того чтобы узнать, является ли данное число нечетным в Паскале предусмотрена специальная функция Odd, которая возвращает true, если число нечетное и false, если число четное.

Запустите код и проверьте как работает программа.

Пример №4

Дано целое число A. Проверить истинность высказывания: «Число A является четным».

Для того чтобы узнать является ли число нечетным, используем уже известную нам функцию, затем инвертируем результат (используя логическую операцию Not — см. правила её работы выше):

Пример №5

Даны три целых числа: $A$, $B$, $C$. Проверить истинность высказывания: «Число $B$ находится между числами $A$ и $C$».

В решении этой задачи нам потребуется операция логического умножения, таблица истинности которой требует одновременности выполнения условий:

Видео-пояснения

Для этого урока имеются следующие видео (см. в таком порядке):

Самостоятельная работа — вопросы и задачи

Теоретические вопросы:
  1. Чтобы такое логический тип данных? Для чего он нужен?
  2. Какие литералы логического типа вы знаете? Сколько их?
  3. Какие выражения могут возвращать логический тип данных?
    Какой тип возвращает выражение:

? А какой тип у выражения:

Практические задачи:

Следующие задачи решите в виде программы:

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

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

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

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

В Паскале предусмотрены следующие операторы отношений:

  • меньше: x < y
  • больше: x > y
  • равно: x = y
  • не равно: x <> y
  • меньше или равно: x <= y
  • больше или равно: x >= y

Булевы типы

Результатом логического выражения всегда является булево (логическое) значение. Булев тип данных (boolean) может принимать только два значения: true (истина) или false (ложь). Эти величины упорядочены следующим образом: false < true .

Операции and, or, not (применяемые к булевским операндам) дают булевские значения.

Это значит, что данные булевого типа являются не только результатом операций отношения, но и могут выступать в роли операндов операции отношения. Также к ним можно применять функции ord, succ, pred, процедуры inc и dec.

Значение типа boolean занимает в памяти 1 байт.

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

Булевый тип данных в Паскаль

Кроме типа boolean в Pascal введены еще три булевых типа — bytebool (занимает 1 байт), wordbool (занимает 2 байта) и longbool (занимает 4 байта).
Для всех булевых типов значению false соответствует 0, а значению true — любое ненулевое значение. Логические переменные, принадлежащие разным булевым типам, ведут себя по-разному при выполнении над ними операций. Ниже приводится пример, реализованный на языке FreePascal (в комментариях отображается результат).

Логические операции

С помощью логических операторов можно формировать сложные логические выражения. Логические операторы часто применяются по отношению к простым логическим выражениям.

В языке программирования Pascal предусмотрены следующие логические операции:

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

Последовательность выполнения логических операторов: not, and, or.

В языке Паскаль сначала выполняются логические операторы (and, or, xor, not), а уже потом операторы отношений (>, >=, <, <=, <>, =), поэтому не нужно забывать расставлять скобки в сложных логических выражениях.

Логические операции в Pascal

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

Тип Boolean, логические операторы и операторы сравнения

Логический тип Boolean в JavaScript представляет одно из двух значений: true (истина) или false (ложь).

Значения Boolean

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

  • ДА / НЕТ
  • ВКЛ / ВЫКЛ
  • ИСТИНА / ЛОЖЬ

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

Функция Boolean()

Чтобы определить, является ли выражение (или переменная) истиной (возвращает значение true), можно воспользоваться функцией Boolean():

Или можно сделать еще проще:

Все имеет «значение» True или False

Любое значение отличное от 0 имеет логическое значение true.

Логическое значение 0 (ноль) — false.

Логическое значение -0 (минус ноль) — false.

Логическое значение «» (пустая строка) — false.

Логическое значение undefined — false.

Логическое значение null — false.

Логическое значение false — false.

Логическое значение NaN — false.

Значения типа Boolean могут быть объектами

Обычно, логические значения типа Boolean определяются примитивными литералами:

Однако, в JavaScript при помощи ключевого слова new логические значения также можно определить и как объекты:

Тем не менее, не определяйте значения типа Boolean как объекты. Это замедляет скорость выполнения скрипта. Кроме этого, ключевое слово new в данном случае усложняет код и может привести к неожиданным результатам:

При использовании оператора сравнения ==, одинаковые значения типа Boolean равны:

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

Или еще хуже. Объекты не сравниваются:

Обратите внимание на разницу между (x==y) и (x===y).

Сравнение двух объектов JavaScript всегда возвращает ложь (false).

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

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

Значения типа Boolean лежат в основе всех сравнений и условий в JavaScript.

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

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

Предположим, что у нас есть x = 5. Следующая таблица объясняет операторы сравнения:

Оператор Описание Выражение Возвращает
== равно x == 8
x == 5
x == «5»
false
true
true
=== равно по значению и типу x === 5
x === «5»
true
false
!= не равно x != 8 true
!== не равно ни по значению, ни по типу x !== 8
x !== 5
x !== «5»
true
false
true
> больше чем x > 8 false
< меньше чем x < 8 true
>= больше или равно x >= 8 false
<= меньше или равно x <= 8 true
Как это можно использовать

Операторы сравнения используются в выражениях условий для сравнения значений и принятия решения в зависимости от полученного результата:

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

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

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

Предположим, у нас есть x = 6 и y = 3. Следующая таблица объясняет логические операторы:

Оператор Описание Пример
&& И (x < 10 && y > 1) — true
|| ИЛИ (x == 5 || y == 5) — false
! НЕ !(x == y) — true

Оператор ! также используется для быстрого преобразования выражения к логическому значению:

Условный (тернарный) оператор

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

имя_переменной = (условие) ? значение1 : значение2

В данном примере если в переменной age значение меньше 18, то переменной voteable будет присвоена строка «Слишком молод», в обратном случае переменной voteable будет присвоена строка «Возраст подходит».

Сравнение разных типов

Сравнение данных разного типа может привести к неожиданным результатам.

При сравнении строки и числа JavaScript будет преобразовывать строку в числовое значение. Пустая строка преобразуется в 0. Не числовая строка преобразуется в значение NaN, которое всегда равно false.

Выражение Значение
2 < 12 true
2 < «12» true
2 < «John» false
2 > «John» false
2 == «John» false
«2» < «12» false
«2» > «12» true
«2» == «12» false

При сравнении двух строк значение строки «2» будет больше значения строки «12», потому что в алфавитной последовательности 1 меньше 2.

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

Логический тип данных (bool) в Python

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

В Python имеется самостоятельный логический тип bool , с двумя предопределенными значениями:

  • True — истина;
  • False — ложь.

True и False пишутся с большой буквы. Если написать с маленькой true , интерпретатор выдаст ошибку: NameError: name 'true' is not defined

True и False являются экземплярами класса bool который в свою очередь является подклассом int Поэтому True и False в Python ведут себя как числа 1 и 0. Отличие только в том, как они выводятся на экран.

>>> True True >>> type(True) <class 'bool'> >>> isinstance(True, int) True >>> True == 1 True >>> True + 4 # True это число 1 5 >>> 5 * False # False это число 0 0

Часто логический тип данных используется в ветвлениях if . Если результат выполнения True — выполняется соответствующая ветка.

>>> a = 10 >>> if a < 0: print("меньше 0") elif a == 0: print("равно 0") else: print("больше 0") больше 0

Цикл while работает аналогичным образом — цикл выполняется до тех пор, пока логическое выражение True .

>>> count = 5 >>> while count: print("count = <>".format(count)) count -= 1 count = 5 count = 4 count = 3 count = 2 count = 1

Преобразования

Другие типы → bool

В Python для приведения других типов данных к булевому типу, используется функция bool() Работает эта функция по следующему соглашению:

�� Функция bool() вернет True:

  • непустая строка (в том числе если это один или несколько пробелов);
  • ненулевое число (в том числе меньшее единицы, например -5);
  • непустой список/кортеж (даже если он содержит один пустой элемент, например пустой кортеж);
  • функция.

�� Функция bool() вернет False:

  • пустая строка;
  • нулевое число;
  • пустой список/кортеж.

bool → str

Бывают ситуации, когда нам необходимо получить True и False в строковом представлении. Если выполнить код ниже, он вызовет ошибку:

print("answer is " + True) TypeError: can only concatenate str (not "bool") to str

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

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

>>> answer = True >>> print("my answer is " + str(True)) my answer is True

или используйте форматирование строки:

print("my answer is <>".format(True))

bool → int

Встроенная функция int() преобразует логическое значение в 1 или 0.

Аналогичного результата можно добиться умножением логического типа на единицу:

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

Операторы — это своего рода функционал, представленный в виде символов (например + ==) или зарезервированных слов (например and not).

В Python используется несколько типов операторов. Мы же рассмотрим только операторы сравнения и логические операторы , т.к. результатом их выполнения являются True или False .

>>> (1 + 1 == 2) or (2 * 2 == 5) True >>> (1 + 1 == 2) and (2 * 2 == 5) False >>> (1 + 1 == 2) and not (2 * 2 == 5) True

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

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