1 of 21

Алгоритми і програми з вкладеними циклами

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

Урок 42

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

teach-inf.com.ua

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

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

2 of 21

Алгоритми і програми з вкладеними циклами

Ознайомимося з циклом, що міститься в тілі іншого циклу.

Нехай нам потрібно засобами «черепашачої» графіки відтворити малюнок:

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

Розділ 6

§ 36

3 of 21

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

Завантажимо модуль turtle і встановимо ширину сліду Черепашки в 3 пікселі:

from turtle import*

width(3)

up() # Перо підняте

colors = ["red","yellow","blue", "green", "purple"]

# Список кольорових констант

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

Розділ 6

§ 36

4 of 21

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

Щоб намалювати один п’ятикутник, потрібно виконати цикл:

for n in range(5):

down()

color(colors[n])

forward(20)

left(360/5)

up()

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

Розділ 6

§ 36

5 of 21

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

Щоб створити такий малюнок, потрібно дію малювання п’ятикутника повторити 10 разів

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

Розділ 6

§ 36

6 of 21

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

Як внутрішній, так і зовнішній цикли можуть бути циклами:

з параметром

з умовою

або

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

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

Розділ 6

§ 36

7 of 21

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

Порядок виконання вкладених циклів:

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

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

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

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

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

Розділ 6

§ 36

8 of 21

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

Розгляньте приклад 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

9 of 21

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

(Продовження…) Розгляньте приклад 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

10 of 21

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

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

11 of 21

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

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

1

a b c

2

a b c

3

a b c

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

Параметрами вкладених циклів for мають бути різні змінні.

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

Розділ 6

§ 36

12 of 21

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

Розгляньте приклад 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

13 of 21

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

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

Алгоритм розкладання числа на прості множники: поки n>1, повторювати:

  • збільшити k на 1;
  • поки поточне значення змінної n ділиться на k без остачі, виводити значення k і ділити n на k.

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

Розділ 6

§ 36

14 of 21

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

(Продовження…) Розгляньте приклад 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

15 of 21

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

Як бачимо, вкладені цикли можуть бути дуже

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

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

Розділ 6

§ 36

16 of 21

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

Цікаві факти

Софія Мельник — трикратна срібна призерка Міжнародної олімпіади з інформатики серед школярів і школярок. Нині вона має рівень гросмейстера на сайті спортивного програмування Codefores.

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

Розділ 6

§ 36

17 of 21

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

Цікаві факти

У 2022 році українська збірна виборола на Міжнародній олімпіаді з інформатики два «золота», «срібло» і «бронзу». «Золотими» переможцями стали Олег Навер (ліцей «Політ», Кременчук) і Роман Янушевський (природничо-науковий ліцей № 145, Київ).

Їх усіх тренує заслужений вчитель України Валентин Мельник.

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

Розділ 6

§ 36

18 of 21

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

  1. Які види циклів ви знаєте? У яких випадках застосовують кожний із цих циклів?
  1. У чому полягає правило вкладення циклів?
  1. Складіть програму для обчислення значення виразу 2к+n для всіх значень змінних: n = 1, n = 2, n = 3�і к = 2, к = 4, к = 6, к = 8.

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

Розділ 6

§ 36

19 of 21

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

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

с. 229-235

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

Розділ 6

§ 36

20 of 21

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

Сторінка

233-235

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

Розділ 6

§ 36

21 of 21

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

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

Урок 42

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

teach-inf.com.ua

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

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