![]() |
|
Программирование >> Процедурные приложения
- П MicrotcK Viiual [;*♦ - Icrrcii.c ] !: Fie £di iirt Piojecl Euid Icaii idow Даф 11 iJI ijobal membefs] 1 4 main 11 V/Qikspac&Q. 1 pio ;-; Ш I) Wet I □ SouiceRlK El Piei.i ~l Reaourca Fii *LHjcliidje <Btdici.h> fdefine S void pirint Hiera( LJit of feet, char continu, ijit ieiTav[5IZ void naiii void ) { inl iarray[SIZE]; char CQntitiu= Q; print tluer*(of iset.Qontinu, iarray); > Iitit Ё fNnMiVelccss 4 tracQ dmonElrat ion I scillE ( Jic , cort I inu); ii fcorttinw-- V ) for (pffset-a: □Efset { SIZ£. □Ef5>et++) { printi (\nPlcaLsc enter em intcgrr: caatCd .iiicTioT [□((set] ) ; print IheraСoffЕПt. continu. inrray) .У void jjrint lhjentCLiit nffset. char continu, int iaiTavCSIZ {printf (xnVniid . ofEset); print£ ( ппЩ , continu); far(DEfaet-D; oEtsst С SIZE, offset++J pi-irit £ ( \nd, iflrT-ay[of f eat 1 ); J- ConpiLing... error.с -Ccmfiguraticm: 0 - tfin32 Debug- am filesnicrosoEt .e(12) : varnin c:BPЧJ* f ileaMiiereioEt visual atudiaMivproject.sClrror .c( L6 ) error Prnlfuiidelincd. jKsmina eUcrn iciiiin-i 1 1л1г,Са2 RECCOL(JVfl IRE/i Рис.3.12. Окно сообщений во время третьей попытки построить исполняемый файл Теперь обнаруживаем, что та же строка, которая содержала некорректное имя функции (Printf()),заключает в себе еще одну ошибку. В C/C++ все строковые значения должны браться в двойные кавычки. Значит, в нашем случае открывающие кавычки в функции printf () следует поставить сразу после открывающей круглой скобки, т.е. строка должна начинаться следующим образом: printf( . Сохраните файл и попытайтесь еще раз построить программу. Как выглядит окно сообщений после очередного обновления, показано на рис. 3.13. ![]() Рис. 3.13. Окно сообщений во время четвертой попытки построить исполняемый файл На этот раз выдается такое сообщение об ошибке: syntax error: missing ;before ) В C/C++, в отличие от Pascal, символ точки с запятой используется для обозначения окончания выражения, а не в качестве разделителя. Таким образом, в конце второй проверки в цикле for необходимо ввести точку с запятой. После исправления сохраните файл и вновь выполните команду RebuildAll. Все в порядке? Судя по окну сообщений, у компилятора нет больше претензий к вашей программе, и команда RebuildAll успешно сгенерировала исполняемый файл ERROR.EXE. В окне сообщений должны отсутствовать сообщения об ошибках, но присутствовать одно предупреждение, которое можно проигнорировать. Если это не так, значит, вы допустили ошибки при вводе программы. Проверьте программный код и исправьте его. Запуск программы Чтобы запустить программу, просто выберите в меню Project команду Execute. Если в ответ на запрос программы Would you like to continue(Y/N) вы нажмете клавишу [Y], а затем [Enter], на экране отобразится следующее: -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 Welcome to a trace demonstration! Would you like to continue (Y/N)у На рис. 3.14 показано, что произойдет далее. ![]() Рис. 3.14. Сообщение об ошибке выполнения программы Использование встроенного отладчика Созданная нами программа в начале своей работы отображает на экране исходное содержимое массива данных, после чего спрашивает, хотите ли вы продолжить работу. Ответ Y (yes- да) сигнализирует о том, что вы хотите заполнить массив собственными данными и отобразить их на экране. Из рис. 3.14 можно сделать вывод о том, что хотя программный код набран совершенно правильно, т.е. в нем нет синтаксических ошибок, программа работает не так, как нам бы хотелось. Ошибки такого рода называются логическими. К счастью, встроенный в VisualC++ отладчик содержит ряд средств, которые послужат для вас спасательным кругом в подобной ситуации. Во-первых, вы можете выполнять программу пошагово, строка за строкой. Во-вторых, вам предоставляется возможность анализировать значения переменных в любой момент выполнения программы. Разница между командами StepInto и StepOver Когда вы начинаете процесс отладки, появляется панель инструментов Debug. Из множества представленных на ней кнопок наиболее часто задействуются StepInto (четвертая справа в верхнем ряду) и StepOver(третья справа). В обоих случаях программа будет запущена на выполнение в пошаговом режиме, а в тексте программы выделяется та строка, которая сейчас будет выполнена. Различия между командами StepInto и StepOver проявляются только тогда, когда в программе встречается вызов функции. Если выбрать команду StepInto, то отладчик войдет в функцию и начнет выполнять шаг за шагом все ее операторы. При выборе команды StepOver отладчик выполнит функцию как единое целое и перейдет к строке, следующей за вызовом функции. Эту команду удобно применять в тех случаях, когда в программе делается обращение к стандартной функции или созданной вами подпрограмме, которая уже была протестирована. Давайте выполним пошаговую отладку нашей программы.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |