Студопедия

Главная страница Случайная страница

Разделы сайта

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






Стратегия нисходящего структурного программирования (сверху-вниз)






 

--------------------------------------------------------

¦ Структурное программирование - модульное нисходящее ¦

¦ пошаговое проектирование алгоритма и структур данных ¦

L--------------------------------------------------------

Она включает три составляющие:

1) нисходящая разработка;

2) структурное кодирование (программирование);

3) сквозной контроль.

Нисходящая разработка - это подход к разработке программного обеспечения, при котором оно разбивается на программные модули (подпрограммы, процедуры, функции), образующие многоуровневую структуру. Не путать с понятием «модуль», которое используется для определения синтпкстической конструкции языка программирования, например UNIT в Borland Pascal.

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

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

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

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

Вначале принимаются общие решения, более мелкие оставляются.

Каждый шаг детализации не должен быть слишком большим - не нужно стремиться к охвату сразу всех деталей.

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

При этом на каждом шаге указывается что надо делать, но не раскрывается то, как это должно быть сделано.

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

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

Этот процесс детализации повторяется необходимое число раз.

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

Участки алгоритма, требующие детализации, обозначаются блоками " детализируемая программа".

 

 

 

Полностью заимствованные части алгоритма обозначаются блоками " предопределенный процесс"

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

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

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

Свойства программных модулей:

1) должен иметь один вход и один выход;

2) должен решать самостоятельно задачу по принципу " один программный модуль - одна функция".

3) работа программного модуля не должна зависеть:

а) от входных данных;

б) от того, какому программному модулю предназначены его выходные данные;

в) от предыстории вызовов программного модуля.

4) программный модуль может вызывать другой модуль;

5) программный модуль должен возвращать управление модулю, который его вызвал;

6) размер программного модуля желательно ограничивать одной-двумя

страницами исходного текста, т.е. не более 100 операторов

7) каждый модуль должен начинаться с комментария, объясняющего

его назначение, назначение переменных, передаваемых в модуль и из

него, модулей, которые его вызывают, и модулей, которые вызываются

из него

8) Идентификаторы всех переменных должны быть смысловыми

9) Родственные группы идентификаторов должны начинаться с одинакового префикса

10) Нужно использовать только стандартные конструкции (выбор, цикл, выход, блок)

11) В одной строке нужно записывать не более одного оператора

12) не допускать вложенности операторов if более 3-х уровней

Третья составляющая. Сквозной контроль - это проверка программного комплекса, выполняемая на основе изучения его группой специалистов. На протяжении всего времени существования программного комплекса может осуществляться несколько проверок, охватывающих все этапы его разработки.

Существенные преимущества стратегии:

1. Возможность начала программирования почти одновременно и параллельно с разработкой соответствующего алгоритма.

2. Легко модифицировать программу по уровням.

3. Упрощается отладка т.к. она ведется также по уровням.

4. Выполнять разработку алгоритма можно несколькими программистами.

Недостатки:

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

2. Сложно использовать готовые модули, разработанные ранее.

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

 

Пример 1.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.