1 of 19

Алгоритми з розгалуженнями, вкладеними в цикл

Нова українська школа

Урок 40

Інформатика 6

teach-inf.com.ua

за підручником

Бондаренко О.О. та ін.

2 of 19

Алгоритми з розгалуженнями,�вкладеними в цикл

У програмах можна поєднувати команди розгалуження та повторення.

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

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

як у цикл

із лічильником

так і в цикл

із передумовою

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

3 of 19

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

Ви знаєте, що цикл for перебирає елементи деякої послідовності значень. Якщо при цьому потрібно перевірити, чи відповідає кожний елемент послідовності певній умові, в тіло циклу слід вкласти команду розгалуження.

Розгалуження, вкладене в цикл, може бути:

повним

неповним

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

4 of 19

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

Розгляньте приклад

На квітнику 7 квіток.

Підрахуємо кількість червоних і кількість синіх квіток. Розглянемо фрагмент блок-схеми оператора циклу, який виконує такий підрахунок.

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

5 of 19

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

Як бачимо, в цикл вкладено повне розгалуження.

Цикл for дозволяє повторити перевірку умови розгалуження для кожного елемента послідовності.

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

6 of 19

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

Розгляньте приклад

Знайдемо кількість слів red у заданій послідовності

kred = kblue = 0

# Задання початкових значень лічильника

for word in ['blue', 'red', 'red', 'blue', 'red', 'blue', 'red’]:

# Послідовність задана списком

if word == 'red': # Якщо змінна циклу набуває

# значення 'red'

kred = kred+1

else: kblue = kblue+1 # Якщо word == 'blue'

print('kred = ', kred, 'kblue = ', kblue)

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

7 of 19

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

Розгляньте приклад

Введемо з клавіатури 8 довільних чисел і серед введених чисел підрахуємо кількість парних

k = 0 # Задання початкового значення лічильника

for і in range(8): # Цикл for дозволяє повторити команди

# тіла циклу для всіх чисел від 0 до 7

а = int(input('Наступне число '))

if а%2 == 0:

# Вкладене неповне розгалуження перевіряє,

k = k+1 # чи дорівнює нулю остача від ділення

print('Кількість парних дорівнює ', k) # числа а на 2

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

8 of 19

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

Розгляньте приклад

Серед восьми додатних чисел, які вводяться з клавіатури, визначимо найбільше

m = -1 # Задавання початкового значення змінної,

for і in range(8):

# у якій зберігатиметься найбільше значення

a = int(input('Наступне число ')) # Уведення і-го числа

if a>m: # Якщо введене число більше поточного

m = a # значення m, замінити m уведеним числом

print('Найбільше число', m)

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

9 of 19

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

Розгляньте приклад

Знайдемо всі дільники натурального числа к. Число 1 і саме число к не включаємо до переліку дільників.

Алгоритм розв'язування задачі: перебрати всі значення числа і від 2 до к//2; якщо і є дільником числа k (k%i == 0), вивести значення і.

Результат

k = ? 45

3 5 9 15

k = int(input('k = ? '))

for i in range(2, k//2+1):

if k%i == 0:

print(i, '', end = '')

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

10 of 19

Розгалуження, вкладене в цикл із передумовою

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

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

11 of 19

Розгалуження, вкладене в цикл із передумовою

Алгоритм знаходження НСД(а, b) — найбільшого спільного дільника двох чисел а і b — називають алгоритмом Евкліда, давньогрецького математика.

Маємо:

поки А ≠ В,

від більшого числа віднімати менше.

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

12 of 19

Розгалуження, вкладене в цикл із передумовою

Під час кожної ітерації циклу більше з чисел А і В заміняється їх різницею. Цикл припиняється, коли значення змінних А і В стають рівними — це НСД початкових значень.

Результат

A = 12; b = 18

12 6

6 6

НСД = 6

Виконаємо алгоритм

для чисел 12 і 18.

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

13 of 19

Розгалуження, вкладене в цикл із передумовою

Розгляньте приклад

Черепашка переміщується в точку з випадковими координатами, поки одна з координат не стане такою, що дорівнює 0. Якщо згенероване випадкове значення х є додатним, то Черепашка залишає червоний слід, а якщо від’ємним — синій.

from turtle import*

from random import*

width(3)

x = y = 200

while x != 0 and y != 0:

x = randint(-100, 100)

y = randint(-100, 100)

if x>0: color('red')

else: color('blue')

goto(x, y)

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

14 of 19

Розгалуження, вкладене в цикл із передумовою

Результат виконання

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

15 of 19

Питання для самоперевірки

  1. Наведіть приклади задач, для розв’язання яких потрібно скласти алгоритм із розгалуженням всередині циклу.
  1. Які числа будуть виведені в ході виконання циклу?

for і in range(2, 10):

if 12%i == 0:

print(i)

for і in range(20):

if i%3 == 0:

print(i)

for і in[2, 5, 8, 10, 21]:

if i<10:

print(i)

for і in[2, 5, 8, 10, 21]: if i%2 == 0:

print(i)

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

16 of 19

Розгадайте ребус

«Ребуси українською» © rebus1.com

Вкладені

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

17 of 19

Домашнє завдання

Проаналізувати

с. 217-223

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

18 of 19

Працюємо за комп’ютером

Сторінка

222-223

© Вивчаємо інформатику teach-inf.com.ua

Розділ 6

§ 34

19 of 19

Дякую за увагу!

Нова українська школа

Урок 40

Інформатика 6

teach-inf.com.ua

за підручником

Бондаренко О.О. та ін.