Основы объектно-ориентированного программирования на языке C# book | Page 60
4 Булевi функцiı̈ та вирази
В загальному випадку, для будь-якоı̈ булевоı̈ функцiı̈ iснує нескiн-
ченно багато рiзних булевих виразiв, якi ı̈ı̈ зображають. Тому задача
встановлення, чи рiвнi функцiı̈, зображенi двома даними i рiзними бу-
левими виразами не є простою. Для ı̈ı̈ вирiшення можна побудувати
таблицi iстинностi функцiй, зображених цими виразами i порiвняти
значення у вiдповiдних рядках (по сутi, це те ж саме, що обчислити i
порiвняти значення обох функцiй користуючись ı̈х виразами для всiх
допустимих значень аргументiв). Iнший спосiб вирiшення цiєı̈ зада-
чi полягає у використаннi властивостей булевих операцiй диз’юнкцiı̈,
кон’юнкцiı̈ та заперечення для виконання еквiвалентних перетворень
виразiв. Якщо за допомогою таких перетворень обидва вихiднi вирази
будуть приведенi до одного i того ж виразу, то можна зробити висно-
вок, що вони зображають одну i ту ж функцiю (є еквiвалентними).
Основнi властивостi операцiй кон’юнкцiı̈, диз’юнкцiı̈, заперечення:
x ∨ 0 = x, x ∧ 1 = x
x ∨ 1 = 1, x ∧ 0 = 0
x ∨ y = y ∨ x, x ∧ y = y ∧ x (комутативнiсть)
(x ∨ y) ∨ z = x ∨ (y ∨ z), (x ∧ y) ∧ z = x ∧ (y ∧ z) (асоцiативнiсть)
x ∨ x = x, x ∧ x = x (iдемпотентнiсть)
x ∨ (y ∧ z) = (x ∨ y) ∧ (x ∨ z) (дистрибутивнiсть)
x ∧ (y ∨ z) = (x ∧ y) ∨ (x ∧ z) (дистрибутивнiсть)
x ∨ (x ∧ y) = x, x ∧ (x ∨ y) = x (поглинання)
x ∨ x = 1, x ∧ x = 0
x = x (iнволюцiя)
x ∨ y = x, x ∧ y = x (закони Де-Моргана)
Табл. 4.5: Властивостi булевих операцiй
При програмуваннi мовою C# булевi вирази можна реалiзовувати
за допомогою булевих операцiй && (кон’юнкцiя), || (диз’юнкцiя) та !
(заперечення). Проте замiсть числових значень 0 i 1 аргументами i
значеннями булевих операцiй в C# є спецiальнi значення false , true ,
якi належать типу даних bool .
При реалiзацiı̈ булевих виразiв у C# слiд звернути увагу на таку
особливiсть: якщо пiд час виконання програми зустрiчається операцiя
&& , то спочатку обчислюється перший аргумент цiєı̈ операцiı̈, i якщо
вiн має значення false , то другий не обчислюється, а результатом
операцiı̈ є false (оскiльки результатом кон’юнкцiı̈ хибного значення
60