Вспомогательные алгоритмы

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

Алгоритм любых наших покупок может выглядеть следующим образом:

7. Достать кошелек.

2.                Взять из кошелька деньги.

3.          Дать деньги продавцу.

4.                Назвать требуемый товар.

5.                Получить товар.

6.               Положить товар в сумку (в пакет, в карман и т.д.).

7.                Взять сдачу.

8.               Положить сдачу в кошелек.

Если все действия в течение дня описать в виде алгоритма, то в нем, скорее всего, ни один раз встретятся эти восемь действий, только название товара будет меняться. Пять покупок, сделанных в этот день, добавят в алгоритм дня 40 строчек. А если покупок 10, то строчек будет 80. Возможно даже, что именно эти строчки составят значительную долю алгоритма дня, хотя их информаци­онная ценность очень мала — фактически 10 раз будет повторять-(ся описание одной и той же последовательности действий. В этой ситуации удобно выделить алгоритм покупок из алго­ритма всего дня и записать его отдельно под заголовком, напри­мер, «Покупка X». Тогда в алгоритме дня каждая покупка будет представлена только одной строкой вместо восьми; лишь значе­ние Сбудет меняться (хлеб, книга и т.д.).

Записав один раз этот алгоритм, его можно вставлять в любой другой алгоритм, описывающий наши действия, если среди этих действий будет покупка чего-либо. Для этого достаточно упомя­нуть заголовок алгоритма и указать конкретное значение X.

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

Вспомогательные алгоритмы очень удобны при решении мате­матических задач. Например, решение квадратных уравнений или вычисление функции sinx с помощью ЭВМ представляет собой длинную цепочку действий. Если все пункты этих алгоритмов каж­дый раз записывать в основном алгоритме решения задачи, то он становится слишком длинным. Удобнее записать, например, вы­числение sinjc в виде вспомогательного алгоритма, а в основном алгоритме в нужных местах просто сделать ссылки на него.

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

23

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

Например, при изготовлении разных изделий может выпол­няться операция нагрева какой-либо детали или вещества с по­мощью нагревательного элемента до той или иной температуры. Обозначим эту температуру /, а алгоритм нагрева назовем «На­грев до t». Он может быть представлен в следующем виде:

«Нагрев до f»

1.                Ввести значение t.

2.                Включить нагреватель.

3.               Пока температура меньше 1, выполнять действия:

4.                  Подождать 5 с.

5.                Измерить температуру.

6.                 Конец цикла.

7.                 Выключить нагреватель.

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

Предположим, что имеется основной алгоритм, в котором есть этап нагрева жидкости до 150 °С. В этом случае только что рассмот­ренный алгоритм Нагрев до t может использоваться как вспомога­тельный:

/. Налить в резервуар жидкость № 1.

2.                Налить в резервуар жидкость № 2.

3.                Перемешать жидкости.

4.                Нагрев до 150 °С.

5.                    Открыть заслонку и т. д.

Здесь строка 4 означает вызов вспомогательного алгоритма «Нагрев до t», которому и передается значение температуры / = = 150°С. После выполнения вспомогательного алгоритма, т.е. на­грева жидкости до 150 "С, исполнитель переходит к следующему действию 5. Алгоритм нагрева может еще неоднократно использо­ваться в этом же основном алгоритме или в любом другом алго­ритме, обеспечивая каждый раз нагрев до нужной температуры /.

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

24

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

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

Способы записи алгоритмов 2.3.1. Словесная запись

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

Словесная запись алгоритма — это запись последовательности действий на одном из языков человеческого общения.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: