Алгоритми та програми з циклами з лічильником
Нова українська школа
Урок 44
Інформатика 5
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.
Алгоритми і програми з циклами з лічильником
Багаторазове повторення команд малювання з використанням циклу for допоможе вам створювати цікаві різнокольорові малюнки.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Алгоритми створення зображень
Запис алгоритму малювання багатокутників із використанням оператора циклу робить код компактним і універсальним.
ПРИКЛАД 1. Скласти програму малювання n-кутників.
from turtle import*
n = int(input("Скільки кутів? "))
x = int(input("Довжина сторони? "))
for і in range(n):
forward(x)
left(360/n)
Скільки кутів? 7
Довжина сторони? 50
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Алгоритми створення зображень
Розглянемо алгоритми малювання фігур
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Алгоритми створення зображень
Проаналізуємо виконання програми:
from turtle import*
for x in range(1, 100, 2):
forward(x)
left(90)
Під час кожного проходу циклу Черепашка малює лінію довжиною х пікселів і повертається вліво на 90°.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Алгоритми створення зображень
Як ви знаєте, повне обертання навколо точки — це 360°. Отже, за 4 ітерації циклу Черепашка повертається до початкового напрямку:
(4 ∙ 90 = 360)
Програма малює спіраль, оскільки кожен відрізок на 2 пікселі довший за попередній:
перший відрізок має довжину 1 піксель
другий — 3 пікселі
останній (п’ятдесятий) — 99 пікселів
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Алгоритми створення зображень
Поворот на 90° створює квадратну спіраль. Змінемо кут повороту на 2°: left(92). Зміна лише одного значення викликає зміни у вигляді спіралі.
from turtle import*
for x in range(1, 100, 2):
forward(x)
left(92)
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Алгоритми створення зображень
Змінимо команду forward(x) на circle(x), яка малює коло радіусу х із поточної позиції:
for x in range(1,100,2):
circle(x)
left(90)
Отримаємо 4 набори кіл, оскільки після малювання кожного кола Черепашка повертається вліво на 90°.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Алгоритми створення зображень
Щоб намалювати n кіл, потрібно повертати Черепашку на 360/n градусів. Унесемо такі зміни до програми, щоб вона малювала 6 наборів кіл�(360/6 = 60).
for x in range(1,100,2):
circle(x)
left(60)
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Алгоритми створення зображень
Цікаві факти
Біля витоків української школи програмування стояла Катерина Ющенко, докторка фізико-математичних наук, авторка однієї з перших у світі мов програмування високого рівня, в якій застосовуються операції над адресами об’єктів у пам’яті комп’ютера.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Зміна кольорів у циклі
Як зробити спіралі різнокольоровими?
Для цього нам потрібен список кольорів, а не один колір.
Створимо змінну colors і помістимо у список назви чотирьох кольорів:
colors = ['red', 'yellow', 'green', 'blue']
Зверніть увагу, що звернутися до значення зі списку з номером х можна як до colors[x].
Наприклад, colors[0] = 'red', colors[3] = 'blue'.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Зміна кольорів у циклі
Складне питання: як змусити Черепашку під час кожної ітерації циклу, коли х змінюється від 1 до 99, обирати одне з 4 значень списку?
остача від ділення
%
Під час обчислення виразу x%4 ми можемо отримати 4 значення остачі:
Використаємо операцію:
0
1
2
3
Що відповідає номерам кольорів у списку colors.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Зміна кольорів у циклі
Повернемося до програми малювання квадратної спіралі, але крок циклу зробимо рівним 1:
from turtle import*
colors = ['red', 'yellow', 'green', 'blue']
for x in range(100):
color(colors[x% 4])
forward(x)
left(90)
Отже, уносячи нескладні зміни до операторів малювання в тілі циклу for, ми можемо отримувати складні цікаві зображення.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Зміна кольорів у циклі
ПРИКЛАД 2. Намалювати різнокольорову спіраль, збільшивши кут повороту на 10 і збільшуючи товщину лінії в залежності від змінної циклу.
from turtle import*
n = int(input('n = ? '))
colors = ['red', 'blue', 'yellow', 'green', 'violet', 'orange', 'purple', 'white']
for x in range(360):
color(colors[x%n])
forward(x)
left (360/n+1)
# Щоб «розтягнути» спіраль, кут повороту збільшено на 1
width(x*n/300) # Товщина лінії залежить від змінної циклу х
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Зміна кольорів у циклі
Результати виконання програми для:
n = 3
n = 8
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Зміна кольорів у циклі
Цікаві факти
Адель Голдберг — американська
вчена в галузі інформатики, відома своєю роботою у
галузі об’єктно-орієнтованого програмування і графічних
інтерфейсів та розробкою мови програмування Smalltalk.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Розгадайте ребус
Лічильник
«Ребуси українською» © rebus1.com
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Питання для самоперевірки
а) for х in range(5): б) for х in range(2, 10, 2):
forward(x) forward(10)
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Домашнє завдання
Проаналізувати
с. 186-190
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Працюємо за комп’ютером
Сторінка
189-190
© Вивчаємо інформатику teach-inf.com.ua
Розділ 5
§ 31
Дякую за увагу!
Нова українська школа
Урок 44
Інформатика 5
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.