1 of 26

Налагодження програмного коду

Нова українська школа

Урок 35

Інформатика 8

teach-inf.com.ua

за підручником

Бондаренко О.О. та ін.

2 of 26

Налагодження програмного коду

Розробка програми, як і будь-яка інша діяльність людини, не обходиться без помилок. Розуміння класифікації помилок і способів їх виправлення є важливою навичкою для програміста.

Помилки в програмах бувають різних типів:

  • синтаксичні помилки�(англ. syntax error),
  • помилки часу виконання�(англ. run-time error);
  • логічні (алгоритмічні) помилки.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

3 of 26

Налагодження програмного коду

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

Інтерпретатор Python виявляє два типи помилок:

  • синтаксичні помилки
  • винятки (виняткові ситуації)

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

4 of 26

Виправлення синтаксичних помилок

Синтаксична помилка виникає, якщо порушено правила запису команд, наприклад, назву змінної почали з цифри або забули поставити двокрапку перед початком блока коду.

Інтерпретатор Python не може зчитувати або виконувати код, у якому є синтаксичні помилки.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

5 of 26

Виправлення синтаксичних помилок

У команді введення не вистачає лапок після текстової константи.

Місце помилки виділяється червоним кольором.

При спробі виконати програму з’являється повідомлення про помилку.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

6 of 26

Виправлення синтаксичних помилок

У вікні консолі спробуємо ввести команду присвоювання, де порушено правила створення назви змінної.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

7 of 26

Винятки

Програма може бути правильно написана з точки зору синтаксису, але вона припиняє роботу через якусь помилку.

Помилку, яка не є синтаксичною і спричиняє аварійне припинення виконання програми, називають винятком.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

8 of 26

Винятки

Виняток NameError виникає під час спроби використати змінну, якій не було присвоєно значення. Із точки зору інтерпретатора Python це означає, що такої змінної не існує.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

9 of 26

Винятки

Зауважимо таке. Останній рядок повідомлення про помилку описує, що сталося. Виводиться тип винятку NameError — це назва вбудованого винятку, що стався.

Решта рядка містить опис подробиць на основі типу винятку та причини його виникнення.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

10 of 26

Винятки

Якщо ми неправильно записали назву функції в команді виклику функції, інтерпретатор повідомляє про невизначений ідентифікатор і пропонує варіант виправлення.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

11 of 26

Винятки

Виняток ZeroDivisionError виникає, якщо в програмі трапилася спроба ділення на нуль :

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

12 of 26

Винятки

Під час спроби виконати команду а = int('Hi') виникає виняток ValueError — помилка значення: рядок "Ні" не можна перетворити на ціле число.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

13 of 26

Винятки

У разі спроби виконати команду а = 10+'3' виникає виняток TypeError — помилка типу, тобто операцію застосовано до об’єкта невідповідного типу.

Число 10 і рядок '3' належать до різних типів даних, тому над ними не можна виконати операцію додавання.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

14 of 26

Перехоплення винятків

Команда try-except використовується для обробки винятків, які можуть виникнути під час виконання програми. Вона дає змогу продовжити виконання програми навіть після виникнення помилки, замість того щоб аварійно його завершити.

Синтаксис неповної команди try-except:

try:

<блок коду, у якому перехоплюється виняток>

except <назва винятку, який перехоплюється>

<блок коду, який виконується в разі виникнення винятку>

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

15 of 26

Перехоплення винятків

Проілюстровано перехоплення винятку «Ділення на нуль».

Результат виконання команди,

якщо а = 5, b = 4

c = 1.25

якщо а = 5, b = 0

Дільник b дорівнює нулю

c = 0

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

16 of 26

Перехоплення винятків

У блоці except можна не вказувати конкретний тип винятку. У такому разі перехоплюватимуться винятки майже всіх типів.

якщо а = 79

a = 79

якщо а = 34abc

a = 0

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

17 of 26

Перехоплення винятків

Отже, у блоці try ви пишете код, який може спричинити помилку.

Якщо під час виконання цього коду виникає виняток, програма виконує команди блока except.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

18 of 26

Логічні помилки

Найскладніше виявити та виправити логічні помилки, тобто помилки, яких припустилися під час розроблення алгоритму. Навіть якщо програма успішно опрацьована інтерпретатором, результат її виконання може виявитися хибним.

Якщо ви, бажаючи збільшити число а на 1, замість а = а+1 випадково напишете:

а = а+2

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

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

19 of 26

Логічні помилки

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

Тестування полягає в порівнянні результатів зі зразком. Часто розбіжність спричиняють недоліки математичної моделі та помилки в алгоритмі.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

20 of 26

Логічні помилки

Нам потрібно виконати тестування програми для пошуку кореня лінійного рівняння вигляду ах + b = с

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

21 of 26

Логічні помилки

Створимо тестові набори значень:

Вхідні дані

Очікуваний результат

х = 3

а = 5; b = 2; с = 17

Корені відсутні

а = 0; b = 2; с=17

Безліч коренів

а = 0; b = 4; с = 4

Якщо результати виконання програми збігаються з результатами тестових наборів, наша програма працює коректно, і її можна використовувати для розв’язування лінійних рівнянь.

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

22 of 26

Питання для самоперевірки

  1. Що таке виняток? Наведіть приклади.
  1. Опишіть структуру повідомлення в разі виникнення винятку.
  1. У результаті роботи програми одержано відповідь: «1,5 спортсмена». Визначте, до якого типу належить помилка.
  1. Напишіть програму, яка виконує ділення і множення введених із клавіатури чисел а і b. Які винятки можуть виникнути під час виконання програми?

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

23 of 26

Розгадайте ребус

Налагодження

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

24 of 26

Домашнє завдання

Проаналізувати

с. 158-164

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

25 of 26

Працюємо за комп’ютером

Сторінка

164

Розділ 5

§ 25

© Вивчаємо інформатику teach-inf.com.ua

26 of 26

Успіхів�у навчанні!

Нова українська школа

Урок 35

Інформатика 8

teach-inf.com.ua

за підручником

Бондаренко О.О. та ін.