Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тестування програми. Коментарі

Поиск

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

Логічні помилки в проекті виявити значно важче, ніж синтаксичні. Адже проект виконується, видає результати, але вони не відповідають умові задачі, для розв’язування якої створювався даний проект.

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

Пояснимо цей спосіб на такому прикладі. Нехай потрібно скласти проект для обчислення значень функції у = . Часто учні, записуючи команду присвоювання для обчислення значення відповідного виразу y:= (2*x–5)/(x*x+1) забувають узяти знаменник (а то й чисельник) у дужки, тобто вводять, наприклад, команду y:= (2*x–5)/x*x+1 або y:= 2*x–5/x*x+1. Таку логічну помилку нескладно помітити, застосувавши вдалу добірку тестів. Так при тестуванні для х = 0 стане очевидним, що проект не видає очікуваного правильного результату -5, а перериває своє виконання, відкриваючи вікно з повідомленням division by zero (англ. division by zero – ділення на нуль). Після цього потрібно знайти команду, яка містить дію ділення і може стати причиною такої помилки.

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

Допомагають у пошуку логічних помилок коментарі, які можна включати до тексту програми.

Запам’ятайте!

Коментар – це текст, який ігнорується компілятором і включається до тексту програми з метою полегшення розуміння структури програмного коду.

Щоб компілятор відрізнив команди від коментарів, у Turbo Delphi 2006 коментарі потрібно брати у фігурні дужки, наприклад, {Це команда знаходження частки}. Якщо текст коментаря короткий і не займає більше одного рядка, то можна замість дужок поставити перед ним дві похилі риски, наприклад, //Це команда знаходження частки. Інколи коментарі замість фігурних дужок беруть у круглі дужки із зірочками, наприклад, (*Це команда знаходження частки*).

Якщо коментар займає не більше одного рядка, то він може знаходитися після команди, а може розпочинатися з початку рядка. Будь-який коментар не може знаходитися всередині команди програми.

На рис 2.38 наведені приклади використання коментарів у тексті програми.

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

 

Покрокове виконання програм

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

Для виконання одного кроку програми, якщо необхідно і підпрограму виконати по рядках, потрібно натиснути клавішу F7 або виконати Run Þ Trace Into (англ. trace into – трасувати всередину). А для виконання одного кроку програми, якщо можна підпрограму виконати повністю за один крок, потрібно натиснути клавішу F8 або виконати Run Þ Step Over (англ. step over – крок поверх). Ще раз наголосимо, що підпрограму можна виконати як один крок тільки в тому випадку, коли ми впевнені, що вона не містить логічних помилок.

Розглянемо, як відбувається покрокове виконання програми на прикладі програми знаходження суми двох довільних дійсних чисел, розглянутої в попередньому пункті (рис. 2.38).


Після першого натиснення клавіші F7 відбувається компіляція проекту, і якщо проект не містить синтаксичних помилок, то починається його виконання. Спочатку відкривається вкладка з текстом програми, який увійшов до файлу з розширенням імені dpr (англ. delphi project – проект Делфі). Для проекту, що розглядається, це файл Project1.dpr. На рис. 2.39 наведено команди цієї частини програми, і її початок підсвічується кольоровою смужкою. При кожному наступному натисненні клавіші F7 будуть виконуватися команди наступного рядка. У результаті виконання наведених на рис. 2.39 трьох команд відкриється вікно проекту з розміщеними на ньому елементами керування (якщо вікно не відкрилося, то потрібно вибрати його кнопку, яка з’явилася на Панелі завдань).

Після цього потрібно увести в поля відповідні числа і вибрати кнопку Додати. У результаті відкривається вкладка з текстом програми, який увійшов до файлу з розширенням імені pas (англ. pascal – Паскаль). Для проекту, що розглядається, це файл Unit1.pas. На рис. 2.40 наведено команди цієї частини програми, і її початок підсвічується кольоровою смужкою. При кожному наступному натисненні клавіші F7 будуть виконуватися команди наступного рядка. У результаті послідовного натискання клавіші F7 виконаються усі наведені команди, у результаті чого в напис і у вікно повідомлень виведеться результат. Зрозуміло, що всі коментарі при виконанні будуть пропущені.

 
 

Для того, щоб перервати режим покрокового виконання, потрібно натиснути сполучення клавіш Ctrl+F2.

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

Щоб під час покрокового виконання програми слідкувати за зміненням значень змінних, потрібно відкрити вікно Watch List (англ. watch list – список перегляду) і помістити в це вікно імена змінних, значення яких ми хочемо спостерігати в ході покрокового виконання програми.

Для того, щоб помістити ім’я змінної до вікна Watch List, потрібно натиснути сполучення клавіш Ctrl+F5 або виконати Run Þ Add Watch (англ. add watch – додати перегляд). У результаті спочатку відкривається вікно Watch Properties (англ. watch properties – властивості перегляду, рис. 2.41). У перше поле цього вікна потрібно ввести ім’я змінної і вибрати кнопку ОК.

Після цього відкривається вікно Watch List (рис. 2.42) із внесеним до нього іменем змінної. Таким чином можна до цього вікна внести імена всіх тих змінних, за значеннями яких доцільно спостерігати під час покрокового виконання програми.

Під час покрокового виконання програми значення цих змінних змінюватиметься і будуть відображатися у вікні Watch List (рис. 2.43). Уважно слідкуючи за цими зміненнями і порівнюючи ці значення з очікуваними, можна помітити, в який момент виконання програми значення певної змінної стає неочікуваним. Саме ця команда й може бути причиною логічної помилки.

 

