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

  Юрій  | 

  Оновл. 27 Кві 2020  | 

 292

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

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

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

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

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

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

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

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

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

Отже, якщо ми спробуємо вивести логічні значення за допомогою 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 Зірок (1 оцінок, середня: 5,00 з 5)
Loading...

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

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