Дайте відповіді на запитання
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<30$, то в циклі значення $x$ буде множитися на 3, доки не стане $x \ge 30$, після чого алгоритм виведе (повідомить) це кінцеве значення $x$.
Наприклад: якщо $x=2$, то $2 \to 6 \to 18 \to 54$, і буде виведено $54$ (бо $54 \not< 30$).
1.б) (схема б)
Тут спочатку задається $x=5$, далі поки $x<25$, додається 4, а коли стане $x \ge 25$, алгоритм виведе значення $x$.
Послідовність: $5 \to 9 \to 13 \to 17 \to 21 \to 25$, тому буде виведено $25$.
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.
- Виконайте в зошиті фрагменти проєктів (трасування):
а)
- Початкові дані:
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.
а) Алгоритм: задане число $x$; поки $x < 30$, замінюємо його на $x = x * 3$; потім повідомляємо значення $x$. Сформулюй задачу, наприклад так:
«У банку на рахунку було $x$ гривень. Щороку сума на рахунку потроюється. За скільки років сума на рахунку стане не меншою ніж 30 гривень і якою вона буде, якщо початкова сума дорівнює … гривень?»[^1]
б) Алгоритм: спочатку $x = 5$; поки $x < 25$, замінюємо його на $x = x + 4$; потім повідомляємо значення $x$. Можлива задача:
«Учень першого дня прочитав 5 сторінок книжки, а кожного наступного дня читав на 4 сторінки більше, ніж попереднього. Яку кількість сторінок він читатиме в день, коли вперше кількість сторінок стане не меншою ніж 25?»
5. Складіть текстові задачі за алгоритмами їх розв’язування із завдання № 2.
2.а) $k = 1, a = 12;$ поки $a < 100$: $a = 2a – 4, k += 1$.
Задача: «Довжина металевої деталі спочатку дорівнює 12 см. Після кожної обробки її подвоюють і відрізають 4 см. Після якої за рахунком обробки довжина деталі стане не меншою ніж 100 см і якою вона буде?»
2.б) $s = 0, a = 1, k = 1;$ поки $a < 50$: $s = 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. Математична модель
Вхідні дані:
- $H$ — початковий рівень води (см).
- $P$ — погодинне зростання рівня води (см).
- $N$ — час, через який треба дізнатися рівень (год).
- $K$ — критичний рівень води (см).
Результати:
- $Level$ — рівень води через $N$ годин.
- $T$ — кількість годин, через які рівень сягне $K$ см.
Формули та алгоритм:
- Для першого питання: Використовуємо лінійну формулу:$$Level = H + (P \cdot N)$$
- Для другого питання (використовуємо цикл з передумовою):Поки поточний рівень води менший за $K$, додаємо до рівня $P$ і збільшуємо лічильник годин на 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()
Пояснення до виконання:
- Поля введення: Ми створили поля
Entryдля змінних $H, P, N$ та $K$. - Кнопка 1: При натисканні спрацьовує функція
calculate_level_click. Вона бере числа, рахує за простою формулою і записує результат у полеentry_res1. - Кнопка 2: При натисканні спрацьовує функція
calculate_hours_click. Вона використовує циклwhile, який крутиться, поки вода не досягне рівня $K$. Результат показується окремим віконцем (messagebox).
Готуємось до вивчення нового матеріалу
1. Що таке дизайн? Які види дизайну вам відомі?
Дизайн — це процес художнього та технічного проєктування об’єктів, щоб зробити їх зручними, гарними та функціональними. Це також результат цього проєктування (зовнішній вигляд).
Основні види дизайну:
- Графічний дизайн (створення логотипів, плакатів).
- Вебдизайн (оформлення вебсайтів).
- Промисловий дизайн (зовнішній вигляд техніки, автомобілів).
- Дизайн інтер’єру (оформлення приміщень).
- Ландшафтний дизайн (оформлення парків, садів).
- Дизайн одягу.
2. Які ви знаєте вимоги до дизайну слайдів комп’ютерної презентації?
Основні вимоги (правила композиції та колористики):
- Вміст: Один слайд — одна ідея. Тексту має бути мало, краще використовувати схеми та зображення.
- Шрифти: Використовувати шрифти без засічок (наприклад, Arial, Verdana). Розмір для заголовків — не менше 32–36 пт, для основного тексту — не менше 24 пт.
- Колір: Забезпечити контраст (темний текст на світлому фоні або навпаки). Не використовувати понад 2–3 основних кольорів на одному слайді.
- Єдиний стиль: Усі слайди презентації мають бути оформлені в одному стилі (однакові шрифти, колірна гама, розташування заголовків).
