Лабораторна робота №1 з Python: покроковий розбір і звіт
Практична частина курсу. Беремо лабораторну «Знайомство з Python. Основи алгоритмізації» і проходимо обидва завдання на власних прикладах: від умови до блок-схеми, коду, перевірки й звіту. Свій варіант ви виконаєте за тим самим алгоритмом.

Завдання і що здавати
Мета роботи — вивчити основні поняття алгоритмізації й типи алгоритмів за структурою, навчитися складати алгоритм розв’язку задачі, ознайомитися з інтерпретатором Python і виконувати в ньому математичні обчислення. Практична частина складається з двох завдань:
- Завдання 1. За своїм варіантом (таблиця 1.2 методички: площа, знижка, температура, середній бал тощо) розробити алгоритм, подати його блок-схемою і виконати обчислення в інтерактивному режимі Python.
- Завдання 2. Обчислити математичний вираз зі змінними
aіbза варіантом із таблиці 1.3; номер варіанта визначається за списком групи.
Підготовка: п’ять хвилин
- Перевірте, що Python встановлено:
python --version(інструкція — в уроці 2). - Відкрийте REPL — командою
pythonу терміналі або через IDLE. У ньому виконуються обчислення завдання 1. - Вирішіть, де малювати блок-схеми: аркуш у клітинку, diagrams.net (draw.io) або інший редактор діаграм. Вимоги до оформлення уточніть у викладача.
- Створіть документ звіту одразу й додавайте туди код і результати по ходу роботи, а не наприкінці.
Завдання 1: від умови до результату
Покажемо метод на задачі, якої немає серед варіантів: обчисліть вартість поїздки на таксі, якщо посадка коштує 50 грн, а кожен кілометр — 18 грн. Робота завжди йде в чотири кроки.
Крок 1. Визначте дані
| Дані | Позначення | Приклад |
|---|---|---|
| Вхідні | відстань, км — km | 12 |
| Сталі | посадка — base, тариф за кілометр — rate | 50 і 18 |
| Вихідні | вартість, грн — cost | потрібно знайти |
Крок 2. Запишіть алгоритм словами
1) Задати вартість посадки й тариф. 2) Ввести відстань. 3) Помножити відстань на тариф і додати посадку. 4) Вивести вартість. Жодної умови й жодних повторень — отже, це лінійний алгоритм.
Крок 3. Намалюйте блок-схему
Кожен пункт словесного алгоритму стає блоком:
Крок 4. Обчисліть у REPL
Переносимо блоки в команди — по одній на рядок — і перевіряємо на двох наборах даних:
>>> base = 50
>>> rate = 18
>>> km = 12
>>> cost = base + rate * km
>>> cost
266
>>> km = 3.5
>>> cost = base + rate * km
>>> cost
113.0Другий розрахунок — не зайвий: алгоритм має бути масовим, тож перевіряємо його на кількох наборах даних. Заодно видно, як тип результату залежить від вхідних: ціле число кілометрів дало int, дробове — float.
Ваш варіант робиться так само. Усі задачі таблиці 1.2 лінійні: знайти формулу (площа, довжина кола, переведення температури), визначити вхідні дані, намалювати 4–6 блоків і порахувати в REPL на двох-трьох наборах чисел. Для задач із колом і кругом знадобиться math.pi.
Завдання 2: формула в Python
Вирази таблиці 1.3 записано математичною мовою: дроби, корені, модулі, степені функцій. Python такого запису не розуміє — формулу треба «розплющити» в один рядок. Словник перекладу:
| Математика | Python | Пастка |
|---|---|---|
| sin³(a) | math.sin(a) ** 3 | Степінь ставиться після дужок функції, а не після її назви |
| cos²(0,5a) | math.cos(0.5 * a) ** 2 | Дробова частина — через крапку, множення — лише явне * |
| √(a² + b) | math.sqrt(a ** 2 + b) | Усе, що під коренем, — у дужках функції |
| |a − b| | abs(a - b) | abs — вбудована функція, без math. |
| eᵃ | math.exp(a) | Не math.e * a |
| ln(ab) | math.log(a * b) | math.log — натуральний; для lg — math.log10 |
| 2ab | 2 * a * b | 2ab — синтаксична помилка, а ab — ім’я іншої змінної |
| x / (y + z) | x / (y + z) | Без дужок поділиться лише на y |
| a² | a ** 2 | a ^ 2 — не степінь |
Розберемо метод на прикладі, якого теж немає серед варіантів:
Крок 1. Розбийте на частини
Будь-який дріб — це чисельник, знаменник і ділення між ними. Порахувавши їх окремо, ви не заплутаєтеся в дужках і зможете перевірити кожну частину:
import math
a = float(input("a = "))
b = float(input("b = "))
numerator = math.sin(a) ** 2 + math.sqrt(abs(a - b))
denominator = math.exp(b) + math.log(a * b)
y = numerator / denominator
print("y =", y)Крок 2. Порахуйте на кількох парах значень
| a | b | y |
|---|---|---|
| 1 | 2 | 0.21133759684169034 |
| 2.5 | 0.5 | 0.9468538800436446 |
| 3 | 3 | 0.000893733780453952 |
Для звіту зазвичай вистачає 3–4 знаків після коми: print("y =", round(y, 4)) виведе y = 0.2113.
Крок 3. Звірте з однорядковим записом
Той самий вираз, записаний одним рядком, має дати те саме число — так ловляться помилки в дужках. Запис a, b = 1, 2 присвоює два значення одразу:
>>> a, b = 1, 2
>>> (math.sin(a)**2 + math.sqrt(abs(a-b))) / (math.exp(b) + math.log(a*b))
0.21133759684169034Перевірка ОДЗ і тестування
Вираз має сенс не для всіх a і b. Перш ніж вибирати тестові значення, випишіть обмеження — область допустимих значень (ОДЗ):
| Що є у виразі | Обмеження | Що буде, якщо порушити |
|---|---|---|
| √x | x ≥ 0 | ValueError |
| ln x, lg x | x > 0 | ValueError |
| Дріб | знаменник ≠ 0 | ZeroDivisionError |
| sin x, cos x | обмежень немає, але x — у радіанах | Помилки не буде, але число може бути не тим, яке ви очікуєте |
Для нашого прикладу: під коренем стоїть модуль — він невід’ємний завжди. Логарифм вимагає a · b > 0, тобто a і b одного знака й не нулі. Знаменник eᵇ + ln(ab) дорівнює нулю, коли ln(ab) = −eᵇ, — таке можливо при дуже малих додатних ab, тож ці значення в тестах краще обійти.
Порушіть ОДЗ навмисно — це хороший тест розуміння:
>>> a, b = -1, 2
>>> math.log(a * b)
Traceback (most recent call last):
...
ValueError: math domain error(У Python 3.14 повідомлення детальніше — expected a positive input, суть та сама.) У звіті корисно показати і правильний запуск, і реакцію на недопустимі дані: це демонструє, що ви розумієте межі формули.
Бонус для сильного звіту — вбудувати перевірку ОДЗ у програму. Це вже розгалужений алгоритм із першого уроку:
if a * b <= 0:
print("ln(ab) не визначений: a і b мають бути одного знака й не нулі")
else:
denominator = math.exp(b) + math.log(a * b)
if abs(denominator) < 1e-12: # дробові значення порівнюємо з допуском
print("Знаменник дорівнює нулю")
else:
y = (math.sin(a) ** 2 + math.sqrt(abs(a - b))) / denominator
print("y =", round(y, 4))Звіт: структура і чекліст
За вимогами методички звіт містить чотири частини:
- Тема роботи — «Знайомство з Python. Основи алгоритмізації».
- Мета роботи — з методички.
- Результати виконання завдань — код програми й результати її роботи для різних вхідних даних; для завдання 1 — також блок-схема.
- Висновки — що вдалося з’ясувати під час роботи (про ОДЗ, радіани, порівняння sqrt і hypot), а не переказ мети.
Перед здачею пройдіться чеклістом:
- Номер варіанта вказано для обох завдань.
- Блок-схема починається «Початком» і закінчується «Кінцем», з кожного ромба виходять «так» і «ні».
- Код запускається без помилок у чистому файлі — перевірте, скопіювавши його з документа звіту.
- Для кожного завдання є щонайменше два-три набори вхідних даних.
- Обмеження ОДЗ згадано і, бажано, продемонстровано.
- Висновки говорять про результати, а не повторюють мету.
Контрольні запитання
На захисті зазвичай питають за списком із методички. Де шукати відповідь:
| Запитання | Де відповідь |
|---|---|
| Що таке алгоритм? Основні властивості | Урок 1: що таке алгоритм, сім властивостей |
| Основні типи структур; лінійний, розгалужений і циклічний алгоритм — з прикладами | Урок 1: три структури |
| Способи запису алгоритмів | Урок 1: способи запису |
| Що таке блок-схема і які в неї базові блоки | Урок 1: блоки блок-схем |
| Компільовані й інтерпретовані мови; до яких належить Python | Урок 2: компілятор і інтерпретатор |
| Що таке змінна; як записати й вивести значення; як позначається присвоєння | Урок 3: змінні |
| Арифметичні оператори Python | Урок 3: сім операторів |
| Використання Python в інтерактивному режимі | Урок 2: REPL |
Міні-курс Python з нуля
Усі матеріали курсу по порядку. Програма, завдання лабораторної та інформація про авторку — на головній сторінці курсу.
- Урок 1 · 9 хвАлгоритм і блок-схемиВластивості алгоритму, способи запису, базові блоки й три структури — лінійна, розгалужена, циклічна — з кодом Python.
- Урок 2 · 8 хвЯк Python виконує кодКомпілятор проти інтерпретатора, байткод, встановлення Python 3.12+, REPL, «Дзен Python» і перша програма в IDLE.
- Урок 3 · 9 хвPython як калькуляторСім арифметичних операторів і пріоритети, модуль math, змінні, типи даних і перетворення введення.
- Практика · 10 хв · ви тутЛабораторна робота №1 покроковоОбидва завдання на прикладах, переклад формул у Python, перевірка ОДЗ, чекліст звіту й контрольні запитання.
Часті питання
Методичка вимагає подати алгоритм блок-схемою, але не вказує, чим її малювати, — тож уточніть у викладача. Якщо обмежень немає, зручно використати diagrams.net (draw.io): схему легко виправити й вставити у звіт.
Аргумент кореня чи логарифма вийшов за область визначення: під коренем від’ємне число або логарифм від нуля чи від’ємного числа. Перевірте ОДЗ і виберіть інші a та b.
Найчастіше калькулятор рахує тригонометрію в градусах, а Python — у радіанах: перевірте режим RAD. Розбіжність в останніх знаках — це наближеність дробових чисел; для звіту округліть результат функцією round.
Методичка кількість знаків не регламентує; зазвичай достатньо 3–4. Округлюйте лише для виводу — round(y, 4), а в обчисленнях використовуйте повне значення.
Курс пройдено — що далі?
Умови, цикли й функції системно розбирає безкоштовний трек Python Developer Professional в Академії SEOWORK.