• Tidak ada hasil yang ditemukan

Пример проектирования алгоритма. П усть требуется спроек

о * - ч ~ П ЕРВ Ы Й - Т— * и У Р О В Е Н Ь

o ^ Q

с н

А7А0

/

ВТОРОЙУ Р О В Е Н Ь

Рис. 2.10

математики, встречающ иеся в инженерно-технических задачах, про­

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

ются арифметические действия над числами (рис. 2 .1 1).

О тличительной чертой нисходящ его проектирования алгоритма является возмож ность контроля его работы с сам ого начала

о—>| + |~х> о-Ц — [>о о-»| X |-x>o»| -f- |>о

Рис. 2.11

проектирования. Э то достигается тем, что неразработанны е вы­

числительные блоки заменяю тся так назы ваем ы м и «заглушками».

Заглушки — это блоки, имитирую щ ие вход и выход неразработан­

ных блоков (рис. 2.12). Заглушка нужна только для того, чтобы проверить алгоритм определенного уровня.

С ВХОДНЫЕ \ ___ * ~7 (ЛЬ.(7\ ъ СВЫХОД НЫе\

^ Д А Н Н Ы Е J * \ ДАННЫ Е J Н УЛЕВО ЙУ Р О В Е Н Ь

Рис. 2.13

S = шах шах |х , ( / ) - ^ ( г ) |.

0 < / < Г К « 2

Значение к, даю щ ее min S, принимается в качестве решения к0^ к ^ к .

задачи.

П усть переходный процесс y ( t ) может бы ть измерен в дискрет­

ном числе точек t}, г, = 0 , tm = T интервала Q ^ t ^ T . Т огда численный м етод решения задачи может быть следующим: заменим минимизацию S по непрерывному интервалу 0 < г < Г минимизацией на дискретном множестве точек:

5 , = max шах |х,(о)-.У<(о)1- l^ j^ n t 1</<2

В S x значения будем находить численным интегрированием системы дифференциальных уравнений с заданной точностью е.

П ри фиксированном значении к величина есть функция к, т. е.

S l = S 1(k). Приближенным значением к щ к точному к будем считать такое значение, которое минимизирует S l (k):

шіп S l (k).

Обозначим алгоритм этой задачи Z0A0. Проект алгоритм а на нулевом уровне представлен на рис. 2.13.

Входные данные: к 0, к {, х ° , х ° , tj ( l ^ y < m ) , y t(tj).

Выходные данные: к^.

О бращ аясь к библиотеке (см. гл. 12), находим, что среди базовых алгоритм ов имеется два, которые можно использовать в проекте алгоритм а, а именно: В5А0— минимизация функции (к), В6- А0 — интегрирование системы дифференциальных уравнений (2.2.1).

Опиш ем действия алгоритма Z0A0, необходимые для перевода входных данных задачи в выходные.

1) Вычисление m inS^fc) блоком В5А0 и определение k t . Но для блока В5А0 требуется иметь алгоритм вычисления по значению к значения S x(k). Таким образом, первый уровень проекта можно представить в форме рис. 2.14. Здесь алгоритм В5А0 имеет в своем составе еще не разработанны й блок вычисления значения S, (к).

Обозначим этот блок S1K0. Тогда второй уровень проекта алгоритма можно представить в форме рис. 2.15. Д ля представления блока S1K0 заметим, что в его действие входит:

Рис. 2.14

я,

S 1 K 0 |

Рис. 2.15

2) Интегрирование системы уравнений (2.2.1) б локом В6А0, определение х г( /Д l ^ z < 2 ,

3) Вычисление S( при фиксированном к.

Третий уровень проекта, представленный на рис. 2.16, есть блок-схема ал гори тм а S1K0. Здесь непомеченный блок производит следующие вычисления:

S y = max max |xf(/J) - > 'i(/J)|.

1 К і < 2

Но для блока В6А0 требуется иметь алгоритм вычисления правых частей дифференциальных уравнений и алгоритм определения значений x-Xtj) (см. гл. 12). О бозначим соответствую щ ие алгоритмы через Ғ0А0 и F0A1 соответственно, непомеченный блок рис. 2.16

