Урок №37. Логічний тип даних bool

  Юрій  | 

  Оновл. 23 Лип 2021  | 

 490

У реальному житті, перед нами дуже часто виникають питання, на які можна відповісти однозначно: “Так” або “Ні”. Яблуко є фруктом? Так! Вам подобається спаржа? Ні!

Розглянемо твердження: “Яблуко — це фрукт”. Це правда? Так! Яблуко дійсно є фруктом. Або як щодо: “Я люблю спаржу”. Абсолютна брехня (тьху!).

Подібні стейтменти, які мають тільки два можливих результати: так/правда чи ні/брехня, настільки поширені, що більшість мов програмування додали спеціальний тип для роботи з ними — логічний тип даних. У мові С++ це логічний тип даних bool (від англ. boolean”).

Змінні логічного типу даних

Логічні змінні — це змінні, діапазон яких складається лише з двох можливих значень: true (1) або false (0).

Для оголошення логічної змінної використовується ключове слово bool:

Ініціалізувати логічну змінну або виконати операцію присвоювання можна за допомогою ключових слів true або false:

Аналогічно роботі унарного оператора мінус (-), за допомогою якого ми можемо зробити число від’ємним, за допомогою логічного оператора НЕ (!) ми можемо змінити true на false і навпаки (false на true):

Насправді, логічні значення не зберігаються як true або false. Вони обробляються у вигляді цілих чисел: замість true — 1, замість false — 0.

Отже, якщо ми спробуємо вивести логічні значення за допомогою std::cout, то побачимо 0 або 1:

Результат виконання програми:

1
0
0
1

Якщо ви хочете, щоб std::cout виводив true або false (замість цілих чисел), то тоді використовуйте std::boolalpha:

Результат виконання програми:

1
0
true
false

Використання логічного типу даних в розгалуженнях if

Дуже часто логічні змінні використовуються в розгалуженнях if. Розгалуження if виглядає наступним чином:

if (вираз) стейтмент1;

або

if (вираз) стейтмент1;
else стейтмент2;

(вираз) ще називається “умовою” або “умовним виразом”.

В обох випадках, якщо результатом умови є ненульове значення, то виконується стейтмент1. Якщо ж результатом умови є нульове значення, то виконується стейтмент2.

Пам’ятайте, що true — це 1 (ненульове значення), а false — це 0 (нульове значення).

Тепер розглянемо приклад в коді:

Результат:

The condition is true!

Що тут виконується? По-перше, ми починаємо з умови if, якою є логічне значення true, тобто 1 (ненульове значення), що означає, що виконуватися буде стейтмент1.

Наступна програма працює аналогічно:

Результат:

b is false!

Тут, під час перевірки умови, змінна b має значення false. false — це 0. Отже, перший стейтмент під if (який true) пропускається, а другий, який під else (false) — виконується.

А тепер розглянемо складніший приклад. Оператор рівності (==) використовується для порівняння двох чисел (чи є вони рівними). Оператор == повертає true, якщо операнди рівні і false, якщо вони такими не є:

Результат виконання програми:

Enter an integer: 4
The value is non-zero

Давайте розберемося, що і як тут працює. По-перше, ми просимо користувача ввести ціле число. Після цього, за допомогою оператора ==, ми перевіряємо, чи є користувацьке число нульовим. У вищенаведеному прикладі 4 не дорівнює 0, тому оператор == визначає умову як false. Отже, виконується стейтмент2 (той, який під else), де ми виводимо "The value is non-zero".

Значення, що повертаються, логічного типу даних

Логічні значення часто використовуються в якості значень, що повертаються, в функціях. Імена таких функцій дуже часто починаються з частин is (наприклад, isEqual) або has (наприклад, hasCommonDivisor).

Розглянемо наступний приклад:

Результат виконання програми:

Enter an integer: 5
Enter another integer: 5
5 and 5 are equal

Як це працює? По-перше, ми вказуємо значення змінним х і у. Потім перевіряється умова, яка призводить до виклику функції isEqual(5, 5). Усередині цієї функції 2 числа порівнюються між собою (5==5), що призводить до повернення значення true (оскільки 5=5). Значення true повертається назад у викликаючу функцію і виконується стейтмент1, який виводить "5 and 5 are equal".

До логічних значень потрібно трохи звикнути, але як тільки ви це зробите, то самі здивуєтеся, наскільки вони зручні і прості.

У всіх вищенаведених прикладах, в наших умовах були або логічні значення (true або false), або логічні змінні, або функції, які повертають логічне значення. А що станеться, якщо ми не будемо використовувати логічне значення в умовах? Правильно! Якщо результатом умови буде будь-яке ненульове значення, то виконуватися буде стейтмент1.

Тому, якщо спробувати зробити щось на кшталт наступного:

То результатом буде hi, так як 4 є ненульовим значенням.

Тест

Що таке просте число? Правильно! Це ціле додатне число більше одиниці, яке ділиться без залишку або на себе, або на одиницю. Напишіть програму, яка просить користувача ввести просте ціле число. Якщо користувач ввів одне з наступних чисел: 2, 3, 5 або 7 — програма повинна вивести The digit is prime. В іншому випадку, The digit is not prime.

Підказка: Використовуйте розгалуження if для порівняння чисел і логічні значення для відстеження того, чи є число користувача простим чи ні.

Відповідь

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (4 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *