Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прог.doc
Скачиваний:
3
Добавлен:
19.04.2019
Размер:
3.87 Mб
Скачать

31. Причины появления ошибок в программах

Ошибки могут появляться на всех этапах разработки программы по самым разнообразным причинам:

1) неверное понимание поставленной задачи приводит к решению совсем другой задачи.

2) неверная разработка спецификации алгоритма может привести к правильному результату лишь для некоторого подмножества определенных данных.

3) неверное понимание смысла используемых конструкций языка программирования может привести к аналогичной ошибке.

4) при вводе программы в компьютер могут появиться »опечатки«.

Правильный алгоритм приводит к получению правильного результата для всех введенных данных.

32. Тесты. Отладка программ

Отладка это устранение ошибок.

Часть ошибок программы ловится автоматически еще на этапе компиляции. Сюда относятся все синтаксические ошибки, ошибки несоответствия типов и некоторые другие. Это простые ошибки и их исправление, как правило, не вызывает трудностей. В отладке нуждается синтаксически корректная программа, результаты вычислений которой получены, но не соответствуют требуемым спецификациям. Чаще всего еще не отлаженная программа на одних исходных данных работает правильно, на других – дает ошибочный результат. Искусство отладки состоит в том, чтобы обнаружить все ситуации, в которых работа программы приводит к ошибочным вычислениям.

В ходе отладки необходим сбор улик, для чего применяется две группы средств. Первая позволяет контролировать ход вычислительного процесса: порядок следования операторов в методах, порядок вызова самих методов, условия окончания циклов, правильность переходов. Вторая отслеживает изменение состояния вычислительного процесса (значения свойств объектов) в процессе выполнения.

33. Проверка программ «вручную». Анализ программ

Основными методами выявления ошибок являются тестирование и отладка.

Тестирование это выявление ошибок.

Отладка это устранение ошибок.

Тестирование бывает компьютерное и ручное:

Ручное (анализ) — проверка алгоритма по тексту без использования компьютера.

Анализ выполняется в несколько этапов:

Проверка описания данных;

Проверка правильности обработки данных;

Проверка вычисления функций;

Проверка логики (Особенно в циклах, дабы избежать условий, приводящих к неверному числу итераций);

Проверка интерфейса между функциями;

Проверка ввода\вывода;

Проверка помеха-защита;

После выполнения отладки необходимо снова провести тестирование, чтобы проверить, не возникли ли новые ошибки.

34. Проверка программ «вручную». Прокрутка

Ручная прокрутка программы, или проверка программы за столом является универсальным и мощным, но весьма трудоемким средством проверки программы на ошибку и принадлежит к наиболее «старым» традициям в программировании. Этот метод характеризует неавтоматизированную, ручную деятельность программиста.

К этому методу наиболее часто относят:

- анализ листинга программы на наличие ошибок;

- выполнение расчетов для проверки точности результатов;

- «игру за машину», т.е. выполнение программы вручную вместо ЭВМ.

Ручная прокрутка программы наиболее эффективна, когда ошибка локализована достаточно точно, но почему-то не выявляется другими приемами.

Обычно прокручивают небольшую часть программы — проверяется путь, который прошла программа при тех исходных данных, которые ей были даны до того места, где проявилась ошибка.

Затем проводят обратное отслеживание идентификаторов. Обычно обнаруживаются ошибки алгоритмизации типа неучтенного особого случая.

Обратное отслеживание идентификаторов - это ответ на вопрос «где случилось?» и отчасти «почему случилось?». Ошибка проявляется между последней правильно отработавшей и первой, неправильно отработавшей печатью. Этот фрагмент программы является стартовой точкой поиска ошибки и поэтому подлежит исследованию, хотя сама ошибка чаще всего может находиться в другом месте. При отслеживании идентификаторов следует постоянно контролировать описания, т.к. неправильное описание переменных вызывает преобразование присваиваемых значений.