( К , Х ° , Х ° ,

Рис. 2.16

t j ) --- >| В 6 А 0 1 — >] h ^ C ~ s T )ТРЕТИИУРОВЕНЬ

обозначим F0A2. Т огда четвертый уровень проекта м ож но пред­

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

вий над числами (см. рис. 2.11). Таким образом , проект рассм ат­

риваемого алгори тм а исчерпывается пятью уровнями проектиро­

вания. В качестве прим ера алгоритм а пятого уровня приведем блок-схему F0A2 (рис. 2.18). Вычисление S Y и S 2 на этой схеме осуществляется блоком А0В5 (см. гл. 12).

И тогом проектирования алгоритм а является структурно-логи­

ческая схема — объединение схем на рис. 2.13— 2.18.

Теперь програм м ирование алгоритм а состоит в програм м и­

ровании:

1) обращ ений к базовы м вычислительным блокам;

2) базовых логических схем;

3) элементарных арифметических действий.

Проектирование алгоритм а по указанным выше правилам будем назы вать структурной алгоритмизацией. Д ля дальнейш его изучения рассмотренных в этом пункте вопросов следует обратиться к [1].

• 2.3. Поток данных

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

Внутри алгоритм а количество данных может изменяться, часть из них м ож ет запоминаться для дальнейш их вычислений, часть — затерта записью на их место других данных. Внутри алгоритм а возм ож на организация ввода и вы вода данных. Если учесть, что разм ер памяти ЭВМ , имеющийся в распоряжении пользователя, ограничен определенной величиной, то станет понятной важность описания прохождения данных (потока данных) через алгоритм.

2.3.1. Карга данных алгоритма. Полное описание потока данных ал гори тм а — это представление всех данных на структурно-логи­

ческой схеме алгоритм а во всех точках входа в вычислительные блоки и выхода из них. П усть имеется схема алгоритм а (рис. 2.19), где цифрами от 1 до 10 обозначены все точки входа и выхода вычислительных блоков данного алгоритм а. В каж дой точке

1 — 10 необходимо указать все данные, которы е имеет алгоритм в этой точке для схем без повторений. Д ля схем с повторениями ука­

зы ваю тся данные в точке 7 при входе в схему, в точке 8— перед выходом. В ка­

ждой точке составляется ка­

рта данных алгоритма. Т а ­ ким образом , алгоритм , приведенный на рис. 2.19, имеет 10 пронумерованных карт.

А лгоритм , приведенный на рис. 2.19, реш ает сле­

дующ ую задачу: в точке I вводится м атрица А, ве­

ктор Ь. В точке 2 имеем решение системы линейных уравнений

Рис. 2.18 А х = Ь,

( XL( t j ) , y L( t j ) )

I

