
- •4. Разработка алгоритмов методом пошаговой детализации
- •4.1. Структура алгоритма
- •4.2. Описание действий
- •4.3. Обратная подстановка
- •4.4. Пример
- •4.4.1. Разработка внешней спецификации
- •Внешняя спецификация
- •Вывести сообщение “Ошибка” и завершить работу программы
- •4.4.2. Разработка главного алгоритма
- •Сортировка
- •План“ Вывод-представления ”
- •Алгоритм “Полный перебор”’) Конец
- •4.4.3. Подстановка
- •Алгоритм “Полный перебор”’)
- •{Сортировка}
- •4.4.4. Кодирование на языке Паскаль
- •Writeln(’Алгоритм ”Полный перебор”’);
- •{Сортировка}
- •4.4.5. Разработка алгоритма подпрограммы сортировки
- •Переместить-мин.-элемент-на-позицию-k
- •{Переместить-мин.-элемент-на-позицию-k}
- •4.5. Вопросы для самоконтроля
4. Разработка алгоритмов методом пошаговой детализации
Одним из основных методов решения сложной задачи в любой области человеческой деятельности является метод декомпозиции, когда сложная задача разбивается на несколько более простых задач - на подзадачи. Этот процесс продолжается до тех пор, пока выделенные после очередной декомпозиции подзадачи не будут упрощены настолько, что их в состоянии будут решать конкретные исполнители. Процесс декомпозиции можно изобразить графически:
Аналогичный подход используется и при разработке программ, а метод, использующий его, получил название метода пошаговой детализацииили метода нисходящего проектирования программы. При методе пошаговой детализации алгоритм решения исходной задачи представляется как совокупность более простых алгоритмов, которые, в свою очередь, разбиваются на еще более простые и т.д. Выделенные алгоритмы могут быть как не имеющими законченного функционального назначения, так и функционально независимыми. В первом случае выделяется часть алгоритма, которую проще разработать отдельно и затем вставить в исходный алгоритм.
Во втором случае выделенные алгоритмы можно проектировать как самостоятельные задачи и оформлять на языке программирования в виде подпрограмм. Как известно, подпрограмма не решает всей задачи, она – часть программы, реализующая строго определенные функции.
Разработка подпрограммы должна начинаться с разработки внешней спецификации, в которой обязательно выделяются входные и выходные данные, которые в языках программирования называются соответственно входными и выходными параметрами. Некоторые входные данные могут быть одновременно и выходными, т.е. допускать изменение значений в подпрограмме.
Во внешней спецификации также обязательно фиксируются ограничения на значения входных аргументов, которые отражаются в разделе “Аномалии входных данных”. Реакции подпрограммы на аномалии рекомендуется обеспечивать через ее выходные данные.
Процесс пошаговой детализации алгоритма конечен, а число шагов зависит от сложности задачи и квалификации разработчика. Его рекомендуется завершать тогда, когда на очередном шаге получается текст, запись которого на языке программирования не представляет проблем для разработчика. В пределе этот процесс можно завершить тогда, когда каждая строка алгоритма может быть заменена одним оператором языка программирования.
4.1. Структура алгоритма
Запись каждой детализации должна быть оформлена так, как это изображено ниже: (а) – для случая несамостоятельной части алгоритма; (б) – для случая алгоритма, выделяемого в самостоятельную подпрограмму.
План
алгоритма
“Название” Внутренние
переменные:
<список-переменных> Начало <Описание
действий> Конец
(а)
Алгоритм“Название” Входные
переменные:
<список-переменных> Выходные
переменные:
<список-переменных> Внутренние
переменные:
<список-переменных> Начало <Описание
действий> Конец
(б)
Отметим, что для случая (а) раздел внутренних переменных вставляется только в том случае, если при разработке указанного плана недостаточно внутренних переменных алгоритма предшествующего уровня. В любом случае данные переменные являются глобальными для этой части алгоритма. Глобальнымипеременными считаются такие, которые определены для алгоритма верхнего уровня, с которого осуществляется переход на текущий уровень.
Примечание. В дальнейшем с целью сокращения записи вместо слов “план алгоритма” будет употребляться одно слово “план”.