Логічний тип. Алгоритми і програми з розгалуженнями
Нова українська школа
Урок 40
Інформатика 7
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.
Алгоритми і програми з розгалуженнями
Логічними є вирази, при обчисленні яких одержується логічне значення:
Результат їх обчислення можна зберігати в змінну, яка буде мати тип bool.
або
True
False
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Прості і складені вирази
Простим логічним називають вираз, який побудовано за допомогою операцій порівняння.
Знак операції | Значення | Логічний вираз | Результат |
== | Дорівнює | 8==9 | False |
> | Більше | 8>9 | False |
< | Менше | 8<9 | True |
>= | Більше або дорівнює | 5>=5 | True |
<= | Менше або дорівнює | 5<=2 | False |
!= | Не дорівнює | 2!=5 | True |
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Прості і складені вирази
Проаналізуємо результати обчислення логічних виразів:
Оскільки
2*2 = 4 — істинна рівність, то значення відповідного логічного виразу дорівнює True
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Прості і складені вирази
Проаналізуємо результати обчислення логічних виразів:
Оскільки остача від ділення 10 на 3 не дорівнює 0, значення логічного виразу дорівнює False
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Прості і складені вирази
Складеним логічним називають вираз, у якому використовуються логічні операції:
AND
OR
NOT
Такі вирази складають, якщо потрібно одночасно перевірити виконання кількох умов.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Прості і складені вирази
Розглянемо приклади складених умов.
Операція
Назва
Приклади
Значення
or
або
логічна сума
2*2 == 7 or 4 <= 5
3>8 or 12<5 or 9 == 1
True False
and
і
логічний добуток
2*2 == 7 and 4 <= 5
3 <= 8 and 12>5 and 9 != 1
True False
not
не
логічне заперечення
not 2*2 == 4
not 8<3
True False
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Прості і складені вирази
Перевіримо, чи належить значення NUM проміжку [7; 20]:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Прості і складені вирази
Якщо змінній присвоїти логічне значення, вона належатиме до типу bool:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Вбудовані функції all і any
Одночасну перевірку декількох умов можна записати коротше за допомогою вбудованих функцій:
Функція:
all(<список логічних виразів>)
повертає True, якщо істинні всі перелічені в списку умови
all
(англ. всі)
any
(англ. хоч одна)
Функція:
any(<список логічних виразів>)
повертає True, якщо хоча б один елемент списку дорівнює True
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Вбудовані функції all і any
З’ясуємо, чи є значення NUM парним числом із проміжку
від 7 до 20.
Для цього слід одночасно перевірити три умови:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Вбудовані функції all і any
Перевіримо, чи дорівнює 0 хоча б одне зі значень
х, у, z:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Алгоритмічна структура розгалуження
Як ви знаєте, розгалуження — це алгоритмічна структура, в якій, залежно від істинності деякої умови, виконується певна послідовність дій.
Пригадаймо синтаксис та семантику команд розгалуження мови Python, призначених для програмування розгалужень.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Умовний оператор if
Виконання команди if (англ. якщо) можна описати так:
«якщо умова істинна,
то виконати дії»
Команда if реалізує алгоритмічну конструкцію неповне розгалуження.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Умовний оператор if
Синтаксис команди:
іf <умова>:
___ <Оператори>
де ___ — обов’язковий відступ від лівого краю.
Після запису умови слід поставити двокрапку : , яка показує, що далі має бути розташований блок дій.
Команди записуються з обов’язковим однаковим відступом від лівого краю. Якщо команда лише одна, її можна записати після двокрапки в одному рядку з умовою.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Умовний оператор if
Складемо програму для упорядкування двох уведених з клавіатури значень за неспаданням:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Команда розгалуження if...else
Алгоритмічній конструкції повне розгалуження відповідає команда розгалуження if...else (англ. якщо...інакше).
Призначена для виконання однієї дії у випадку, якщо деяка умова істинна, та іншої дії, якщо ця умова хибна.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Команда розгалуження if...else
Синтаксис команди if...else:
if <Умова> :
<Дії 1>
else:
<Дії 2>
Якщо умова істинна (True)
Якщо умова хибна (False)
програма виконає блок дій <Дії 1>
виконується блок дій
<Дії 2>, який міститься після службового слова еlse
Команди, вкладені в гілки if і else, записують з однаковим відступом
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Вкладення розгалужень
У програмі при цьому в одній або й обох гілках команди розгалуження записують нові команди розгалуження.
Якщо після перевірки деякої умови для прийняття рішення потрібно знову перевіряти умову, утворюються
вкладені розгалуження.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Вкладення розгалужень
Складемо програму, яка б за уведеним цілим числом виводила слово «рік» у правильному відмінку.
Проаналізувавши форми слова «рік», помічаємо, що форма слова залежить від останньої цифри числа.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Вкладення розгалужень
Проте значення від 11 до 14 слід опрацювати окремо.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Вкладення розгалужень
Цей алгоритм реалізує така програма:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Багатоваріантне розгалуження
Вкладені розгалуження можна записати у більш компактному вигляді, скориставшись командою if...elif...else (англ. else if — інакше, якщо).
Ця команда дозволяє перевіряти кілька умов послідовно, виконуючи блок коду, що відповідає першій істинній умові.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Багатоваріантне розгалуження
Синтаксис команди
Приклад
if <умова1>:
<Дії 1>
elif <умова2>:
<Дії 2>
……………………..
else: <3апасний блок дій >
if a>b:
print("a>b")
elif a<b:
print("a<b")
else:
print("a = b")
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Багатоваріантне розгалуження
Якщо <умова 1> істинна
if <умова1>:
<команда 1>
elif <умова2>:
<команда 2>
elif <умоваЗ>:
<команда 3>
То виконується <команда 1>
І керування передається команді, наступній за if-elif.
Якщо <умова 1> хибна
То гілки elif перебираються послідовно до першої істинної умови.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Багатоваріантне розгалуження
Після виконання відповідних їй вказівок, решта гілок elif пропускаються
if <умова1>:
<команда 1>
elif <умова2>:
<команда 2>
elif <умоваЗ>:
<команда 3>
і керування передається команді, записаній після if-elif.
Якщо умови у всіх гілках if-elif хибні, жодна з гілок виконана не буде.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Багатоваріантне розгалуження
Програма запитує в користувача назву річки і виводить повідомлення про те, куди річка впадає:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Багатоваріантне розгалуження
Розглянуті команди розгалуження та логічні операції дозволяють реалізувати вибір дій у найрізноманітніших випадках.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Ознайомтеся з цікавою інформацією
Олександр Летичевський — видатний український учений у галузі кібернетики та інформатики (рис. 31.6). Результати, отримані ним у галузі теорії автоматів і алгоритмів, комп’ютерної алгебри, штучного інтелекту та теорії проектування обчислювальних систем, широко відомі світовій науковій спільноті.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Питання для самоперевірки
а) if a>b: a = a-b
else: b = b-a
г) if а<0:
if a>b: a = b
else: b = a
else:
if a>b: b = a
else: a = b
б) if a<0:
a = -a
в) if a != b:
a = b
д) if a<5:
b = a+1
else:
if a<10:
b := a*2
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Розгадайте ребус
«Ребуси українською» © rebus1.com
Розгалуження
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Домашнє завдання
Проаналізувати
с. 185-191
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Працюємо за комп’ютером
Сторінка
191
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Дякую за увагу!
Нова українська школа
Урок 40
Інформатика 7
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.