Булевский тип

Булевский тип

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

Содержание

Реализация

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

Доступные операции

К этому типу данных применимы следующие операции:

  • И (логическое умножение) (AND, &, *),
  • ИЛИ (логическое сложение) (OR, |, +),
  • исключающее ИЛИ (умножение с переносом) (xor, NEQV, ^),
  • эквивалентность (равенство) (EQV, =, ==)
  • инверсия (NOT, ~, !)
  • сравнение (>, <, <=, >=)

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

Применение

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

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

Реализация в различных языках программирования

Ada

Язык программирования Ada определяет Boolean в пакете Standard как нумерованный тип со значениями False и True в котором False < True.

type Boolean is (False, True);
p : Boolean := True;
...
if p then
  ...
end if;

Родственные операторы (=, /=, <, <=, >, >=) применяются ко всем нумерованым типам, включая Boolean. Булевые операторы and, or, xor и not применимы к типу Boolean и любым объявленным подтипам. Булевые операторы также применимы к массивам, содержащим значения Boolean.

Algol

Algol 60 имеет тип данных boolean и соответствующие операторы, установленные в спецификации Algol 60. Тип данных был сокращён до bool в ALGOL 68.

C

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

if (my_variable) {
  printf("True!\n");
} else {
  printf("False!\n");
}

равнозначен коду

if (my_variable != 0) {
  printf("True!\n");
} else {
  printf("False!\n");
}

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


Python

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

  • строки: пустая строка — ложь, непустая строка истина.
  • числа: нулевое число — ложь, ненулевое число (в том числе и меньшее единицы) — истина.
  • списки и кортежи: пустой список (кортеж) — ложь, непустой (даже содержащий один элемент, например пустой кортеж) — истина.
  • функции — всегда истина.

Для других объектов результат рассчитывается через метод __nonzero__, который в идеале должен возвращать значения True/False.

Булевый тип приводится к следующим типам данных:

  • строковый: 'True' для истины, 'False' для лжи.
  • числовой (встроеные типы int, long, float): 1 для истины, 0 для лжи.

К другим типам данных булевый тип не приводится.

Pascal

Описание переменных

var a,b:boolean

Операции

Арифметических нет. Операций отношений нет. Допустимы следующие логические операции: Not, And, Or, Xor Допустимые функции: Ord,Pred,Succ

var A,B:Byte;
C,D,E,F:boolean;
begin
A:=Ord(False); {A=0}
B:=Ord(True);  {B=1}
C:=Pred(False);{ошибка}
D:=Pred(True); {D=False}
E:=Succ(False); {E=True}
F:=Succ(True); {ошибка}
end.

Руби

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

В качестве false может выступать nil, а в качестве true — любой объект, в том числе переменная со значением «0» или пустая строка, что часто является неожиданностью для новичков.


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "Булевский тип" в других словарях:

  • булевский тип — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN boolean type …   Справочник технического переводчика

  • Перечисляемый тип — (сокращённо перечисление, англ. enumeration, enumerated type)  в программировании тип данных, чьё множество значений представляет собой ограниченный список идентификаторов. Содержание 1 Описание и использование 2 …   Википедия

  • Примитивный тип — Примитивный (встроенный, базовый) тип  тип данных, предоставляемый языком программирования как базовая встроенная единица языка. В зависимости от языка и его реализации, набор таких типов может сильно различаться. Он определяется… …   Википедия

  • Логический тип — тип данных, допускающих одно из двух возможных значений: истина или ложь . Синонимы: Булевский тип См. также: Типы данных Финансовый словарь Финам …   Финансовый словарь

  • C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в …   Википедия

  • С++ — См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в: 1985 г. Автор(ы): Бьёрн Страуструп …   Википедия

  • C-- — (читается как Cи минус минус),  название для нескольких независимо развитых языков программирования. Цель этих языков состоит в том, чтобы заменить язык программирования C другим портируемым языком, который ближе привязан к компьютерным апп …   Википедия

  • Объектный Си — Objective C Класс языка: объектно ориентированный, мультипарадигмальный: рефлексивно ориентированный Появился в: 1986 г. Автор(ы): Типизация данных: строгая полиморфная, статическая Основные реализации: Apple gcc Испытал …   Википедия

  • Game Maker Language — Класс языка: объектно ориентированный, событийно ориентированный, скриптовый Появился в: 1999 Автор(ы): Марк Овермас Расширение файлов: .gml, .gmk, .gm6, .gmd, .gm8, .gm81 Сайт …   Википедия

  • Список дворянских родов Минской губернии — Титульная страница Алфавитного списка дворянских родов Минской губернии за 1903 г. Список дворянски …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»