Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Структурное программирование




Лекция 2

Классификация технологий программирования

1. Структурное программирование

2. Модульное программирование

3. Объектно-ориентированное программирование (ООП)

Сутью структурного программирования является возможность разбиения программы на составляющие элементы.

Идеи структурного программирования появились в начале 70-годов в компании IBM, в их разработке участвовали известные ученые Э. Дейкстра, Х. Милс, Э. Кнут, С. Хоор. Распространены две методики (стратегии) разработки программ, относящиеся к структурному программированию: программирование "сверху вниз" и программирование "снизу вверх".

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

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

В данном случае программа конструируется иерархически - сверху вниз: от главной программы к подпрограммам самого нижнего уровня, причем на каждом уровне используются только простые последовательности инструкций, циклы и условные разветвления.

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

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

Рассмотрим следующий пример.

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


Рис. 1. Дачный участок

Укажем в виде схем, которые называются структурными диаграммами, составные элементы картины:

Посмотрим на изображение дома. Здесь можно выделить следующие элементы:

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

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


Рис. 2. Структурной диаграммы (первый вариант)

Второй вариант представления структурной диаграммы имеет вид, представленный на рис. 3.

Рис. 3. Структурной диаграммы (второй вариант)

На рис. 2 и рис. 3 отмечены уровни, занимаемые программными модулями. Каждый нижележащий уровень соответствует более полной детализации программного комплекса. Те модули, которые не имеют дальнейшей детализации, например, "солнце", "ствол", "стена", являются процедурами, или функциями, реализующими решение соответствующей подзадачи. Разбиение программы на модули представляет одну из достаточно ответственных и сложных задач, так как влияет на дальнейший ход разработки программного комплекса, его надёжность, эффективность, продолжительность тестирования и отладки, сопровождение и возможность использование стандартных программных процедур.

 

Достоинства структурного программирования:

1) повышается надежность программ (благодаря хорошему структурированию при проектировании, программа легко поддается тестированию и не создает проблем при отладке);

2) повышается эффективность программ (структурирование программы позволяет легко находить и корректировать ошибки, а отдельные подпрограммы можно переделывать (модифицировать) независимо от других);

3) уменьшается время и стоимость программной разработки;

4) улучшается читабельность программ.

Резюме

Технология структурного программирования при разработке серьезных программных комплексов, основана на следующих принципах:

- программирование должно осуществляться сверху вниз;

- весь проект должен быть разбит на модули (подпрограммы) с одним входом и одним выходом;

- подпрограмма должна допускать только три основные структуры – последовательное выполнение, ветвление (if, case) и повторение (for, while, repeat).

- недопустим оператор передачи управления в любую точку программы (goto);

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

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

2. Модульное программирование

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

Модулем (в модульном программировании) называется множество взаимосвязанных подпрограмм (процедур) вместе с данными, которые эти подпрограммы обрабатывают.

Модульное программирование предназначено для разработки больших программ.

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

Напомним понятие и структуру модуля в терминах языка Pascal.

Модуль (unit) – программная единица, текст которой компилируется независимо (автономно).

Модуль содержит 4 раздела: заголовок, интерфейсная часть (раздел объявлений), раздел реализации и раздел инициализации.

UNIT <имя модуля>; { заголовок }

INTERFACE { интерфейсная часть }

Uses <используемые модули>;

Const <объявления глобальных констант>;

Type <объявления глобальных типов>;

Var <описание глобальных переменных>;

Procedure <заголовки(!) доступных процедур>;

...

Function <заголовки(!) доступных функций>;

...

IMPLEMENTATION { раздел реализации }

Uses <используемые при реализации модули>;

Const <объявления скрытых (локальных) констант>;

Type <объявления скрытых (локальных) типов>;

Var <описание скрытых (локальных) переменных>;

Procedure <тела(!) скрытых (локальных) процедур>;

...

Function <тела(!) скрытых (локальных) функций>;

BEGIN

<основной блок модуля = раздел инициализации >

END.

Замечание. Различие всех описаний, содержащихся в разделах интерфейса и реализации, заключается в сфере их использования. В интерфейсном разделе – внешние описания, в разделе реализации – внутренние.




Поделиться с друзьями:


Дата добавления: 2014-11-09; Просмотров: 545; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.