Глава 8 з 27

Безкоштовно

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

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

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

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

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

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

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

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

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

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

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

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

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

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

python

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


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

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


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

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

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

Толпятся льдины в берегах,
Освобождаясь от запрета.
Весна зелёным на снегах
Дорожек сеть плетёт для лета.

За летом осень разнесёт
По свету запах урожая.
Мир нескончаемо течёт,
Живые циклы совершая.

Вращает время карусель,
Бока планеты солнцем греет,
Меняя звёздную постель,
И холод делая теплее.

Тот бесконечный алгоритм
Даёт энергию машине,
Покорный код чеканит ритм,
Сменяет следствием причины.

Струится времени поток,
По лабиринтам дней стекая.
За «если» непременно «то»
Произойдёт, не иссякая!

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

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

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

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

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

python

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


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

Цикл з умовою (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 пропускає тільки поточну ітерацію і переходить до наступної, — пояснив Професор.

Завдання

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


*

*

*

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