- •16.1. Набор и редактирование текста программы
- •16.2. Компиляция и выполнение программы
- •16.3. Отладка программы
- •16.4. Рекурсивные алгоритмы
- •16.4.1. Метод частных целей
- •16.4.2. Метод подъема
- •16.4.3. Программирование с отходом назад
- •16.5.2. Тестирование программы
- •16.5. Этапы решения задач на эвм
- •16.5.1. Основные этапы
16.3. Отладка программы
Процесс отладки – самый сложный и трудоемкий из этапов создания программы. Набрать текст программы может и человек, особенно не разбирающийся в деталях программирования – важно, чтобы он владел приемами набора и редактирования программы. Программист же может довести текст программы до рабочего состояния, до готового программного продукта. Но для этого ее необходимо протестировать при всех (или как можно большем количестве) возможных исходных данных, протестировать как на наличие "скрытых" ошибок, так и на возможность сокращения времени ее выполнения или объема требуемой памяти.
Даже при отсутствии ошибок, которых не "нашел" транслятор или компилятор, нельзя быть уверенным, что программа будет работать правильно или в принципе работать. Ведь транслятору безразлично, сложение надо выполнять или умножение, имеются ли скобки в выражениях и как они расставлены – главное, чтобы количество открывающих скобок совпадало с количеством закрывающих, и т.п. Кроме того, даже если отдельные фрагменты программы выполняются правильно, необходимо, чтобы связи между этими фрагментами обеспечивали правильность работы всей программы.
С этой целью в IDE имеется встроенный отладчик (Debugger). Он позволяет выполнять программу по частям (до определенной точки, называемой "контрольной точкой") и проследить за значениями как основных, так и промежуточных результатов работы программы и (или) отдельных ее фрагментов (например, процедур или функций). Для этого открывается специальные окна – окно отладки или окно трассирования программы.
Разумеется, что каждый программист имеет свой "почерк", используя те или иные способы отладки. Отладчиком пользуются не все. Можно, например, не устанавливать контрольные точки (точки останова), а просто "закомментировать" ту часть программы, которую не надо выполнять. Можно вставлять в текст программы дополнительную (отладочную) печать, которую затем необходимо удалить (или "закомментировать", чтобы при необходимости снова к ней вернуться). Можно добавлять новые рабочие переменные, значения которых позволят дополнительно проследить за выполнением того или иного этапа (фрагмента) программы. Все это, конечно, усложняет текст программы, затрудняет ее прочтение, увеличивает ее объем и время ее выполнения и т.п. Но можно и комбинировать описанные выше способы отладки с использованием встроенного отладчика, убирая лишние вставки и сохраняя нужные. Это позволит сделать процесс отладки более оптимальным, как с точки зрения сокращения времени на отладку программы, так и с точки зрения увеличения ее объема (то есть объем программы возрастет, но не на столько, чтобы это заметно повлияло ни на читабельность программы, ни на время ее выполнения, ни на другие ее важные показатели).
16.4. Рекурсивные алгоритмы
По всей видимости, существует весьма большое количество всевозможных приемов и методов разработки алгоритмов. Однако среди имеющегося разнообразия этих методов можно выделить небольшой набор основных, в том смысле, что методы из такого набора применяются часто и лежат в основе многих процедур и алгоритмов. Можно утверждать, что знание приводимых ниже методов необходимо для любого программиста. Все обсуждаемые ниже методы рассматриваются на примере решения нескольких задач, но сфера их применения, безусловно, намного шире.
