Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Пример нисходящего проектирования

 

Спецификация

1. Задача. Напечатать ту из матриц А, В, у которой на главной диагонали нет ни

одного нуля, предварительно разделив все элементы каждой строки на свой диагональный элемент.

2.

{Преобразование матриц} program Preobr; Const Nmax = 20; Type indA = 1..10; indB = 1..20; matr = array (1..Nmax, 1..Nmax) of real; Var na:indA; nb:indB: A, B: matr; {Выход: n-размер ; X - матрица} procedure Vvod_matr (var n: indB; var X: matr);     {Вход: n-размер ; X - матрица Выход: Analiz = true, если есть 0} function Analiz (n: indB; X: matr) : Boolean;   {Вход: n-размер ; X – матрица Выход: X } procedure Change(n: indB; var X: matr);     {Вход: n: indB; X: matr } procedure Vyvod_matr (n: indB; var X: matr);
Входные данные.

. na na nb nb

Состав: вещ {Aij}i=1 j=1 , {Bij}i=1 j=1

Диапазон: 1 < na < 10, 1 <nb < 20

input fa.txt fb.txt

           
 
<na> <nb>
 
<A>
 
<B>

 


3. Выходные данные

<A> <B> <Аномалии>  
Вариант 1. Только одна из А, В Вариант 2. Возможны обе А и В

<A> 2 <B> 1 <Аномалии>  

{ {

 

 

4. Аномалии. А и В не удовлетворяют условию.

5. Метод.

1. Если xii ≠ 0 для всех i = 1,…,n, то xij = xij / xii (i, j = 1,...,n)

 

Эскизный проект (программа)

 

 
 
begin {Ввод na, A} Vvod_matr (na, A); {Ввод nb, B} Vvod_matr (na, A); {на диагонали А нет 0} if not Analiz (na, A) then begin {Преобразование А} Change(na, A); {Печать А} Vyvod_matr (na, A) end else {на диагонали B нет 0} if not Analiz (nb, B) then begin {Преобразование B} Change(nb, B); {Печать B} Vyvod_matr (nb, B) end else writeln(‘A, B не удовл. условию’) end. {Preobr}  

 

 


Структурная схема программы

(td – граф)

 

 

Preobr

       
   

 

 


Vvod_matr Analiz Change Vyvod_matr

 

 

Этапы проектирования

Проектирование выполняется на основе спецификации.

Используемая технология проектирования позволяет записывать проект как структуру будущей программы. Полная программа строится естественно, путем дополнения конструкциями языка Паскаль.

Проект состоит из двух частей – левой и правой. В левой – описания, в правой – алгоритм главной программы.

Основные этапы

1) Разработка интерфейса задачи. Записываем Заголовок программы и Данные, которые берутся из Состава данных Спецификации.

2) Разработка проекта алгоритма. Вначале отделяется ввод – вывод - обработка на основе Выходной формы. Если выбран Вариант1 , то мы можем записать в правой части структуру главной программы. При этом проводим декомпозицию задачи на более простые подзадачи. Эти подзадачи формулируем (как цель задачи) в виде абстракций на естественном (русском) языке. Абстракции записываем в программу в виде комментариев и оставляем пустое место для вызова процедур. Например,

___________________________

{Преобразование матрицы А}│

__________________________

Причем, это применимо как к procedure, так и для function.

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

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

Мы получили эскизный проект программы, без тела процедур.

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

5) Разработка тела процедур. Тело процедуры – это блок.

<блок> ::= <описание локальных переменных> ; <составной оператор>

Мы получили

<описание процедуры> ::= <заголовок> <блок>

После завершения описаний процедур получаем полную программу.

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.