Урок №____ 8___ клас 1 група ________________
2 група ________________
Тема: Налагодження програм. Інструктаж з БЖД
Мета:
 навчальна: систематизувати навички налагодження програм: шукати
синтаксичні та логічні помилки у програмних кодах; сформувати практичні
навички налагодження програмного коду і тестування програми на різних
наборах даних; формувати навички самостійної роботи, вміння
використовувати ці знання в різних ситуаціях при роботі за комп’ютером.
 розвивальна: розвивати логічне мислення; формувати вміння діяти за
інструкцією, планувати свою діяльність, аналізувати i робити висновки;
 виховна: виховувати пізнавальний інтерес до предмету.
Тип уроку: урок формування вмінь і навичок.
Хід уроку
І. Організаційний етап
 привітання
 перевірка присутніх
 перевірка готовності учнів до уроку
ІІ. Повідомлення теми та мети уроку
ІІІ. Пояснення нового матеріалу
Якщо щось йде не так
Що станеться, якщо в коді виявиться помилка і програма не виконається?
Існує два види помилок, які можуть статися. Давайте розглянемо обидва
варіанти, щоб знати, що робити в обох випадках.
Синтаксичні помилки
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)
Третій тип помилок - семантичні помилки. Першою ознакою наявності у
вашій програмі семантичної помилки є те, що вона виконується успішно,
тобто без виняткових ситуацій, але робить не те, що ви від неї очікуєте.
У таких випадках проблема полягає в тому, що семантика написаної
програми відрізняється від того, що ви мали на увазі. Пошук таких помилок -
завдання нетривіальне, тому що доводиться переглядати результати роботи
програми і розбиратися, що програма робить насправді.
Процес відлагодження
Уміння налагоджувати програми є дуже важливим навиком для
програміста. Процес налагодження вимагає великих інтелектуальних зусиль і
концентрації уваги, але це одне з найцікавіших занять.
Налагодження дуже нагадує роботу натураліста. Вивчаючи результати
свого попереднього експерименту, ви робите деякі висновки, потім
відповідно до них змінюєте програму, запускаєте її, і знову приступаєте до
аналізу отриманих результатів. Якщо отриманий результат не співпаде з
очікуваним, то вам доведеться знову розбиратися в причинах, які призвели
до цієї невідповідності. Якщо ж ваша гіпотеза виявиться правильною, то ви
зможете передбачити результат модифікаційпрограмиі на крок наблизитися
до завершення роботи над нею або, можливо, це змусить вас ще більше
повірити в свою помилку.
Тому для перевірки працездатності програми мало перевірити її один
раз - потрібно придумативсі можливі наборивхідних даних, які можуть якось
вплинути на стійкість вашої системи. Такі набори вхідних даних
називають граничними значеннями.
Отже, програмування - це процес поступового доопрацювання і
налагодження доти, поки програма не робитиме те, що ми хочемо.
Починати варто з простої програми, яка робить щось просте, а потім
можна приступати до нарощування її функціональності, роблячи невеликі
модифікації і налагоджуючи додані шматки коду. Таким чином, на кожному
кроці у вас будепрацююча програма, що, в якійсь мірі, дозволить вам судити,
яку частину роботи ви вже зробили.
ІV. Формування вмінь та навичок
Під час виконання практичних завдань пам’ятайте про правила безпеки
життєдіяльності при роботі з комп’ютером!
Завдання 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. Також зверніть увагу на двокрапкив кінці деякихрядків. Якщо
поставити двокрапку в потрібному місці, редактор допоможе вам, почавши
новий рядок з абзацу. Збережіть код та запустіть програму командою Run -- Run
Module, як ми це робили в минулий раз. Спробуйте пограти в гру і подивитися,
що вийде.
V. Підсумки уроку
Рефлексія
 мені було незрозуміло…;
 у мене виникли такі запитання…;
 я не впорався з такими завданням…;
 мені сподобалось і я буду використовувати…
