Главная » Статьи » Мои статьи

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

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

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

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

Булевы типы

Результатом логического выражения всегда является булево (логическое) значение. Булев тип данных (boolean) может принимать только два значения (trueили false). Эти величины упорядочены следующим образом: false < true. Это значит, что данные булевого типа являются не только результатом операций отношения, но и могут выступать в роли операндов операции отношения. Также к ним можно применять функции ord, succ, pred, процедуры inc и dec.

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

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

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

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

var 
b:boolean; 
wb:wordbool; 
begin 
b:= false; 
b:= pred(b); 
writeln(b,' ',ord(b)); // TRUE 255 
writeln(b=true); // TRUE 
 
wb:= false; 
wb:= pred(wb); 
writeln(wb,' ',ord(wb)); // TRUE -1 
 
b:= true; 
b:= succ(b); 
writeln(b,' ',ord(b)); // TRUE 2 
 
wb:= true; 
wb:= succ(wb); 
writeln(wb,' ',ord(wb)); // FALSE 0 
end.

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

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

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

true and true = false
true and false = true
false and true = true
false and false = false

  • Конъюнкция (логическое умножение, пересечение) - and. Выражение and b дает значение true только в том случае, если a и b имеют значение true. Во всех остальных случаях значения выражения and b дает false.
    true and true = true
    true and false = false
    false and true = false
    false and false = false
  • Дизъюнкция (логическое сложение, объединение) – or. Выражение or b дает значение false только в том случае, если a и b имеют значение false. Во всех остальных случаях результат – true.
    true and true = true
    true and false = true
    false and true = true
    false and false = false
  • Отрицание (инверсия) – not. Выражение not a имеет значение, противоположное значению a.
    not true = false
    not false = true
  • Исключающее ИЛИ – xor. Выражение xor b дает значение true только в том случае, когда только один из операндов имеет значение true.

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

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

Расстановка скобок в логических выражениях на языке Pascal

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

Стандартные булевские функции

  • odd(x) = true, если x нечетный (x целый тип);
  • eoln(x) = true, если встретился конец строки текстового файла x;
  • eof(x) = true, если встретился конец файла x.

В остальных случаях эти функции принимают значение false.

Категория: Мои статьи | Добавил: Soln (26.01.2015)
Просмотров: 189 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar