Главная » Basic » ДИАГНОСТИКА

0

После того как система с Бейсиком сочла программу правильной и запуск программы привел  к каким-либо  результатам,  ее  надо  проверить,  использовав  такие  входные  данные,  для  которых результаты известны заранее. Это основное условие приемлемости программы.  Тестовые данные должны обеспечивать проверку всех или как можно большего числа различных путей в про-

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

Состояния переменных программы и  пути  ее  выполнения всегда можно изобразить с  помощью операторов PRINT,  которые так  легко  добавить в  программу на  Бейсике и  удалить  из  нее.  Не забывайте  о  возможности  немедленного  исполнения  операторов  PRINT  (набранных  без  номера строки, см. разд. 2.4), позволяющих изображать значения переменных  после прекращения работы программы из-за ошибки или в результате выполнения оператора 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.-5.6

ДВА  КОРНЯ  УРАВНЕНИЯ  РАВНЫ  5.5в   И   4.5в

Эти результаты ошибочны, так как   корни   данного квадратного уравнения х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)

6.2.  ВЫЯВЛЕНИЕ ОШИБОК

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

В  следующих разделах описаны два  других  основных средства, очень полезных для  выявления ошибок. Первое из них обеспечивает отслеживание (трассировку) номеров выполняемых операторов программы. Второе позволяет программе самой реагировать на возникновение ошибки и выполнять по этому поводу определенные действия. Это довольно экзотическая возможность; она рассчитана не на  обработку  "обычных"  ошибок,  возникающих   при  разработке  программ,  а  на  устранение ошибочных ситуаций при эксплуатации программы. Такие ситуации могут быть вызваны ошибками в наборе данных на клавиатуре, электрическими помехами в соединительных кабелях, в результате чего  программе  могут  передаваться  "странные"  символы.  И  в  этом  случае  вместо  останова  и перезапуска программы можно выполнить определенные действия и продолжить ее исполнение.

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии