Отладка и пошаговое выполнение программы

Операция typedef

Любому типу данных, как стандартному, так и определенному пользователем, можно задать новое имя с помощью операции typedef:

typedef тип новое_имя ;

Введенный таким образом новый тип используется аналогично стандартным типам; например, можно ввести пользовательские типы:

 

typedef unsigned int UINT; – здесь UINT – новое имя для типа unsigned int;

typedef char M_s [101]; –здесь M_s – тип пользователя, определяющий строки, длиной не более 100 символов.

Декларации объектов введенных типов будут иметь вид:

UINTi, j; ® две переменные типа unsigned int ;

M_s str[10]; ® массив из 10 строк по 100 символов.

 

Рассмотренная операция упрощает использование указателей на функции.


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

При отладке необходимо:

- проверять работу программы при различных исходных данных;

- выводить на экран не только окончательные, но и промежуточные результаты программы, чтобы проверить их правильность.

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

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

Среда С++ Builder обладает богатейшими средствами пошагового выполнения программ (для их использования служат команды среды C++ Builder'а, которые могут быть вызваны либо через ее меню (пункт Run), либо через горячие клавиши):

- точки останова;

- клавиши пошагового выполнения (с заходом в функцию и без);

- просмотр значений переменных во всплывающей подсказке или в отдельном окне;

- просмотр массивов и строк как целого.

 

Точка останова - это строка программы, достигнув которой, машина приостанавливает процесс выполнения программы, давая человеку возможность просмотреть текущие результаты и значения переменных. Точка останова может быть поставлена на любую строку программы, содержащую исполняемые операторы (не объявления), с помощью щелчка мыши слева от строки, и убирается так же. Точка останова в среде С++ Builder выделяется красным цветом. В одной программе одновременно может быть несколько точек останова. Кроме того, с помощью команды Run to cursor (клавиша F4) можно заставить программу выполняться до того места, где стоит курсор, и остановиться по его достижении (подобно одноразовой точке останова). Однако при "перескакивании" (невыполнении) строки программы с точкой останова (например, с помощью оператора if ) выполнение программы не приостанавливается.

Чтобы в момент останова посмотреть текущее значение переменной, в среде С++ Builder достаточно просто подвести курсор мыши к имени этой переменной в любом месте текста программы и ненадолго задержать его там. Значение переменной появится во всплывающей подсказке. (Разумеется, показывается текущее (на момент останова) значение переменной, независимо от места текста, куда подведен курсор). Отображаются также значения строк и статических (нединамических) массивов, как целого. Но показываются лишь значения переменных, в чью область видимости входит точка останова.

Существует также возможность просматривать значения переменных в отдельном окне с помощью команды Evaluate / Modify(клавиша Ctrl+F7).

Чтобы продолжить выполнение программы до конца (либо до следующей точки останова), нужна команда Run (клавиша F9). Чтобы полностью прекратить выполнение программы, нужна команда Program Reset (клавиша Ctrl+F2). Но существует также возможность выполнения программы по одному оператору (точнее, по одной строчке) с помощью команд Trace Into (клавиша F7) или Step Over (клавиша F8). Различие между ними в том, что Trace Into заходит и внутрь функций для их пошагового выполнения, а Step Over выполняет любой вызов функции за один шаг. После каждого шага можно вновь просмотреть значения переменных; кроме того, становится наглядно видна последовательность выполнения операторов.

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