Технологии программирования | страница 132
Страница 2содержит постановку задачи и набор тестов, составленных до разработки алгоритма процесса.
Шаг 1. ПОСТАНОВКА ЗАДАЧИ
Составить алгоритм умножения двух положительных чисел с произвольным (до ста) количеством цифр. Цифры сомножителей и результата должны находиться в одномерных массивах. Разрядность результата не должна превышать 100 цифр.
Шаг 2. НАБОР ТЕСТОВ, СОСТАВЛЕННЫХ ДО РАЗРАБОТКИ АЛГОРИТМА ПРОЦЕССА
Пусть предельная разрядность сомножителей равна трем цифрам, а результата — четырем. Аналогично приведенному образцу умножения чисел 391*56 = 21896 (переполнение) были составлены тесты: 23*132 = 3036; 111*11 = 1221; 999*99 = 98901 (переполнение); 00*000 = 0; 1*0 = 0.
Алгоритм умножения обычно изучался в младших классах школы по маршрутному описанию процесса счета. Из-за теоретической огромности числа маршрутов большинство со школьной скамьи не знает процесса умножения при нулевых сомножителях!
Страница 3содержит результаты анализа выходной и входной информации вычислительного процесса со структурами данных. Рациональность избранной структуры данных в значительной мере определяет рациональность алгоритма.
Шаг 3. АНАЛИЗ ВЫХОДНОЙ И ВХОДНОЙ ИНФОРМАЦИИ ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА
Анализ выходной и входной информации начинается с рассмотрения модели "черного" ящика, показанной на рис. 5.3.
>Program MultNumbers;
>{Расчет произведения двух чисел}
>uses
>Crt;
>const
>Digits = 100; {Число цифр в числах}
>type
>TNumber = record
>D: array[1..Digits] of Byte;
>{B D[1] находится младший разряд числа}
>N: word; {Число разрядов в числе от 1 до Digits}
>end;
>var
>C1: TNumber; {Первый сомножитель}
>C2: TNumber; {Второй сомножитель}
>R: TNumber; {Результат умножения}
>Error: boolean; {True — ошибка переполнения}
Макет экрана со строками диалога программы приведен на рис. 5.17. Вместо трех последних строк возможен вывод: "Ошибка переполнения".
Страница 4 содержит наглядное изображение процесса преобразования входных данных обобщающего теста или тестов в выходные данные со всеми внутренними данными и/или трассу выполнения обобщающего теста или тестов. Обобщающий тест или тесты составляются на основе тестов страницы 2 и при минимальном количестве тестов охватывает все маршруты процесса вычислений. Наглядность изображения изменений всех данных способствует упрощению процесса разработки алгоритма. Рациональность избранной структуры данных в значительной мере определяет рациональность алгоритма.
Рис. 5.17. Макет экрана со строками диалога программы