Глава 8 з 27

Безкоштовно

2: Алфавіт і словник програмування

⏱️ 65-80 хвилин
📊 intermediate

Закріпи розділ — картки

Розділ 8: цикли — картки

Інтервальне повторення для цього розділу

Увійдіть, щоб займатися

Увійдіть, щоб займатися

Розділ 8: "Цикли: карусель повторень"

Був сонячний день, і Професор Біт запропонував Алісі відвідати парк атракціонів. Коли вони підійшли до каруселі, Аліса з захопленням спостерігала, як та кружляє знову й знову.

— Дивись, карусель! — вигукнула Аліса. — Вона весь час повторює один і той самий рух.

— Чудове спостереження! — кивнув Професор. — І це чудовий приклад того, що в програмуванні називається циклом.

— Циклом? — перепитала Аліса.

— Так, цикл — це команда, яка змушує комп'ютер повторювати певні дії кілька разів або до виконання певної умови, — пояснив Професор. — Уяви, що тобі потрібно написати програму, яка виводить на екран числа від 1 до 5.

Професор дістав свій планшет і показав два варіанти коду:

python

Без використання циклу


print(1)
print(2)
print(3)
print(4)
print(5)

python

З використанням циклу


for i in range(1, 6):
print(i)

— Обидва варіанти роблять одне й те саме, — пояснив він, — але з циклом код коротший, і його легше змінити. Наприклад, якщо нам знадобиться вивести числа від 1 до 100, у другому випадку потрібно буде просто змінити одне число.

Байт радісно підстрибнув:
— Цикли дуже корисні, коли потрібно повторити одну дію багато разів!

Професор замріяно подивився на карусель і тихо продекламував:

Тісняться криги в берегах,
Скидаючи важкі окови.
Весна зеленим по снігах
Для літа тче стежки шовкові.

За літом осінь рознесе
По світу пахощі врожаю.
І світ невпинно вдаль тече,
Життєвий цикл не знає краю.

Кружляє часу карусель,
Боки планети сонцем гріє,
Змінивши ночі акварель,
І холод на очах тепліє.

Той нескінченний алгоритм
Дає енергію машині,
Покірний код карбує ритм,
Змінивши наслідком причини.

Струмує часу джерело,
У лабіринтах днів стікає.
За «якщо» завжди прийде «то» —
Відбудеться, не висихає!

Аліса, Професор і Байт сіли на лавочку з морозивом і продовжили розмову.

— У природі ми бачимо безліч циклів, — зауважила Логік, приєднуючись до компанії. — Зміна дня і ночі, пір року, фази Місяця — все це природні цикли.

— А які цикли бувають у програмуванні? — зацікавилась Аліса.

— Є два основні типи циклів, — відповів Професор. — Цикл із заданою кількістю повторень і цикл з умовою.

Він показав на планшеті:

python

Цикл із заданою кількістю повторень (for)


for i in range(5): # Повторити 5 разів
print("Це виконається 5 разів")

python

Цикл з умовою (while)


count = 0
while count < 5: # Виконувати, поки count менше 5
print("Це теж виконається 5 разів")
count = count + 1

— У першому випадку, — пояснив Професор, — ми одразу вказуємо, скільки разів потрібно повторити дію. У другому — задаємо умову, за якої цикл повинен продовжуватись.

— Як на каруселі! — здогадалась Аліса. — Вона крутиться певну кількість кіл, а потім зупиняється.

Карусель у парку: цикли for і while

— Саме так! — підтвердив Професор. — А от коли дощ іде, поки не розвіються дощові хмари — це приклад циклу з умовою.

Байт показав на своєму екрані мультяшного чоловічка:
— Дивись, я можу змусити його рухатися за допомогою циклу:

python
for крок in range(10):
крокувати_вперед()
if крок % 2 == 0: # Якщо номер кроку парний
підняти_руку()
else:
опустити_руку()