VІ. Домашнє завдання
1. Опрацювати статтю «Кілька слів про помилки»
(http://nikolay.in.ua/navchaemos/python-3/610-kilka-sliv-pro-pomilki)
2. Опрацювати статтю «Відлагодження програм та коментарі»
(http://nikolay.in.ua/navchaemos/python-3/630-vidlagodzhennya-program-ta-
komentari)
VІI. Оцінювання роботи учнів

Lesson # 39. program debugging. bzd briefing

  • 1.
    Урок №____ 8___клас 1 група ________________ 2 група ________________ Тема: Налагодження програм. Інструктаж з БЖД Мета:  навчальна: систематизувати навички налагодження програм: шукати синтаксичні та логічні помилки у програмних кодах; сформувати практичні навички налагодження програмного коду і тестування програми на різних наборах даних; формувати навички самостійної роботи, вміння використовувати ці знання в різних ситуаціях при роботі за комп’ютером.  розвивальна: розвивати логічне мислення; формувати вміння діяти за інструкцією, планувати свою діяльність, аналізувати i робити висновки;  виховна: виховувати пізнавальний інтерес до предмету. Тип уроку: урок формування вмінь і навичок. Хід уроку І. Організаційний етап  привітання  перевірка присутніх  перевірка готовності учнів до уроку ІІ. Повідомлення теми та мети уроку ІІІ. Пояснення нового матеріалу Якщо щось йде не так Що станеться, якщо в коді виявиться помилка і програма не виконається? Існує два види помилок, які можуть статися. Давайте розглянемо обидва варіанти, щоб знати, що робити в обох випадках. Синтаксичні помилки IDLE перевіряє вашу програму ще до її запуску. Якщо буде виявлено якась помилка, то це, як правило, синтаксична помилка. Синтаксис - це правила орфографії і граматики в мові програмування, тому синтаксична помилка означає, що ви написали щось, що не відповідає правилам Python. Наведемо приклад: print("Я - УКРАЇНЕЦЬ!") print("Отже, я люблю БОРЩ!") print("БОРЩ "*50) print(Хочу ще...") Ми пропустили лапки між словом print і рядком “Хочу ще…". Якщо ви спробуєте запустити цю програму, то побачите повідомлення:
  • 2.
    Після цього потрібноперевірити свій код, щоб зрозуміти, що з ним не так. Редактор середовища IDLEвиділить червоним кольором місце помилки. Можливо, це не буде сама помилка, але вона має бути присутня десь поблизу. Помилки виконання Другий вид помилок - це ті помилки, які Python (або IDLE) не може виявити до запуску програми. Такі помилки виявляються тільки при виконанні програми, тому вони називаються помилками виконання. Наведемо приклад подібної помилки в програмі: print("Я - УКРАЇНЕЦЬ!") print("Отже, я люблю БОРЩ!") print("БОРЩ "+50) print("Хочу ще...") Якщо зберегти цю програму і спробувати її виконати, вона запуститься. Перші два рядки з'являться на екрані, але потім піде повідомлення про помилку: Рядок, що починається зі слова Traceback, - це початок повідомлення про помилку. Наступний рядок вказує на місце помилки - назва файлу і номер рядка. Потім йде рядок з невірним кодом. Це допомагає виявити проблему в
  • 3.
    коді. Остання частинаповідомлення про помилку вказує на те, в чому, власне, помилка. Коли ми ближче познайомимося з Python і програмуванням, нам буде легше зрозуміти сенс цього повідомлення. В Python не можна скласти два об'єкти різних типів, наприклад текст і число. Саме тому команда print("БОРЩ "+50) повертає помилку. Це все одно що сказати: «Якщо до п'яти пиріжків додати три гривні, скільки цукерок у мене буде?» Додавання в даному випадку безглуздо. Однак ми можемо множити практично все, що завгодно, щоб отримати більшу кількість чого-небудь. (Якщо купити два пиріжки по 5 гривень, то ми витратимо десять гривень!) Ось тому команда print("БОРЩ "*50) працює правильно. Семантичні помилки (semantic errors) Третій тип помилок - семантичні помилки. Першою ознакою наявності у вашій програмі семантичної помилки є те, що вона виконується успішно, тобто без виняткових ситуацій, але робить не те, що ви від неї очікуєте. У таких випадках проблема полягає в тому, що семантика написаної програми відрізняється від того, що ви мали на увазі. Пошук таких помилок - завдання нетривіальне, тому що доводиться переглядати результати роботи програми і розбиратися, що програма робить насправді. Процес відлагодження Уміння налагоджувати програми є дуже важливим навиком для програміста. Процес налагодження вимагає великих інтелектуальних зусиль і концентрації уваги, але це одне з найцікавіших занять. Налагодження дуже нагадує роботу натураліста. Вивчаючи результати свого попереднього експерименту, ви робите деякі висновки, потім відповідно до них змінюєте програму, запускаєте її, і знову приступаєте до аналізу отриманих результатів. Якщо отриманий результат не співпаде з очікуваним, то вам доведеться знову розбиратися в причинах, які призвели до цієї невідповідності. Якщо ж ваша гіпотеза виявиться правильною, то ви зможете передбачити результат модифікаційпрограмиі на крок наблизитися до завершення роботи над нею або, можливо, це змусить вас ще більше повірити в свою помилку. Тому для перевірки працездатності програми мало перевірити її один раз - потрібно придумативсі можливі наборивхідних даних, які можуть якось вплинути на стійкість вашої системи. Такі набори вхідних даних називають граничними значеннями. Отже, програмування - це процес поступового доопрацювання і налагодження доти, поки програма не робитиме те, що ми хочемо. Починати варто з простої програми, яка робить щось просте, а потім можна приступати до нарощування її функціональності, роблячи невеликі
  • 4.
    модифікації і налагоджуючидодані шматки коду. Таким чином, на кожному кроці у вас будепрацююча програма, що, в якійсь мірі, дозволить вам судити, яку частину роботи ви вже зробили. ІV. Формування вмінь та навичок Під час виконання практичних завдань пам’ятайте про правила безпеки життєдіяльності при роботі з комп’ютером! Завдання 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. Також зверніть увагу на двокрапкив кінці деякихрядків. Якщо
  • 5.
    поставити двокрапку впотрібному місці, редактор допоможе вам, почавши новий рядок з абзацу. Збережіть код та запустіть програму командою Run -- Run Module, як ми це робили в минулий раз. Спробуйте пограти в гру і подивитися, що вийде. V. Підсумки уроку Рефлексія  мені було незрозуміло…;  у мене виникли такі запитання…;  я не впорався з такими завданням…;  мені сподобалось і я буду використовувати… VІ. Домашнє завдання 1. Опрацювати статтю «Кілька слів про помилки» (http://nikolay.in.ua/navchaemos/python-3/610-kilka-sliv-pro-pomilki) 2. Опрацювати статтю «Відлагодження програм та коментарі» (http://nikolay.in.ua/navchaemos/python-3/630-vidlagodzhennya-program-ta- komentari) VІI. Оцінювання роботи учнів