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


Налагодження програмного коду
Текст програми, уведений із клавіатури, часто містить помилки, які програміст повинен усунути. Помилки, що можуть виникнути у процесі розробки програми, поділяють на:
синтаксичні помилки (англ. compile error);
помилки часу виконання (англ. run-time error);
логічні (алгоритмічні) помилки.

Синтаксичні помилки в програмному коді
Компілятор створює виконуваний файл лише в тому випадку, коли текст не містить помилок. Більшість помилок, які виявляються під час компіляції програми, є синтаксичними. Це помилки в написанні або розміщенні ключових слів та інших елементів коду. При виявленні помилок курсор встановлюється біля першого оператора з помилкою. Рядок, що містить помилку, виділяється жовтогарячою смугою. У нижній частині екрана з’являється текстове вікно, що містить відомості про цю помилку: ім’я файла, в якому знайдено помилку, номер рядка з помилкою і тип помилки. Для швидкого переходу до певної помилки необхідно двічі клацнути мишею на рядку з її описом.
Типова помилка Syntax error, expected (Синтаксична помилка, очікувалось) — після інструкції не поставлено крапку з комою.
Компілятор при знаходженні синтаксичної помилки зупиняє процес компіляції, виводить повідомлення про знайдену помилку. Програмісту потрібно виправити цю помилку і виконати повторну компіляцію.

Помилки виконання
Деякі помилки виявляються під час виконання програми, коли програма намагається опрацювати неприпустимі дані. Такі помилки називають помилками часу виконання.
Розглянемо фрагмент програми:
Якщо таку програму запустити із середовища програмування Lazarus, то вона скомпілюється і працюватиме правильно при будь-яких значеннях змінних а і b, крім b = 0. Але в момент опрацювання зупинить свою роботу, вивівши на екран відповідне повідомлення.
Виконання програми буде зупинено на рядку, що містить помилку. Якщо навести на змінну вказівник миші, то з’явиться підказка з поточним значенням змінної.

Процес усунення помилок називають налагодженням програмного коду.
Метою налагодження є виявлення помилки, яка виникає на етапі виконання програми і приводить до неправильних результатів її роботи.
Під час налагодження програми слід уважно аналізувати повідомлення про помилку, яку відображає налагоджувач, щоб швидко визначити, яку допущено помилку та як її виправити.
Для керування налагодженням програми призначені кнопки для по-крокового виконання програми Вступити і Переступити. Клацаючи кнопки покрокового виконання, можна по рядках виконувати програму, контролюючи зміну значень змінних і правильність обчислень. Якщо команда виклику процедури є поточною, то при клацанні кнопки Вступити здійсниться перехід до покрокового виконання цієї процедури. Після завершення покрокового виконання процедури здійсниться перехід до наступного оператора програми.
Кнопка Переступити надає можливість пропустити покрокове виконання процедури й одразу перейти до наступного оператора програми.
Щоб перервати режим покрокового виконання програми, потрібно натиснути сполучення клавіш Ctrl + F2.

Логічні помилки
Найскладніше виявити та виправити помилки, викликані неправильною логікою програми, тобто помилки, яких припустилися під час розробки алгоритму. Такі помилки називають логічними (алгоритмічними). У деяких випадках логічна помилка може привести до помилки виконання.
Навіть якщо програма успішно скомпільована, результат її виконання може виявитися хибним.
Якщо ви, бажаючи збільшити число a на 1, замість a := a + 1 випадково напишете a := a + 2, то компілятор не виявить помилки, але результат роботи програми буде неправильним.
Одним зі способів виявлення логічної помилки є виконання програми в покроковому режимі з аналізом значень змінних на кожному кроці.
Для опису алгоритму програми та її складових використовують коментарі, які можна включати до тексту програми.
Коментар — це текст, який ігнорується компілятором і включається до тексту програми з метою полегшення розуміння програмного коду.
Щоб компілятор відрізнив команди від коментарів, у мові Object Pascal коментарі потрібно брати у фігурні дужки:
S := Edit3.Text; { введення дати народження }
Якщо текст коментаря короткий і не займає більше одного рядка, то можна перед коментарем замість дужок поставити дві похилі риски:
S := Edit3.Text; // введення дати народження
Вдало сформульовані коментарі значно спрощують розуміння алгоритму програми.

Питання для самоперевірки
1. Які помилки називають синтаксичними?
2. Які помилки належать до помилок періоду виконання?
3. Які помилки називають логічними?
4. Визначте помилку в наведеному фрагменті програмного коду: x := 5; y := і; z := x / (y - I);
5. У результаті роботи програми одержано відповідь: «1,5 землекопи». Визначте, до якого виду належить помилка.
6. Поясніть, як виконується програма в покроковому режимі.

Вправа
Виправити помилки в поданому програмному коді, ознайомитися з режимом покрокового виконання програми.
1) Створіть новий проект. Розмістіть на формі компонент Button. Створіть процедуру обробки події onclick для командної кнопки (Button1).
2) До коду процедури додайте такі команди:
Label1.Caption := 'Бажаю успіху!';
Label1.Color := clYellow;
Labell.Font.Color := clBlue;
3) Запустіть проект на виконання. Рядок Labell.Caption := 'Бажаю успіху!'; виділено жовтогарячою смугою, у вікні помилок міститься повідомлення про помилку:
[Error] Uniti.pas(28): Undeclared identifier: 'Labell'
Помилка виникла тому, що об’єкта Labell на формі не існує.
4) Додайте на форму компонент Label.
5) Запустіть проект на виконання в покроковому режимі, натиснувши клавішу F8. Починає виконуватися код проекту: begin
Application.Initialize;
Application.CreateForm(TForm1, Formi);
Application.Run; end.
Продовжуйте натискати клавішу F8, поки не з’явиться вікно форми. Клацніть командну кнопку і продовжте покрокове виконання.
6) Перервіть режим покрокового виконання сполученням клавіш Ctrl + F2. Збережіть проект у папці Вправа.

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

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