§ 29. Вкладені розгалуження
Із попередніх класів ви вже знаєте, що таке розгалуження і вмієте використовувати їх під час розв'язування завдань. Пригадаймо, який фрагмент алгоритму називають повним розгалуженням, а який — неповним.
Перш ніж розглянути низку прикладів, пограємо в лицарів і чарівників, які вболівають за прекрасну панянку.
Якщо під час розв’язування задачі виникає потреба в разі виконання (або невиконання) деякої умови знову робити вибір, застосовують так звані вкладені розгалуження: в команді розгалуження по гілці Так або Ні знову використовують команду іf.
Розгляньмо низку прикладів.
Приклад 1
Перепишемо код прикладу 6 із § 28 із використанням розгалужень:
vik = int(input('Скільки дитині років?'))
if vik <= 3: print('Жирафа Афа')
else:
if vik <= 6: print('Котигорошко')
else: print('Як козаки сіль купували')
print('Приємного перегляду!')
Якщо умова vik <= 3 істинна, то виконується команда print('Жирафа Афа'), після чого керування передається команді print('Приємного перегляду!').
Якщо ж vik>3, то виконується гілка else, до якої вкладено команду if...else.
Якщо vik <= 6, то виконується команда print('Котигорошко').
Для всіх інших значень змінної vik виконується команда print('Як козаки сіль купували').
Приклад 2
Розгляньмо задачу.
Потрібно визначити N — номер координатної чверті, у якій розташована точка з координатами x, y (х ≠ 0, у ≠ 0).
Складемо блок-схему алгоритму визначення N.
Після вибору гілки залежно від знака х з’являється потреба робити вибір залежно від знака у, тобто в перше розгалуження вкладено два інших. Запишемо програмний код:
x = int(input('x = ?'))
y = int(input('y = ?'))
if x>0:
if y>0: n = 1
else: n = 4
else:
if y>0: n = 2
else: n = 3
print('N = ', n)
Якщо x = 5, y = –2, то вираз x>0 набуває значення True. У гілці True перевіряється умова y>0, яка набуває значення False, якщо y = –2. Тож змінна n набуває значення 4.
Команди, вкладені в гілки команди if, об’єднуються в блоки за величиною відступів від лівого краю вікна програми. Відступ може бути будь-яким, головне, щоб у межах одного вкладеного блоку він був однаковий.
Отже, вкладені розгалуження використовують, коли потрібно перевірити послідовно дві або більше умови. Записуючи програмний код, потрібно уважно слідкувати за відступами, щоб команди, вкладені в гілки команди if, починалися на одній вертикалі. Ця особливість синтаксису мови Python робить текст програми наочним і зрозумілим.
Питання для самоперевірки
Задача. Написати програму для визначення переможниці з бігу на 100 м за результатами забігу трьох спортсменок, які посіли призові місця: Іванни, Уляни та Дарини. Переможницею є спортсменка, що показала найменше значення часу.
1. Завантажте програму Python → IDLE. Створіть нове вікно програми.
2. Запишіть команду для введення значень часу першої спортсменки.
3. Запишіть команди для введення значень часу t2 і t3 другої та третьої спортсменок.
4. Запишіть команду розгалуження, яка визначає, яке зі значень t1, t2 і t3 є найменшим.
5. Збережіть файл із назвою Vprava29 у власну папку.
Перевірте роботу програми для різних значень.
6. Закінчіть роботу, закривши вікно IDLE.