Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты с 1-12 по новому листку.docx
Скачиваний:
23
Добавлен:
09.02.2015
Размер:
95.39 Кб
Скачать

9.Этапы отладки программы

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

1Программирование — внесение в программу новой функциональности, исправление ошибок в имеющейся.

2Тестирование (ручное или автоматизированное; программистом, тестером или пользователем; «дымовое», в режиме чёрного ящика или модульное…) — обнаружение факта ошибки.

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

4Отладка — обнаружение причины ошибки.

Отладка программы. При построении сложных программ могут возникать ошибки. Их принято делить на 3 группы:

  1. синтаксические;

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

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

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

Будем считать, что программа запускается из оболочки Delphi.

После возникновения такой ошибки необходимо нажать «Ok» в окне сообщения об ошибке, а затем завершить выполнение программы – пункт меню «Run/Program reset» или нажать комбинацию клавиш <Ctrl><F2>. При возникновении такой ошибки курсор в программе будет указывать на строку, вызвавшую ошибку. Наиболее сложно обнаружить алгоритмические ошибки. Программа компилируется без ошибок, не дает ошибок при пробных запусках, но при анализе результатов выясняется, что результат неправильный. Необходимо вручную «прокрутить» алгоритм – требуется отладка программы.

Для трассировки программы (проверка «логики алгоритма»), т. е. выполнения программы по шагам, необходимо выполнить следующие действия. В пункте меню выбрать пункт «Run/Step over» или «Run/Trace in to» (клавиши <F8> и <F7> соответственно), команда «Run/Trace in to» отличаются более детальной трассировкой. Для прекращения трассировки и продолжения выполнения программы в автоматическом режиме необходимо выбрать пункт «Run/Run» или нажать <F9>. Остановить программу можно с помощью команды «Run/Program reset» или нажать комбинацию клавиш <Ctrl><F2>. Иногда необходимо выполнить трассировку с определенной строки программы. Для этого курсор подводят к интересующей строке и выполняют команду «Run/Run to cursor» или нажимают <F4>. Часто известно возможное место ошибки в алгоритме – тогда используют точку останова. Программист устанавливает на нужной строке курсор и ставит там точку останова с помощью команды «Run/Add Breakpoint» или нажав <F5>. Выбранная строка будет отмечена. Для снятия точки останова необходимо на этой строке снова нажать <F5>. При выполнении программа дойдёт до точки останова, затем программист сможет трассировать программу с помощью <F7> и <F8>. При необходимости можно указать условие остановки на точке останова (эта настройка осуществляется в окне «Breakpoints», пункт меню «Run/Add breakpoints»).

При выполнении программы по шагам часто необходимо не только проверять правильность «логики алгоритма», но и знать значения некоторых переменных. Для этого выполняют команду «View/Watch/Add watch» и вводят имя интересующей переменной либо подводят курсор к переменной, значение которой необходимо просмотреть, и нажимают <Ctrl><F5>. При трассировке программы в этом случае в окне «Watch list» можно наблюдать изменение значений интересующих переменных.

10. Создание и описание новых типов данных.

Новые типы данных. Когда необходимо объявить свой тип данных, то следует поместить его описание в разделе описания типов. В общем случае описание типов выглядит так:

Имя = Описание типа;

где

Имя – имя нового типа;

Описание типа описание возможных значений переменных созданного типа.

Замечание. При описании нового типа после имени типа ставится знак «равно», затем следует описание типа.

Примеры

DayOfWeek = (Monday, Wednesday, Friday);

Day = 1..31;

Тип подобного вида называется перечисляемым, переменные данного типа могут принимать только перечисленные значения. В примере это одно из названий дня недели (тип DayOfWeek) или одно из чисел от 1 до 31 (тип Day). С переменными перечисляемого типа можно использовать функции Pred(переменная) и Succ(переменная), возвращающие предыдущее (Pred) и последующее (Succ) из допустимых значений.

Примеры

Пусть объявлены переменные W : DayOfWeek и D : Day. Тогда:

W := Wednesday;

Succ(W); {Оператор вернет значение ‘Monday’}

D := 5;

Pred(D); {Оператор вернет значение ‘4’}

Замечания:

  1. Значения перечисляемого типа не могут содержать русские буквы.

  2. Обращение с помощью оператора Succ или Pred к последнему (для оператора Succ) или первому (для оператора Pred) элементу приведет к ошибке.