Главная » Basic » РАЗРАБОТКА ПРОГРАММ

0

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

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

6.1.  ОТЛАДКА

Отладкой называется выявление и устранение ошибок в программе.

6.1.1.  ПРОСТЫЕ ОШИБКИ

Наиболее  часто  встречаются  ошибки,  порожденные  простыми  опечатками  при  наборе   текста программы или  некоторым недопониманием действия некоторых операторов Бейсика,  например циклов  FOR-NEXT.  Некоторые  опечатки  обнаруживаются  системой  при  проверке   синтаксиса каждого оператора. Другими словами, система тщательно проверяет, является ли каждый оператор программы допустимым оператором Бейсика. В некоторых системах с Бейсиком (наиболее удобных для начинающих) проверка осуществляется тотчас же после ввода строки, например:

10   Y=6*X+5Z+2          (нажмите клавишу возврата каретки или SEND) SYNTAX ERROR

В этом случае строку надо исправить на

10   Y=6*X+5*Z+2 Но если вместо этой строки будет набрано

10  Y=X*6+Z5+2

то сообщение об ошибке не появится, так как строка синтаксически правильна, хотя на самом деле должна быть

10   Y=X*6+Z*5 + 2

Многие  системы  с  Бейсиком  проверяют  наличие  синтаксических  ошибок  только  после  запуска программы по команде RUN. Это не слишком удобно для начинающих  программистов,  которые чаще всего делают тривиальные ошибки и в результате получают множество сообщений об ошибках. Этого бывает достаточно для того, чтобы будущий программист потерял надежду добиться успеха. Если   Вы   сами   окажетесь   в   подобной    ситуации,   то   придерживайтесь   золотого   правила сконцентрироваться  на  одном  или  двух   первых  сообщениях  в  списке  ошибок  и  совершенно игнорировать  все  остальные.  Часто   бывает  так,  что  из-за  неправильного  оператора  в  начале программы последующие операторы могут быть сочтены системой ошибочными, хотя по сути они правильны. Устранение одной-двух первых ошибок может привести к исчезновению многих других; поэтому  при  новом  запуске  программы  по  команде  RUN  могут  остаться  сообщения только  об истинных ошибках.

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

10    DIM АА(10),В1 (20,5), С1 (2,3) при наличии в программе операторов вида 100     ВВ(16,1)=2*

С(1)+20

может явиться причиной недоразумений из-за того, что в качестве массива был определен В1 (,), а не ВВ и С1 (,), а не С ( ). Либо Вы ошиблись в написании имени массива при его определении в строке 10, либо собирались использовать новые массивы в строке 100. Из-за подобной небрежности легко угодить в ловушку, так как, по мнению автора, Бейсик слишком "великодушен" при обнаружении не определенного ранее массива: вместо сообщения об ошибке он  предполагает, что по умолчанию одномерный массив имеет размер 10, а двумерный 10,10.  Если Вы не собирались использовать новый массив и набрали ВВ по ошибке вместо В1, то сообщения об ошибке не получите.

Подытожим:  синтаксическая  проверка  обнаруживает  обычные  ошибки  и  опечатки  в   любых служебных словах, например INPUT, PRINT и т. д., но, возможно, осуществляется  только после запуска  программы  по   команде  RUN.   Поэтому  нередко  рекомендуется   попробовать  любую конструкцию, в которой Вы не уверены, в программе всего из нескольких строк, возможно, никак не связанной с программой, которую требуется разработать. Чаще всего трудности связаны с циклами FOR-NEXT и массивами.

В цикле FOR-NEXT Вы не должны изменять управляющую переменную — система заботится  об этом сама. Если возникают какие-то сомнения, всегда

включайте операторы PRINT для демонстрации происходящих в программе действий: 10 REM ТЕСТ ЦИКЛА

20 INPUT "НАЧАЛЬНОЕ ЗНАЧЕНИЕ";S

30 INPUT "КОНЕЧНОЕ ЗНАЧЕНИЕ";Т

40 INPUT "ШАГ";S1

50 PRINT "ЦИКЛ FOR I=";S;"TO";T;"STEP";S1

60 FOR I=S TO T STEP S1

70   PRINT "В ЦИКЛЕ FOR I=";I

80 NEXT I

90 PRINT "ВЫХОД ИЗ ЦИКЛА"

100 END

Эта программа несколько замысловата, но в точности демонстрирует то, что происходит в  цикле

FOR-NEXT. Даже простого текста, например

10   FOR 1 = 1 ТО 5 20     PRINT I

30  NEXT I

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

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

Наконец, не забывайте проверять такие простые опечатки, как замена 1 на I или 1 (букву) или  О (буквы) на 0 (цифру). Оки часто происходят при наборе этих символов в комбинациях с  другими символами, что затрудняет обнаружение разницы; например, АО может быть написано  вместо А0 или I=1+1 вместо I=I+1.

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

По теме:

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