Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Matlab_05.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
378 Кб
Скачать
☆

5.2 Отладка

Сначала несколько слов об отладчике MATLAB’а. В силу важности процесса отладки были предприняты меры по ее автоматизации. Практически все системы программирования в настоящее время снабжены многофункциональными отладчиками. Не является исключением и MATLAB. Собственно встроенный редактор, в котором вы набирали текст программы является одновременно и отладчиком.

Возможности таких отладчиков весьма обширны. С его помощью можно задать пошаговое выполнение программы и отслеживать изменение переменных, устанавливать точки прерывания (breakpoins). Я сам, однако, предпочитаю при поиске ошибок использовать отладочные печати тех переменных и в тех местах, где это представляется нужным. Должен признаться, я опасался, что мое отношение к отладчикам – это проявление косности и отсталости. Однако, когда я готовил это пособие, я обнаружил, что аналогичной точки зрения придерживаются и признанные авторитеты программирования. «Одна из причин нашей нелюбви к отладчикам состоит в том, что бывает очень легко заблудиться в подробностях сложных структур данных и управляющих конструкций. Пошаговое выполнение программы, по нашему мнению, менее продуктивно, чем тщательное ее обдумывание и добавление операторов вывода или дополнительных проверок в критических местах кода. Перебор всех операторов по очереди отнимает больше времени, чем просмотр хорошо продуманного отладочного вывода» (Керниган, Пайк «Практика программирования», 2004)

Это не значит, конечно, что отладчики совсем бесполезны. Так очень удобно выделение различным цветом разных элементов программы. Так синим цветом выделяются зарезервированные слова MATLAB’а (function, if, end и т.п.), зеленым – комментарии. Так если набирая заголовок функции, вы сделаете ошибку в слове function, то, увидев, что это слово не стало синим, вы сразу найдете ошибке и исправите ее, не тратя времени на прогон программы.

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

Советую также обратить внимание на правую линейку рамки отладчика. На ней напротив некоторых операторов появляются горизонтальные черточки. Если вы подведете курсор к одной из этих черточек, откроется всплывающее окно, в котором указывается номер строки, вызвавшей сомнения отладчика, а также в чем эти сомнения заключаются.

А теперь несколько практических советов

1. Множество ошибок связано с неправильным считыванием исходных данных. Поэтому необходимо проводить эхо-проверку вводимых данных. В нашем примере это означает, что по крайней мере при первом прогоне теста надо распечатать массив VERT сразу после го задания, чтобы убедиться в отсутствии опечаток.

2. Отладочные операторы не стоит удалять сразу после обнаружения и исправления ошибки. Лучше их закомментировать (символ % в начале строки). Не исключено, что они потребуются при очередных тестах

3. При использовании условных операторов часто встречаются такие ошибки:

Неверное указание ветви алгоритма

Неполный учет возможных условий

4. В операторах цикла встречаются такие ошибки

Неправильное указание условий окончания цикла

Неправильное указание числа повторений цикла

Бесконечные или замкнутые циклы

Не предусмотрено изменение счетчика цикла

5. В арифметических операциях чаще всего встречаются такие ошибки

Использование неверных констант

Неверное определение порядка действий

Деление на нуль

Извлечение квадратного корня из отрицательного числа

6. Можно порекомендовать вести учет своих ошибок. Для этого можно вести такую таблицу. Здесь для примера я начал ее заполнять в соответствии с ошибками, обнаруженными при отладке программы polygon.

Ошибка

Причина ошибки

Как избежать подобных ошибок

Undefined function or variable 'DY'

Набрал DX, а надо было DY

Не спешить при наборе текста

Undefined function or variable "P".

Не был обнулен накопитель суммы

Надо всем переменным присваивать значения (инициализировать) до их первого использования

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]