Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Программирование на Delphi (2009.12.1....doc
Скачиваний:
7
Добавлен:
27.10.2018
Размер:
801.79 Кб
Скачать
    1. Компиляция и исправление синтаксических ошибок

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

Ошибки, которые могут быть в программе, принято делить на три группы:

  • синтаксические;

  • ошибки времени выполнения;

  • алгоритмические.

Синтаксические ошибки, их также называют ошибками времени компиляции (Compile-time error), наиболее легко устранимы. Их обнаруживает компилятор, а программисту остается только внести изменения в текст программы и выполнить повторную компиляцию.

Наиболее часто встречающиеся синтаксические ошибки:

[Error] Unit1.pas(42): ':=' expected but '=' found – Вместо ожидаемого символа (или набора символов, например := в тексте программы встречается иное.

[Error] Unit1.pas(43) : Missing operator or semicolon – пропущена точка с запятой - ;

[Error] Unit1.pas(49) : Undeclared identifier: 'x' – Не объявленный идентификатор. Проверьте правильность имени идентификатора. Возможно вы пропустили какой-нибудь символ например x1.

[Error] Unit1.pas(57): ';' expected but '.' found – Неправильно составлены блоки заканчивающиеся на end. Часто ошибка встречается в циклах.

[Error] Unit1.pas(51): ')' expected but ';' found – Пропущена закрывающаяся скобка. Ошибка встречается при вызове методов, процедур или функций с параметрами. Внимательно проверьте количество открывающихся и закрывающихся скобок должно быть одинаковым.

    1. Запуск программы.

Запуск программы можно выполнить непосредственно из Delphi, не завершая работу со средой разработки. Для этого нужно из меню Run выбрать команду Run или щелкнуть на соответствующей кнопке панели инструментов Debug ().

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

    1. Отладка программы и исправление логических ошибок.

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

Ошибки времени выполнения, в Delphi они называются исключениями (exception), тоже, как правило, легко устранимы. Они обычно проявляются уже при первых запусках программы и во время тестирования.

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

После возникновения ошибки программист может либо прервать выполнение программы, для этого надо из меню Run выбрать команду Program Reset <F12>, либо продолжить ее выполнение, например, по шагам (для этого из меню Run надо выбрать команду Step), наблюдая результат выполнения каждой инструкции.

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

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

Интегрированная среда разработки Delphi предоставляет программисту мощное средство поиска и устранения ошибок в программе — отладчик. Отладчик позволяет выполнять трассировку программы, наблюдать значения переменных, контролировать выводимые программой данные.

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

В случае неправильной работы программы необходимо видеть реальный порядок выполнения инструкций. Это можно сделать, выполнив трассировку программы. Трассировка — это процесс выполнения программы по шагам (step-by-step), инструкция за инструкцией. Во время трассировки программист дает команду: выполнить очередную инструкцию программы.

Delphi обеспечивает два режима трассировки: без захода в процедуру (Step over) и с заходом в процедуру (Trace into). Режим трассировки без захода в процедуру выполняет трассировку только главной процедуры, при этом трассировка подпрограмм не выполняется, вся подпрограмма выполняется за один шаг. В режиме трассировки с заходом в процедуру выполняется трассировка всей программы, т. е. по шагам выполняется не только главная программа, но и все подпрограммы.

Для того чтобы начать трассировку, необходимо из меню Run выбрать команду Step over или Trace into. В результате в окне редактора кода будет выделена первая инструкция программы. Для того чтобы выполнить выделенную инструкцию, необходимо из меню Run выбрать команду Step over (нажать клавишу <F8>) или Trace into (нажать клавишу <F7>). После выполнения инструкции будет выделена следующая. Таким образом, выбирая нужную команду из меню Run, можно выполнить трассировку программы. Активизировать и выполнить трассировку можно при помощи функциональной клавиатуры. Команде Step over соответствует клавиша <F8>, а команде Trace into — клавиша <F7>.

В любой момент времени можно завершить трассировку и продолжить выполнение программы в реальном темпе. Для этого надо из меню Run выбрать команду Run клавиша <F9>.

При необходимости выполнить трассировку части программы следует установить курсор на инструкцию программы, с которой надо начать трассировку, и из меню Run выбрать команду Run to cursor или нажать клавишу <F4>. Затем, нажимая клавишу <F7> или клавишу <F8>, выполнить трассировку нужного фрагмента программы.

Для трассировки программы используем 3 отладочных окна. Call Stack – Стек вызовов. Отображает иерархию вызовов методов, процедур и функций. Watches – Окно в котором можно отобразить значения переменной во время трассировки. Local Variables – окно отображающее все локальные переменные. Активируем несколько окон отладчика, расположенные в меню View в группе Debug Windows.

При нажатии на Call Stack на экране появляется пустое окно с одноименным названием. Переместите его за заголовок в нижний левый угол окна редактора кода. Таким же образом добавьте окна Watches и Local Variables.

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

Точку останова можно добавить, щелкнув мышью на синей точке, помечающей ту инструкцию программы, перед которой надо поместить точку останова (если в программе нет ошибок, то компилятор помечает выполняемые инструкции программы синими точками) (рисунок 1.17).

Для того чтобы во время выполнения программы по шагам иметь возможность контролировать значение переменной, нужно добавить имя этой переменной в список наблюдаемых элементов (Watch List). Для этого надо из меню Run выбрать команду Add Watch или в окне Watches из контекстного меню выбрать пункт Add Watch (Добавить наблюдаемый элемент) и в поле Expression появившегося диалогового окна Watch Properties (рисунок 1.18) ввести имя переменной.

В качестве наблюдаемого элемента можно указать поле объекта, например Edit1.text.

Запустите программу, заполните поля коэффициентов и нажмите на кнопку вычислить. Программа остановит свое выполнение на точке останова. Далее проведите трассировку программы. Следите за значениями в окнах отладки Watch List и Local Variables.

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