Основные методы технологии построения алгоритмов

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

Например, чтобы написать в письме индекс получателя (393780) необходимо данное число вписать в соответствующую графу письма. Сначала пишут цифру 3, затем 9, 3, 7, 8 и, наконец, 0. При этом цифры рисуют, последовательно прорисовывая линии, из которых они состоят.

Модульность алгоритмов, головная программа. При программировании сверху вниз алгоритмы и данные делятся на относительно независимые части, называемые модулями[14]. Некоторые из модулей являются стандартными и поставляются в составе языков программирования, например, вычисление элементарных математических функций, квадратный корень, логарифм, косинус, синус и т.д. Но главные модули все равно приходится проектировать программистам. Таким образом, алгоритм является деревом модулей: одни модули вызывают другие модули, начиная с самого верхнего первого модуля, называемого корневым модулем, или головной программой.

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

1) какова функция модуля, т.е. что он делает;

2) описание входных и выходных данных модуля.

Правильное проектирование алгоритмов позволяет абстрагироваться от внутренней структуры модулей и рассматривать при сборке полного алгоритма только функции модулей.

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

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

Тремя элементарными структурными алгоритмами являются следующие:

1. Следование, или цепочка, или составная инструкция.

2. Выбор, или ветвление, или условная инструкция.

3. Цикл, или возврат, или циклическая инструкция.

Объектно-ориентированное программирование. Компьютер =
= аппаратное обеспечение + программы, а программа = алгоритм + данные. После открытия структурного проектирования алгоритмов стали разбираться с программированием данных. Объектно-ориентированное программирование (ООП)организует данные и алгоритмы, обрабатываемые программой. При этом программист создает формы данных и алгоритмы, соответствующие основным характеристикам решаемой проблемы. Модели данных и алгоритмы, их обрабатывающие, называются классами, а объекты- это конкретные их представители, используемые в программе.

Из общих объектов создаются другие, более специализированные. Механизм создания таких подобъектов называется наследованием. Т.е. наследование представляет собойсоздание нового класса объектов путем добавления новых элементов (методов). В данный момент ОО языки позволяют выполнять множественное наследование, т.е. объединять в одном классе возможности нескольких других классов. Для ООП характерны еще два механизма (свойств): инкапсуляция и полиморфизм.

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

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

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

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

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

Рассмотрим более подробно структурное программирование и применяемые в нем базовые алгоритмические структуры.

Наши рекомендации