Основы объектно-ориентированного программирования на языке 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