Реферат: Паскаль. Отладка программ
ReadLn
end.
Программа разбита на две основные части: метание костей и подведение итогов.
Первая часть реализует бесконечный цикл метания костей, ограниченный оператором repeat ... until false. Выбор оператора repeat мотивирован тем, что должен быть сделан, по крайней мере, один ход игры. Цикл может быть прерван оператором Break при переборе очков любым из игроков и при отказе обоих партнеров от продолжения игры. Объединение трех условий в одно и использование его как завершающего условия цикла repeat... until усложнит алгоритм, а применение для прекращения игры оператора Break алгоритм упрощает.
Цикл repeat... until с завершающим условием
(reply = 'у') or (reply = 'Y') or (reply ='n') or (reply = 'N');
продолжается до тех пор, пока не будет введен допустимый символ ('у', 'Y', 'п' или 'N') при ответе на вопрос о продолжении игры.
Для имитации метания костей применена функция Random с параметром — целым числом, равным 6. При таком использовании она дает случайные целые числа в диапазоне от 0 до 5 включительно.
Подведение итогов игры выполняют вложенные друг в друга операторы if. Возможные итоги игры проверяются последовательно. Если возможен вывод, выполняется часть then оператора. Если не возможен, выполняется часть else, в которой стоит оператор дальнейшего ветвления if.
Средства среды программирования для отладки программ
Среда Borland Pascal имеет несколько встроенных инструментальных средств отладки программ. С некоторыми из них мы уже познакомились. Механизм пошагового выполнения программы, вызываемый функциональной клавишей F7, и его варианты: пошаговое выполнение без входа в процедуры, вызываемое клавишей F8, и исполнение до заданной строки (клавиша F4) позволяют проверить, соответствует ли последовательность выполнения команд Вашим требованиям к алгоритму.
Эффективность отладки возрастает при совместном использовании различных инструментальных средств среды программирования. Для использования средств отладки должны быть включены опции компилятора: Debug information, Local symbols и Symbol information (меню Options/ Compiler). Если опции установлены, в файл включается специальная информация, допускающая применение средств отладки. В отлаженной программе эта информация не требуется, поэтому при компиляции программы как готового продукта опции отладки рекомендуется отключить. Инструментальные средства отладки доступны через меню Debug (отладка), приведенное на рисунке 5.4.
Из меню Debug можно вызвать три окна: Output, Watch и Call stack, которые как объекты интерфейса подобны окну с текстом программы. Они имеют порядковый номер, их размеры и положение изменяются так же, как размеры и положение любых текстовых окон. Они приводятся в списке окон меню Windows, могут активизироваться из этого меню. Любое из этих окон закрывается клавишами Alt + F3. Отличие от текстовых окон в том, что мы не можем выполнять в них свободную запись.
Пункт User screen позволяет увидеть пользовательский экран — экран, в который выводится текстовая и графическая информация при исполнении программы. Естественно, такая потребность возникает часто, поэтому
Окно стека Окно отладки
Просмотр и изменение переменной
Добавить контрольные точки
Контрольные точки Окно регистров Окно программы
Пользовательский экран
Добавить в окно отладки
стоит запомнить комбинацию клавиш Alt + F5 для его быстрого вызова. Если требуется одновременно наблюдать на экране текст программы и результаты ее работы в текстовом режиме, можно открыть окно Output — окно, в которое будут выводиться результаты исполнения программы. Размер окна Output можно отрегулировать клавишами перемещения курсора после нажатия Control + F5 или мышью, как описано ранее.
Окно отладки программ Watch может быть открыто пунктом меню Watch или Add watch. В каждой строчке окна может быть задана некоторая переменная или выражение. В процессе выполнения программы текущее значение заданной переменной или выражения выводится в это окно. Отладка с использованием окна Watch обычно сочетается с пошаговой отладкой, когда можно проверить не только последовательность выполнения команд, но и значения величин, приводящие к такой последовательности выполнения. Для создания окна Watch нет необходимости вызывать пункт меню Watch. Можно просто нажать клавиши Control + F7 — и Вы получите окно Add Watch, в котором надо ввести имя переменной для вывода в окно отладки. В строке для набора имени будет подсвечено то имя, на котором стоял текстовый курсор в момент нажатия клавиш Control + F7. Если Вы нажмете Enter, в окно Watch добавится набранная в окне Add Watch переменная или выражение, если начнете набор другого имени, это имя исчезнет без дополнительных действий для удаления. Если сразу после открытия окна Add Watch нажать стрелку курсора вправо, то в окно ввода начинают вводиться символы из текста программы, следующие за курсором.
Когда окно Watch активно, в нижней строке появляются указания на наиболее актуальные действия, которые можно совершить в данном состоянии. Подсказка напоминает Вам, что пошаговая отладка проводится по нажатию клавиш F7 или F8, предлагает нажать Insert для добавления новой переменной в окно, Delete для удаления записи,Enter для редактирования записи, на которой стоит курсор окна отладки.
Загрузим, например, программу определения наибольшего общего делителя. Откроем окно Output для диалога в процессе выполнения программы. Откроем окно Watch и поместим в него все три переменные нашей программы: Common, First и Second. При пошаговой отладке программы по клавише F7 мы увидим, что до исполнения программы переменные не определены. По мере ввода чисел переменные First и Second получают введенные значения. В начале цикла получает значение и переменная Common, которая изменяется при каждом прохождении цикла. Вы также увидите, что строка
if (First mod Common) = 0 then begin WriteLn('HCVl = ', Common); Break end
бывает подсвечена очень редко, так как для большинства чисел предыдущий оператор continue завершает данный проход цикла, и эта строка действительно не выполняется.
Пошаговый проход программы в том случае, когда выполняется большое число циклов, — занятие весьма утомительное, а иногда и невозможное. Поэтому предусмотрен механизм введения в программу контрольных точек
Контрольная точка — это логическое условие, которое вычисляется каждый раз при выполнении заданной строки программы. Если выполняются условия прерывания, программа останавливается в контрольной точке. Далее мы можем вводить другие контрольные точки или применять пошаговую отладку с просмотром в окне Watch.
Чтобы добавить контрольную точку в программу, надо ввести имя файла, номер строки, в которой производится проверка, логическое условие, по достижению которого происходит остановка программы, и число проходов заданной строки, в которых данное логическое условие не просчитывается. Если логическое условие не задано, остановка возникает по достижению данной строки. Число проходов данной строки без анализа по умолчанию устанавливается равным 0, то есть анализ проводится, начиная с первого прохода. Предположим, в программе определения наибольшего общего делителя Common.pas мы хотим проверить отношения, возникающие при кратности переменных Second и Common. Тогда в окнеAdd Breakpoint в поле Condition мы вводим условие прерывания программы Second mod Common = 0. В поле FileName автоматически вносится имя файла, активного окна, а в поле Line number — номер строки, в которой находится курсор. В строку Pass count записывается число 0, так как мы хотим остановить программу уже при первом выполнении условия прерывания .