BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Turbo Debugger 3.0 #2-3
Автор ""
Размер 408406 Байт
Страница 35 из 40
СКАЧАТЬ КНИГУ ЦЕЛИКОМ


       TDeb 3.0 #2-3               = 148 =

            'O' occurs 2 times, 1 times at start of a word
            'R' occurs 1 times, 0 times at start of a word
            'U' occurs 1 times, 0 times at start of a word
            There is one word 3 characters long                     (8)
            There is one word 4 characters long                     (9)

            1 -  аргументы;  2 - введите строку (пустая строка завершает
       ввод);  3 - общее число букв;  4 - общее число строк;  5 -  общее
       число слов; 6 - среднее число слов на строке; 7 - 'E' встречается
       1 раз,  0 раз в начале слова; 8 - имеется одно слово длиной в три
       символа; 9 - имеется одно слово длиной в 4 символа.

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

                          Разработка плана действий
       ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

            Теперь, после того, как вы немного обдумали проблему и наме-
       тили  в  общих  чертах пути решения,  пора начать отладку.  Здесь
       стратегия будет состоять  в  том,  чтобы  проверить  подпрограмму
       makeintowords и посмотреть,  правильно ли она разбивает строку на
       завершающиеся нулевым символом слова,  а затем  посмотреть,  пра-
       вильно  ли подпрограмма analyzewords выполняет подсчет для анали-
       зируемой строки.

                           Запуск Турбо отладчика
       ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

            Чтобы запустить пример сеанса отладки, наберите:

               TD BCDEMOB

            При этом Турбо отладчик загрузит демонстрационную программу,
       в которой содержится ошибка,  и выведет начальный экран.  Если вы
       хотите выйти из сеанса отладки и вернуться в DOS, нажмите клавиши
       Alt-X  (это  можно  сделать  в любой момент).  Если вы безнадежно
       "заблудились", можно в любое время перезагрузить демонстрационную
       программу, нажав клавиши Ctrl-F2, и начать сначала (при этом точ-
       ки останова и выражения просмотра очищены не будут).


       TDeb 3.0 #2-3               = 149 =

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

            Убедиться в правильности работы  подпрограммы  makeintowords
       довольно просто.  Для этого можно проверить формируемый ей выход-
       ной буфер.  Давайте выберем второй подход. Чтобы сделать это, пе-
       реместите  курсор  на  строку  42 и нажмите клавишу F4,  выполнив
       программу до этой строки.  Появится экран программы,  после  чего
       вам нужно ввести:

               one two three

       и нажать клавишу Enter.

                                  Проверка
       ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

            Итак, вы остановились на строке исходного кода  после вызова
       функции makeintowords. Взгляните на содержимое буфера и посмотри-
       те,  все ли правильно.  Переместите курсор на одну строку вверх и
       поместите его под словом buffer. После этого нажмите Alt-F10 (для
       вывода окна Inspector (Проверка)).  В окне проверки выведется со-
       держимое буфера buffer.  Для просмотре элементов массива  исполь-
       зуйте   клавиши  стрелок.  Обратите  внимание,  что  подпрограмма
       makeintowords действительно поместила в конце каждого слова нуле-
       вой  символ (0).  Это означает,  что вам нужно просмотреть другую
       часть программы и проверить,  правильно ли работает  подпрограмма
       analyzewords. Для этого сначала удалите окно проверки, нажав кла-
       вишу Esc. Затем дважды нажмите клавишу F7 для выполнения програм-
       мы до начала работы analyzewords.

            Проверьте, что analyzewords была вызвана с корректным указа-





