Цикл while

Цикл із передумовою (або цикл while) буде повторюватися доти, поки виконується умова циклу. Блок-схему оператора while наведено на рис. 1.

5.PNG
Рис.1

Команда циклу з передумовою в мові програмування Python:
whіle <умова>:
____<тіло циклу>

Виконання команди циклу while починається з обчислення значення логічного виразу — умови повторення циклу. Якщо умова істинна, то виконуються оператори тіла циклу і керування повертається на перевірку умови. Якщо умова хибна, то виконання циклу припиняється і виконується оператор, який є наступним після оператора while. Якщо при першій перевірці умова виявиться хибною, то тіло циклу while не виконається жодного разу.

Зверни увагу!
Серед команд тіла циклу можуть бути лінійні фрагменти, розгалуження, інші цикли.
Задача. Фірма щомісячно переказує кошти на купівлю дронів. Першого місяця вона переказала х грн, а кожного наступного – на у грн більше. Створити математичну модель і проєкт для визначення кількості місяців, через які загальна переказана сума всіх коштів перевищить 100 000 грн.

Створимо математичну модель для цієї задачі:
Вхідні дані:
  • x — сума, переказана в першому місяці (грн);
  • — приріст суми щомісяця (грн);
  • S — гранична сума (грн).
Результат:
  • n — кількість місяців, через які загальна сума перевищить 100000 грн.
формули: х = х + у, s = s + х, s <= 100 000.
Перед початком циклу присвоїмо змінній s, яку використаємо для збереження загальної суми, значення першого доданка (х). А змінній n, яку використаємо для збереження кількості потрібних місяців, присвоїмо значення 1, оскільки в сумі вже враховано один (перший) доданок.

До суми потрібно додавати наступні доданки, поки ця сума буде менша або дорівнюватиме 100 000. Тому логічний вираз у заголовку циклу матиме вигляд s <= 100 000. У тілі циклу шукатимемо наступний доданок (х = х + у), додаватимемо його до поточного значення суми (s = s + х) і збільшуватимемо кількість доданих доданків на 1 (n = n + 1).
Блок-схему алгоритму розв’язування цієї задачі наведено на рис.2.

18.png
Рис.2.

from tkinter import*
w=Tk()
def c1():
    x=float(ent1.get())
    y=float(ent1.get())
    s=x
    n=1
    while s<=100000:
        x=x+y
        s=s+x
        n=n+1
    ent3.delete(0,END)
    ent3.insert(0,str(n))
lb1=Label(text='У перший місяць', font='Arial 14').pack()
ent1=Entry(font='Arial 14')
ent1.pack()
lb2=Label(text='Щомісячне збільшення', font='Arial 14').pack()
ent2=Entry(font='Arial 14')
ent2.pack()
bt=Button(text='Обчислити', font='Arial 14', command=c1)
bt.pack()
lb3=Label(text='Кількість місяців', font='Arial 14').pack()
ent3=Entry(font='Arial 14')
ent3.pack()

Результат виконання проєкту:
19.png

Тестувати проєкт, що містить цикл з передумовою, доцільно для таких наборів значень вхідних даних, щоб тіло циклу не виконувалося жодного разу, виконувалося 1 раз; 2 рази; 3 рази; 5 разів і за потреби й іншу кількість разів.
Приклад:

Для послідовного перебору цілих чисел із діапазону [0; 10) можна використовувати цикл for. Дії, які виконує for, повністю відповідають циклу while:

6.PNG

Приклади циклічних алгоритмів

Числами Фібоначчі називають послідовність чисел, які обчислюють за таким правилом: перші два числа дорівнюють 1, а кожне наступне дорівнює сумі двох попередніх. Математично це можна записати так: 

Fib[1] = Fib[2] = 1; Fib[n] = Fib[n–1]+Fib[n–2].

Приклад:

Для визначення номера першого числа Фібоначчі, яке більше за 1000, потрібен цикл із умовою:

7.PNG

Приклад:

Вкладник поклав до банку 1000 грн під 15 % річних. Через скільки років сума на рахунку вкладника подвоїться?

8.PNG

Джерела:
Інформатика : підруч. для 8 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2025.
Інформатика : підруч. для 8 кл. закл. заг. серед.освіти / Йосиф Ривкінд [та ін.]. — Київ : Генеза, 2025.