Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2_Razrabotka_programm_razvetvlyayuscheysya_stru...doc
Скачиваний:
16
Добавлен:
12.11.2019
Размер:
662.02 Кб
Скачать

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

Это стандартный тип Boolean. Он представляет всего два значения: «ложь» и «истина» (соответствующие булевские константы - False и True). Операциями над данными типа Boolean являются:

  • отрицание (другое название – не, знак операции not),

  • конъюнкция (другие названия – логическое произведение или просто И, знак операции and),

  • дизъюнкция (другие названия – логическая сумма или просто ИЛИ, знак операции or),

  • неравнозначность (другие названия – неэквивалентность или сумма по модулю два, знак операции xor).

Отрицание является унарной операцией, остальные – бинарными.

В математике операции not соответствует знак перед аргументом (Х) или черта над аргументом ( ); операции and соответствует знак & или  или (X&Y или XY или 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)

или, что то же самое, – формулой

двумя способами:

  1. с помощью минимального числа операторов if then else, без применения булевских операций (not, and, or, xor),

  2. с помощью минимального числа операторов 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]