Понятие процедурной и структурной декомпозиции

Структурная (процедурная) декомпозиция программы

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

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

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

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

Рассмотрим пример структурной декомпозиции программы.

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

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

Рисунок 1 – Схемы алгоритмов программы определения площади четырехугольника с использованием функции (а) и процедуры (б)

Структурная схема программы определения площади четырехугольника приведена на рисунке 2.

Рисунок 2 - Схема структурная программы определения площади четырехугольника