Оптимізація та пошук помилок в коді
Ми рідко маємо можливість написати код без помилок з першого разу. Ризик помилок зменшується завдяки прагненню написати якісний код, але повністю уникнути помилок неможливо, тому необхідно їх активно шукати. Помилки в коді іноді називають англійським терміном bug. Процес перевірки правильності коду називається тестуванням, процес пошуку причини помилки та її усунення називається налагодженням (іноді також «debugging»).
Типи помилок
Ми розрізняємо синтаксичні помилки (неправильне написання програми – програму неможливо запустити) і семантичні помилки (програма виконується, але не відповідає необхідній поведінці). Окремим випадком семантичної помилки є цикл (програма ніколи не зупиняється, наприклад, тому що умова циклу ніколи не перестає виконуватися).
Приклади помилок
Деякі приклади типових семантичних помилок:
- зміна порядку команд (як-от, порядок повороту та руху вперед)
- неправильна кількість повторень циклу
- неправильне визначення тіла циклу (як-от, відсутність зміщення команди, яку потрібно повторити)
- заміна циклу та умовного оператора (
until
замістьif
) - заміна чіткої та нечіткої нерівності (
x < y
замістьx ≤ y
) - заміна логічної кон’юнкції (
P і Q
замістьP або Q
) - заміна порівнюваних змінних (
x < y
замістьy < y
) - заміна призначеної змінної та значення (
x ← y
замістьy ← x
) - заміна змінних (використання неправильної змінної, особливо небезпечним є надання їй невідповідного імені)
- використання неправильного типу змінної (рядок
“3”
замість числа3
) - неправильне значення параметра (наприклад, неправильний кут повороту)
- заміна аргументів під час виклику функції (
f(a, b)
замістьf(b, a)
) - заміна списку та повернення з функції (
list
замістьreturn
)
Знання типових помилок дозволяє зосередити вашу увагу під час налагодження на місцях, де помилка може ховатися.
Процедура налагодження програми
Якщо програма не дає правильних результатів, ми запускаємо її крок за кроком і спостерігаємо, коли вона відхиляється від наших очікувань. Якщо програма не створює графічного виводу, значення змінних можна записувати безперервно або можна використовувати інструмент, який дозволяє програмі покроково контролювати значення змінних (так званий debugger). Потім ми спробуємо відкоригувати те місце у програмі, де вона відхиляється від наших очікувань.
Поради щодо налагодження програм
- Після кожної зміни при виправленні програми бажано запускати програму знову, щоб перевірити ефект від зміни.
- Якщо незрозуміло, як саме редагувати код (як-от, на який кут повернути), може бути корисним, наприклад, намалювати картинку.
- Якщо незрозуміло, чому програма поводиться певним чином у певний момент, краще спочатку збагнути це, перш ніж вносити зміни.
- Якщо ми не впевнені, що робить використовувана мовна конструкція (команда, оператор), ми шукаємо її поведінку в Інтернеті та перевіряємо своє розуміння, пробуючи простий код із цією конструкцією.
- Якщо код надмірно складний або використовує невідповідні назви змінних, помилка може стати очевидною після усунення цих недоліків (наприклад, перейменування змінних).
- Декомпозиція на функції полегшить пошук помилок – ми можемо тестувати деякі функції окремо.
Черепашача графіка
Малювання за допомогою графіки черепахи з використанням блокового програмування.
Налаштування зображення
ПрогМалювання
Створення зображень шляхом компонування базових фігур (наприклад, круг, квадрат), використовуючи блокове програмування.