В языке Pascal есть ряд операций для работы с логическим типом данных - boolean.
Логическая переменная может принимать только два значения - True(истина) или False(ложь).
Операции сравнения
Сравнение - это простые условные выражения, которые сравнивают два логических значения, и возвращают True или False.
Free Pascal поддерживает такие операции сравнения:
Равно = (эквивалентно)
Возвращает True, если сравниваемые объекты равны, в ином случае возвращает False.
Не равно <>
Возвращает True, если сравниваемые объекты не равны, в ином случае - False.
Больше >
Возвращает True, если значение больше второго, иначе - False.
Больше равно >=
Возвращает True, если значение первой переменной больше или равно второй.
Меньше <
Возвращает True, если первое значение меньше второго, иначе - False.
Меньше равно <=
Возвращает True, если значение первой переменной меньше или равно второй.
Пример программы с операциями сравнения:
program Compare;
var
x, y : integer;
begin
x := 7;
y := 42;
writeln(x = y); //Ложь
writeln(x <> y); //Истина
writeln(x > y); //Ложь
writeln(x < y); //Истина
readln;
end.
С помощью операций сравнения можно сравнивать различные типы данных - числа, символы, строки, логические значения, только сравниваемые переменные должны быть одного и того же типа.
Логические операции
Для составных условных конструкций применяются логические операции. В Паскале поддерживаются следующие логические операции and, or, not, xor.
Логическое отрицание not
Возвращает True, если выражение равно False, в ином случае возвращает True.
Логическое умножение and (конъюнкция)
Первый операнд | Второй операнд | Результат операции and |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Логическое сложение or (дизъюнкция)
Первый операнд | Второй операнд | Результат операции or |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Исключающее или xor (строгая дизъюнкция)
Первый операнд | Второй операнд | Результат операции xor |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Логические операции применяются не только к значениям типа boolean и логическим выражениям. Их можно применять к числовым значениям. При этом они работают с представлениями чисел в двоичной системе. Поскольку операции работают с битами числа, они называются битовыми.
Пример битовых операций:
program BitOperation;
var
a, b, c : Int8;
begin
a := not 120; //a = -121
b := 30 and 21; //b = 20
c := 42 or 21; //c = 63
writeln('a = ', a);
writeln('b = ', b);
writeln('c = ', c);
readln;
end.
not(17010) = not(011110002) = 100001112 = -12110
3010 and 2110 = 000111102 and 000101012 = 000101002 = 2010
4210 or 2110 = 001010102 and 000101012 = 001111112 = 6310
Приоритет операций
- Наибольший приоритет имеет оператор not;
- Второй по приоритету and;
- Дальше выполняется or;
- В завершение идут операторы сравнения < > <= >= = <>.