телем в буфере. Для этого переместите курсор под bufp и нажмите Alt-F10 I. Вы увидите, что bufp действительно указывает на завер- шающуюся нулевым символом строку 'one'. Для удаления окна про- верки нажмите клавишу Esc. Поскольку ошибка возникает, очевидно, при подсчете символов и слов, давайте поместим точку останова в то место, где подсчитываются слова и символы. 1. Переместите курсор на строку 93 и нажмите клавишу F2, чтобы установить точку останова. 2. Переместитесь на строку 97 и установите другую точку ос- танова. 2. Наконец, установите точку останова на строке 99, благода- ря чему вы сможете увидеть значение счетчика символов, TDeb 3.0 #2-3 = 150 = возвращаемое данной функцией. Задание нескольких точек останова (как в данном примере) - это типичный способ, позволяющий узнать, все ли в программе дела- ется правильно, и проверить значения важных данных при каждом ос- танове программы на очередной точке останова. TDeb 3.0 #2-3 = 151 = Окно Watch ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Запустите программу, нажав клавишу F9. Программа остановит- ся, когда она достигнет точки останова на строке 93. Теперь можно просмотреть значение charcount (счетчик символов). Так как вы хо- тите проверять его каждый раз, когда встречается данная точка ос- танова, удобно использовать команду Watch (Просмотр), чтобы по- местить charcount в окно Watches (Просмотр). Переместите курсор под wordcounts (счетчик слов) и нажмите Alt-F10 W. В окне прос- мотра в нижней части экрана выводится текущее значение 0. Чтобы убедиться, что символ подсчитывается правильно, выполните одну строку, нажав клавишу F7. В окне просмотра (Watches) действитель- но выводится, что значение charcount = 1. Диалоговое окно Evaluate/Modify ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Снова запустите программу, нажав клавишу F9. Теперь вы вер- нулись на строку 93 для обработки другого символа. Снова дважды нажмите F9 для считывания последней буквы слова и завершающего нуля. Теперь charcount показывает корректное значение 3, а массив wordcounts будет обновлен для подсчета слов. Далее все отлично. Нажмите снова F9, чтобы начать обработку следующего слова в буфе- ре. Ага! Что-то не так. Вы ожидаете, что программа остановится снова на строке 93 (на точке останова) для обработки другого символа. Но она этого не делает. Она выполняется дальше и возвращается из функции. Единственным путем оказаться на строке 99 является истинное зна- чение проверяемого в цикле while значения. Это означает, что *bufp != 0 должно при вычислении получать ложное значение (false). Чтобы проверить это, переместитесь к строке 83 и отметьте все выражение *bufp != 0, поместив курсор под *, нажав клавишу Ins, и переместив курсор на завершающий 0 перед ). Теперь вычис- лите это выражение, открыв диалоговое окно DataіEvaluate/Modify (ДанныеіВычисление/Модификация) и нажав клавишу Enter, а затем выбрав переключатель Eval (Вычисление), чтобы отмеченное выраже- ние было воспринято. Значение в самом деле равно 0. Нажмите дваж- ды клавишу Esc для возврата в окно Module (Модуль). Эврика! ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Теперь, чтобы обнаружить ошибку, нужно сделать некий анали- тический скачок. Причина того, что bufp указывает на 0, состоит в том, что внутренний цикл while, начинающийся на строке 86, остав- ляет его в конце слова. Для продолжения на следующем слове вы должны увеличить bufp и переместить его с 0, который завершал TDeb 3.0 #2-3 = 152 = предыдущее слово. Для этого перед строкой 97 нужно добавить опе- ратор "bufp++". Вы можете перекомпилировать свою программу с этим оператором, однако Турбо отладчик позволяет вам "вставлять" выра- жения, используя для этого особый вид точек останова. Для этого нужно сначала перезагрузить программу, нажав кла- виши Ctrl-F2 (после этого вы можете начать проверку, сбросив сос- тояние программы). Теперь удалите все точки останова, которые бы- ли вами установлены в предыдущем сеансе отладки, для чего нажмите клавиши Alt-B D. Вернитесь к строке 97 и снова установите точку останова, нажав клавишу F2. Теперь откройте окно Breakpoints (Точки останова), нажав клавиши ALt-V B. Установите эту точку ос- танова, чтобы выполнять выражение bufp++ каждый раз, когда оно встречается. Для этого сделайте следующее: 1. Выберите команду ViewіBreakpoint (ОбзоріТочка останова). 2. Откройте окно Breakpoints (Точки останова), нажав клавиши


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.