📖 Зміст
Частина 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-моделей і анімацій. І все це створюється за допомогою коду!
— Тепер я розумію, що програмування — це не тільки вирішення задач і обробка даних, але й творчість, — сказала Аліса. — Це як магія: пишеш кілька рядків коду, і з'являється красивий рисунок!