Налагодження готової програми

Якщо щось йде не так

Що станеться, якщо в коді виявиться помилка і програма не виконається? Існує три види помилок, які можуть статися. Давайте розглянемо обидва варіанти, щоб знати, що робити в обох випадках.

Синтаксичні помилки

IDLE перевіряє вашу програму ще до її запуску. Якщо буде виявлено якась помилка, то це, як правило, синтаксична помилка. Синтаксис - це правила орфографії і граматики в мові програмування, тому синтаксична помилка означає, що ви написали щось, що не відповідає правилам Python. Наведемо приклад:

print("Я - УКРАЇНЕЦЬ!")

print("Отже, я люблю БОРЩ!")

print("БОРЩ "*50)

print(Хочу ще...")

Ми пропустили лапки між словом print і рядком “Хочу ще…". Якщо ви спробуєте запустити цю програму, то побачите повідомлення:

Після цього потрібно перевірити свій код, щоб зрозуміти, що з ним не так. Редактор середовища IDLE виділить червоним кольором місце помилки.

Можливо, це не буде сама помилка, але вона має бути присутня десь поблизу.

Помилки виконання

Другий вид помилок - це ті помилки, які Python (або IDLE) не може виявити до запуску програми. Такі помилки виявляються тільки при виконанні програми, тому вони називаються помилками виконання. Наведемо приклад подібної помилки в програмі:

print("Я - УКРАЇНЕЦЬ!")

print("Отже, я люблю БОРЩ!")

print("БОРЩ "+50)

print("Хочу ще...")

Якщо зберегти цю програму і спробувати її виконати, вона запуститься. Перші два рядки з'являться на екрані, але потім піде повідомлення про помилку:

Рядок, що починається зі слова Traceback, - це початок повідомлення про помилку. Наступний рядок вказує на місце помилки - назва файлу і номер рядка. Потім йде рядок з невірним кодом. Це допомагає виявити проблему в коді. Остання частина повідомлення про помилку вказує на те, в чому, власне, помилка. Коли ми ближче познайомимося з Python і програмуванням, нам буде легше зрозуміти сенс цього повідомлення.

В Python не можна скласти два об'єкти різних типів, наприклад текст і число. Саме тому команда print("БОРЩ "+50) повертає помилку. Це все одно що сказати: «Якщо до п'яти пиріжків додати три гривні, скільки цукерок у мене буде?» Додавання в даному випадку безглуздо. Однак ми можемо множити практично все, що завгодно, щоб отримати більшу кількість чого-небудь. (Якщо купити два пиріжки по 5 гривень, то ми витратимо десять гривень!) Ось тому команда print("БОРЩ "*50) працює правильно.

Семантичні помилки (semantic errors)

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

У таких випадках проблема полягає в тому, що семантика написаної програми відрізняється від того, що ви мали на увазі. Пошук таких помилок - завдання нетривіальне, тому що доводиться переглядати результати роботи програми і розбиратися, що програма робить насправді.

Процес відлагодження

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

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

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

Отже, програмування - це процес поступового доопрацювання і налагодження доти, поки програма не робитиме те, що ми хочемо.

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

Формування вмінь та навичок

Під час виконання практичних завдань пам’ятайте про правила безпеки життєдіяльності при роботі з комп’ютером!

Завдання 1

Спробуйте набрати наступний код та виправити помилки в ньому:

import math

a = float(input("Введіть число:'))

print("Корінь числа " + a + " = " + str(sqrt(a))

Завдання 2

Перша програма нічого особливого не робила. Вона просто вивела дещо на екран. Давайте спробуємо створити що-небудь цікавіше. Наступний код - це проста гра, в якій потрібно вгадати число.

import random

secret = random.randint(1, 99)

guess = 0

tries = 0

print("Привіт, друже! Я - це ти, тільки з майбутнього!")

print("Я вже вмію програмувати, і спеціально для тебе створив цікаву гру!")

print("Тобі потрібно відгадати задумане число від 1 до 99, для цього ти матимеш лише 6 спроб!")

print("То що, розпочнемо?")

while guess != secret and tries < 6:

guess = int(input("Твій варіант: "))

if guess < secret:

print("Це занадто мало, як для такої корисної гри!")

elif guess > secret:

print("Це занадто багато, я навіть таких чисел не знаю!")

tries = tries + 1

if guess == secret:

print("Досить, досить, ти вгадав, о НАЙРОЗУМНІШИЙ!!!")

else:

print("Ну ось і все! Твої спроби закінчились!")

print("Я загадав число: ", secret)

print("Надіюсь, тепер ти розумієш, що програмування - це цікаво!")

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

Коли будете набирати код, зверніть увагу на відступи в рядках, наступних за командою while, і на ще більші відступи в рядках, наступних за командами if і elif. Також зверніть увагу на двокрапки в кінці деяких рядків. Якщо поставити двокрапку в потрібному місці, редактор допоможе вам, почавши новий рядок з абзацу. Збережіть код та запустіть програму. Спробуйте пограти в гру і подивитися, що вийде.

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

1. Опрацювати статтю «Кілька слів про помилки»

(http://nikolay.in.ua/navchaemos/python-3/610-kilka-sliv-pro-pomilki)

2. Опрацювати статтю «Відлагодження програм та коментарі»

(http://nikolay.in.ua/navchaemos/python-3/630-vidlagodzhennya-program-takomentari)

 

Комментариев нет:

Отправить комментарий