Прямое отношение к программированию имеет дисциплина, которая называется математической логикой. Основу математической логики составляет алгебра логики, или исчисление высказываний. Под высказыванием понимается любое утверждение, в отношении которого можно однозначно сказать, истинно оно или ложно. Например, «Луна - спутник Земли» - истинно; «5>3» - истинно; «Москва- столица Китая» - ложно; «1=0» - ложно. Истина или ложь являются логическими величинами. Логические значения приведенных выше высказываний однозначно определены; другими словами, их значения являются логическими константами. Логическое значение неравенства x < 0, где x – переменная, является переменной величиной. В зависимости от значения x оно может быть либо истиной, либо ложью. В связи с этим возникает понятие логической переменной.
Основы формального аппарата математической логики создал в середине XIX в. английский математик Джордж Буль. В его честь исчисление высказываний называют булевой алгеброй, а логические величины – булевскими.
Одиночные высказывания могут быть объединены в составные логические формулы с помощью логических операций.
Имеются три основные логические операции: отрицание, конъюнкция (логическое умножение) и дизъюнкция (логическое сложение).
Операция отрицания обозначается в математической логике значком и читается как НЕ. Это одноместная операция.
Например, (x = y) читается «не (x равно y)». В результате получится истина если x не равно y, и ложь, если x равно y. Отрицание изменяет значение логической величины на противоположное.
Операция конъюнкции обозначается значком & и читается как И. Это двухместная операция. Например, (x > 0) & (x < 1) читается «x больше 0 и x меньше 1». Данная логическая формула примет значение истина, если x Є (0,1), и ложь – в противном случае. Следовательно, результат конъюнкции – истина, если истинны оба операнда. Знак операции дизъюнкции V читается как ИЛИ. Например, (x = 0) V (x = 1) читается «x равно 0 или x равно 1». Формула дает истину, если x – двоичная цифра (0 или 1). Следовательно, дизъюнкция дает в результате истину, если хотя бы один операнд - истина.
В Турбо Паскале логические значения обозначаются служебными словами True (истина) и False (ложь), а логический тип данных носит название BOOLEAN.
Все реализации языка Pascal, в том числе и Turbo Pascal, вплоть до версии 6.0 содержали только один логический тип данных Boolean, элементы которого могут принимать лишь два вышеуказанных логических значения. В Turbo Pascal версии 7.0 добавлены еще три логических типа данных: ByteBool, WordBool и LongBool.
По аналогии с целыми и символьными типами, подразделяющимися на физические и логические, естественно предположить, что ByteBool, WordBool и LongBool — физические типы, Boolean — логический. Но в данном случае это не совсем так. Все четыре типа различны. Для Turbo Pascal логический тип Boolean более предпочтителен, так как он использует меньшее количество памяти, остальные типы были введены для обеспечения совместимости разрабатываемых программ с Windows, в которой значению False соответствует 0, а значению True – любое, отличное от 0, число.
Название логического типа данных
Значению False соответствует
Значению True соответствует
Размер памяти для логического типа данных
Boolean
Число 0
1 байт
ByteBool
Число 0
Любое число, отличное от 0
1 байт
WordBool
Число 0 в обоих байтах
2 байта
LongBool
Число 0 во всех байтах
4 байта
Данные логического типа занимают один байт памяти. При этом значению false соответствует нулевое значение байта, а значению true соответствует любое ненулевое значение байта. Например: false всегда в машинном представлении: 00000000; true может выглядеть таким образом: 00000001 или 00010001 или 10000000.
Однако следует иметь в виду, что при выполнении операции присваивания переменной логического типа значения true, в соответствующее поле памяти всегда записывается код 00000001. В этих операциях операнды логического типа рассматриваются как единое целое - вне зависимости от битового состава их внутреннего представления. Кроме того, следует помнить, что результаты логического типа получаются при сравнении данных любых типов. Логические константы языка Turbo Pascal TRUE (истина) и FALSE (ложь) можно использовать в явном виде или обозначать именем в разделе CONST, например:
const
T=true;
F=false;
L=true;
Логическая переменная тоже может принимать два значения TRUE и FALSE. Логические переменные должны быть описаны предложением:
Var <имя_переменной>: boolean; (Variable – переменная).
Например: var L,A,C:boolean;
Следует обратить внимание на то, что в разделе описания переменных необходимо определить тип переменных, используемых в программе. Например,
Var P,Q,R: Integer;
A,B: Char;
F1,F2: Boolean;
В разделе операторов логическому типу переменной можно присвоить значение логической константы, например:
L1:=true; L2:=false; L3:=L1;
Величины логического типа данных можно присваивать, выводить, но нельзя вводить процедурой read.