ДІАГНОСТИКА

Після того як система з Бейсиком визнала програму правильною і запуск програми привів до якихось результатів, її треба перевірити, використавши такі вхідні дані, для яких результати відомі заздалегідь Це основна умова прийнятності програми Тестові дані повинні забезпечувати перевірку всіх або якомога більшої кількості різних шляхів у про-

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

Стани змінних програми та шляхи її виконання завжди можна зобразити за допомогою операторів PRINT, які так легко додати в програму на Бейсике і видалити з неї Не забувайте про можливість негайного виконання операторів PRINT (набраних без номера рядка, див розд 24), що дозволяють зображати значення змінних після припинення роботи програми через помилку або в результаті виконання оператора END Наприклад, нехай програма обчислення коренів квадратного рівняння видає помилкові результати Квадратне рівняння виду

ах2 + + С = 0 має два корені:

Помилкова програма така:

10 REM вирішення квадратного рівняння 20 INPUT КОЕФІЦІЄНТИ; А, В, С

30 D=B*B-4*A*C

4в IF D <0 THEN 100

50   D=SQR(D)

6е R1 =-B + D / 2 * A

70   R2=-B-D/2»A

80 PRINT ДВА КОРНЯ рівняння рівні; R1 І; R2

90 STOP

100 PRINT мають тільки уявних коренів 110 END RUN

КОЕФІЦІЄНТИ1-56

ДВА КОРНЯ рівняння рівні 55В І 45в

Ці результати помилкові, тому що коріння даного квадратного рівняння х2-5х + 6 = 0 дорівнюють 2 і 3 (неважко перевірити, що (х-2) -3) = Х2-5х +6) Спробуйте роздрукувати внутрішні значення за допомогою негайно виконуваного оператора PRINT:

PRINT D А В З             1   1 -5   6

Всі вони правильні тому тепер треба перевірити правильність обчислень R1 і R2 в рядках 60 і

70 У даному випадку не можна роздрукувати ніякої

іншої корисної інформації, але в більш складних програмах може ПОНАБ перевірка значень великого числа змінних Спробуйте виконати обчислення, що призводять до значення R1:

R1 = – (-5) +1 / 2 * 1 = 5 +1 / 2, в той час як правильним було б

Таким чином, рядки 60 і 70 повинні мати вигляд

60   R1 = (-B+D)/(2*A) 70   R2=(-B-D)/(2*A)

62 ВИЯВЛЕННЯ ПОМИЛОК

У припущенні, що синтаксичні помилки рано чи пізно будуть локалізовані за допомогою інформації, наданої компілятором / інтерпретатором, справжній розділ присвячений засобам локалізації помилок, що виникають під час виконання програми У багатьох системах такі помилки призводять до припинення виконання програми та зображення повідомлення про помилку або номера помилки Так як нічого іншого не залишається, то для виявлення причини помилки програміст повинен покладатися на оператори PRINT і ретельну перевірку тексту програми Якщо системою видається тільки номер помилки, то за допомогою набору спеціального символу або особливої ​​команди можна отримати повне повідомлення про помилку Наприклад, в системі ВВС такою командою служить REPORT

У наступних розділах описані два інших основних засоби, дуже корисних для виявлення помилок Перше з них забезпечує відстеження (трасування) номерів виконуваних операторів програми Друге дозволяє програмі самої реагувати на виникнення помилки і виконувати з цього приводу певні дії Це досить екзотична можливість вона розрахована не на обробку звичайних помилок, що виникають при розробці програм, а на усунення помилкових ситуацій при експлуатації програми Такі ситуації можуть бути викликані помилками в наборі даних на клавіатурі, електричними перешкодами в сполучних кабелях, в результаті чого програмі можуть передаватися дивні символи І в цьому випадку замість зупинення і перезапуску програми можна виконати певні дії і продовжити її виконання

Джерело: Уолш Б Програмування на Бейсике: Пер з англ М: Радіо і звязок, 1988 336 с: ил

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*