Реалізація алгоритмів з розгалуженням

 

Розгалуження в Python

Розгалуження існує двох видів: повне та неповне.

Повне розгалуження має наступну структуру: 

Якщо умова істинна, то виконується один блок команд, якщо хибна, то виконується другий блок команд. 

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

Якщо виконується <умова>:

    то виконуються команди 1

інакше: виконуються команди 2.

Мовою  Python:

if <умова> :

    <команди 1>

else: 

    <команди 2>

Наприклад:

a = -10

if a>0: 

    print('Число', a 'додатнє')

else: 

    print('Число', a 'від ємне')

Словесне представлення алгоритму з розгалуженням:

Якщо закінчились уроки, то я йду додому, якщо уроки не закінчились, то я продовжую навчатись.

В даному прикладі Закінчились уроки  - це умова, Йду додому та Продовжую навчатись  - це команди, які виконуються в алгоритмі з розгалуженням. 

Завдання 1. Вкажіть де умова та команди в наступних прикладах:

  1. Якщо на вулиці йде дощ, то я візьму з собою парасольку, інакше я вдягнусь по погоді.

  2. Якщо я маю 100 гривень, то я зможу купити собі цукерок, інакше я куплю фрукти.

  3. Якщо закінчився навчальний рік, то я зможу поїхати на відпочинок, інакше я відпочиватиму лише на вихідних.

  4. Якщо у мене є пилосос, то він допомагає мені прибирати оселю, інакше я прибиратиму дуже довго.

Завдання 2. Скласти самостійно 3 приклади з розгалуженням.

Якщо блок else (інакше) в алгоритмі відсутній, то таке розгалуження називають неповним.

Структура неповного розгалуження в Python:

if <умова> :

    <команди 1>


Особливості написання коду з розгалуженням:

1.) Після умови обов'язково ставиться двокрапка  і курсор після натискання клавіші Enter падає на наступну стрічку з відступом, тоді ми прописуємо команди. 

Якщо забути двокрапку, то відступу не буде, і при перевірці програми буде видано помилку.

Навіть якщо ми потім поставимо двокрапку, то перевірка коду буде видавати помилку через відсутність відступу. Це можна виправити, поставивши перед командами 4 пропуски.

2.) Якщо є декілька команд, вони записуються теж з відступом в 4 пропуски.


Завдання для самостійного виконання.

  1. Дано натуральне число a. Визначити, чи є воно парним.

  2. Дано натуральне число a. Визначити, чи закінчується воно на 0.

  3. Дано два дійсних числа. Зменшити перше число в 7 разів, якщо воно більше за друге за абсолютною величиною.


Складена умова

Умова може бути проста та складена. Просту умову ми розглянули вище. Складена умова включає в себе декілька простих умов, зв'язаних з допомогою логічних операцій і, або, не.

Складена умова і в Python  записується and. (Логічне множення, кон'юнкція, одночасне виконання умов)

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

Наприклад: 

Якщо на вулиці йде дощ і мені потрібно йти на роботу, то я візьму з собою парасольку, інакше я вдягнусь по погоді.

Складеною буде умова: на вулиці йде дощ і мені потрібно йти на роботу.


Завдання 1. Вкажіть яка з умов буде складеною:

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

  2. Якщо потрібно дізнатись де знаходиться об'єкт до якого я прямую і я не знаю адреси, то я використаю навігатор, інакше я можу знайти його в Інтернеті.

  3. Якщо я читатиму багато книг, то я буду розумним і буду вступати в вищий навчальний заклад, інакше мені прийдеться довго вчитись.

Завдання 2. Придумати свої приклади складеної умови and.

Приклад:

Фірма набирає співробітників на роботу від 25 до 50 років. Визначити, чи буде взято на роботу співробітника, якщо відомо його вік.

a = int(input('Введіть вік співробітника'))

if a>=25 and a<=50: 

    print('Взято на роботу')

else: 

    print('Не беремо на роботу')

Складена умова або в Python  записується or (Логічне додавання, диз'юнкція, виконання хоча б однієї з  умов).

Складена умова не в Python  записується not  (Заперечення, інверсія).

Приклад:


Завдання розгалуження:

1. Скласти програму для перевірки агрегатного стану води, маючи її температуру у градусах Цельсія.

a = int(input('Введіть значення температури a '))
if a == 100:
    print('Вода кипить, газоподібний стан води')
elif a <= 0:
    print('Лід, твердий стан')
else:
    print('Рідкий стан ')

Результат:

ТЕСТ 1
Вхідні дані: – 2
Вихідні дані: Лід, твердий стан


ТЕСТ 2

Вхідні дані: 85

Вихідні дані: Рідкий стан

2. Написати програму для розв'язування лінійних рівнянь за заданими коефіцієнтами.

Вказівка. Лінійне рівняння має вигляд ax + b = 0 . Якщо a таb – нулі, то коренів безліч; якщо a дорівнює нулю і b не дорівнює нулю, то коренів немає; в усіх інших випадкахкорінь шукається за формулою x = - b / a.

a = int(input('Введіть перший коефіцієнт a '))
b = int(input('Введіть другий коефіцієнт b '))
if a == 0 and b == 0:
    print('Коренів безліч')
elif a == 0 and b != 0:
    print('Коренів немає')
else:
    x = -b/a
    print('x = ', x)

Результат:

ТЕСТ

Вхідні дані: a = 2, b = 5

Вихідні дані: x = – 2.5


3. У магазині іграшок продають в упаковці по три м'ячики та по п'ять м'ячиків. Чи можна купити рівно n м'ячиків?

n = int(input('Введіть кількість потрібних мячів n '))
if n % 3 == 0 or n % 5 == 0 or n % 8 == 0 :
    print('Можна купити рівно ', n, 'мячів')
else:
    print('Не можна купити рівно ', n, 'мячів')


Результат:

ТЕСТ 1

Вхідні дані: 7

Вихідні дані: Не можна купити рівно 7 мячів

ТЕСТ 2

Вхідні дані: 25

Вихідні дані: Можна купити рівно 25 мячів



4. Дано три числа. Написати програму, яка знаходить добуток двох більших з них.

a = int(input('Введіть перше число a '))
b = int(input('Введіть друге число b '))
c = int(input('Введіть третє число c '))
if a>c and b>c:
    x = a*b
    print('x =', x)
elif a>b and c>b: 
    x = a*c
    print('x =', x)
elif b>a and c>a:
    x = b*c
    print('x =', x)   
else:
    print('Введіть інші числа')

Результат:

Вхідні дані: 8 5 9

Вихідні дані: 72


5. З’ясувати існування трикутника, заданого своїми трьома сторонами.

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


a = int(input('Введіть першу сторону a '))

b = int(input('Введіть другу сторону b '))
c = int(input('Введіть третю сторону c '))
if a+b>c and a+c>b and b+c>a:
    print('Трикутник існує')
else:

    print('Трикутник не існує')

Результат:

ТЕСТ 1

Вхідні дані: 3 4 5

Вихідні дані: Трикутник існує

ТЕСТ 2

Вхідні дані: 7 4 3

Вихідні дані: Трикутник не існує


6. Дано три цілих числа. Визначте, скільки серед них співпадають. Програма повинна вивести одне з чисел: 3 (якщо всі числа однакові), 2 (якщо два співпадають) або 0 (якщо всі числа різні).


a = int(input('Введіть перше число a '))

b = int(input('Введіть друге число b '))

c = int(input('Введіть третє число c '))

if a == b and b == c and c == a:

    print('3')

elif a == b or b == c or a == c:

    print('2')

else:

    print('0')

ТЕСТ 1

Вхідні дані: 3 4 7

Вихідні дані: 0

ТЕСТ 2

Вхідні дані: 7 5 5

Вихідні дані: 2

ТЕСТ 3

Вхідні дані: 10 10 10

Вихідні дані: 3


 

7. Перевірити, чи задане трицифрове число ділиться на суму своїх цифр.

a = int(input('Ввести трицифрове  число')) #  Наприклад 654
b = a % 10      # 4
c = a //10         # 65
d = c % 10        # 5
f = c // 10         # 6
n = f + d + b
if a % n == 0:
    print('Число ділиться на суму своїх цифр')
else:
    print('Число  не ділиться на суму своїх цифр')


 










Коментарі