Перейти до основного вмісту
Інформатика• 6 хв читання

4.9. Цикли з передумовою

Назад до змісту Дайте відповіді на запитання 1. Який вигляд має блок-схема циклу з передумовою? Поясніть виконання цього циклу Блок-схема виглядає так: спочатку йде перевірка логічного виразу, і якщо він істинний (True), виконуються команди тіла циклу, після чого стрілка повертається назад до перевірки умови. Якщо вираз хибний (False), команди не виконуються, і цикл завершується. Виконання […]

Д
До уроку
Опубліковано: (Оновлено: )

Назад до змісту

Дайте відповіді на запитання

1. Який вигляд має блок-схема циклу з передумовою? Поясніть виконання цього циклу

Блок-схема виглядає так: спочатку йде перевірка логічного виразу, і якщо він істинний (True), виконуються команди тіла циклу, після чого стрілка повертається назад до перевірки умови. Якщо вираз хибний (False), команди не виконуються, і цикл завершується. Виконання відбувається по колу: перевірка умови -> виконання команд -> знову перевірка.

2. Який вигляд має команда циклу з передумовою в мові програмування Python? Як вона виконується?

Команда має такий вигляд: while <логічний вираз>: , а нижче з відступом записуються <команди тіла циклу>. Виконується вона так: поки логічний вираз дорівнює True, команди повторюються; як тільки значення стає False, виконання припиняється і йде перехід до наступної команди програми.

3. Чи можуть команди тіла циклу з передумовою не виконуватися жодного разу? Поясніть свою відповідь. Наведіть приклади.

Так, можуть. Це відбувається, якщо під час першої ж перевірки значення логічного виразу дорівнює False — тоді програма одразу переходить до команди, наступної за циклом. Приклад: якщо x = 10, а цикл while x < 5:, то тіло циклу не виконається жодного разу.

4. Чи може виконання циклу з передумовою ніколи не закінчитися? Поясніть свою відповідь.

Так, може. Якщо значення логічного виразу постійно дорівнює True і ніяк не змінюється під час виконання команд тіла циклу, він повторюватиметься нескінченно. У таких випадках для переривання іноді використовують команду break.

Обговоріть і зробіть висновки

1. Що спільного і що відмінного у циклів з лічильником і з передумовою?

Спільне: обидва види циклів призначені для багаторазового повторення певної послідовності команд.

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

2. Чи можна команду циклу з лічильником замінити командою циклу з передумовою? Якщо так, наведіть приклад.

Так, можна. Будь-який цикл з лічильником можна записати через while. Для цього треба створити власну змінну-лічильник перед циклом і збільшувати її в тілі циклу. Приклад: замість for i in range(5): print(i) можна написати:

# Цикл з лічильником
for i in range(1, 6):
    print(i)

# Те саме циклом з передумовою
i = 1
while i <= 5:
    print(i)
    i += 1

3. Чи можна команду циклу з передумовою замінити командою циклу з лічильником? Якщо так, наведіть приклад.

Ні, не завжди. Якщо перед початком циклу невідомо, скільки разів треба виконати команди, то цикл з лічильником використовувати не можна.

4. У чому полягають відмінності у виконанні основних алгоритмічних структур: слідування, розгалуження, циклу з лічильником і циклу з передумовою?

  • Слідування: команди виконуються послідовно, одна за одною, без пропусків і повторень.
  • Розгалуження: перевіряється умова, і залежно від її істинності виконується або одна серія команд, або інша (або нічого).
  • Цикл з лічильником: команди повторюються чітко визначену кількість разів.
  • Цикл з передумовою: спочатку визначається значення логічного виразу; якщо воно True, команди виконуються, а потім знову йде перевірка. Якщо умова стає False, виконання припиняється.

Виконайте завдання

1. Виконайте в зошиті алгоритми:

1.а) (схема а)

Якщо задане початкове значення x<30x<30, то в циклі значення xx буде множитися на 3, доки не стане x30x \ge 30, після чого алгоритм виведе (повідомить) це кінцеве значення xx.

Наприклад: якщо x=2x=2, то 2618542 \to 6 \to 18 \to 54, і буде виведено 5454 (бо 543054 \not< 30).

