Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты новые.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
503 Кб
Скачать
☆

Билет № 64. Понятие о структурном программировании. Модульный принцип программирования. Программы. Принципы проектирования программ сверху-вниз и снизу-вверх.

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

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

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

Распространены две методики (стратегии) разработки программ, относящиеся к структурному программированию: программирование "сверху вниз" и программирование "снизу вверх".

При программировании модуля следует иметь ввиду, что программа должна быть понятной не только компьютеру, но и человеку: и разработчик модуля, и лица, проверяющие модуль, и текстовики, готовящие тесты для отладки модуля, и сопроводители ПС, осуществляющие требуемые изменения модуля, вынуждены будут многократно разбирать логику работы модуля. В современных языках программирования достаточно средств, чтобы запутать эту логику сколь угодно сильно, тем самым, сделать модуль трудно понимаемым для человека и, как следствие этого, сделать его ненадежным или трудно сопровождаемым. Поэтому необходимо принимать меры для выбора подходящих языковых средств и следовать определенной дисциплине программирования. Впервые на это обратил внимание Дейкстра [8.2] и предложил строить программу как композицию из нескольких типов управляющих конструкций (структур), которые позволяют сильно повысить понимаемость логики работы программы. Программирование с использованием только таких конструкций назвали структурным.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подпрограммы

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

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

Все подпрограммы делятся на процедуры и функции. В предыдущих уроках эти термины уже использовались. Сейчас Вы узнаете, в чём разница. А различий на самом деле немного. Функция - это подпрограмма, результатом работы которой является какое-либо значение (одно единственное). Это позволяет использовать функции как обычные переменные, т.е. как операнды в выражениях. Просто значения будут вычисляться "на лету". Процедуры - это подпрограммы, которые не возвращают никакого значения в результате своей работы. Тем не менее, процедуры могут использоваться для передачи в основную программу каких-либо данных, причём передаваться может не одно значение, а несколько. Но в общем и целом процедуру следует понимать просто как ярлычок на выполнение указний.