Дайте відповіді на запитання
1. Що таке цикл в алгоритмі?
Це фрагмент алгоритму, який може повторюватися поспіль більше ніж один раз.
2. Який вигляд має команда циклу з лічильником у мові програмування Python?
Загальний вигляд команди такий:
for <ім’я змінної> in range(<кількість повторень>):
<команди тіла циклу>
Рядок починається зі службового слова for, далі йде ім’я змінної-лічильника, потім in range та у дужках кількість повторень. Команди тіла циклу записуються з обов’язковим відступом.
3. Як виконується команда циклу з лічильником у мові програмування Python?
Виконання відбувається у кілька етапів:
- Функція
rangeгенерує набір цілих чисел від 0 до (кількість повторень – 1). - Програма перевіряє, чи є в наборі числа, які ще не використовувалися.
- Якщо так, лічильник набуває першого невикористаного значення, і виконуються команди тіла циклу.
- Цей процес повторюється, поки в наборі є нові значення. Коли числа закінчуються, виконання циклу припиняється.
4. Які ви знаєте приклади задач, що можна розв’язати з використанням циклу з лічильником?
Такі цикли використовують, коли кількість повторень відома заздалегідь. Приклади задач:
- Обчислення прибутку в банку, якщо відомо, скільки років гроші будуть на рахунку.
- Обчислення кількості кульок у пірамідці за формулою $s = 1^2 + 2^2 + 3^2 + … + n^2$, де $n$ — кількість шарів.
5. На яких тестових наборах вхідних даних доцільно тестувати проєкт із циклом з лічильником?
Тестувати краще на невеликих значеннях (наприклад, n=4), які дозволяють вручну простежити виконання кожної команди та звірити результат (“покрокове виконання”). Також варто перевіряти різні варіанти діапазонів для функції range (додатні, від’ємні числа та нуль), якщо це дозволяє умова задачі.
Обговоріть і зробіть висновки
1. Чи можуть команди тіла циклу з лічильником виконуватися тільки один раз? Наведіть приклад.
Так, можуть, якщо в range() вказати 1. Тоді функція range(1) створить набір з одного числа — 0, і цикл виконається лише для цього значення.
Приклад:
for i in range(1):
print("Цей текст виведеться один раз")
2. Чи можуть команди тіла циклу з лічильником не виконуватись жодного разу? Наведіть приклад.
Так, можуть, якщо range() не згенерує жодного числа. Наприклад, якщо вказати range(0), набір чисел буде порожнім, і тіло циклу не виконається жодного разу.
Приклад:
for i in range(0):
print("Цей текст ніколи не виведеться")
3. Чи може виконання циклу з лічильником ніколи не закінчитися? Поясніть свою відповідь.
Ні, цикл for з функцією range() в Python завжди закінчується. Це пов’язано з тим, що range() перед початком циклу створює скінченний набір чисел, і цикл просто проходить по кожному з них один раз. Коли числа в наборі закінчуються, цикл завершується.
4. У чому полягають відмінності у виконанні основних алгоритмічних структур: слідування, розгалуження, циклу?
Відмінності полягають у порядку виконання команд:
- Слідування: команди виконуються строго одна за одною, без пропусків та повторень.
- Розгалуження: виконується перевірка умови, і залежно від її результату (так чи ні) виконується лише одна з кількох гілок алгоритму.
- Цикл: певний набір команд (тіло циклу) повторюється декілька разів.
Виконайте завдання
1. Створіть у зошиті блок-схему фрагмента проєкту і виконайте його:
а)
Код:
n = 1
for i in range(4):
n = n * (i + 1)
Аналіз:
- Початкове значення
n = 1. range(4)створює набір чисел:0, 1, 2, 3.- Цикл виконається 4 рази.
Таблиця виконання:
| Крок (ітерація) | Значення i | Обчислення n | Нове значення n |
|---|---|---|---|
| 1 | 0 | 1 * (0 + 1) | 1 |
| 2 | 1 | 1 * (1 + 1) | 2 |
| 3 | 2 | 2 * (2 + 1) | 6 |
| 4 | 3 | 6 * (3 + 1) | 24 |
Результат: n = 24
б)

