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




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Турбо С: руководство пользователя. Часть 1
Автор ""
Размер 993495 Байт
Страница 19 из 69
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

                                                                                
     равно 0, что является неправильным; длина первого слова обрабаты-          
     ваемой строки должна быть равна 2. Мы нашли ошибку!                        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
               Остановимся и подумаем                                           
     -----------------------------------------------------------------          
                                                                                
          Прежде чем вы исправите найденную ошибку, давайте обсудим ее          
     влияние на отлаживаемую программу.  Некорректная длина слова  (0)          
     "имеет" два значение. Во-первых, из-за нее неправильно увеличится          
     значение нулевого элемента массива wordlencnt. А во-вторых, нуле-          
     вая длина приведет к тому,  что после обработки оператора wordptr          
     += i,  значение указателя wordptr не изменится. Из-за этого, вто-          
     рая итерация  цикла  loop  начнется  с  тем  же  самым  значением          
     wordptr, что и в первой.  Поэтому,  точно также как и при  первом          
     обращении к  wordlen (когда она вернула 0),  повторный вызов этой          
     функции также возвратит все тот  же  0.  Следовательно,  значение          
     wordptr останется неизменным и в третьей итерации цикла loop, и в          
     четвертой, и в последующих. Таким образом, найденная ошибка явля-          
     ется причиной "зависания" вашего компьютера.                               
                                                                                
          Какой вывод  можно сделать из проведенного исследования?  Вы          
     можете подумать, что найденная ошибка объясняет только часть неп-          
     равильной работы WORDCNT или же, что неправильная работа програм-          
     мы объясняется не только найденной ошибкой.  Для того, чтобы уви-          
     деть, что  же  происходит  дальше,  в  обоих  случаях  вы  можете          

                         - 153,154 -
                                                                                
                                                                                
     захотеть вновь запустить программу.  Сделав это, вы захотите сос-          
     редоточиться на обнаружении новых ошибок, причем, понятно, вы за-          
     хотите, чтобы уже просмотренный фрагмент программы  работал  пра-          
     вильно.                                                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
               Что же делать?                                                   
     -----------------------------------------------------------------          
                                                                                
          Вы выяснили,  что неправильная  работа  WORDCNT  объясняется          
     ошибкой в функции wordlen.  Кроме того вы точно определили, в чем          
     выражается неправильная работа этой функции.  Чуть позже мы  вер-          
     немся к этим рассуждениям, а сейчас давайте познакомимся с коман-          
     дами отладчика. В процессе вашей первой попытки отладки программы          
     WORDCNT вы делали следующее:                                               
                                                                                
          # убеждались в том, что опции Debug/Source Debugging и O/C/C          
            /OBJ Debug включены (On).                                           
                                                                                
          # для подготовки WORDCNT к  отладке  выбирали Compiler/Build          
            All.                                                                
                                                                                
          # пользуясь командами редактора, перемещали курсор на нужные          
            фрагменты WORDCNT;  выбирали Break/Watch/Toggle Breakpoint          
            для установки точек останова в позиции курсора; для запус-          
            ка WORDCNT до заданной точки останова пользовались Run/Run          
            (или же "горячей" клавишей Ctrl-F9).                                
                                                                                

                         - 155,156 -
                                                                                
                                                                                





# пользовались Run/USER SCREEN или Alt-F5 для просмотра вы- ходных данных вашей программы на пользовательском экране. # для обработки операторов функции main (по одной строке программы за шаг) выбирали Run/Step Over (или же нажимали "горячую" клавишу F8). # выбрав Debug/Evaluate (или нажав Ctrl-F4), просматривали значения нескольких переменных. # проанализировав найденную ошибку, сделали вывод, что она объясняет некорректную работу WORDCNT и, поэтому, требует немедленного исправления. Содержимое окна вычислений, установленное по умолчанию ----------------------------------------------------------------- Напомним, что выбор Debug/Evaluate переносит в поле вычисле- ний слово, на которое указывает курсор в окне редактирования. Благодаря этому, вы можете облегчить себе работу, если перед об- ращением к Debug/Evaluate установите курсор над переменной , зна- чение которой вы хотите оценить. Даже если все выражение, которое вы хотите вычислить, является весьма сложным, то вы можете значи- тельно ускорить его ввод, если будете редактировать принятое по умолчанию в окно вычислений выражение, а не вводя его на пустом месте. Более того, нажимая клавишу со стрелкой вправо вы можете "перенести" из окна редактирования в окно вычислений еще несколь- ко требуемых вам символов. Каждый раз, когда вы будете нажимать эту клавишу, будет выполняться перенос одного символа. Например, пусть вы хотите вычислить значение выражения linebfr[i-1], которое находится в следующей строке исходного фай- ла: if (linebfr[i-1] != '\n' ) - 157,158 - Для этого переместите курсор к linebfr и выберите Debug/Evaluate. В поле вычислений (Evaluate) будет скопировано слово linebfr. Нажав пять раз клавишу со стрелкой вправо, добавь- те к этому слову [i-1], затем нажмите Ввод. Изменение значения оцениваемого выражения ----------------------------------------------------------------- Элемент меню Debug/Evaluate способен изменять значения неко- торых типов выражений, а именно, тех выражений, которые соответс- твуют конкретному элементу данных, например: i, linebfr[i] или *(linebfr+i). Попробуем вычислить значение переменной i, а затем изменить его. После того, как для получения значения переменной i вы наж- мете Ввод, отладчик выведет это значение в поле результата. Пе- рейдите (с помощью клавиши со стрелкой вниз) в поле нового значе- ния и введите в него то значение, которое вы хотите присвоить i. Например, вы можете ввести i+1 (с целью увеличения i на страницу) или же просто 17. После того, как вы нажмете Ввод, отладчик вы- числит введенное вами выражение, изменит значение i, а затем вы- ведет в поле результата новую величину. (Замечание: Запомните! После того, как в поле новой величины в нажмете Ввод, значение переменной будет измененно в соответствии с введенным выражением и нажатие после этого клавиши Esc не приведет к отмене сдаланных изменений.) Для того, чтобы выйти из Debug/Evaluate, нажмите Esc, затем снова выберите Debug/Evaluate и посмотрите значение пере- - 159,160 - менной i с тем, чтобы убедиться в том, что оно изменилось. После этого восстановите старое значение i и опять выйдите из Debug/Evaluate. Изменив значение какого-либо выражения, вы можете избежать проявления программной ошибки, что позволит вам запустить свою программу дальше, в результате чего могут быть найдеты какие-либо дополнительные ошибки. Кроме этого изменение значений выражений


Страницы : 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69


adfun.ru









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

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

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

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