Логічний тип даних. Інструкція розгалуження.

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

Логічний (Булевий) тип даних в Python відноситься до цілочисельного типу. Для цього типу визначені лише дві константи True і False.

Зверніть увагу, що в іменах констант True і False перша буква – прописна.

Значення логічного типу можна перетворювати, наприклад, застосувавши функцію перетворення int до логічного True – отримаємо 1, а перетворення False дасть 0. При зворотному перетворенні, число 0 перетворюється в False, а будь-яке число більше нуля в True. Якщо перетворювати порожній рядок, то отримаємо логічне False, а будь-який непорожній рядок перетвориться в True.

Для перетворення до логічного типу використовується стандартна функція bool().

Оператори порівняння.

В Python для порівняння об’єктів (змінних різних типів) використовують операції порівняння.

До операцій порівняння належать наступні операції:

  • < – менше;
  • <= – менше або дорівнює;
  • > – більше;
  • >= – більше або дорівнює;
  • == – дорівнює;
  • != – не дорівнює.

За замовчуванням, ці операції мають однаковий пріоритет, тому при виконанні обчислень вмикається асоціативність (порядок обчислення), для операцій порівняння вона ліва – обчислення відбувається з права на ліво. З іншого боку це дозволяє об’єднувати операції порівняння в ланцюги, і на відміну від більшості мов програмування, не використовувати логічні оператори.

Приклад:

  • print(4 > 3 <= 7 != 3 < 2)
    # False

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

Логічні вирази (умови) можуть складатися з декількох частин. При цьому різні їх частини, також є логічними виразами (простими або складеними), які з’єднуються один з одним за допомоги наступних логічних операцій:

  1. or – диз’юнкція або логічне додавання (або);
  2. and – кон’юнкція або логічне множення (і);
  3. not – заперечення (не).

На відміну від операцій порівняння, логічні операції мають різний пріоритет (за вказаним порядком) але більш високий, ніж операції порівняння. Тому, в виразах з операціями порівняння, для зміни порядку обчислень, необхідно використовувати дужки.

Приклад:

  • print(4 > 3 or 3 < 2 and 4 == 5)
    # True
  • print((4 > 3 or 3 < 2) and 4 == 5)
    # False

Таблиця істинності логічних операцій:

  1. not (не)
    • not False = True
    • not True = False

  2. and (і)
    • True and True = True
    • True and False = False
    • False and True = False
    • False and False = False

  3. or (або)
    • True or True = True
    • True or False = True
    • False or True = True

Інструкція розгалуження.

Алгоритми, в яких відбувається виконання тих чи інших послідовностей дій в залежності від деяких умов, називаються алгоритмами з розгалуженням.

Для реалізації таких алгоритмів в мовах програмування існують спеціальні засоби. В Python такими засобами є інструкція розгалуження і вкладені інструкції розгалуження.

Кожна інструкція розгалуження передбачає виконання однієї з двох дій в залежності від істинності деякої умови. Інструкція розгалуження може використовуватися в повній або скороченій формі.

Блок-схема повного розгалуження.

Схема повного розгалуження
  • if логічний_вираз:
    • блок_інструкцій_А
  • else:
    • блок_інструкцій_B

Виконання інструкції повного розгалуження відбувається наступним чином: обчислюється значення логічного виразу, якщо логічний вираз повертає значення True, то далі виконується блок_інструкцій_А, після чого програма переходить до виконання першої інструкції наступного фрагмента алгоритму; якщо ж логічний вираз повертає значення False, то виконується блок_інструкцій_В, а потім наступні інструкції.

Звернемо увагу, що у блоках if та else для внутрішніх блоків інструкцій треба робити відступи. Важливо щоб відступи були однакової довжини, тому для їх встановлення доцільно використовувати табуляцію або ставити рівну кількість пропусків (рекомендується використовувати відступ в 4 пропуски).

Для сумісності коду, не слід використовувати в оформленні блоків змішані символи (табуляції і пропуску). Python має самобутній синтаксис в якому відступи – частина суворого синтаксису. Порушення цих правил призведе до синтаксичної помилки.

Відступи є обмежувачами блоку. Блоком називається інструкція або група інструкцій, які виконуються як одна.

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

  • a = int(input('Введіть перше число а = '))
  • b = int(input('Введіть друге число b = '))
  • if (a>b):
    • print('Максимальне число а')
  • else:
    • print('Максимальне число b')

Блок-схема скороченого розгалуження.

Схема скороченного розгалуження
  • if логічний_вираз:
    • блок_інструкцій_А

Як бачимо, інструкція розгалуження може мати ще і неповну форму, якщо в ній відсутня гілка else, тобто відсутнє службове слово else з відповідним йому блоком інструкцій.

Приклад: скласти програму, яка буде знаходити розв’язок наступного рівняння: х = а ÷ b, за умови, що b не дорівнює нулю.

  • a = int(input('Введіть перше число а = '))
  • b = int(input('Введіть друге число b = '))
  • if (b != 0):
    • print(a/b)

Вкладені інструкції розгалуження.

В інструкції розгалуження, в якості блоків інструкцій А та В дозволяється використовувати будь-які інструкції в тому числі і інструкції розгалуження. Таким чином, в Python можливо вкладення інструкції розгалуження по одній з наступних схем:

    • if логічний_вираз_1:
      • if логічний_вираз_2:
        • блок_інструкцій_А
      • else:
        • блок_інструкцій_B
    • else:
      • блок_інструкцій_С
    • if логічний_вираз_1:
      • блок_інструкцій_А
    • else:
      • if логічний_вираз_2:
        • блок_інструкцій_B
      • else:
        • блок_інструкцій_С
    • if логічний_вираз_1:
      • if логічний_вираз_2:
        • блок_інструкцій_А
      • else:
        • блок_інструкцій_B
    • else:
      • if логічний_вираз_3:
        • блок_інструкцій_C
      • else:
        • блок_інструкцій_D

Приклад: скласти програму обчислення значення функції:

у =
{
x, при x < 0
0, при 0 <= x < 1
2*x, при x > 1
  • x = int(input(‘Введіть перше число x = ‘))
  • if (x < 0):
    • y = x
  • else:
    • if x > 1:
      • y = x*x
    • else:
      • y = 0
  • print(y)