— Бачиш, — продовжив Професор, — всередині циклу можуть бути різні команди, включаючи умови. Це дозволяє створювати складні алгоритми.

Коли вони проходили повз автомат з іграшками, Аліса зупинилась:
— Дивіться, хлопчик намагається дістати іграшку. Він уже втретє кидає монетку.

— Це схоже на цикл while, — звернув увагу Професор. — Він буде повторювати спроби, поки не дістане іграшку або поки не закінчаться монетки. У програмуванні це могло б виглядати так:

python
монетки = 5
іграшка_отримана = False

while монетки > 0 and not іграшка_отримана:
іграшкаотримана = спробадістати_іграшку()
монетки = монетки - 1

if іграшка_отримана:
print("Ура! Вийшло!")
else:
print("На жаль, монетки закінчились...")

— А що означає крок % 2 == 0 у прикладі з чоловічком? — запитала Аліса.

— Символ % — це операція "модуль" або залишок від ділення, — пояснив Професор. — крок % 2 дає залишок від ділення змінної крок на 2. Якщо залишок дорівнює нулю, значить число парне.

Байт доповнив:
— Ця перевірка дозволяє робити різні дії для парних і непарних кроків. На парних кроках ми піднімаємо руку, на непарних — опускаємо. Так виходить, що чоловічок махає рукою під час руху.

— Цикли можуть бути і вкладеними, — додав Професор. — Тобто всередині одного циклу може знаходитись інший.

python

Таблиця множення


for i in range(1, 11):
for j in range(1, 11):
print(i, "x", j, "=", i * j)
print("---") # Роздільник між рядками таблиці

— Тут зовнішній цикл перебирає числа від 1 до 10, а для кожного такого числа внутрішній цикл теж перебирає числа від 1 до 10, — пояснив він. — Так виходить повна таблиця множення.

— А що буде, якщо цикл ніколи не закінчиться? — запитала Аліса.

— Це називається "нескінченний цикл", — відповіла Логік. — У такому випадку програма виконуватиметься вічно, поки хтось її не зупинить.

— Іноді нескінченні цикли створюються навмисно, — додав Професор. — Наприклад, операційна система комп'ютера працює в нескінченному циклі, постійно перевіряючи, чи не натиснув користувач якусь клавішу або кнопку миші.

python
while True:
перевіритиввідкористувача()
оновити_екран()
дочекатись(0.01) # Маленька пауза для економії ресурсів

— Але частіше нескінченні цикли — це помилка програміста, — попередив Професор. — Наприклад, якщо забути збільшувати лічильник у циклі while:

python
count = 0
while count < 5:
print("Це виконається нескінченно!")
# Забули додати count = count + 1

— У цьому випадку count завжди дорівнюватиме 0, і умова count < 5 завжди буде істинною, — пояснив він. — Програма нескінченно виводитиме одне й те саме повідомлення.

Коли вони проходили повз атракціон "Американські гірки", Аліса помітила:
— Дивіться, поїзд рухається по одному й тому самому шляху знову й знову!

— Так, багато природних і механічних процесів циклічні, — кивнув Професор. — Але в програмуванні є ще одна важлива особливість циклів — ми можемо перервати цикл достроково або пропустити деякі ітерації.

python
for i in range(10):
if i == 5:
break # Перериваємо цикл, якщо i дорівнює 5
print(i) # Будуть виведені числа 0, 1, 2, 3, 4

for i in range(10):
if i % 2 == 0:
continue # Пропускаємо ітерацію, якщо i парне
print(i) # Будуть виведені числа 1, 3, 5, 7, 9

— Команда break повністю перериває цикл, а continue пропускає тільки поточну ітерацію і переходить до наступної, — пояснив Професор.


Завдання

Придумай і запиши за допомогою циклів програму, яка намалює простий узор або фігуру. Наприклад, ялинку зі зірочок:


*

*

*

Підказка: використовуй цикл для управління кількістю рядків, і ще один цикл для визначення кількості зірочок у кожному рядку.