1 of 27

Алгоритми і програми з повтореннями

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

Урок 41

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

teach-inf.com.ua

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

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

2 of 27

Алгоритми і програми з повтореннями. Цикли

Однією з базових алгоритмічних структур є цикл.

Повторення (цикл) — це алгоритмічна структура, за допомогою якої певна послідовність дій виконується

декілька разів.

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

Розділ 5

§ 32

3 of 27

Алгоритми і програми з повтореннями. Цикли

Ви маєте досвід запису алгоритмів із повторенням (циклів) мовою Python і вмієте використовувати два види команд циклу:

Згадаймо: команди, що повторюються під час виконання циклу, називають тілом циклу, а кожне виконання тіла циклу — ітерацією.

із параметром (for)

з умовою (while)

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

Розділ 5

§ 32

4 of 27

Цикл із параметром

Цикл із параметром (або цикл for) використовують, якщо кількість повторень визначається певною послідовністю значень. Таку послідовність можуть утворювати символи рядка, елементи списку тощо.

Синтаксис циклу for:

— обов’язковий відступ від лівого краю.

for i in <послідовність>: # Заголовок циклу

<тіло циклу>

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

Розділ 5

§ 32

5 of 27

Цикл із параметром

Ключове слово in наказує почергово надати змінній і усі значення із зазначеної послідовності

for і in <послідовність>:

<тіло циклу>

Вказуємо назву змінної (і), яка буде параметром

Після ключового слова for

Послідовність значень можна задати як список — набір значень, розділених комами, взятий у квадратні дужки.

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

Розділ 5

§ 32

6 of 27

Цикл із параметром

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

Застосуємо цикл for для перебору символів рядка. Виведемо всі символи рядка, що міститься в змінній s, окрім «зірочок»:

Програмний код

Результат

ABCDEFG

s = 'AB*C*D*EF*G'

for C in s:

# Перебір у змінній C символів рядка s

if not C == '*': print(C, end = '')

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

Розділ 5

§ 32

7 of 27

Цикл із параметром

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

Дано список днів тижня.

З’ясуємо, скільки з них є вихідними (сб, нд).

Програмний код

Результат

5

D = ['пн','нд','чт','сб','пт','сб','вт','ср','нд','чт','чт','нд','вт','пн','ср']

K = 0

for day in D: # Перебір у змінній day елементів списку D

if day in ['сб', 'нд']: K += 1

print(K)

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

Розділ 5

§ 32

8 of 27

Цикл із параметром

Чергове число генерується при кожному звертанні до такого об’єкта, тому навіть для довгих послідовностей не займає багато пам’яті.

Числові послідовності можна задавати функцією range():

range([<початок>,] <кінець>[, <крок>])

Відлік починається зі значення початок

Завершується на 1 раніше за значення кінець

Із заданим кроком крок

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

Розділ 5

§ 32

9 of 27

Цикл із параметром

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

Надрукуємо числа від 20 до 24.

Програмний код

Результат

20

21

22

23

24

for i in range(20, 25):

print(i)

Якщо крок дорівнює 1, цей параметр можна не зазначати:

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

Розділ 5

§ 32

10 of 27

Цикл із параметром

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

Надрукуємо числа від 0 до 3.

Якщо початок дорівнює 0, цей параметр можна не зазначати:

Програмний код

Результат

0

1

2

3

for i in range(4):

print(i)

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

Розділ 5

§ 32

11 of 27

Цикл із параметром

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

Надрукуємо числа від 5 до 1.

Якщо потрібно вести відлік у зворотному порядку, крок має бути від’ємним:

Програмний код

Результат

5

4

3

2

1

A = range(5, 0, -1)

for i in A:

print(i)

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

Розділ 5

§ 32

12 of 27

Цикл із передумовою

Цикл із передумовою (або цикл while) буде повторюватися доти, поки виконується деяка умова. Ця умова називається умовою циклу і повертає:

або

True

False

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

Розділ 5

§ 32

13 of 27

Цикл із передумовою

Синтаксис команди:

whіle <умова>:

<тіло циклу>

Заголовок циклу. Умова - логічний вираз, що є умовою виконання циклу

команди, які виконуються під час кожної ітерації

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

Розділ 5

§ 32

14 of 27

Цикл із передумовою

Виконання команди циклу while починається з обчислення значення логічного виразу — умови повторення циклу. Якщо умова:

то виконуються команди тіла циклу і керування повертається на перевірку умови

то виконується команда, яка є наступною після команди while

істинна

хибна

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

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

Розділ 5

