Алгоритми і програми з повтореннями
Нова українська школа
Урок 41
Інформатика 7
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.
Алгоритми і програми з повтореннями. Цикли
Однією з базових алгоритмічних структур є цикл.
Повторення (цикл) — це алгоритмічна структура, за допомогою якої певна послідовність дій виконується
декілька разів.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Алгоритми і програми з повтореннями. Цикли
Ви маєте досвід запису алгоритмів із повторенням (циклів) мовою Python і вмієте використовувати два види команд циклу:
Згадаймо: команди, що повторюються під час виконання циклу, називають тілом циклу, а кожне виконання тіла циклу — ітерацією.
із параметром (for)
з умовою (while)
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із параметром
Цикл із параметром (або цикл for) використовують, якщо кількість повторень визначається певною послідовністю значень. Таку послідовність можуть утворювати символи рядка, елементи списку тощо.
Синтаксис циклу for:
— обов’язковий відступ від лівого краю.
for i in <послідовність>: # Заголовок циклу
<тіло циклу>
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із параметром
Ключове слово in наказує почергово надати змінній і усі значення із зазначеної послідовності
for і in <послідовність>:
<тіло циклу>
Вказуємо назву змінної (і), яка буде параметром
Після ключового слова for
Послідовність значень можна задати як список — набір значень, розділених комами, взятий у квадратні дужки.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із параметром
Розгляньте приклад
Застосуємо цикл 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
Цикл із параметром
Розгляньте приклад
Дано список днів тижня.
З’ясуємо, скільки з них є вихідними (сб, нд).
Програмний код
Результат
5
D = ['пн','нд','чт','сб','пт','сб','вт','ср','нд','чт','чт','нд','вт','пн','ср']
K = 0
for day in D: # Перебір у змінній day елементів списку D
if day in ['сб', 'нд']: K += 1
print(K)
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із параметром
Чергове число генерується при кожному звертанні до такого об’єкта, тому навіть для довгих послідовностей не займає багато пам’яті.
Числові послідовності можна задавати функцією range():
range([<початок>,] <кінець>[, <крок>])
Відлік починається зі значення початок
Завершується на 1 раніше за значення кінець
Із заданим кроком крок
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із параметром
Розгляньте приклад
Надрукуємо числа від 20 до 24.
Програмний код
Результат
20
21
22
23
24
for i in range(20, 25):
print(i)
Якщо крок дорівнює 1, цей параметр можна не зазначати:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із параметром
Розгляньте приклад
Надрукуємо числа від 0 до 3.
Якщо початок дорівнює 0, цей параметр можна не зазначати:
Програмний код
Результат
0
1
2
3
for i in range(4):
print(i)
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із параметром
Розгляньте приклад
Надрукуємо числа від 5 до 1.
Якщо потрібно вести відлік у зворотному порядку, крок має бути від’ємним:
Програмний код
Результат
5
4
3
2
1
A = range(5, 0, -1)
for i in A:
print(i)
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із передумовою
Цикл із передумовою (або цикл while) буде повторюватися доти, поки виконується деяка умова. Ця умова називається умовою циклу і повертає:
або
True
False
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із передумовою
Синтаксис команди:
whіle <умова>:
<тіло циклу>
Заголовок циклу. Умова - логічний вираз, що є умовою виконання циклу
команди, які виконуються під час кожної ітерації
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із передумовою
Виконання команди циклу while починається з обчислення значення логічного виразу — умови повторення циклу. Якщо умова:
то виконуються команди тіла циклу і керування повертається на перевірку умови
то виконується команда, яка є наступною після команди while
істинна
хибна
Якщо при першій перевірці умова виявиться хибною, то тіло циклу while не виконається жодного разу.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із передумовою
У багатьох математичних задачах виникає послідовність чисел, названа на честь італійського математика Фібоначчі: перші два числа дорівнюють 1, а кожне наступне дорівнює сумі двох попередніх. Математично це можна записати так:
Fib1 = Fib2 =1; Fibn = Fibn-1 +Fibn-2
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Цикл із передумовою
Визначимо номер першого числа Фібоначчі, більшого за 1000.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Вкладені цикли
Вкладений цикл — цикл, який міститься в тілі іншого циклу.
Вкладений цикл також називають внутрішнім, а цикл, у якому він міститься, — зовнішнім.
Усередину вкладеного циклу може бути вкладено наступний цикл і так далі. У мові Python підтримується до 20 рівнів вкладеності.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Вкладені цикли
Розглянемо принцип роботи вкладених циклів.
Під час першої ітерації зовнішній цикл викликає внутрішній, який виконується до свого завершення
Після чого керування повертається в тіло зовнішнього циклу
Під час другої ітерації зовнішній цикл знову викликає внутрішній
І так доти, поки не завершиться зовнішній цикл
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Вкладені цикли
Обчислимо значення змінної при значеннях змінних 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
Вкладені цикли
Книга коштує 240 грн. У покупця є купюри номіналами 20, 50 і 100 гривень. Складемо програму для визначення всіх можливих варіантів оплати.
Переберемо всі можливі сполучення числа купюр. Щоб набрати названу суму, потрібно не більше 12�20-гривневих купюр, не більше 6 50-гривневих купюр, і не більше 2 купюр по 100 грн. Позначимо числа купюр указаного номіналу змінними а, b, с і переберемо у вкладених циклах значення а, b, с зі вказаних діапазонів. Відповіддю будуть такі значення а, b, с, за яких а*20+b*50+с*100 = 240
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Вкладені цикли
Програмний код
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
Вкладені цикли
Отже, цикли в програмуванні є потужним інструментом для виконання завдань, що повторюються.
Цикли дозволяють багаторазово виконувати певний блок коду, що особливо корисно, коли потрібно опрацювати множину даних або виконати однотипні дії.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Питання для самоперевірки
а) for і in range(5): print(i*i)
в) for x in range(5, 1,-1):
print(x)
б) for x in 'рядок': print(2*x)
Задача. 20 л соку потрібно розлити у банки місткістю 3, 2, 1 л. Як отримати всі варіанти розливу? Підрахуйте кількість варіантів.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Розгадайте ребус
«Ребуси українською» © rebus1.com
Повторення
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Домашнє завдання
Проаналізувати
с. 192-197
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Працюємо за комп’ютером
Сторінка
197
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 32
Дякую за увагу!
Нова українська школа
Урок 41
Інформатика 7
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.