Методы проектирования программ
Отладка программы
Практическая работа № 19 «Отладка программы»
Простейший метод отладки программы — это вывод отладочной информации. Рассмотрим этот способ на примере.
Программисту нужно было написать программу, которая вычисляет корни квадратного уравнения ах2 + bх + с = 0. Он поспешил и написал программу так:
Для вычисления квадратного корня здесь используется стандартная функция sqrt. Оказалось, что программа в некоторых случаях работает верно (например, при а = 1, b = 2 и с = 1), а в других случаях — неверно (например, при а = 1, b = -5 и с = 6).
Для того чтобы найти ошибку, нужно определить её возможные причины. В нашем случае есть три варианта:
1) неверно вводятся данные;
2) неверно вычисляется дискриминант D = b2 -4ас;
3) неверно вычисляются корни
Добавим в программу две дополнительные команды для вывода отладочной информации:
1) выведем значения коэффициентов а, Ъ и с сразу после ввода;
2) выведем вычисленное значение дискриминанта.
Значения корней уравнения уже и так выводятся в конце работы программы.
При вводе коэффициентов 1, -5 и 6 программа (на алгоритмическом языке) выводит:
1.0 -5.0 6.0
D=21.0
х1=4.791288 х2=0.208712
По первой строке видим, что ввод выполнен правильно — именно такие числа мы вводили. А вот значение дискриминанта, вычисленного программой, отличается от того, что мы ожидаем получить: D = (-5)2 - 4 • 1 • 6 = 1. Поэтому нужно искать ошибку в выражении для вычисления D.
Если исправить эту ошибку (сделайте это самостоятельно), мы увидим, что дискриминант считается правильно, а корни уравнения — нет (при а = 1, 5 = -5 и с = 6 мы должны получить х1 = 3 и х2 = 2). Поэтому останется исправить ошибки в строках, где вычисляются корни.
Современные среды программирования, в том числе КуМир, АЛГО и PascalABC.NET, содержат встроенный отладчик, который позволяет:
• выполнять программу в пошаговом режиме;
• после выполнения очередной команды просматривать значения переменных в памяти;
• устанавливать точки останова, где программа должна остановиться и перейти в пошаговый режим.
Доработайте программу так, чтобы учесть случай, когда уравнение не имеет вещественных корней.
Следующая страница Документирование программы