JavaRush /Курси /C# SELF /Логічний тип bool і логічні операції

Логічний тип bool і логічні операції

C# SELF
Рівень 3 , Лекція 3
Відкрита

1. Логічний тип даних: bool

Як ми вже переконалися, у C# є дуже корисний оператор — if-else. Він виконує один блок команд, якщо умова в дужках істинна, і інший блок, якщо умова хибна.

Щоб зручно працювати з виразами, які можуть бути істинними або хибними, у C# існує спеціальний тип — bool. Його головна особливість у тому, що змінні цього типу можуть набувати лише двох значень: true (істина) і false (хиба).

Жодних інших значень змінним типу bool присвоїти неможливо. Компілятор цього не дозволить.

Приклади змінних типу bool:

bool isAdult = true;
bool hasMoney = false;
Приклад оголошення змінних типу bool

Змінна типу bool має лише два значення — true (істина) і false (хиба). І все. Майже як у тесті — або «складено», або «провалено».

2. Операції порівняння

Навіщо потрібен такий примітивний тип? Справжня сила bool розкривається, коли ми будуємо логічні вирази. Їх зазвичай формують за допомогою операторів порівняння.

Оператор Призначення Приклад Значення
== Дорівнює
a == b
true або false
!= Не дорівнює
a != b
true або false
> Більше
a > b
true або false
< Менше
a < b
true або false
>= Більше або дорівнює
a >= b
true або false
<= Менше або дорівнює
a <= b
true або false

Приклад:

int age = 20;
bool isAdult = age >= 18;   // true (20 більше або дорівнює 18)
bool isTeenager = age >= 13 && age < 18; // false (20 не менше 18)
bool isEven = age % 2 == 0; // true (20 ділиться на 2 без остачі)

Тут значення змінної isAdult дорівнюватиме true, адже 20 — це вже дорослий вік.

Важливий момент 1:

Оператори, що складаються з двох символів, не можна розділяти.


a < = 10
speed > = max
age = = 18
time ! = 0
Так писати не можна! Оператори порівняння мають бути разом: <=, >=, ==, !=

Важливий момент 2:

Зверніть увагу, що операторів => і =< не існує: є лише <= і >=. Якщо ви напишете a =< 3, код просто не скомпілюється.

Важливий момент 3:

У C# не можна записати вираз 18 < age < 65. У виразі 18 < age результатом буде true або false. А порівнювати true < 65 (різні типи) не можна. Принаймні, у C#.

3. Логічні операції

У C# не можна записати вираз 18 < age < 65 — це синтаксична помилка, і програма не скомпілюється.

Натомість можна записати так:


(18 < age) І (age < 65)
Логічний вираз із двома умовами (українською)

Звісно, замість слова І тут буде інший логічний оператор — і зараз якраз про них поговоримо.

У C# є три логічні оператори: AND (і), OR (або) і NOT (не).

Добра новина: за допомогою дужок можна будувати логічні вирази будь-якої складності.
Погана новина: розробники C# вирішили замість слів and, or і not використовувати позначення з C++.

Логічний оператор Очікування Реальність
І (∧) and &&
АБО (∨) or ||
НЕ (¬) not !

Ось кілька прикладів використання логічних операторів у C#:

Вираз Розшифровка Пояснення
(0 < a) && (a < 100) (0 < a) and (a < 100) (0 < a) І (a < 100)
(!a) && (!b) (not a) and (not b) (НЕ a) І (НЕ b)
!(!a || !b) not((not a) or (not b)) НЕ((НЕ a) АБО (НЕ b))

4. Таблиці істинності

Коротко пройдімося логічними операціями.

Оператор AND

Оператор AND, він же І, він же &&, він же конʼюнкція, він же логічне множення.

Вираз Результат
true && true true
true && false false
false && true false
false && false false

Інакше кажучи, результат виразу дорівнює true (істина) лише якщо обидва значення, що беруть участь у виразі, дорівнюють true (істина). В інших випадках — завжди false (хиба).

Оператор OR

Оператор OR, він же АБО, він же ||, він же дизʼюнкція, він же логічне додавання.

Вираз Результат
true || true true
true || false true
false || true true
false || false false

Інакше кажучи, результат виразу дорівнює true (істина) завжди, коли хоча б одне значення, що бере участь у виразі, дорівнює true (істина). Якщо обидва дорівнюють false, результат — false.

Оператор NOT

Оператор NOT, він же НЕ, він же !, він же інверсія.

Вираз Результат
! true false
! false true

Змінює true на false і навпаки.

Корисні вирази:

Вираз Результат
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b

5. Приклади логічних операцій: and, or, not

Операція «І», AND, позначається &&

Результат — істина лише тоді, коли обидві умови істинні.

int age = 16;
bool hasTicket = true;
bool canAttend = age >= 14 && hasTicket; // true (16 більше 14 і квиток є)

Якщо вам 14 і у вас є квиток — проходьте!

Операція «АБО», OR, позначається (||)

Результат — істина, якщо хоча б одна умова істинна.

bool isAdmin = false;
bool isModerator = true;
bool canEdit = isAdmin || isModerator; // true (можна редагувати, якщо принаймні одна з умов дорівнює true)

Якщо ви адміністратор або модератор — будь ласка, натискайте кнопки!

Операція «НЕ», NOT, позначається (!)

Оператор інверсії перетворює істину на хибу й навпаки.

bool isWeekend = false;
bool shouldGoToWork = !isWeekend; // true (якщо не вихідні, працюємо)

Якщо НЕ вихідні — час працювати!

Комбінування: будуйте умови будь-якої складності

Можна комбінувати скільки завгодно логічних операцій (головне — не перестаратися). Дужки можна (і варто) використовувати для зрозумілості.

Приклад:

int age = 17;
bool hasTicket = false;
bool isVip = true;

bool canGo = (age >= 18 && hasTicket) || isVip; // true, адже isVip = true

У цьому прикладі логіка така: якщо людина повнолітня й має квиток, або якщо вона VIP — пропускаємо. Якщо не VIP — лише якщо доросла й має квиток.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