Python: Урок 6. Множинне розгалуження

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

Як організувати таке множинне розгалуження? Напевно, можна використовувати декілька інструкцій if: спочатку перевіряється умовний вираз у першій інструкції if (якщо він True, то буде виконуватися вкладений в неї блок коду), потім у другій інструкції if і т.д. Однак при такому підході перевірка наступних інструкцій буде продовжуватися навіть тоді, коли перша умова була True, і блок коду при даній гілці був виконаний. Перевірка наступних умов може виявитися безглуздою.

Зазвичай таку проблему можна вирішити за допомогою вкладених конструкцій if-else. Однак при цьому часто з'являється проблема правильного трактування коду: незрозуміло, до якого if відноситься else (хоча в Python така плутанина не можлива через обов'язкові відступи).

З іншого боку, в ряді мов програмування, в тому числі і Python, передбачено спеціальне розширення інструкції if, що дозволяє направити потік виконання програми з одній гілок. Дана розширена інструкція, крім необов'язкової частини else, містить ряд гілок elif (скорочення від "else if" - "ще якщо") і виглядає приблизно так, як показано на блок-схемі. Частин elif може бути як завгодно багато (в межах розумного, звичайно).



На відміну від використання безлічі одиночних інструкцій if, інструкція if-elif-else припиняє перегляд наступних гілок, як тільки логічне вираз в поточній гілці буде True. Наприклад, якщо вираз при if (перша гілка) буде True, то після виконання вкладеного блоку виразів, програма повернеться до основної гілки.

Приклади скриптів з використанням інструкції if-elif-else на мові програмування Python:
x = -10
if x > 0:
  print(1)
elif x < 0:
  print(-1)
else:
  print(0)
Або такий приклад:
result = "no result"
num1 = 3
if num1 == 0:
    result = 0
elif num1 == 1:
   result = 1
elif num1 == 2:
   result = 2
elif num1 == 3:
   result = 3
elif num1 == 4:
   result = 4
elif num1 == 5:
   result = 45
else:
   print("Error")
print(result )
У який момент припинитися виконання інструкції if-elif-else у вищевказаному прикладі? При якому значенні змінної могла спрацювати гілка else?

Практична робота

1.Напишіть програму за наступним описом:
  • двом змінним присвоюються числові значення;
  • якщо значення першої змінної більше другої, то знайти різницю значень змінних (відняти від першої другу), результат присвоїти третій змінній;
  • якщо перша змінна має менше значення, ніж друга, то третю змінну пов'язати з результатом суми значень двох перших змінних;
  • у всіх інших випадках, присвоїти третій змінній значення первої змінної;
  • вивести значення третьої змінної на екран.
2.Придумайте програму, в якій би використовувалася інструкція if-elif-else. Кількість гілок повинна бути як мінімум чотири.

Зміст курсу

Вступ
Урок 1. Історія мов програмування. Компіляція та інтерпретація
Урок 2. Знайомство з Python і середовищами програмування
Урок 3. Типи даних в програмуванні. Визначення змінної
Урок 4. Логічні вирази
Урок 5. Умовний оператор. Інструкція if
Урок 6. Множинне розгалуження
Урок 7. Цикл while
Урок 8. Введення даних з клавіатури
Урок 9. Рядки як послідовності символів
Урок 10. Списки - змінювані послідовності
Урок 11. Cловники
Урок 12. Цикл for
Урок 13. Функції
Урок 14. Параметри і аргументи функцій. Локальні та глобальні змінні
Урок 15. Перевірочна робота з основ програмування на Python

Коментарі

Популярні дописи з цього блогу

Азбука Морзе Українською

Python: Урок 4. Логічні вирази

Python: Урок 3. Типи даних в програмуванні. Визначення змінної