Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример нисходящей разработки.doc
Скачиваний:
2
Добавлен:
20.11.2019
Размер:
164.86 Кб
Скачать

Пример нисходящей разработки

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

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

Уровень 0

1. Задача top_down. Абстракция А0

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

Примеры возможных значений данных. Далее на основе этих примеров будут построены функциональные тесты.

1) b=(1,2,3,1) - есть два одинаковых элемента;

-1 0 2 -3 меняем -1 0 2 -3

а= 2 -1 0 2 матрицу: а= 2 -1 0 2

1 1 3 2 1 2 3 1

  1. b=(1,2,3,4) - нет двух одинаковых элементов

-1 0 2 -3 -3

а = 2 -1 0 2 -1 1

1 1 3 2 1

минимальные максимальный

элементы из них

строк

2. Входные данные. Ограничения на диапазоны данных там, где они не очевидны, взяты произвольно.

цел n - число элементов массива b; оно же - число столбцов матрицы а;

простая переменная; 0<n<=50; XX;

цел b - исходный одномерный массив; ¦b(i)¦<=10; +XX;

цел m - число строк матрицы a;простая переменная;¦m¦<=50;XX;

цел a - исходная матрица; двумерный массив; ¦a(i,j)¦<=10; +XX.

Типы элементов a и b в общем случае должны совпадать, так как

м

<n>

<b(1)> <b(2)> . . . <b(5)>

<b(6)> <b(7)> . . . <b(10)>

. . . . . . . .

<b(n)>

<m>

<a(1,1)> <a(1,2)> . . . <a(1,5)>

<a(1,6)> <a(1,7)> . . . <a(1,10)>

. . . . . . . .

<a(1,n)>

. . . . . . . . . . . . . . . . .

<a(m,1)> <a(m,2)> . . . <a(m,5)>

<a(m,6)> <a(m,7)> . . . <a(m,10)>

. . . . . . . .

<a(m,n)>

ассив b должен заменять строку матрицы.

Входная форма:

Элементы массивов

размещены по 5

в каждой строке

носителя (экрана

или файла)