Редактирование существующей программы
1)Открыть существующий файл (File → Open или <F3>).
2)В появившемся окне редактирования редактировать программу.
3)Далее – см. раздел «Создание программы», пункты 4–7.
Отладка программы
Отладка используется в том случае, если происходят ошибки или сбои при работе программы. Встроенный отладчик среды Turbo Pascal позволяет выполнять программу построчно, отдельными блоками, что дает возможность следить за изменениями значений переменных в ходе работы программы.
Производить отладку можно различными способами:
1)Пошаговое выполнение программы (трассировка). Для этого необходимо выбрать Run → Step over (<F8>) или Run → Trace into
(<F7>). В первом случае подпрограмма выполняется за один шаг при трассировке, во втором – производится построчное выполнение подпрограммы. Начало выполнения – первый исполняемый оператор основной программы. После выполнения очередного оператора выполнение останавливается и у пользователя есть возможность провести анализ промежуточных результатов работы программы.
2)Выполнение программы до точки останова, для этого надо:
а) установить курсор на строке, на которой необходимо остановить выполнение;
б) установить точку останова – нажать на правую кнопку мыши и в локальном меню выбрать пункт Toggle breakpoint (<Ctrl+F8>) – эта строка подсветится красным цветом;
в) выполнить программу до точки останова, для этого выбрать Run → Run (<Ctrl + F9>). Выполнение программы остановится на выбранной строке (см. п.2, а, б), и далее можно продолжать отладку путем трассировки, анализируя результаты работы операторов;
г) убрать точки останова можно тем же способом, а именно, установить курсор на строке останова, в локальном меню выбрать Toggle breakpoint (<Ctrl + F8>), можно также это сделать с помо-
щью пункта меню Debug → Breakpoints….
3) Выполнение программы, пока не станет истинным заданное условие, для этого надо:
а) установить курсор на строку, на которой необходимо остановить выполнение программы;
б) выбрать Debug → Add Breakpoint… и в появившемся диалоговом окне в поле Condition задать условие остановки (например, в цикле с параметром i = 1, 100 можно задать условие для одного из операторов цикла i = 10 – в этом случае выполнение остановится на этом операторе при i = 10).
4)Выполнение программы до позиции курсора, для этого надо: а) установить курсор на строке, на которой необходимо оста-
новить выполнение;
б) выбрать Run → Go to cursor, или в локальном меню пункт
Go to cursor, или (<F4>).
Анализ промежуточных результатов работы операторов программы производится с помощью:
1)окна Watch – окно наблюдения состояния переменных и выражений; для работы с ним необходимо:
а) активизировать окно Watch, для этого выбрать Debug → Watch и внизу появится окно Watch;
б) задать переменные и/или выражения, значения которых необходимы для наблюдения, для этого необходимо выбрать Debug → Add Watch…, или в окне Watch дважды щелкнуть на пустой строке, или нажать <Ins> и в появившемся диалоговом окне ввести имя переменной или выражение;
в) указанные переменные и выражения вместе с их текущими значениями будут постоянно содержаться в окне наблюдения состояния переменных Watch;
2)окна Evaluate/Modify, которые позволяют просматривать текущие и задавать новые значения для переменных и выражений, для этого надо:
а) выбрать пункт меню Debug → Evaluate/Modify (<Ctrl + F4>);
б) в появившемся диалоговом окне в поле Expression задать имя переменной или выражение, после нажатия <Enter> или кнопки Evaluate в поле Result появится текущее значение заданной переменной, новое значение переменной необходимо задавать в поле
New value.
Прервать выполнение программы во время отладки можно с по-
мощью команды Run → Program reset (<Ctrl + F2)>.
332
Пример отладки
Текст программы:
1.Program DemoDebug;
2.Var I, P : Integer;
3.R : Real;
4.Begin
5.for I:=-5 to 5 do
6.Begin
7.P := Sin(I)*Cos(I);
8.R := 1/P;
9.Writeln(R:5:2);
10.end;
11.end.
Алгоритм отладки программы
1)Запустить программу на компиляцию. Компиляция программы прошла успешно.
2)На этапе выполнения программы появится сообщение об ошибке «Error 200. Division by zero». Это означает, что произошло прерывание выполнения программы вследствие того, что знаменатель выражения стал равен нулю. Очевидно, что ошибка произошла при вычислении в седьмой строке. Необходимо найти, при каком значении I происходит ошибка, и исправить ее, для этого необходимо:
а) на восьмой строке программы поставить точку останова (щелкнуть мышью на этой строке и в локальном меню выбрать
Toggle breakpoint);
б) активизировать окно Watch (пункт меню Debug → Watch) и задать в нем переменную для наблюдения – P (щелкнуть мышью в окне редактора, выбрать Add Watch…), для удобного отображения окон редактора и Watch можно воспользоваться пунктом меню Window → Tile – в результате окна не будут перекрываться;
в) запустить программу на выполнение (<Ctrl + F9>) – программа остановится на восьмой строке, в окне Watch будет отображено значение переменной Р, затем продолжать выполнять программу (<Ctrl + F9>), параллельно отслеживая изменение переменной Р; в результате будет обнаружено, что обнуление переменной Р происходит при I = 0;
г) для того чтобы избавиться от ошибки, необходимо вставить проверку условия (Р <> 0) в начале восьмой строки, в результате получим: If p<>0 then R := 1/P.
П 1.10. Правила и примеры построения схем алгоритмов
Алгоритм – совокупность правил и предписаний, выполнение которых приводит к решению поставленной задачи. Процесс построения алгоритма (конструирование) называется алгоритмизацией.
Правильно разработанный алгоритм обладает следующими свойствами:
1)дискретность – значения величин в каждый следующий момент времени должны получаться по определенным правилам из значений величин, имевшихся в предшествующий момент времени;
2)определенность (детерминированность) – каждое правило алгоритма должно быть однозначным, т. е. значения величин, получаемых в какой-то момент времени, однозначно связаны со значениями величин, вычисленных ранее;
3)результативность (конечность) – алгоритм должен приводить к решению задачи за конечное число шагов;
4)массовость – алгоритм должен разрабатываться в общем виде так, чтобы его можно было применить для класса задач, различающихся лишь исходными данными.
Для оценки эффективности работы алгоритма используется характеристика вычислительной сложности алгоритма, которая может быть определена как сравнительное время решения задачи с помощью различных алгоритмов.
Для обеспечения хорошей наглядности и доступности при конструировании алгоритмов используется метод построения схем алгоритма. Схемы алгоритмов – графический способ записи последовательности выполнения некоторых процедур, изображаемых в виде графических символов определенной геометрической конфигурации, причем размеры этих символов и порядок построения схем регламентирован ГОСТ 19.701–90 (схемы алгоритмов, программ, данных и систем) (ИСО 5807–85). Наиболее часто употребляемые графические символы и соответствующие им процедуры приведены в табл. П 1.11.
Таблица П 1.11
Терминатор (отображает выход во внешнюю среду или вход из внешней среды)
Данные (отображает данные, ввод-вывод данных)
Процесс (отображает функцию обработки данных любого вида)
Решение (отображает решение или функцию переключательно-
го типа, разветвление)
Граница цикла (начало
…
конец)
Предопределенный процесс (подпрограмма, модуль)
Соединитель (выход в часть схемы и вход из другой части этой схе-
мы, используется для обрыва линии и продолжения ее в другом месте)
Подготовка (отображает модификацию команды с целью воздей-
ствия на некоторую функцию, инициализация)
Комментарий
Символы в схеме должны быть расположены равномерно и быть по возможности одного размера. Внутри символа необходимо помещать минимальное количество текста, необходимого для понимания функции данного символа. Если объем текста, помещаемого внутри символа, превышает его размер, следует использовать символ комментария. Потоки управления в схемах показываются линиями. Если направление потока отлично от стандартного (т. е. справа налево и снизу вверх), то стрелки должны указывать это направление.
Известно, что для реализации любого алгоритма достаточно трех базовых управляющих процессом обработки информации структур: композиция или следование, альтернатива или ветвление, итерация или цикл (теорема Бома–Якопини). Первая базовая структура «следование» реализуется линейным вычислительным алгоритмом. Второй базовой структурой является «ветвление», позволяющее в зависимости от результата проверки условия (истина или ложь) выбрать один из альтернативных путей работы алгоритма. Третья базовая структура «цикл» обеспечивает повторное выполнение операторов.
Примеры оформления алгоритмических структур согласно стандартам и соответствующие им фрагменты программы представлены в табл. П 1.12, П 1.13. Основными элементами программ являются структуры, реализующие ветвления и циклические структуры, и правила их оформления должны соответствовать ГОСТ 19.701–90. В частности, при построении схемы алгоритма для структуры, реализующей ветвление, используется символ «Решение», для циклических структур используется парный символ «Граница цикла» или символ «Подготовка». В табл. П 1.12 представлены различные элементы алгоритмических структур, реализующих ветвление. В табл. П 1.13 представлены различные элементы алгоритмических структур, реализующих циклы.