Лабораторна робота № 15. Налагодження програми та виконання контрольної роботи № 1

Мета:

Здобути навики використання середовища розробки мови C++, познайомитися з процесом по налагодженню програми, надати відповіді на запитання контрольної роботи №1.

Короткі теоретичні відомості до роботи.

Розглянемо деякі корисні прийоми налагодження програми.

1. Створювати програму потрібно поетапно, поступово налаштовуючи її новими блоками. Складні блоки або ті, де програміст використовує нові для себе прийоми, корисно відпрацьовувати окремо у пробній програмі.

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

3. Версії компілятора відрізняються не тільки та деталями інтерфейсу. Коли навіть у книзі пишеться одне, а компілятор потребує інше, то потрібно дотримуватися вказівкам компілятора.

4. Після компіляції не потрібно відразу виправляти усі помилки. Часто одні помилки провокують інші. Потрібно виправляти очевидні й повторювати компіляцію.

5. Диагностіка програми визначена розробником компілятора, але нікто не може передбачити усі можливі помилки та їх комбінації. Компілятор вказує на то місце у програмі, де він знайшов порушення правил, але це не завжди те місце, де на самому ділі зроблена помилка. Потрібно дуже гарно знати свою програму.

6. У процесі налагодження можна локалізувати окремі блоки директивами або дужками коментаря. Не всі версії компілятора дозволяють застосовувати вкладені коментарі типу /*…// …*/.

7. Не слід економити на дужках. Вони роблять програму більш зрозумілою та вносять визначеність у сумнівних випадках.

8. Не існує ніяких гарантій (крім самоконтролю), що програміст правильно використовує типи даних та що дані не суперечливі.

9. Викликати функцію слід зі значеннями аргументів тих типів, для котрих вона запрограмована. При автоматичному приведені типів можуть виникати важко помітні помилки.

10. Необхідно заздалегідь перевірити можливість поділу на нуль і передбачити обхід особливої точки. Ці помилки не фіксуються при компіляції, але припиняють виконання програми. Повідомлення про ділення на 0 можна побачити при погашених панелях nc та bc або у спеціальному повідомлені (під Win).

11. Необхідно заздалегідь перевірити можливість «зациклівання». Ця помилка також не може бути виявлена при компіляції, і вона не зупиняє виконання програми. При налагоджуванні програми корисно передбачити вивід на екран або у файл контрольних міток або після фіксованої кількості циклів використати примусове переривання break. Такі прийоми дозволяють зафіксувати місце без кінцевого циклу у програмі.

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

13. Коли зміна у процесі виконання програми присвоює значення, яке перевищує заданий формат, то виникає помилка – «переповнення»,котре не фіксується при компіляції (при виконанні програми може бути видано відповідне повідомлення). У результаті змінній присвоюється невідоме помилкове значення. Потрібно бути уважним при об’яві змінних і по можливості прогнозувати порядок їх величин. Корисно виводити проміжні контрольні результати розрахунків.

14. При роботі з масивами потрібно уважно слідкувати за тим, щоб не вийти за об’явлені межі масиву. Коли ініціалізуються не усі елементи масиву, то ні ініціалізовані – ігноруються (у деяких компіляторах автоматично записуються нулі).

15. Коли при розв’язані задачі потрібно попередньо присвоїти нулі змінної або масиву, краще це зробити у програмі, не сподіватися на ініціалізацію за замовчуванням.

16. Потрібно пам’ятати, що компілятор BORLANDC – однопрохідний, і завжди враховувати це при створенні програми і при комплектовані директив препроцесору. Коли усі директиви препроцесору записані вірно, але компілятор все ж таки не знаходить функції, котрі шукає, можна спробувати змінити порядок запису деяких директив, там де він не суворо обов’яз-ковий.

17. Імена у директивах не слід використовувати у будь-якій якості у власних програмах. Ці імена у різних заголовочих файлах не повинні повторюватися.

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

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

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

21. Після внесення змін треба зафіксувати виправлений текст, тому що при першому запуску комп’ютер може «зависнути» або програма «зациклити», а після перевантаження виправлення не зберігаються.

22. Не стоїть шукати «кремезну» логіку у всіх правилах мови. Треба ці правила виконувати.

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

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

25. «Золоте правило програміста!» – шукай помилку у себе в програмі.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: