📖 Зміст
Частина 1: Світ програмування навколо нас
Частина 2: Алфавіт і словник програмування
Частина 3: Будуємо перші програми
Частина 4: Наш дивовижний мозок
Частина 5: Творчі проекти
Частина 6: Програмування в реальному світі
Частина 7: Від електрики до штучного інтелекту
Глава 13 з 27
3: Будуємо перші програми
Розділ 13: "Малюємо за допомогою коду"
На наступній зустрічі Професор Біт зустрів Алісу із загадковою посмішкою.
— Сьогодні ми займатимемося мистецтвом, — оголосив він, вказуючи на великий монітор у центрі кімнати.
— Мистецтвом? — здивувалась Аліса. — Але хіба ми не вивчаємо програмування?
— Програмування і мистецтво цілком сумісні, — відповів Професор. — Сьогодні ми будемо малювати за допомогою коду!
Байт радісно підстрибнув і вивів на своєму екрані барвистий візерунок із геометричних фігур.
— Для створення графіки за допомогою коду ми будемо використовувати бібліотеку Turtle (Черепашка), — пояснив Професор. — Це простий, але дуже потужний інструмент для малювання.
Він на мить замовк і з натхненням прочитав:
В малюнку — слід часів та еволюцій,
В рядку — глибинні таємничі сни.
Сплетіння ніжних творчих конструкцій
Приносить в код дихання новизни.
Отак фрактали світ плете невпинно,
Беззвучний діалог ведучи знов.
Творитимем, доки живе людина,
Пускаючи у вічність нашу кров.
І кожен куплет пісні голосної
Співали голоси тих, хто вже жив.
Наповнюючи їх красою новою,
Ми збережем усе для нових див!
Професор набрав на клавіатурі перші рядки коду:
python
import turtleСтворюємо полотно і пензель
полотно = turtle.Screen()
полотно.bgcolor("white") # Білий фон
пензель = turtle.Turtle()
пензель.shape("turtle") # Форма черепашки
пензель.color("blue") # Синій колір
пензель.pensize(2) # Товщина лініїМалюємо квадрат
for _ in range(4):
пензель.forward(100) # Рухатися вперед на 100 кроків
пензель.right(90) # Повернути праворуч на 90 градусівполотно.exitonclick() # Закрити вікно при кліку
На екрані з'явилося вікно з білим фоном, на якому синя черепашка намалювала квадрат.
— Вау! — вигукнула Аліса. — Черепашка справді намалювала квадрат!
— Бібліотека Turtle працює за принципом "черепашачої графіки", — пояснив Професор. — Ти керуєш "черепашкою", яка залишає слід, коли рухається. Це схоже на те, ніби ти водиш олівцем по паперу.
— А що означає підкреслення в for _ in range(4)? — запитала Аліса.
— Влучне запитання! — кивнув Професор. — Підкреслення (_) використовується, коли нам не важлива змінна циклу. Ми просто хочемо повторити дію 4 рази, і нам не потрібно знати номер поточної ітерації (повторення).
— Давай намалюємо щось складніше! — запропонувала Аліса.
— Звичайно! Як щодо різнокольорової спіралі? — Професор написав новий код:
python
import turtle
import randomполотно = turtle.Screen()
полотно.bgcolor("black") # Чорний фон
пензель = turtle.Turtle()
пензель.speed(0) # Максимальна швидкість
Список кольорів для спіралі
кольори = ["red", "orange", "yellow", "green", "blue", "purple"]Малюємо спіраль
for i in range(360):
пензель.color(random.choice(кольори)) # Випадковий колір
пензель.forward(i * 0.01 + 1) # Збільшуємо крок
пензель.right(10) # Повертаємо на 10 градусівполотно.exitonclick()
На чорному фоні з'явилась барвиста спіраль, що переливається всіма кольорами веселки.
— Це неймовірно красиво! — захопилась Аліса. — А що означає пензель.speed(0)?
— Це встановлює максимальну швидкість руху черепашки, — пояснив Професор. — Значення можуть бути від 1 (найповільніший) до 10 (швидкий). А значення 0 означає, що анімація руху вимкнена, і черепашка малює миттєво.
— А можна намалювати щось, що більше схоже на справжній малюнок? — запитала Аліса.
— Так, можна створювати досить складні малюнки, — кивнув Професор. — Давай намалюємо квітку:
python
import turtle
import mathполотно = turtle.Screen()
полотно.bgcolor("skyblue")
пензель = turtle.Turtle()
пензель.speed(0)
Малюємо стебельце
пензель.color("green")
пензель.pensize(5)
пензель.penup()
пензель.goto(0, -200)
пензель.pendown()
пензель.left(90)
пензель.forward(200)Малюємо серединку квітки
пензель.color("brown")
пензель.penup()
пензель.goto(0, 0)
пензель.pendown()
пензель.begin_fill()
пензель.circle(20)
пензель.end_fill()Малюємо пелюстки
пензель.color("pink")
for i in range(12):
пензель.penup()
пензель.goto(0, 0)
пензель.pendown()
пензель.setheading(i 30) # Поворот на 30 i градусів # Малюємо пелюстку
пензель.begin_fill()
for j in range(60):
пензель.forward(2)
пензель.left(3)
пензель.end_fill()
Ховаємо черепашку і завершуємо
пензель.hideturtle()
полотно.exitonclick()
На екрані з'явилась квітка з рожевими пелюстками, коричневою серединкою і зеленим стебельцем на блакитному фоні.
— Це прекрасно! — вигукнула Аліса. — Але код став набагато складнішим.
— Так, тут ми використали кілька нових команд, — погодився Професор. — Наприклад:
goto(x, y) переміщує черепашку у вказані координати.
penup() і pendown() дозволяють піднімати і опускати "перо", щоб переміщатися без малювання.
beginfill() і endfill() заповнюють кольором область всередині намальованого контуру.
setheading() встановлює напрямок, куди дивиться черепашка.
hideturtle() ховає черепашку, щоб вона не псувала малюнок.
Логік, що спостерігала за процесом, додала:
— У програмуванні графіки ми часто використовуємо математику. Координати, кути, відстані — все це математичні концепції.
— А можна створювати анімації? — запитала Аліса.
— Звичайно! — відповів Професор. — Давай створимо просту анімацію рухомого сонця:
python
import turtle
import timeполотно = turtle.Screen()
полотно.bgcolor("lightblue")
полотно.setup(600, 400) # Розмір вікна
Створюємо сонце
сонце = turtle.Turtle()
сонце.shape("circle")
сонце.color("yellow")
сонце.penup()
сонце.goto(-300, 0) # Початкова позиція зліваСтворюємо землю
земля = turtle.Turtle()
земля.penup()
земля.goto(-300, -100)
земля.pendown()
земля.color("green")
земля.pensize(3)
земля.forward(600) # Лінія землі
земля.hideturtle()Анімація сходу і заходу
for x in range(-300, 301, 5):
y = 100 (1 - ((x / 150) * 2)) # Парабола для траєкторії
сонце.goto(x, y)
time.sleep(0.05) # Пауза для створення анімаціїполотно.exitonclick()
На екрані з'явилась анімація: жовте сонце повільно піднімалося над зеленою лінією горизонту, а потім опускалося.
— Це вже справжня анімація! — захопилась Аліса. — Ми використовуємо цикл, щоб сонце рухалося по параболі від лівого краю до правого.
— Ще одне цікаве застосування програмування в графіці — це фрактали, — сказав Професор. — Фрактали — це геометричні фігури, які повторюють свою структуру в різних масштабах.
— Звучить складно, — насупилась Аліса.
— Насправді їх досить просто створювати за допомогою рекурсивних функцій, — посміхнувся Професор. — Дивись:
python
import turtleполотно = turtle.Screen()
полотно.bgcolor("black")
пензель = turtle.Turtle()
пензель.color("green")
пензель.speed(0)
Рекурсивна функція для малювання гілки
def намалювати_гілку(черепашка, довжина, рівень):
if рівень == 0:
return черепашка.forward(довжина)
черепашка.right(30)
намалювати_гілку(черепашка, довжина * 0.7, рівень - 1)
черепашка.left(60)
намалювати_гілку(черепашка, довжина * 0.7, рівень - 1)
черепашка.right(30)
черепашка.backward(довжина)
Налаштовуємо початкову позицію
пензель.penup()
пензель.goto(0, -200)
пензель.left(90)
пензель.pendown()Малюємо фрактальне дерево
намалювати_гілку(пензель, 100, 6)пензель.hideturtle()
полотно.exitonclick()
На екрані з'явилося витончене фрактальне дерево з безліччю гілок.

— Це дивовижно! — вигукнула Аліса. — Як це працює?
— Функція намалювати_гілку викликає сама себе, створюючи менші гілки на кінці кожної попередньої гілки, — пояснив Професор. — Параметр рівень визначає, скільки разів відбуватиметься це розгалуження. Коли рівень досягає нуля, рекурсія зупиняється.
— У природі теж багато фракталів, — зауважила Логік. — Дерева, сніжинки, листя папороті, системи кровоносних судин — усі вони мають фрактальну структуру.
— Комп'ютерна графіка — це величезна сфера, — підсумував Професор. — Від простих геометричних фігур до складних 3D-моделей і анімацій. І все це створюється за допомогою коду!
— Тепер я розумію, що програмування — це не тільки розв'язування задач і обробка даних, а ще й творчість, — сказала Аліса. — Це як справжня магія: пишеш кілька рядків коду, і з'являється красивий малюнок!