Планирование уроков на учебный год (по учебнику Н.Д. Угриновича, 2017 г.)



Уроки 50 - 51
§4.1. Алгоритм и кодирование основных алгоритмических структур



§4.1.4. Приёмы отладки программ. Трассировка программ



Содержание урока

§4.1.1. Алгоритм и его свойства

§4.1.2. Алгоритмические структуры «ветвление» и «цикл»

§4.1.3. Подпрограммы. Рекурсивные алгоритмы

§4.1.4. Приёмы отладки программ. Трассировка программ

§4.1.5. Типовые алгоритмы


Приёмы отладки программ. Трассировка программ


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

Поиск и исправление ошибок в программе называют её отладкой.

Первый шаг отладки — проверка синтаксиса (правильности написания текста программы по созданному алгоритму). Обычно эта проверка выполняется автоматически средой программирования. Обнаруженные возможные ошибки компьютер выделяет визуально (цветом, подчёркиванием и т. д.), чтобы разработчик алгоритма обратил на них своё внимание.

Важно помнить, что одна допущенная ошибка может стать причиной «обнаружения» других предполагаемых ошибок (например, если в начале алгоритма вы забыли объявить тип используемой переменной, то возникнут ошибки при её последующем использовании). Поэтому ошибки надо исправлять с начала алгоритма и каждый раз, исправив очередную ошибку, повторять проверку программы заново: возможно, какие-то из ранее обнаруженных ошибок исчезнут сами собой.

Второй шаг отладки — проверка правильности работы программы на каком-то одном типовом примере. Цель этой проверки — убедиться, что в программе не допущено семантических (смысловых) ошибок.

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

Приведём пример трассировки программы вычисления факториала натурального числа:

Проведём трассировку программы для значения N, равного 6. Моменты изменения значений переменных будем для наглядности выделять серым фоном. Заметим, что в остальных случаях в строках таблицы повторяются те значения переменных, которые были получены ранее и в данный момент сохраняются в них. Если же переменная ещё не имеет никакого значения, в соответствующей ячейке таблицы ставится прочерк.

Нетрудно видеть, что для команды ветвления или для цикла с условием в таблице трассировки записывается соответствующее условие, и, в зависимости от его истинности, записывается соответствующий вывод, согласно которому далее выполняются те или иные команды алгоритма. Для цикла в таблице трассировки соответствующие команды из тела цикла повторяются столько раз, сколько реально выполняется этот цикл при заданных исходных данных (соответствующие блоки для наглядности разделены двойной линией границы).

В последней строке таблицы трассировки, соответствующей команде вывода результата, для соответствующей переменной (F) мы видим полученное значение (720).

Проверяем его правильность, зная математическую формулу расчета факториала:

6! = 654321 == 720.

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

Для выполнения тестирования алгоритма необходимо тщательно продумать и подготовить набор тестов — такой набор возможных исходных данных, который исчерпывает все возможные ситуации.

Так, для программы, связанной с математическими расчётами, необходимо предусмотреть следующие варианты исходных данных:

• типичные для решаемой задачи значения исходных данных (например, при решении задачи на движение автомобилей это будут значения скоростей порядка десятков километров в час, а для задачи на движение космических кораблей — значения скоростей в несколько километров в секунду);
• граничные значения данных (если заранее известны диапазоны их изменения);
• значения данных вне границ допустимого диапазона (например, при работе с натуральными числами — нулевые или отрицательные значения) — это необходимо для того, чтобы выявить, как алгоритм реагирует на заведомые ошибки 1).


1) Как правило, в профессионально разработанных программах должен быть предусмотрен контроль вводимых значений исходных данных, обнаружение их несоответствия корректным диапазонам и либо исправление этих данных (если ситуация однозначна), либо выдача пользователю соответствующего сообщения об ошибке и запрос на повторный ввод данных.


Если программа предполагает ввод нескольких исходных данных, то необходимо предусмотреть в наборе тестов все возможные их комбинации.

Разработка корректного и полного набора тестов для каждой отлаживаемой программы представляет собой отдельную, достаточно сложную задачу. Однако сделать это необходимо. Иначе варианты исходных данных, приводящие к сбою в работе программы, могут выявиться уже при работе с ней её пользователей.

При отладке программ важно помнить следующее правило: чем на более раннем этапе разработка будет обнаружена ошибка, тем легче и дешевле её исправить. Так, обнаружение и исправление ошибки при разработке программы потребуют лишь повторной её отладки. Но если ошибка обнаружится уже при коммерческой эксплуатации созданной программы, то это приведёт к значительным потерям — как моральным (страдает репутация разработчика как создателя высококачественных программ), так и финансовым (необходимость информирования пользователей программы об ошибке, выпуска и распространения по всем пользователям исправленной версии программы и т. д.),

Вопросы и задания


1. Что такое отладка программы? Для чего она нужна?

2. Перечислите основные этапы отладки программы. Опишите назначение каждого этапа и характер обнаруживаемых с его помощью недочётов программы.

3. Что такое таблица трассировки? Как она составляется? Приведите свой пример программы и составленной для неё таблицы трассировки.

4. Как формируется набор тестов для тестирования программы? Какие варианты исходных данных рекомендуется включать в этот набор тестов?

*5. Приходилось ли вам при работе на компьютере сталкиваться со сбоями в работе программ? Как вы считаете — вызвано ли это недостаточно тщательным тестированием этих программ при их разработке? Предположите, какие меры разработчику этих программ потребовалось (или потребуется) предпринять для исправления этих ошибок и оцените примерные затраты на это исправление.

Следующая страница §4.1.5. Типовые алгоритмы



Cкачать материалы урока







Наверх