1.б) (схема б)

Тут спочатку задається x=5x=5, далі поки x<25x<25, додається 4, а коли стане x25x \ge 25, алгоритм виведе значення xx.

Послідовність: 59131721255 \to 9 \to 13 \to 17 \to 21 \to 25, тому буде виведено 2525.

2. Виконайте в зошиті фрагменти проєктів (трасування):

а)

  • Початкові дані: k = 1, a = 12.
  • Умова a < 100.
  • 1-й прохід: a = 20 (12*2-4), k = 2.
  • 2-й прохід: a = 36 (20*2-4), k = 3.
  • 3-й прохід: a = 68 (36*2-4), k = 4.
  • 4-й прохід: a = 132 (68*2-4), k = 5.
  • 5-й прохід: Умова 132 < 100 — хибна (False).
  • Результат: a = 132, k = 5.

б)

  • Початкові дані: s = 0, a = 1, k = 1.
  • Умова a < 50.
  • Виконуємо додавання s = s + a та обчислення нового квадрата a = k * k.
  • Останній доданок, який додасться до суми — 49. Наступне a стане 64, і цикл зупиниться.
  • Результат: s = 140 (сума квадратів: 1+4+9+16+25+36+49), a = 64, k = 8.
  1. Виконайте в зошиті фрагменти проєктів (трасування):

а)

  • Початкові дані: k = 1, a = 100.
  • Умова a > 10. Ділимо a на 2.
  • Значення a: 100 -> 50 -> 25 -> 12.5 -> 6.25.
  • При a = 6.25 умова 6.25 > 10 стає хибною.
  • Результат: a = 6.25, k = 5.

б)

  • Початкові дані: s = 0, a = 5.
  • Умова a <= 100.
  • Значення a подвоюється: 5 -> 10 -> 20 -> 40 -> 80 -> 160.
  • Сума s накопичується: 5 + 10 + 20 + 40 + 80 = 155.
  • Результат: s = 155, a = 160.

4. Складіть текстові задачі за алгоритмами їх розв’язування із завдання № 1.

а) Алгоритм: задане число xx; поки x<30x < 30, замінюємо його на x=x\*3x = x \* 3; потім повідомляємо значення xx. Сформулюй задачу, наприклад так:

«У банку на рахунку було xx гривень. Щороку сума на рахунку потроюється. За скільки років сума на рахунку стане не меншою ніж 30 гривень і якою вона буде, якщо початкова сума дорівнює … гривень?»[^1]

б) Алгоритм: спочатку x=5x = 5; поки x<25x < 25, замінюємо його на x=x+4x = x + 4; потім повідомляємо значення xx. Можлива задача:

«Учень першого дня прочитав 5 сторінок книжки, а кожного наступного дня читав на 4 сторінки більше, ніж попереднього. Яку кількість сторінок він читатиме в день, коли вперше кількість сторінок стане не меншою ніж 25?»

5. Складіть текстові задачі за алгоритмами їх розв’язування із завдання № 2.

2.а) k=1,a=12;k = 1, a = 12; поки a<100a < 100: a=2a4,k+=1a = 2a - 4, k += 1.

Задача: «Довжина металевої деталі спочатку дорівнює 12 см. Після кожної обробки її подвоюють і відрізають 4 см. Після якої за рахунком обробки довжина деталі стане не меншою ніж 100 см і якою вона буде?»

2.б) s=0,a=1,k=1;s = 0, a = 1, k = 1; поки a<50a < 50: s=s+a,k+=1,a=k2s = s + a, k += 1, a = k^2.

Задача: «Учень виконує серію вправ: у перший день робить 1 вправу, у другий день — стільки вправ, скільки дорівнює квадрату номера дня (4, 9, 16, …), поки кількість вправ за день менше 50. Скільки всього вправ він виконає за всі ці дні?»

6. Проєкт “Робітник і деталі”

x = int(input("Введіть план (кількість деталей x): "))
y = int(input("Деталей за першу годину (y): "))

total_details = 0 # Загальна кількість
current_hour_production = y # Продуктивність поточної години
hours = 0 # Лічильник годин

while total_details < x:
    hours += 1
    total_details += current_hour_production
    current_hour_production += 1 # Наступної години на 1 більше

print("Робітник виконає план за", hours, "год.")

7. Проєкт “Туристка”

x = float(input("Введіть відстань x (км): "))
dist_per_hour = 6 # За першу годину
total_dist = 0
hours = 0

while total_dist < x and dist_per_hour > 0:
    hours += 1
    total_dist += dist_per_hour
    dist_per_hour -= 1 # Наступної години на 1 км менше

if total_dist < x:
    print("Туристка зупинилася, не дійшовши до цілі.")
else:
    print("Туристка подолає відстань за", hours, "год.")

8. Проєкт “Середнє арифметичне”

step = int(input("Введіть число зменшення (крок): "))
number = 100
sum_numbers = 0
count = 0

while number > 0:
    sum_numbers += number
    count += 1
    number -= step # Зменшуємо число

if count > 0:
    average = sum_numbers / count
    print("Середнє арифметичне:", average)
else:
    print("Немає додатних чисел для обчислення")

9. Проєкт “Банківський вклад”

x = float(input("Початковий вклад (x): "))
a = float(input("Бажаний прибуток більше за (a): "))
p = float(input("Відсоток річних (p): "))

current_money = x
years = 0

# Працюємо, поки прибуток (current_money - x) менший або рівний a
while (current_money - x) <= a:
    current_money = current_money + (current_money * p / 100)
    years += 1

print("Потрібно років:", years)

10. Проєкт “НСД (Алгоритм Евкліда)”

a = int(input("Введіть перше число: "))
b = int(input("Введіть друге число: "))

while a != b:
    if a > b:
        a = a - b
    else:
        b = b - a

print("Найбільший спільний дільник:", a)

11. Проєкт “Марафон”

s = float(input("Дистанція у перший день (км): "))
p = float(input("Відсоток збільшення (p): "))
s1 = float(input("Цільова дистанція (s1): "))
s2 = float(input("Цільовий приріст (s2): "))

# Частина 1: Коли дистанція перевищить s1
day = 1
current_dist = s
while current_dist <= s1:
    current_dist = current_dist + (current_dist * p / 100)
    day += 1
print(f"Дистанцію {s1} км спортсменка подолає на {day}-й день.")

# Частина 2: Коли приріст стане більше s2
day = 1
current_dist = s
delta = 0 # Приріст
# Приріст першого дня вважаємо 0 або рахуємо з 2-го дня. 
# Логічно шукати приріст наступного дня.
while True:
    next_dist = current_dist + (current_dist * p / 100)
    delta = next_dist - current_dist
    if delta > s2:
        print(f"Приріст більше {s2} км буде на {day + 1}-й день.")
        break
    current_dist = next_dist
    day += 1

Практична робота № 6. «Проєкти із циклами»

1. Математична модель

Вхідні дані:

  • HH — початковий рівень води (см).
  • PP — погодинне зростання рівня води (см).
  • NN — час, через який треба дізнатися рівень (год).
  • KK — критичний рівень води (см).

Результати:

  • LevelLevel — рівень води через NN годин.
  • TT — кількість годин, через які рівень сягне KK см.

Формули та алгоритм:

  1. Для першого питання: Використовуємо лінійну формулу:Level=H+(PN)Level = H + (P \cdot N)
  2. Для другого питання (використовуємо цикл з передумовою):Поки поточний рівень води менший за KK, додаємо до рівня PP і збільшуємо лічильник годин на 1.
    • Умова циклу: while current_level < K:

2-4. Проєкт (Програмний код)

import tkinter as tk
from tkinter import messagebox

# Обробник події Click для першої кнопки (Рівень через N годин)
def calculate_level_click():
    try:
        # Отримуємо дані з полів
        h = float(entry_h.get())
        p = float(entry_p.get())
        n = float(entry_n.get())
        
        # Обчислення за формулою
        result_level = h + (p * n)
        
        # Виведення результату в поле
        entry_res1.delete(0, tk.END)  # Очистити поле
        entry_res1.insert(0, str(result_level))
    except ValueError:
        messagebox.showerror("Помилка", "Будь ласка, введіть коректні числа!")