5 , =mox(IXL(tjVyt ( t j ) l) 1* l <2

---*

ЗАМЕНИТЬ j H A j + 1 |

i < r r i ^ > HET Г вывод S,

V octahob

S j= m a x (lx i(tj)-y i(tj)l)

52

Рис. 2.19

поэтом у в карте 2 добавляется вектор х к входным данным. В точке 3 вычисляется значение норм ы ||х || = т а х |х ,|. Д алее проверяется условие: если норм а ||х ||< 1 , то переход на 4, если ||х ||> 1 , то на 6.

П усть ||х ||< 1 ; тогд а в точке 5 имеем сумму вектора правых частей и решения z = x + b. П оэтом у в карте 4 добавляется вектор z. Если 11*11 > 1 , то переход на б, где вводится вектор у. Схема повторений вычисляет скалярное произведение векторов х и у:

50

q = Л

>=1

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

К а р т а 1. Д вумерный массив вещественных чисел — м атрица 50, 1 < / < 50,

одномерный массив вещественных чисел bh 1 < ; < 5 0 . К а р т а 2. A i}, bt, одномерный массив вещественных чисел х {, 1 < ( ^ 5 0 .

К а р т а 3. Aij, bh x h ||х||.

К а р т а 4. С овпадает с картой 3.

К а р т а 5. А ф bh x h одномерный массив вещественных чисел

Zj, 1 < 50.

К а р т а 6. A u , bh x h одномерный массив вещественных чисел y h 1 < ( ^ 5 0 .

К а р т а 7. С овпадает с картой 6.

К а р т а 8. A ;j, bh x t, yt— вещественное число ц.

К а р т а 9. С овпадает с картой 8.

К а р т а 10. С овпадает с картой 5 или 9.

П оясним применение термина «карта» к способу описания данных. Во-первых, данные можно разм ещ ать на картах, пред­

ставляю щ их пам ять ЭВМ , графически, а не д авать словесного описания, как это сделано выше, тогда термин «карта» адекватен способу описания. Во-вторых, термин «карта памяти» применяется при описании распределения пам яти ЭВМ, необходимого для выполнения програм м ы алгоритма.

53

Таким образом , карта данных алгоритм а играет ту же роль, что и карта памяти для програм м ы алгоритм а, но появляется на более ранней стадии решения задачи (на уровне алгоритма).

К арта данных алгоритма позволяет: 1) осуществить контроль структурно-логической схемы алгоритма; 2) докум ентировать ал го­

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

П риведем простой пример контроля схемы алгоритм а, приве­

денного на рис. 2.19, описанием потока данных. Сущ ествую т распространенные вычислительные блоки решения систем линейных уравнений А х - Ь, которые вектор решения х записываю т на место вектора правых частей (затираю т Ь). Если применить такой блок, то в точке 2 будем иметь следующую карту.

К а р т а 2. А {], одномерный массив х {.

С ледовательно, ветвь алгоритм а по точкам 34 — 8 уже не м ож ет быть реализована, если ||х ||< 1 .

# 2.4. Структура программ

Процесс создания команд для ЭВМ, следуя которы м ЭВМ выполнит алгоритм, называется программированием алгоритма, короче — программированием.

П рограм м а — это последовательность команд для ЭВМ.

Считая, что этапом, предшествующим програм м ированию , яв­

ляется проектирование алгоритм а и описание потока данных, м ож но утверждать, что программ ирование — это перевод струк­

турно-логической схемы алгоритм а и потока данных на язык маш инных ком анд — получение программы.

П рограм м у создает пользователь ЭВМ , выполняет програм м у (обрабаты вает команды) — процессор.

Выполняемая програм м а называется вычислительным процессом, короче—процессом.

П рограм м ы существовали задолго до появления ЭВМ , например м узы кальная партитура — это програм м а для музы канта, кулинар­

ный рецепт — програм м а для повара. М ожно обнаруж ить м ного общих свойств между лю быми програм м ам и, выполняемыми одним процессором.

1) К ом анды выполняю тся п о с л е д о в а т е л ь н о , если нет других указаний, начиная с первой до последней. У казания м огут наруш ить последовательность выполнения програм м ы , например, требова­

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

2) Процесс должен им еть резул ьтат— выведенные на терминал числа и символы, звуки музыки.

3) Ч асто перед командами програм м располагается описание объектов, которы е програм м а обрабаты вает. В кулинарных рецептах дается список продуктов для приготовления блюда. В некоторых языках программирования необходимо описать данные перед командами.

54

4) Ч асто програм м ы строятся так, что автор не знает, какие вычисления будет вы полнять процессор,— это зависит от об ра­

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

5) В програм м ах применяю тся указания на необходимость повторения команды или последовательности ком анд более одного раза. В этом случае указывается либо точное число повторений (например, 100 раз), либо критерий, которы й зависит от процесса (повторять, пока точность вычислений не достигнет заданной е = 1 0 ' 6).

Спецификой програм м для ЭВМ является тот важнейший факт, что лю бая програм м а мож ет быть построена с пом ощ ью сле­

дующих четырех базовых конструкций:

1. П оследовательность команд.

2. Принятие решения (альтернатива).

3. П овторение (цикл).

4. Процедура.

Первые три конструкции имею т тот же смысл, что и в 2.2,— это базовые логические схемы, где вычислительный блок есть группа команд или ком анда (см. рис. 2.5— 2.7).

Процедура — это группа команд, которая заменяется одной командой. Н апример, кулинарная книга содержит процедуру при­

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

Процедуры в программировании ЭВМ уменьш аю т размеры програм м ы и придаю т ей иерархическую структуру «сверху вниз» — от сложного к простому.

В архитектуре алгоритм а вычислительный блок мож но рас­

см атривать как процедуру.

Dokumen terkait