Код:
p = 0
a = 2
for i in range(3, 7, 1):
a = 3 * a + 1
p = p + a
Аналіз:
- Початкові значення:
p = 0,a = 2. range(3, 7, 1)створює набір чисел від 3 до 6 (7 не включається) з кроком 1:3, 4, 5, 6.
Таблиця виконання:
| Крок | Значення i | Обчислення a | Нове a | Обчислення p | Нове p |
|---|---|---|---|---|---|
| 1 | 3 | 3 * 2 + 1 | 7 | 0 + 7 | 7 |
| 2 | 4 | 3 * 7 + 1 | 22 | 7 + 22 | 29 |
| 3 | 5 | 3 * 22 + 1 | 67 | 29 + 67 | 96 |
| 4 | 6 | 3 * 67 + 1 | 202 | 96 + 202 | 298 |
Результат: p = 298
2. Створіть блок-схему фрагмента проєкту і виконайте його:
а) Сума кубів
Тут X = (i + 1)**3

Код:
n = 1
for i in range(4):
n = n + (i + 1)**3
Аналіз:
- Початкове значення
n = 1. range(4)створює набір:0, 1, 2, 3.- Операція
*3означає піднесення до куба (третього степеня).
Таблиця виконання:
| Крок | Значення i | Вираз (i + 1)**3 | Обчислення n | Нове значення n |
|---|---|---|---|---|
| 1 | 0 | 1**3 = 1 | 1 + 1 | 2 |
| 2 | 1 | 2**3 = 8 | 2 + 8 | 10 |
| 3 | 2 | 3**3 = 27 | 10 + 27 | 37 |
| 4 | 3 | 4**3 = 64 | 37 + 64 | 101 |
Результат: n = 101
б)

Код:
p = 0
a = 4
for i in range(2, 6, 1):
a = 2 * a - 1
p = p + a
Аналіз:
- Початкові значення:
p = 0,a = 4. range(2, 6, 1)створює набір:2, 3, 4, 5.
Таблиця виконання:
| Крок | Значення i | Обчислення a | Нове a | Обчислення p | Нове p |
|---|---|---|---|---|---|
| 1 | 2 | 2 * 4 - 1 | 7 | 0 + 7 | 7 |
| 2 | 3 | 2 * 7 - 1 | 13 | 7 + 13 | 20 |
| 3 | 4 | 2 * 13 - 1 | 25 | 20 + 25 | 45 |
| 4 | 5 | 2 * 25 - 1 | 49 | 45 + 49 | 94 |
Результат: p = 94
3. Створіть математичну модель і блок-схему алгоритму знаходження суми 5 чисел, перше з яких дорівнює 7, а кожне з чотирьох наступних на 3 більше за попереднє. Виконайте складений алгоритм.

Математична модель задачі
Дано арифметичну прогресію, де перший член a = 7, різниця прогресії d = 3, кількість елементів n = 5. Необхідно знайти суму цих елементів S.
Формули для алгоритму:
- Початкове значення суми: S = 0.
- Зміна поточного числа: $a_{i+1} = a_i + 3$.
- Накопичення суми: S = S + a.
Виконаємо алгоритм покроково, відслідковуючи значення змінних на кожній ітерації циклу.
| Крок (i) | Поточне число (a) | Операція сумування S = S + a) | Нове значення суми (S) | Підготовка наступного числа (a = a + 3) |
|---|---|---|---|---|
| 1 | 7 | 0 + 7 | 7 | 7 + 3 = 10$ |
| 2 | 10 | 7 + 10 | 17 | 10 + 3 = 1 |
| 3 | 13 | 17 + 13 | 30 | 13 + 3 = 16 |
| 4 | 16 | 30 + 16 | 46 | 16 + 3 = 19 |
| 5 | 19 | 46 + 19 | 65 | 19 + 3 = 22 |
Результат виконання: Сума 5 чисел дорівнює 65.
4. Створіть математичну модель і блок-схему алгоритму знаходження суми 6 чисел, перше з яких дорівнює 100, а кожне з п’яти наступних дорівнює попередньому, поділеному на 5. Виконайте складений алгоритм.
Математична модель:
- Початкові дані: перше число a = 100, кількість чисел n = 6.
- Початкова сума S = 0.
- Правило зміни числа: $a_{i+1} = a_i / 5$.
- Правило накопичення суми: $S = S + a_i$.