Перевірте себе

1. º У чому полягає процес тестування програми?

2. · Поясніть, для чого виконується тестування програми?

3. º Що таке коментар у програмі? Яким чином можна коментар включити до тексту програми?

4. · Поясніть, для чого в програму включають коментарі?

5. º Для чого програми виконують покроково?

6. · Поясніть, у чому полягає процес покрокового виконання програми?

7. · Прокоментуйте хід покрокового виконання програми.

8. · Чим відрізняються покрокове виконання програм з використанням клавіш F7 і F8?

9. · Як переглянути значення змінних під час покрокового виконання програми?

 

Виконайте завдання

1. · Відкрийте проект, наприклад, з папки Тема 2\Завдання 2.6\Проект 2.6.1. Завданням проекту є знаходження розв’язку задачі: «Два потяги виїхали одночасно назустріч один одному. Потрібно знайти, через який час вони зустрінуться, якщо відома відстань між ними у момент початку руху та швидкість кожного потяга». Виконання обробника події OnClick кнопки повинно привести до виведення шуканого часу, якщо значення відстані та швидкостей вводяться у поля. Для заданих початкових даних обчисліть очікувані результати:

а) відстань – 1000, швидкості – 120 та 130;

б) відстань – 600, швидкості – 80 та 120;

в) відстань – 1200, швидкості – 115 та 85.

Перевірте, чи збігаються результати, отримані при виконанні проекту, з обчисленими вами результатами. Поясніть, у чому може бути помилка.

2. (ДЗ) · Створіть три тестових набори вхідних даних для тестування проекту, призначеного для розв’язання задачі: ««Два потяги вийшли одночасно з однієї станції у протилежних напрямках. Потрібно знайти відстань, на який вони опиняться один від одного через заданий час, якщо відома швидкість кожного потяга». Обчисліть очікувані результати за складеними тестами. Відкрийте проект, наприклад, з папки Тема 2\Завдання 2.6\Проект 2.6.2. Протестуйте його на ваших тестових даних. Зробіть висновок, чи містить програма логічні помилки. Якщо так, то у чому може бути помилка.

3. * Відкрийте проект, наприклад, з папки Тема 2\Завдання 2.6\Проект 2.6.3. Перегляньте програмний код та на основі аналізу коментарів зробіть припущення, яку задачу розв’язує цей проект. Спираючись на ваше припущення, складіть три тестових набори вхідних даних для тестування проекту. Обчисліть очікувані результати. Протестуйте проект на ваших тестових даних. Зробіть висновок, чи правильним було ваше припущення.

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

5. º Відкрийте проект, наприклад, з папки Тема 2\Завдання 2.6\Проект 2.6.1. Виконайте програму у покроковому режимі. Зверніть увагу на відображення ходу виконання програми.

6. (ДЗ) · Відкрийте проект, наприклад, з папки Тема 2\Завдання 2.6\Проект 2.6.3. У ході покрокового виконання програми прослідкуйте за значеннями змінних S1 та S2.

7. • Учні для свята купили цукерки та печиво. Відома ціна цукерок і печива та кількість куплених солодощів кожного виду. Створіть проект для знаходження повної вартості покупки. Створіть у власній папці папку Проект 2.6.7 і збережіть у ній проект. Виконайте програму у покроковому режимі, прослідкуйте за значеннями змінних, що містять значення вартості кожного товару.

8. • Відкрийте проект, наприклад, з папки Тема 2\Завдання 2.6\Проект 2.6.8. У ході покрокового виконання програми прослідкуйте за значеннями змінних х, а та S. З’ясуйте, як значення, які послідовно набуває змінна а, пов’язані із значенням змінної х? Змініть проект так, щоб у результаті виконання змінна S містила суму х + х2 + х4 для введеного значення х. Додайте до тексту програми коментар, у якому вкажіть, які зміни були внесені у програмний код. Створіть у власній папці папку Проект 2.6.8 і збережіть у ній змінений проект.

9. * Відкрийте проект, наприклад, з папки Тема 2\Завдання 2.6\Проект 2.6.9. Цей проект призначений для знаходження, на скільки більше часу витратив один з потягів на шлях між містами, ніж другий, заданими відстанню між містами і швидкостями кожного з потягів. З’ясуйте, чи містить проект логічні помилки. Якщо так, визначте, які команди є їх причинами, і виправте їх. Запишіть набір тестових наборів даних, на яких ви виявили логічні помилки. Створіть у власній папці папку Проект 2.6.8 і збережіть у ній змінений проект.

Практична робота № 7

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

Увага! Під час роботи з комп’ютером дотримуйтеся правил безпеки та санітарно-гігієнічних норм.

 

1. Відкрийте Turbo Delphi 2006.

2. Створіть проект для визначення, у скільки разів добуток двох заданих цілих чисел більший за суму цих чисел.

3. Створіть три тестових набори вхідних даних для тестування проекту. Обчисліть очікувані результати. Протестуйте проект на ваших тестових даних.

4. Поставте коментарі для позначення рядків, у яких відбувається обчислення суми та добутку.

5. Виконайте проект у покроковому режимі. У ході покрокового виконання проекту прослідкуйте за значеннями суми та добутку. Запишіть, які повідомлення відображаються у стовпчику Value для вказаних змінних перед початком покрокового виконання проекту, в ході виконання для одного з наборів початкових даних та після завершення виконання.

6. Створіть у власній папці папку Практична 7 і збережіть у ній проект.


 



Поделиться:


Последнее изменение этой страницы: 2016-09-18; просмотров: 986; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.70.11 (0.008 с.)