Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС2 Проектирование аппаратного и программного...doc
Скачиваний:
5
Добавлен:
26.09.2019
Размер:
2.77 Mб
Скачать

Подходы к алгоритмизации

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

Основными критериями эффективности программ являются:

1) объем памяти, необходимый для программы;

2) время выполнения программы;

3) ясность и простота структуры программы, определяющая степень ее сопровождаемости.

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

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

BS-подход получил свое название как аббревиатура от "Bowl of Spaghetti" ("Блюдо макарон"). В этом подходе на структуру алгоритма не накладывается никаких ограничений. В результате полученная программа может быть очень эффективна по памяти и по времени. Поскольку в общем случае временные связи между отдельными программными модулями могут быть очень сложными, то получаемая при этом ГСА также будет очень сложной и запутанной (как блюдо макарон). Подобные структуры плохо сопровождаются  их трудно понять, модифицировать, тестировать и отлаживать. В связи с этим программа может содержать множество ошибок, не выявленных в процессе ее создания. Однако достоинства BS-подхода дают основание применять его для алгоритмизации простых задач, в которых невозможно сильно напутать даже при большом желании.

Для повышения ясности и упрощения структуры алгоритма был разработан структурный подход к алгоритмизации. В этом подходе накладываются жесткие ограничения на структуру ГСА.

В соответствии со структурным подходом любой алгоритм может быть реализован с помощью трех базовых логических конструкций: СЛЕДОВАНИЕ, ВЕТВЛЕНИЕ и ЦИКЛ, ГСА которых приведены на рис. 3.19.

Конструкция СЛЕДОВАНИЕ представляет собой некоторую последовательность операторов действия.

Конструкция ВЕТВЛЕНИЕ обеспечивает возможность принятия двоичного решения. При этом в зависимости от значения проверяемого условия выполняется либо один, либо другой оператор действия. В частном случае одна из ветвей конструкции ВЕТВЛЕНИЕ может быть пустой.

Конструкция ЦИКЛ обеспечивает многократное выполнение одних и тех же действий до тех пор, пока не будет выполнено условие выхода из цикла. При этом существуют две разновидности конструкции ЦИКЛ. В конструкции ЦИКЛ С ПРЕДУСЛОВИЕМ возможен случай, когда оператор действия не будет выполнен ни разу. В конструкции ЦИКЛ С ПОСТУСЛОВИЕМ оператор действия выполняется минимум один раз.

Рис. 3.19. Базовые логические конструкции:

а) СЛЕДОВАНИЕ; б) ВЕТВЛЕНИЕ;

в) ЦИКЛ С ПРЕДУСЛОВИЕМ; г) ЦИКЛ С ПОСТУСЛОВИЕМ

Характерной особенностью всех базовых логических конструкций является наличие одного входа и одного выхода. Этому условию удовлетворяют также и более сложные логические конструкции: ВЫБОР и ВЫБОРПОВТОРЕНИЕ, которые могут использоваться при разработке структурированных алгоритмов. ГСА этих расширенных конструкций приведены на рис. 3.20.

Рис. 3.20. Расширенные логические конструкции:

а) ВЫБОР; б) ВЫБОРПОВТОРЕНИЕ

В конструкции ВЫБОР по значению параметра выбора I выбирается соответствующая ветвь и выполняется находящийся в ней оператор действия. После этого управление передается на выход из логической конструкции.

В конструкции ВЫБОРПОВТОРЕНИЕ оператор действия выбирается и выполняется точно так же, как в конструкции ВЫБОР. Однако, после этого осуществляется модификация параметра выбора I и управление вновь передается на его анализ и т. д. Некоторое значение I соответствует выходу из этой логической конструкции. Конструкция ВЫБОРПОВТОРЕНИЕ фактически объединяет все базовые логические конструкции и является универсальной, т. к. любой алгоритм может быть представлен с ее помощью.

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

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

Рассмотрим этот процесс в обобщенном виде, предполагая, что общая задача разбита на две подзадачи. Выполним взаимоувязку этих подзадач во времени с помощью двух противоположных логических конструкций: последовательной конструкции СЛЕДОВАНИЕ и параллельной конструкции ВЫБОРПОВТОРЕНИЕ. Применение остальных логических конструкций для решения этой задачи рассматривать не будем, т. к. это даст лишь промежуточные варианты построения алгоритма.

Используя выбранные логические конструкции, можно получить два варианта ГСА для решения общей задачи (рис. 3.21). Из анализа структуры этих алгоритмов с учетом реализации в однопроцессорной МПС следует вывод об их эквивалентности.

Действительно, любой алгоритм начинается с подзадачи "Подготовка", обеспечивающей исходное корректное состояние всех наборов данных программы. Далее в обоих алгоритмах выполняется подзадача 1, а затем подзадача 2. Особенностью этих алгоритмов является отсутствие оператора конца. В связи с этим общая задача решается в течение бесконечного времени, в ходе которого чередуется выполнение подзадач 1 и 2. Эта особенность очень характерна для МПС, чаще всего решающих вычислительные и управляющие задачи, не имеющие конца. Полученный вывод об эквивалентности ГСА справедлив и для алгоритмов, увязывающих подзадачи любого этапа декомпозиции.

Таким образом, алгоритмизация программы с помощью различных логических конструкций в однопроцессорных МПС дает эквивалентные результаты. Поскольку наиболее простой является конструкция СЛЕДОВАНИЕ, то ее и целесообразно использовать для этой цели.

Рис. 3.21. Представление алгоритма решения общей задачи:

а) логической конструкцией СЛЕДОВАНИЕ;

б) логической конструкцией ВЫБОРПОВТОРЕНИЕ

Условное выполнение некоторой подзадачи в конструкции СЛЕДОВАНИЕ обеспечивается путем анализа управляющих признаков (ключей) на ее входе (рис. 3.22). Если значение ключа соответствует выполнению подзадачи, то реализуются необходимые действия. В противном случае выполнение подзадачи сразу прекращается, и управление передается на ее конец.

Рис. 3.22. Условное выполнение подзадачи

Такая организация имеет некоторую избыточность, т. к. требует анализа всех управляющих ключей на входе подобных подзадач. Это является следствием применения структурного подхода к алгоритмизации программы. Однако, затраты на реализацию этой избыточности весьма невелики и, чаще всего, являются вполне приемлемой платой за упрощение алгоритма программы путем его представления в виде логической конструкции СЛЕДОВАНИЕ.