Виконання алгоритму:
- Крок 1: a=100, S = 0 + 100 = 100. Нове a = 20.
- Крок 2: a=20, S = 100 + 20 = 120. Нове a = 4.
- Крок 3: a=4, S = 120 + 4 = 124. Нове a = 0.8.
- Крок 4: a=0.8, S = 124 + 0.8 = 124.8. Нове a = 0.16.
- Крок 5: a=0.16, S = 124.8 + 0.16 = 124.96. Нове a = 0.032.
- Крок 6: a=0.032, S = 124.96 + 0.032 = 124.992.
Відповідь: Сума дорівнює 124.992.
5. Створіть математичну модель і проєкт для обчислення суми n чисел, перше з яких дорівнює додатному числу x, а кожне наступне у 2 рази більше за попереднє…
Математична модель:
- Вхідні дані: n (кількість), x (перше число).
- S = 0, a = x.
- Повторити n разів:
- S = S + a
- $a = a \cdot 2$
Проєкт (Python):
n = int(input("Введіть кількість чисел n: "))
x = float(input("Введіть перше число x: "))
s = 0
a = x
for i in range(n):
s = s + a
a = a * 2
print("Сума:", s)
Результати тестування:
- Вхідні дані: n=3, x=5. Результат: 35 (5 + 10 + 20).
- Вхідні дані: n=4, x=2. Результат: 30 (2 + 4 + 8 + 16).
6. Створіть математичну модель і проєкт для обчислення суми n чисел, перше з яких дорівнює x, а кожне наступне дорівнює квадрату попереднього…
Математична модель:
- Вхідні дані: n, x.
- S = 0, a = x.
- Повторити n разів:
- S = S + a
- $a = a^2$ (або $a = a \cdot a$)
Проєкт (Python):
n = int(input("Введіть кількість чисел n: "))
x = float(input("Введіть перше число x: "))
s = 0
a = x
for i in range(n):
s = s + a
a = a ** 2
print("Сума:", s)
Результати тестування:
- Вхідні дані: $n=3, x=2$. Результат: 22 ($2 + 4 + 16$).
- Вхідні дані: $n=2, x=3$. Результат: 12 ($3 + 9$).
7. Людина поклала в банк певну суму грошей. Щорічно банк додає до вкладу 20%… Створіть математичну модель і проєкт… Висловіть гіпотезу…
Математична модель:
- Вхідні дані: $start_sum$ (початкова сума), $n$ (років).
- Зміна суми щороку: $current_sum = current_sum + current_sum \cdot 0.2$ (або $current_sum = current_sum \cdot 1.2$).
Проєкт (Python):
sum_money = float(input("Введіть суму вкладу: "))
years = int(input("Введіть кількість років: "))
for i in range(years):
sum_money = sum_money * 1.2
print("Сума на рахунку:", round(sum_money, 2))
Результати тестування:
- Вклад: 1000, років: 3. Результат: 1728.0.
- Вклад: 1000, років: 4. Результат: 2073.6.
Гіпотеза:
Щоб сума подвоїлася при 20% річних, потрібно близько 4 років.
Перевірка гіпотези:
При сумі 1000 грн через 3 роки маємо 1728 грн (менше ніж 2000), а через 4 роки — 2073.6 грн (більше ніж 2000).
Висновок: Гіпотеза підтвердилася. Гроші подвоюються на 4-й рік зберігання.
8. Людина поклала в банк певну суму грошей. Створіть математичну модель і проєкт для визначення, на скільки зросте сума на рахунку через n років.
Математична модель:
- Вхідні дані: start_sum (початкова сума), p (відсоток), n (років).
- Початкове значення суми: current_sum = start_sum.
- Повторити n разів:
- $current_sum = current_sum \cdot (1 + p / 100)$
- Розрахунок прибутку: $growth = current_sum – start_sum$.
Проєкт (Python):
start_sum = float(input("Введіть початкову суму: "))
percent = float(input("Введіть річний відсоток: "))
years = int(input("Введіть кількість років: "))
current_sum = start_sum
for i in range(years):
current_sum = current_sum * (1 + percent / 100)
growth = current_sum - start_sum
print("Сума зросла на:", round(growth, 2))
print("Загальна сума:", round(current_sum, 2))
Результати тестування:
- Вклад: 1000, Відсоток: 10, Років: 2. Зростання: 210.0. (Загальна: 1210).
- Вклад: 5000, Відсоток: 5, Років: 3. Зростання: 788.13. (Загальна: 5788.13).
9. Спортсмен, готуючись до участі в марафоні… Створіть математичну модель і проєкт…
Математична модель:
- Вхідні дані: s (початкова дистанція), p (відсоток збільшення), n (кількість днів).
- Початкові значення: $day_dist = s$, $total_dist = s$.
- Повторити $n – 1$ разів (бо перший день вже враховано):
- $day_dist = day_dist \cdot (1 + p / 100)$
- $total_dist = total_dist + day_dist$
- Різниця: $diff = day_dist – s$.
Проєкт (Python):
s = float(input("Введіть дистанцію 1-го дня (s): "))
p = float(input("Введіть відсоток збільшення (p): "))
n = int(input("Введіть номер дня (n): "))
day_dist = s
total_dist = s
*# Цикл виконується n-1 разів, починаючи з 2-го дня*
for i in range(n - 1):
day_dist = day_dist * (1 + p / 100)
total_dist = total_dist + day_dist
print(f"1) Дистанція на {n}-й день: {round(day_dist, 2)} км")
print(f"2) Сумарна дистанція за {n} днів: {round(total_dist, 2)} км")
print(f"3) На {n}-й день дистанція більша за першу на: {round(day_dist - s, 2)} км")
Результати тестування:
- s=10, p=10, n=3. День 3: 12.1 км. Сума: 33.1 км. Різниця: 2.1 км.
- s=5, p=50, n=2. День 2: 7.5 км. Сума: 12.5 км. Різниця: 2.5 км.
Гіпотеза:
Щоб пробігти 200 км за тиждень (n=7), потрібно почати з 20 км і збільшувати навантаження на 15% щодня.
Перевірка гіпотези:
- Варіант 1 (Start 20, +10%): Сума $\approx$ 189.7 км (не вистачає).
- Варіант 2 (Start 20, +15%): Сума $\approx$ 221.3 км (достатньо).
Висновок:
Гіпотеза підтвердилася частково — потрібно навіть менше 15% (або більша стартова дистанція), але параметри s=20, p=15 гарантовано дають результат понад 200 км.
Готуємось до вивчення нового матеріалу
1. Чи знаєте ви інші види циклів, крім циклу з лічильником? Наведіть приклади таких циклів з життя. Як вони записуються, як виконуються?
Так, крім циклу з лічильником існують цикл з передумовою (while) та цикл з післяумовою (do-while або repeat-until).
Приклади з життя:
- Цикл з передумовою: Поки в чайнику є вода, наливай чай гостям. Невідомо скільки чашок вийде — залежить від кількості води.
- Цикл з післяумовою: Піднімайся сходами, доки не досягнеш 5-го поверху (перевірка виконується після кроку).
Запис у Python:
Цикл з передумовою (while):
while <умова>:
<команди тіла циклу>
Виконання: Спочатку перевіряється умова. Якщо вона True, виконуються команди тіла циклу, потім умова перевіряється знову. Якщо False — цикл зупиняється.
2. У яких випадках в алгоритмах потрібно використовувати інші цикли, а не цикл з лічильником?
Інші цикли використовуються, коли кількість повторень заздалегідь невідома і залежить від виконання певної умови.
Приклади ситуацій:
- Зчитування даних, поки користувач не введе команду “стоп”.
- Пошук потрібного елемента в списку (невідомо, на якій позиції він знаходиться).
- Накопичення суми грошей, доки вона не досягне цільового значення.

