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. Оцінювання роботи учнів