Алгоритми і програми з вкладеними циклами
Нова українська школа
Урок 42
Інформатика 6
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.
Алгоритми і програми з вкладеними циклами
Ознайомимося з циклом, що міститься в тілі іншого циклу.
Нехай нам потрібно засобами «черепашачої» графіки відтворити малюнок:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Завантажимо модуль turtle і встановимо ширину сліду Черепашки в 3 пікселі:
from turtle import*
width(3)
up() # Перо підняте
colors = ["red","yellow","blue", "green", "purple"]
# Список кольорових констант
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Щоб намалювати один п’ятикутник, потрібно виконати цикл:
for n in range(5):
down()
color(colors[n])
forward(20)
left(360/5)
up()
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Щоб створити такий малюнок, потрібно дію малювання п’ятикутника повторити 10 разів
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Як внутрішній, так і зовнішній цикли можуть бути циклами:
з параметром
з умовою
або
Цикл називають вкладеним, якщо він міститься в тілі іншого циклу. Вкладений цикл також називають внутрішнім, а цикл, у якому він міститься, — зовнішнім.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Порядок виконання вкладених циклів:
При першій ітерації (повторенні) зовнішнього циклу викликається внутрішній, який виконується до свого завершення.
Після цього керування передається в тіло зовнішнього циклу.
При другій ітерації зовнішнього циклу знову викликається внутрішній.
І так триватиме доти, поки не завершиться зовнішній цикл.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Розгляньте приклад 1
Потрібно надрукувати три рядки цифр:
Рядок із п’яти цифр можна сформувати за допомогою циклу for:
5 5 5 5 5
5 5 5 5 5
5 5 5 5 5
Програмний код
Результат
5 5 5 5 5
for і in range(5):
print('5', end = ' ')
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
(Продовження…) Розгляньте приклад 1
Щоб повторити виведення даного рядка тричі, вставляємо цей цикл всередину іншого:
Програмний код
Результат
5 5 5 5 5
5 5 5 5 5
5 5 5 5 5
for k in range(3): # Тричі виконується цикл
for і in range(5): # із параметром k
print('5', end = ' ')
print() # Після виведення рядка цифр
# переводимо курсор на наступний рядок
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
1
a b c
2
a b c
3
a b c
numjist = [1, 2, 3]
alphajist = ['a', 'b', 'c']
for number in numjist:
print(number)
for letter in alphajist:
print(letter, end = ' ')
print()
Розгляньте приклад 2
Переконаємося, що зовнішній цикл перебирає список чисел (numjist), а внутрішній — список символів (alphajist).
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Під час першої ітерації зовнішнього циклу в консоль виводиться 1, а потім викликається внутрішній цикл, у якому виводяться послідовно а, b, с.
1
a b c
2
a b c
3
a b c
Після цього керування передається на початок зовнішнього циклу, виводиться 2, а потім знову виконується внутрішній цикл і виводяться а, b, с і т. д.
Параметрами вкладених циклів for мають бути різні змінні.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Розгляньте приклад 3
Надрукувати слід таблицю множення для n = 3
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
n = 3
for i in range(1, n+1):
for j in range(1, n+1):
print(i, '*', j, '=', i*j)
print() # Порожній рядок
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Розгляньте приклад 4
Алгоритм розкладання числа на прості множники: поки n>1, повторювати:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
(Продовження…) Розгляньте приклад 4
Програмний код
Результат
? 280
2 2 2 5 7
n = int(input('? ')) # Уведення числа
k = 1 # Задання початкового значення дільника
while n>1:
k = k+1
# Отримання наступного можливого дільника
while n%k == 0: # Поки k є дільником числа n,
print(k, end = ' ') # вивести значення k
n = n//k # Зменшити n у k разів
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Як бачимо, вкладені цикли можуть бути дуже
корисними для організації перебору чисел у певному діапазоні під час створення малюнків, зокрема орнаментів тощо.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Цікаві факти
Софія Мельник — трикратна срібна призерка Міжнародної олімпіади з інформатики серед школярів і школярок. Нині вона має рівень гросмейстера на сайті спортивного програмування Codefores.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Вкладені цикли
Цікаві факти
У 2022 році українська збірна виборола на Міжнародній олімпіаді з інформатики два «золота», «срібло» і «бронзу». «Золотими» переможцями стали Олег Навер (ліцей «Політ», Кременчук) і Роман Янушевський (природничо-науковий ліцей № 145, Київ).
Їх усіх тренує заслужений вчитель України Валентин Мельник.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Питання для самоперевірки
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Домашнє завдання
Проаналізувати
с. 229-235
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Працюємо за комп’ютером
Сторінка
233-235
© Вивчаємо інформатику teach-inf.com.ua
Розділ 6
§ 36
Дякую за увагу!
Нова українська школа
Урок 42
Інформатика 6
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.