Тема 28(8): Налагодження програм.
План вивчення теми:
Баги та дебагінг
Типи помилок
Коментарі
Набір правил написання програм
Д/з: опрацювати:
§6.6
веб-сторінку уроку 28
При створенні програми, яка могла б надійно працювати, більшість часу витрачається не на її написання, а на пошук помилок і внесення виправлень.
Так повелося, що програмні помилки називають «багами» (від англ. Bug - жучок).
Процес виявлення і усунення несправностей в англомовній літературі прийнято позначати терміном debugging, ми ж будемо називати його відлагодженням.
Треба розрізняти помилки, що можуть виникнути. Вони бувають трьох типів:
синтаксичні помилки (syntax errors),
помилки виконання (runtime errors)
семантичні помилки (semantic errors).
Щоб знаходити і виправляти їх швидше, має сенс навчитися їх розрізняти.
Синтаксичні помилки (syntax errors)
Будь-який транслятор зможе виконати програму тільки в тому випадку, якщо програма синтаксично правильна. Навіть якщо у вашій програмі Пітон знайде хоч би незначну друкарську помилку, він одразу виведе повідомлення про те, де він її знайшов, і завершить роботу.
Помилки виконання (runtime errors)
Другий тип помилок зазвичай виникає під час виконання програми (їх прийнято називати винятковими ситуаціями або, коротко - виключеннями, англійською exceptions). Такі помилки мають іншу причину. Якщо в програмі виникає виключення, то це означає, що у ході виконання сталося щось непередбачене: наприклад, програмі було передано некоректне значення, або програма спробувала розділити якесь значення на нуль, що є неприпустимим.
Змістові (семантичні) помилки (semantic errors)
Першою ознакою наявності у вашій програмі змістової помилки є те, що вона виконується успішно, тобто без виняткових ситуацій, але робить не те, що ви від неї чекаєте. У таких випадках проблема полягає в тому, що зміст написаної програми відрізняється від того, що ви мали на увазі. Пошук таких помилок - завдання непросте, оскільки доводиться проглядати результати роботу програми і розбирати, що програма робить насправді.
Процес відлагодження
Уміння відлагодити програму для програміста є важливою навичкою. Процес відлагодження вимагає великих інтелектуальних зусиль і концентрації уваги, але це одне з найцікавіших занять.
Відлагодження дуже нагадує роботу дослідника. Вивчаючи результати свого попереднього експерименту, ви робите деякі висновки, потім відповідно до них змінюєте програму, запускаєте її, і знову аналізуєте отримані результати. Якщо отриманий результат не співпадає з бажаним, то доводиться знову знати причини цього. Якщо ж ваша гіпотеза виявиться правильною, то можна на крок наблизитися до завершення роботи над програмою.
Тому для перевірки працездатності програми не досить перевірити її один раз - потрібно придумати всі можливі набори вхідних даних, які можуть якось вплинути на стійкість вашої системи. Такі набори вхідних даних називають граничними значеннями.
Отже, програмування - це процес поступового доопрацювання і відлагодження, доки програма не робитиме те, що ми хочемо.
Тому вже при складанні програми потрібно потурбуватися про те, щоб вона була наочною, легко читалася, і за інформацією, що видає програма, можна було б без зусиль виявити помилки.
Для цього не завадить використовувати деякі правила.
Набір правил написання програм:
1. Починати варто з простий програми, яка робить щось просте, а потім можна приступати до нарощування її функціональності, роблячи невеликі модифікації і відлагоджуючи їх . Таким чином, на кожному кроці у вас буде працююча програма, що, в якійсь мірі, дозволить знати про те, яку частку роботи ви вже зробили.
2. У кожній строчці програми розміщуйте по одному операторові.
3. Зрозуміти зміст програми вам допоможуть коментарі. З їх допомогою можна вказати призначення програми, зміст використовуваних змінних, пояснити найбільш важкі для розуміння ділянки. Коментар у мові Python починається символом #.
4. При виборі алгоритму розв'язання задачі слід віддавати перевагу більш зрозумілому і прозорому варіанту.
І ось, нарешті, ми переходимо власне до програмування. Не зашкодить, якщо перевіряти працездатність прикладів на комп'ютері і поекспериментувати з ними.
Завдання №1
Спробуйте набрати наступний код та виправити помилки в ньому:
import math
a = float(input("Введіть число:'))
print("Корінь числа " + a + " = " + str(sqrt(a))
Які виключення можуть виникнути при виконанні даної програми?
Завдання №2
Розкоментуйте деякі рядки, щоб програма вивела на екран числа 12 і 2 (спочатку 12, а потім 2).
x = 2
y = 12
# x = x * 3
# y = x + y
# x = y - x
# y = y - x
print(x)
print(y)
Потрібно розкоментувати необхідні рядки і не міняти інші.
Завдання №3
Закоментуйте кілька рядків, щоб на екран вивелось повідомлення:
2 плюс 3 дорівнює 5
Примітка: коментувати рядки з оголошенням змінних не можна.
s = "23"
a = 3
b = 2
four = "чотири"
three = "3"
print("два", end="")
print(" плюс ", end="")
print(s, end="")
print(b, end="")
print(" плюс ", end="")
print("три", end="")
print(a, end="")
print(" дорівнює ", end="")
print("п'ять", end="")
print(a + b, end="")
Зразок програми з використанням оператора try:
Написати програму для обчислення значення виразу:
У програмному коді, щоб виключити ситуацію випадкового введення тесту замість чисел, використайте конструкцію: