§ 28. Складання алгоритмів і програм з розгалуженнями
Ви вже знаєте, що однією з базових алгоритмічних структур є . Структура розгалуження дає змогу керувати ходом виконання програми. Для організації розгалуження у програмах мовою Python призначені команди іf і іf-else. Згадаймо правила виконання команд.
28.1. Команда іf
Команда іf відповідає структурі неповне розгалуження. Вона призначена для виконання деякої дії у випадку, якщо зазначена умова є істинною.
Синтаксис команди:
іf <умова>:
___<команди>
де ___ — обов’язковий відступ від лівого краю.
Пригадаймо, що умова — це логічний вираз, значенням якого є True або False. Після запису умови слід поставити двокрапку, в наступних рядках з обов’язковим однаковим відступом від лівого краю записати команди, які буде виконано, якщо умова істинна (True).
Зверніть увагу!
Якщо блок дій <команди> складається з однієї команди, її можна записати після двокрапки.
Якщо умова хибна (False), ці команди будуть пропущені, керування перейде до команди, записаної після команди іf.
Проста умова утворюється операціями порівняння: == (дорівнює), != (не дорівнює), < (менше), > (більше), >= (більше або дорівнює), <= (менше або дорівнює).
Приклад 1
Перевіримо, чи є значення змінної х додатним.
if x >= 0:
print('Число додатне')
Коли ж потрібно перевірити виконання декількох умов одночасно, використовують складену умову, що являє собою кілька простих умов, з’єднаних логічними операціями.
Нехай A і B — два логічні значення. Складена умова А and B істинна, тільки якщо й А, й В істинні. Складена умова А or B хибна, якщо й А, й В хибні.
Приклад 2
Визначимо, чи належить точка з координатою х відрізку [10; 20]. Точка належить відрізку, якщо одночасно виконуються умови x >= 10 і x <= 20:
if x >= 10 and x <= 20:
print('Точка належить відрізку від 10 до 20')
Завдання 1
Приклад 3
Визначимо за назвою дня тижня, чи є цей день вихідним:
day = input()
if day == 'Субота' or day == 'Неділя':
print('Вихідний')
Завдання 2
28.2. Команда іf…else
Команда if...else відповідає структурі повне розгалуження та призначена для виконання однієї дії у випадку, якщо деяка умова істинна, та для виконання іншої дії у випадку, якщо ця умова хибна.
Синтаксис умовної команди в повній формі:
if <умова>:
___<команди 1>
else:
___<команди 2>
Якщо результатом перевірки умови є значення True, то виконуються команди 1, якщо значення False — то команди 2, записані після службового слова еlse.
Приклад 4
Із курсу математики відомо, що модулем додатного числа та числа 0 є саме це число, а модулем від’ємного числа — протилежне йому число:
Запишемо код для знаходження модуля числа х:
if x >= 0: y = x
else: y = –x
Приклад 5
Запишемо команду розгалуження для визначення, чи пройде м’яч діаметром d у кватирку заввишки x і завширшки y.
if d<x and d<y: print('Так, пройде')
else: print('Ні, не пройде')
Завдання 3
Приклад 6
Складемо програму, яка за введеним віком дитини визначає, який мультфільм запропонувати для перегляду.
vik = int(input('Скільки дитині років?'))
if vik <= 3: print('Жирафа Афа')
if vik>3 and vik <= 6: print('Котигорошко')
if vik>6: print('Як козаки сіль купували')
У коді використано три команди неповного розгалуження. Якщо істинна умова, наприклад, у першій команді if, перевірки умов у інших командах марні. Щоб перевірити послідовно дві або більше умов, краще використовувати вкладені розгалуження або множинне (про це — далі).
У програмі можуть послідовно виконуватися команди повного й неповного розгалуження.
Приклад 7
Складемо програму пошуку найбільшого з трьох чисел а, b, с.
a = int(input('a = ?'))
b = int(input('b = ?'))
c = int(input('c = ?'))
if a>b: m = a
else: m = b
if c>m: m = c
print('m = ', m)
Питання для самоперевірки
Задача. Ракету запускають із космодрому, розташованого на екваторі Землі, у напрямку руху Землі по орбіті навколо Сонця. Швидкість руху ракети [latex]\upsilon[/latex] км/с. Скласти програму перевірки результату запуску ракети залежно від швидкості її руху:
• якщо [latex]\upsilon<7,8[/latex], то впаде на Землю;
• якщо [latex]7,8\le\upsilon<11,2[/latex], то стане супутником Землі;
• якщо [latex]11,2\le\upsilon<16,4[/latex], то стане супутником Сонця;
• якщо [latex]\upsilon\ge16,4[/latex] км/c, то піде в міжзоряний простір.
1. Завантажте програму Python → IDLE. Створіть нове вікно програми.
Збережіть файл із назвою Vprava28 у власну папку.
if v<7.8: print('Bпаде на Землю')
if v >= 7.8 and v<11.2: print('Cтане супутником Землі')
4. Перевірте роботу наведеного фрагмента програми.
6. Виконайте програму для наведених значень швидкості руху.
Проаналізуйте результат виконання програми у вікні консолі.
Закінчить роботу, закривши вікно IDLE.