Основы объектно-ориентированного программирования на языке C# book | Page 61

4.2 Булевi вирази
з будь-яким значенням є хибне значення). В iншому випадку, другий аргумент обчислюється i його значення стає значенням операцiï. Аналогiчно, якщо перший аргумент операцiï || має значення true, то другий не обчислюється, а результатом операцiï є true. Iнакше, обчислюється другий аргумент i його значення стає значенням операцiï. Через зазначену особливiсть у наведеному нижче умовному операторi не буде вiдбуватися спроба дiлення на нуль, якщо змiнна x( цiлого типу) має значення нуль:
if( x!= 0 && y / x > 1) { }
В той же час, виконання наведеного нижче оператору призведе до спроба дiлення на нуль( помилки пiд час виконання програми), якщо змiнна x( цiлого типу) має значення нуль:
if( y / x > 1 && x!= 0) { }
Таким чином, в загальному випадку операцiï && та || в мовi C # не можна вважати комутативними на вiдмiну вiд математичних операцiй кон’ юнкцiï та диз’ юнкцiï. Проте ïх можна вважати комутативним, якщо вони застосовуються до змiнних типу bool, а не до складних виразiв. Наприклад, якщо визначеннi булевi змiннi:
bool b1 = true; bool b2 = false;
то значення виразiв b1 && b2 i b2 && b1 визначенi i однаковi. У текстi програми операцiя && має бiльш високий прiоритет, нiж
||, а операцiя заперечення! має бiльш високий прiоритет, нiж &&. Це дозволяє записувати булевi вирази, не використовуючи зайвих дужок. Iнодi виникає необхiднiсть створювати програми, якi працють з великою або наперед невiдомою кiлькiстю булевих змiнних. В таких випадках можна скористатись масивом булевих змiнних.
Розглянемо фрагмент програми на мовi C # яка перебирає усi комбiнацiï значень n булевих змiнних, що елементами масиву( який можна використати при формуваннi таблицi iстинностi деякоï булевоï функцiï n змiнних):
using System; class Program { static void Main( string [] args) { int n = 3; // визначимо масив з n булевих змiнних // зауважимо, що спочатку усi x [ i ] матимуть значення false bool [] x = new bool [ n ]; // перебiр усiх 2 N комбiнацiй значень елементiв масиву x while( true) {
61