Технологии программирования
Шрифт:
Цикл оттестирован тремя тестами: C1.N=1; C1.N=3; C1.N=Digits.
Аналогично декомпозируется процесс "Ввод корректного значения числа цифр второго сомножителя".
Шаг 5.3. Детализация СЛЕДОВАНИЯ "Ввод цифр первого сомножителя в порядке от C1.D[C1.N] до C1.D[1]
СЛЕДОВАНИЕ "Ввод цифр первого сомножителя в порядке от C1.D[C1.N] до C1.D[1] декомпозируется
Описания новых переменных:
Несмотря на то что здесь в нарушение правил детализировано сразу два цикла, в тестировании нет необходимости.
Аналогично декомпозируется процесс "Ввод цифр второго сомножителя в порядке от C2.D[C2.N] до C2.D[1].
Шаг 5.4. Детализация СЛЕДОВАНИЯ "Вывод результата произведения"
СЛЕДОВАНИЕ "Вывод результата произведения" декомпозируется АЛЬТЕРНАТИВОЙ — РАЗВИЛКА С ДВУМЯ ДЕЙСТВИЯМИ:
Тесты: ERROR = True; ERROR = False.
Шаг 5.5. Детализация СЛЕДОВАНИЯ "Вывод продукта умножения"
СЛЕДОВАНИЕ "Вывод продукта умножения" декомпозируется циклом:
В тестировании нет необходимости.
Шаг 5.6. Детализация СЛЕДОВАНИЯ "Устранение лидирующих нулей"
СЛЕДОВАНИЕ "Устранение лидирующих нулей" декомпозируется циклом:
В тестировании нет необходимости.
Шаг 5.7. Детализация СЛЕДОВАНИЯ "Расчет произведения сомножителей"
СЛЕДОВАНИЕ "Расчет произведения сомножителей" декомпозируется циклом:
Вход: C1, C2.
Выход: R.D, R.N, ERROR
Структура тестировалась на тестах: 390*56; 390*56, но при Digits = 5; 0*0 при C1.N = 0; 1*0 при C1.N = 1 и других тестах.
Шаг 5.8. Детализация СЛЕДОВАНИЯ "Увеличение результата на сдвинутый продукт умножения первого сомножителя на j-ю цифру второго сомножителя
СЛЕДОВАНИЕ детализируется циклом:
Вход: C1, C2.
{Увеличение результата на сдвинутый продукт умножения первого сомножителя на j-ю цифру второго сомножителя}
Выход: R.D, R.N, ERROR
Шаг 5.9. Детализация СЛЕДОВАНИЯ "Расчет очередной цифры результата и цифры переноса"
СЛЕДОВАНИЕ детализируется альтернативой:
Вход: i, j, C1.D[i], C2.D[j], p, R.D, Digits.
Выход: R.D, R.N, ERROR, p.
Описания новых переменных: