Отладка разветвляющихся алгоритмов

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

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

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

Продемонстрируем процесс отладки разветвляющегося алгоритма.

Задача. Вычислить значение Y по одной из формул:

Y = { X + Aесли X < 10
X + Bесли 10 <= X <= 23
X + A2если 23 < X

Здесь диапазон значений X разбит на три области: (-∞, 10); [10, 23]; (23, +∞).

Схема алгоритма задачи приведена на рисунке ниже.

Отладка алгоритма.

Выбор теста. Выберем, например, такие данные с учетом приведенных выше рекомендаций: х = 5, х = 15, х = 25 — внутренние точки областей; х = 10; х = 23 — границы областей. Значения А и В для всех наборов выбираем постоянными и такими, чтобы максимально упростить вычисления. Все данные сведем в таблицу.

Номер набораXABYручнYалг
1
2
3
4
5
5
10
15
23
25
2
2
2
2
2
3
3
3
3
3
7
13
18
26
29
7
13
18
26
29

Ручное решение. Его выполняем, исходя лишь из условия задачи, и записываем в графу «Yручн» таблицы.

Исполнение алгоритма.

Первый набор данных: Х = 5, А = 2, B = 3.

1. Х < 10 ? (5 < 10) - Да

2. Y = X + A = 5 + 2 = 7

3. Вывод: Y = 7

4. Останов

Второй набор данных: Х = 10, А = 2, B = 3.

1. Х < 10 ? (10 < 10) - Нет

2. Х < 23 ? (10 < 23) - Да

3. Y = X + B = 10 + 3 = 13

4. Вывод: Y = 13

5. Останов

Третий набор данных: Х = 15, А = 2, B = 3.

1. Х < 10 ? (15 < 10) - Нет

2. Х < 23 ? (15 < 23) - Да

3. Y = X + B = 15 + 3 = 18

4. Вывод: Y = 18

5. Останов

Исполнить алгоритм на остальных тестовых наборах данных Вы можете самостоятельно. Результаты исполнения необходимо записать в последний столбец таблицы.

Сравнение результатов. Результаты решения задачи вручную и исполнения алгоритма совпали. Вывод: алгоритм верен.