§ 32

15 of 27

Цикл із передумовою

У багатьох математичних задачах виникає послідовність чисел, названа на честь італійського математика Фібоначчі: перші два числа дорівнюють 1, а кожне наступне дорівнює сумі двох попередніх. Математично це можна записати так:

Fib1 = Fib2 =1; Fibn = Fibn-1 +Fibn-2

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

Розділ 5

§ 32

16 of 27

Цикл із передумовою

Визначимо номер першого числа Фібоначчі, більшого за 1000.

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

Розділ 5

§ 32

17 of 27

Вкладені цикли

Вкладений цикл — цикл, який міститься в тілі іншого циклу.

Вкладений цикл також називають внутрішнім, а цикл, у якому він міститься,  зовнішнім.

Усередину вкладеного циклу може бути вкладено наступний цикл і так далі. У мові Python підтримується до 20 рівнів вкладеності.

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

Розділ 5

§ 32

18 of 27

Вкладені цикли

Розглянемо принцип роботи вкладених циклів.

Під час першої ітерації зовнішній цикл викликає внутрішній, який виконується до свого завершення

Після чого керування повертається в тіло зовнішнього циклу

Під час другої ітерації зовнішній цикл знову викликає внутрішній

І так доти, поки не завершиться зовнішній цикл

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

Розділ 5

§ 32

19 of 27

Вкладені цикли

Обчислимо значення змінної при значеннях змінних n = 1, 2, З і k = 2, 4, 7, 9.

Якщо перебирати всі значення n і k, отримаємо 12 значень змінної у. Скласти програму можна так: для кожного значення n = 1, 2, З перебрати всі значення k зі списку [2, 4, 7, 9], тобто n використати як параметр зовнішнього циклу,�k — як параметр внутрішнього циклу:

n k у

1 2 5

1 4 9

1 7 15

1 9 19

2 2 6

2 4 10

2 7 16

2 9 20

3 2 7

3 4 11

3 7 17

3 9 21

print('n k у')

for n in range(1, 4):

for k in [2, 4, 7, 9]:

y = 2*k+n

print(n, k, y)

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

Розділ 5

§ 32

20 of 27

Вкладені цикли

Книга коштує 240 грн. У покупця є купюри номіналами 20, 50 і 100 гривень. Складемо програму для визначення всіх можливих варіантів оплати.

Переберемо всі можливі сполучення числа купюр. Щоб набрати названу суму, потрібно не більше 12�20-гривневих купюр, не більше 6 50-гривневих купюр, і не більше 2 купюр по 100 грн. Позначимо числа купюр указаного номіналу змінними а, b, с і переберемо у вкладених циклах значення а, b, с зі вказаних діапазонів. Відповіддю будуть такі значення а, b, с, за яких а*20+b*50+с*100 = 240

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

Розділ 5

§ 32

21 of 27

Вкладені цикли

Програмний код

for a in range(13): # Кількість 20-гривневих купюр

for b in range(6): # Кількість 50-гривневих купюр

for c in range(3): # Кількість 100-гривневих купюр

if a*20+b*50+c*100 == 240:

print('20 грн - ', a, ', 50 грн - ', b, ', 100 грн - ', c)

20 грн - 2 , 50 грн - 0 , 100 грн - 2

20 грн - 2 , 50 грн - 2 , 100 грн - 1

20 грн - 2 , 50 грн - 4 , 100 грн - 0

20 грн - 7 , 50 грн - 0 , 100 грн - 1

20 грн - 7 , 50 грн - 2 , 100 грн - 0

20 грн - 12 , 50 грн - 0 , 100 грн - 0

Результат

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

Розділ 5

§ 32

22 of 27

Вкладені цикли

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

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

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

Розділ 5

§ 32

23 of 27

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

  1. З’ясуйте, що буде виведено в результаті виконання фрагмента програми:

а) for і in range(5): print(i*i)

в) for x in range(5, 1,-1):

print(x)

б) for x in 'рядок': print(2*x)

  1. Складіть програму для розв’язування задачі.

Задача. 20 л соку потрібно розлити у банки місткістю 3, 2, 1 л. Як отримати всі варіанти розливу? Підрахуйте кількість варіантів.

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

Розділ 5

§ 32

24 of 27

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

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

Повторення

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

Розділ 5

§ 32

25 of 27

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

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

с. 192-197

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

Розділ 5

§ 32

26 of 27

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

Сторінка

197

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

Розділ 5

§ 32

27 of 27

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

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

Урок 41

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

teach-inf.com.ua

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

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