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

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

NOT- оператор логического отрицания НЕ:

 Not False     TRUE Not True     FALSE 

По этим примерам видно, что в результате выполнения этой операции ис­тинное выражение становится ложным, и наоборот:

 Var x, y: integer; X:= 7; Y:= 13; Not (7 >  13)   TRUE Not (7 <  13)   FALSE 

AND - логическая операция И (конъюнкция).

Результат операции тогда и только тогда будет истинным, если истинны одновременно оба операнда:

(7 >  13)        and(7  <   13) ^   FALSE

(7 <> 13)        and(7  <   13) ^   TRUE

OR- логическая операция ИЛИ (дизъюнкция).

Результат операции будет истинным, если хотя бы один операнд истинен:

 (7 > 13)       or        (7 < 13)    ^   TRUE (7 <> 13)      or        (7 < 13)    ^   TRUE 
 

XOR - логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ (исключающая дизъ­юнкция).

Результат операции тогда и только тогда будет истинным, если один опе­ранд истинен, а второй ложен, во всех остальных случаях результат будет ложным:

 (7 > 13)   xor (7 < 13)  ^ TRUE  (7 <> 13) xor(7 < 13)   ^ FALSE 

В Delphiпо умолчанию логические выражения вычисляются по уко­роченному способу.            

Это значит, что вычисления проводятся до тех пор, пока не станет заведомо известно значение всего выражения, после чего вычисления прекращаются. Например, рассмотрим вы­ражение

(7 > 13) and(7 < 13)   ^ FALSE

Значение первого операнда равно FALSE, поэтому и результат вы­числения всего операнда равен FALSE, даже если второй операнд истинен. Поэтому значение второго операнда вообще не вычисля­ется. Этот приём не только сокращает время вычислений, но и по­могает избегать ошибок в программе:

If (n <> 0) and (m div n = 10) then m:= m +1; 

В данном примере сначала проверяется, не равен ли делитель ну­лю. Если это так, то дальнейшие вычисления не производятся. Если же используется полное вычисление логического результата (включается директивой компилятора {$в+}), то при делении на ноль возникнет ошибка.

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: