Проверку функции начинают с попытки выполнения се вручную. Тестовые примеры с массивами из 0,1 и 2 элементов зачастую позволяют отловить мелкие ошибки. Для массивов большего размера производить проверку вручную оказывается слишком утомительным, поэтому следует перейти к написанию тестовой программы, вызывающей проверяемую функцию. В нашем случае для этого оказывается достаточно пяти строк на языке С.
Листинг 5.2. Тестовая программа, вызывающая функцию двоичного поиска
while (scanf("^d %б", &n. &t) != F0F) { for (i=0. i<n. i++) х[i] = 10*1 . pnntfC Јd\n". bi na ry sea rch (t)) .}
Мы можем начать с программы из двадцати строк (объединив листинги 5.1 и 5.2). Однако следует ожидать дальнейшего увеличения размеров программы по мере усложнения предлагаемых тестов.
При вводе чисел 2 и 0 тестовая часть создаст массив из двух элементов, причем х[0]=0, х[1]=10, а затем выведет результат поиска: элемент 0 найден в позиции 0:
Вводимый текст выделен полужирным. Мы видим, что число 10 также благополучно обнаруживается функцией поиска в позиции 1. Последние 6 строк вывода демонстрируют три попытки поиска отсутствующих элементов. Каждый раз возвращаемое значение было правильным ('1). Итак, программа корректно обрабатывает все возможные варианты поиска в массиве с двумя различными элементами. По мере того как программа проходит аналогичные тесты па массивах большего размера, мы с радостью убеждаемся в ее правильности. Но при работе с большими массивами необходимость вводить что-либо с клавиатуры начинает занимать слишком много времени, поэтому мы создаем тестовую программу для автоматизации проверки (приведена в разделе 5.4).
Далеко не все программы проходят такой тест. Ниже приведена функция двоичного поиска, которую мне предлагали в качестве решения несколько профессиональных программистов.
Опубликовал vovan666
April 16 2013 23:58:29 ·
0 Комментариев ·
4186 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.