логічний тип

З технічних причин _Bool перенаправляється сюди. Про _Bool можна прочитати тут: stdbool.h.

Логічний тип даних. або логічний тип, або булевий тип (від англ. Boolean або logical data type) - примітивний тип даних в інформатиці. приймає два можливих значення, іноді званих істиною (true) і брехнею (false). Присутній в переважній більшості мов програмування як самостійна сутність або реалізується через чисельний тип даних. У деяких мовах програмування за значення істина покладається 1, за значення брехня - 0.

Назва типу Boolean отримало на честь англійського математика і логіка Джорджа Буля. серед іншого, займався питаннями математичної логіки в середині 19 століття.

Доступні операції з цим типом даних

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

  • І (логічне множення) (AND. . *),
  • АБО (логічне додавання) (OR. |. +),
  • виключає АБО (додавання з переносом) (xor. NEQV. ^),
  • еквівалентність (рівність) (EQV. =. ==)
  • інверсія (NOT.

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

Традиційним застосуванням булева типу даних є значення «так» / «ні» щодо результату порівняння чисел в більш складних операціях.

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

Реалізація в різних мовах програмування

Мова програмування Ada визначає Boolean в пакеті Standard як нумерований тип зі значеннями False і True в якому False

Споріднені оператори (=. / =. <. <=.>.> =) Застосовуються до всіх нумерування типам, включаючи Boolean. Булеві оператори and. or. xor і not застосовні до типу Boolean і будь-яким оголошеним підтипів. Булеві оператори також застосовні до масивів, що містить значення Boolean.

Algol 60 має тип даних boolean і відповідні оператори, встановлені в специфікації Algol 60. Тип даних був скорочений до bool в ALGOL 68.

У мові програмування C. який не надавав булевих значень в C89 (але вводить в C99) замість значень true / false було встановлено порівняння значення з нулем. Для прикладу, код:

Це було чесно для цілочисельного типу даних (integer); тим не менш, бінарні значення чисел з плаваючою комою (floating-point) були наближеними до інструкції на екрані десятковим значенням і це давало помилки при порівнянні. Традиційно, ціле містило одну (або більше) булеву змінну (одну на кожен розряд цілого).

У мові Haskell логічний тип даних реалізований як найпростіший алгебраїчний тип даних:

У стандартному модулі Data.Bool для нього визначені функції . || і not.

У мові Python логічний тип даних позначається як bool. для приведення інших типів даних до булеву існує функція bool (). що працює за наступним угодам:

  • рядки: порожній рядок - брехня, непорожній рядок - істина;
  • числа: нульове число - брехня, нульове число (в тому числі і менше одиниці) - істина;
  • списки і кортежі: порожній список (кортеж) - брехня, непорожній (навіть містить один елемент, наприклад порожній кортеж) - істина;
  • функції - завжди істина.

Для інших об'єктів результат розраховується через метод __nonzero__. який в ідеалі повинен повертати значення True або False.

Логічний тип наводиться до наступних типів даних:

  • строковий: 'True' для істини, 'False' для брехні;
  • числовий (вбудовані типи int, long, float): 1 для істини, 0 для брехні.

До інших типів даних логічний тип не наводиться.

В Python 2.6 є цікава особливість - можна перевизначити значення True на False і навпаки, написавши всього лише:

або, варіант для всієї області видимості

що може призвести до вельми несподіваного поведінки інтерпретатора або IDLE. У python 3 дана можливість була ліквідована - True і False вважаються зарезервованими, як і слово None.

Арифметичні операції над булевими неприпустимі, але допустимі логічні операції: Not, And, Or, Xor, операції відносини = (дорівнює), <> (Не дорівнює) і функції Ord, Pred, Succ.

В Ruby логічний тип представлений двома зумовленими змінними. true і false. Постає логічне тип в результаті логічних операцій або виклику логічних методів. За традицією, ім'я логічних методів (тобто методів, які повертають значення true або false) закінчується на «?».

Як false може виступати nil. а в якості true - будь-який об'єкт. в тому числі змінна зі значенням «0» або порожній рядок. що часто є несподіванкою для новачків.