Булевский тип
Это стандартный тип Boolean. Он представляет всего два значения: «ложь» и «истина» (соответствующие булевские константы - False и True). Операциями над данными типа Boolean являются:
отрицание (другое название – не, знак операции not),
конъюнкция (другие названия – логическое произведение или просто И, знак операции and),
дизъюнкция (другие названия – логическая сумма или просто ИЛИ, знак операции or),
неравнозначность (другие названия – неэквивалентность или сумма по модулю два, знак операции xor).
Отрицание является унарной операцией, остальные – бинарными.
В математике операции not соответствует знак перед аргументом (Х) или черта над аргументом ( ); операции and соответствует знак & или или (X&Y или XY или X Y ); операции or соответствует знак V (X V Y ); операции xor соответствует знак .
Ниже представлены их таблицы истинности.
X |
not X |
|
X |
Y |
X and Y |
|
X |
Y |
X or Y |
|
X |
Y |
X xor Y |
False |
True |
False |
False |
False |
False |
False |
False |
False |
False |
False |
|||
True |
False |
True |
False |
False |
True |
False |
True |
True |
False |
True |
|||
|
False |
True |
False |
False |
True |
True |
False |
True |
True |
||||
True |
True |
True |
True |
True |
True |
True |
True |
False |
В общем случае булевские выражения содержат отношения, булевские константы, переменные и функции, возвращающие булевские значения, разделенные знаками булевских операций и круглыми скобками. Операция not имеет наивысший приоритет и выполняется в первую очередь, операция and имеет тот же приоритет, что и арифметические операции типа умножения, операции or и xor имеет тот же приоритет, что и арифметические операции типа сложения и, наконец, в последнюю очередь вычисляются отношения.
Пример. Составить условный оператор для вычисления нового значения Y по формуле
Как видно из задания, при истинности одного из условий, другие будут иметь значение «ложь», поэтому для вычисления лучше использовать не два, а один условный оператор if then else, что приведет к сокращению вычислений:
if (A*B>1) and (A>0) then Y:=A else if (A+B>1) and (A<0) then Y:=B;
Во избежание ошибок компиляции, отношения, входящие в сложные булевские выражения, следует заключать в скобки, так как приоритет операций отношений ниже приоритетов других операций.
Пример 2.1 выполнения задания
Составить программу вывода значений функции Y(X), заданной графиком (функция не определена при |Х|>3)
или, что то же самое, – формулой
двумя способами:
с помощью минимального числа операторов if then else, без применения булевских операций (not, and, or, xor),
с помощью минимального числа операторов if then (без else) с применением булевских операций.
Вывести с поясняющими текстами значение Х и вычисленные значения функции.
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils, Math;
var
X,A,Z,Y:Real;
F:Boolean;
begin
Write('Введите значение аргумента: ');
ReadLn(X);
A:=Abs(X); //Вычисление абсолютного значения Х
Z:=Sign(X); //Вычисление Z
{ ----- Вычисление без применения булевских операций ----- }
if A>=3 then
WriteLn('Функция не определена. ')
else
begin
if A<=1 then
Y:=Z*(1-A)
else if A<2 then
Y:=Z
else
Y:=-Z;
WriteLn('Y = ',Y:4:2);
end;
{ ----- Вычисление с применением булевских операций ----- }
if A>=3 then
WriteLn('Функция не определена. ');
if A<=1 then
WriteLn('Y = ',Z*(1-A):4:2);
if (A>1) and (A<2) then
WriteLn('Y = ',Z:4:2);
if (A>=2) and (A<3) then
WriteLn('Y = ',-Z:4:2);
ReadLn;
end.