# Обробник події Click для другої кнопки (Через скільки годин буде K см)
def calculate_hours_click():
    try:
        # Отримуємо дані
        h = float(entry_h.get())
        p = float(entry_p.get())
        k = float(entry_k.get())
        
        # Алгоритм з циклом з передумовою (while)
        current_level = h
        hours = 0
        
        # Поки рівень менший за K, вода прибуває
        while current_level < k:
            current_level = current_level + p
            hours = hours + 1
            
        # Виведення у вікно повідомлень
        messagebox.showinfo("Результат", f"Рівень води досягне {k} см через {hours} год.")
    except ValueError:
        messagebox.showerror("Помилка", "Перевірте введені дані!")

# --- Створення графічного інтерфейсу ---
root = tk.Tk()
root.title("Задача про повінь")
root.geometry("400x350")

# Поля для введення H і P (спільні дані)
tk.Label(root, text="Початковий рівень H (см):").pack()
entry_h = tk.Entry(root)
entry_h.pack()

tk.Label(root, text="Зростання за годину P (см):").pack()
entry_p = tk.Entry(root)
entry_p.pack()

tk.Label(root, text="--------------------------------").pack()

# Частина 1: Рівень через N годин
tk.Label(root, text="Введіть час N (год):").pack()
entry_n = tk.Entry(root)
entry_n.pack()

# Кнопка 1
btn1 = tk.Button(root, text="Обчислити рівень (Завдання 1)", command=calculate_level_click)
btn1.pack(pady=5)

# Поле для виведення відповіді
tk.Label(root, text="Рівень води буде (см):").pack()
entry_res1 = tk.Entry(root)
entry_res1.pack()

tk.Label(root, text="--------------------------------").pack()

# Частина 2: Коли рівень буде K
tk.Label(root, text="Введіть критичний рівень K (см):").pack()
entry_k = tk.Entry(root)
entry_k.pack()

# Кнопка 2
btn2 = tk.Button(root, text="Знайти час (Завдання 2)", command=calculate_hours_click)
btn2.pack(pady=5)

# Запуск вікна
root.mainloop()

Пояснення до виконання:

  1. Поля введення: Ми створили поля Entry для змінних H,P,NH, P, N та KK.
  2. Кнопка 1: При натисканні спрацьовує функція calculate_level_click. Вона бере числа, рахує за простою формулою і записує результат у поле entry_res1.
  3. Кнопка 2: При натисканні спрацьовує функція calculate_hours_click. Вона використовує цикл while, який крутиться, поки вода не досягне рівня KK. Результат показується окремим віконцем (messagebox).

Готуємось до вивчення нового матеріалу

1. Що таке дизайн? Які види дизайну вам відомі?

Дизайн — це процес художнього та технічного проєктування об’єктів, щоб зробити їх зручними, гарними та функціональними. Це також результат цього проєктування (зовнішній вигляд).

Основні види дизайну:

  • Графічний дизайн (створення логотипів, плакатів).
  • Вебдизайн (оформлення вебсайтів).
  • Промисловий дизайн (зовнішній вигляд техніки, автомобілів).
  • Дизайн інтер’єру (оформлення приміщень).
  • Ландшафтний дизайн (оформлення парків, садів).
  • Дизайн одягу.

2. Які ви знаєте вимоги до дизайну слайдів комп’ютерної презентації?

Основні вимоги (правила композиції та колористики):

  • Вміст: Один слайд — одна ідея. Тексту має бути мало, краще використовувати схеми та зображення.
  • Шрифти: Використовувати шрифти без засічок (наприклад, Arial, Verdana). Розмір для заголовків — не менше 32–36 пт, для основного тексту — не менше 24 пт.
  • Колір: Забезпечити контраст (темний текст на світлому фоні або навпаки). Не використовувати понад 2–3 основних кольорів на одному слайді.
  • Єдиний стиль: Усі слайди презентації мають бути оформлені в одному стилі (однакові шрифти, колірна гама, розташування заголовків).

Теги статті:

#Відповіді Інформатика Ривкінд 8 клас
Д

До уроку

Освітній портал «До уроку»

← Усі статті блогу↑ Вгору