Файл: Смирнов, К. А. Сбор, передача и обработка данных АСУ.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 19.10.2024
Просмотров: 106
Скачиваний: 0
«Урал-М»), На ipwc. 2.28а это устройство показано пунктиром.
Следует заметить, что первые два этапа составления программы, по сути дела, являются подготовительными. Иногда работы, проводимые на этих этапах, объединя ются под одним названием «разработка технологическо го алгоритма». Непосредственный процесс программиро вания начинается с разработки алгоритма решения за
дачи, или, как его |
еще называют, |
«блок-схемы |
про |
граммы». |
а л г о р и т м а . |
Алгоритмом |
назы |
Р а з р а б о т к а |
|||
вается необходимая |
последовательность арифметиче |
ских и логических действий по решению сформулирован ной задачи. Разработка алгоритма является первым этапом программирования. Для записи алгоритма ис пользуется форма, легко понятная человеку, хотя воз можно и не отражающая особенности ЭВМ, реализую щей данный алгоритм. Поскольку одну и ту же задачу можно решить различными путями, может быть состав лено несколько алгоритмов, из-которых выбирается тот, который решается с наименьшей затратой производи тельности конкретной ЭВМ.
Разработку алгоритма ввиду сложности этой задачи осуществляют в два этапа. Первый этап состоит в оп ределении последовательности арифметических и логи ческих действий, т. е. отражает сущность методики ре шения задачи. Второй этап включает в себя такие дей ствия, которые необходимы для нормальной работы ЭВМ. Сюда входят операции перевода исходных данных из десятичной системы счисления в двоичную, вывод результатов на печать и т. д.
Запись алгоритма может быть произведена различ ными способами. Ввиду своей наглядности наиболь шее распространение получила методика записи алго ритмов в виде блок-схем. В дальнейшем ,эти два этапа для простоты будут называться разработкой блок-схе мы программы. Однако наиболее прогрессивными спо собами записи алгоритмов являются алгоритмические языки. Подробнее о них будет сказано ниже.
Блок-схема программы представляет собой последо вательность прямоугольников, запись в каждом из ко торых указывает на характер проводимого действия. В качестве примера на рис. 2.29 показана блок-схема про
граммы |р«шения задачи, сфор мулироваганой в |
(начале |
раздела. Блоки с номерами 3—8 (пишутся |
на пер- |
103
ном этапе составления блок-схемы программы, а блоки с номерами 1, 2 и 9, 10, 11 добавляются на втором эта пе. Данная программа является разветвляющейся, по скольку после выполнения указанной в блоке операции (например, в блоке 5) переход к следующей операции
Рис. 2.29. Запись алгоритма в виде блоксхемы
определяется некоторым логическим условием. Так, ес ли результат оказался равным нулю, следующей опера цией оказывается действие, записанное в блоке 7. В том случае, когда переход к следующему блоку определяет ся в результате проверки какого-либо логического ус ловия, такой переход называется условным. Если пе
ня
реход к следующему блоку осуществляется без провер ки выполнения каких-либо условии, то переход назы вается безусловным. Так, например, переход от блока 7 к блоку 3 является безусловным переходом.
Ввод программы с носителя производится с помо щью стандартных, уже записанных в ЭВМ программ.
:Вызов последних осуществляется по команде, даваемой оператором с пульта управления ЭВМ. Операции, ука
|
занные в блоке 2, обозначают перевод программы п ис |
||||
|
ходных данных, записанных в десятичной системе |
счн- |
|||
|
. сления, в двоичную систему счисления. Блок 9 обозна |
||||
|
чает обратные действия. |
|
|
|
|
|
Вспомогательные операции вывода на печать резуль |
||||
|
татов вычислений вынесены из основной части блок-схе |
||||
|
мы программы. В действительности переход от блока 3 |
||||
|
к блоку 4 должен происходить через блоки 9, 10. |
В этом |
|||
|
случае программист получает на печатающем устройст |
||||
|
ве таблицу последовательных значений та. При необхо |
||||
|
димости по команде с пульта оператора (блок 11) |
вы |
|||
|
полнение программы может быть остановлено. |
|
|
||
|
Рассмотрим теперь, каким образом блок-схема про |
||||
I |
граммы отражает процесс изменения угла заслонки в |
||||
зависимости от дрэмен'и |
(рис. |
2.286). Подставим |
в |
вы- |
|
[ |
ражение a — Y АР+В |
такое |
значение времени |
/, |
при |
! |
котором величина угла приняла значение аь При таких |
:начальных условиях вычисление значения а (т. е. вы полнение операции, предусмотренное блоком 3) приве дет нас к блоку 4. Обозначим полученное значение уг ла через cti+i. При вычислении разности между преды
дущим значением |
угла |
и аг+1 в качестве |
а мо жн о |
за |
дать любое значение |
a2> a i> a i. Тогда |
разность |
Д= |
|
1 =сс,-—а;+) будет |
обязательно положительной, пооколь- |
'ку по условию ai+i = ai. Назначение этой операции за ключается в определении характера дальнейшего изме нения величины t. Положительное значение Д показыва ет, что регулирование осуществляется в сторону умень шения угла заслонки. Значение Д, меньшее нуля, пока зывало бы, что мы находимся на участке регулирования
между точками h и t2.
Итак, при выполнении условного перехода (по усло вию Д>0) начинается вычисление y = ai+i—at (блок 8).
■Назначение этого блока — не допустить уменьшения уг ла регулирования до значения, меньшего, чем сц. По скольку мы выбрали первоначальное значение t, приво дящее нас к ai4-i= ab то после выполнения вычисления
Ю5
получим у = 0 . Этот результат приводит нас к единст венному логическому выводу — следующее приращение времени должно быть положительным
Данное условие приведет к увеличению угла а и про цесс регулирования будет осуществляться в соответст вии с кривой на участке ti—12. Ввиду сказанного услов ный переход приводит нас от блока 8 к блоку 6. В этом блоке предусматривается увеличение значения Дн (пер воначального значения t) на 1, после чего безусловный переход приводит к блоку 3, где вычисляется новое зна чение утла а. На этом очередной цикл операций закан чивается и начинается новый, отличающийся от преды дущего лишь тем, что теперь разница между предыду щим и вычисленным значением бущет меньше нуля. Это условие приводит к тому, что последующей операцией будет проверка, не превышает ли полученное значение
авеличины аз и т. д.
Вданном алгоритме при вычислении последователь ности значений а, лежащих на участке U—/г, порядок выполнения операций выглядит таким образом:
~>5—>6-^3^4 .... Многократное выполнение последова
тельности одних и тех же операций называется циклом программы. В данном случае цикл состоит из блоков 3, 4, 5 и 6.
С о с т а в л е н и е п р о г р а м м ы. Эта работа являет ся наиболее ответственным этапом программирования и представляет собой исключительно сложный и трудоем кий процесс. В процессе составления программы проис ходит детализация блок-схемы программы с учетом ха рактеристик конкретной ЭВМ. В результате исходный алгоритм записывается в виде последовательности кон-
1 |
|
|
кретных |
элементарных |
|
|
|
операций. |
Ввиду своей |
3 |
В ы чи с л е н и е |
a i + ^ 4 a t i2t * b |
сложности ‘процесс про |
|
|
|
|
граммирования требует от |
|
4 |
|
д =а i ~ o c i + t |
ггросрa'MiMHCTOiB нзаряжен |
|
В ы чи сле ни е |
ного внимания, что, впро |
|||
j |
^ П р и & * 0 |
| n p u t > 0 |
чем, только 'уменьшает |
|
число ошибок, допущен |
||||
1 |
___у |
ных при программирова |
||
В - |
В ы чи сле ни е |
х = |
нии, но не исключает их. |
|
|
|
Процесс |
составления |
|
|
|
|
программы |
состоит из |
Рис. 2.30. Часть общей блок-схемы |
тРех этапов, |
вначале со- |
||
алгоритма |
|
ставлиется |
логическая |
lot
•схема программы, затем формируется программа в ус ловных адресах и, наконец, программа в действитель-’ ных адресах.
Логическая схема программы представляет собой детальную запись последовательности операций, реали зующих блок-схему программы. При этом в состав опе раций могут входить лишь те, выполнение которых пре дусмотрено конструкцией ЭВМ. В качестве примера представим в виде логической схемы программы опера ции, пер'еч1и'сле1н,ные в 'блоках 3, 4, S (|рис. 2.29). Для удобства эти блоки изображены отдельно на рис. 2.30. Логическая программа, реализующая указанные в бло ках операции, будет выглядеть следующим образом:
0 . t i + i • t i + i — t 2i + \ ;
1• А ■tzi+il
3.At2i+i-\-B;
4.V A tzi+i + В;
5.ai—a?:+i=A;
6.Условный переход по Д>0;
7.-у = а{+1—ар
8.Условный переход по у>0.
Составление программы заключается в решении двух вопросов — установлении последовательности команд самой программы и распределении памяти ЭВМ для хранения исходных данных, команд и т. д. Эти две за дачи противоречивы, поскольку нельзя распределить память, не зная числа команд в программе, а програм му, в свою очередь, нельзя составить, если неизвестны адреса исходных данных и результаты вычислений. Про тиворечие можно решить, если составлять программу, не обращая внимания на конкретные адреса ЭВМ и за писывая адреса в виде буквенных и цифровых обозна чений. Такие адреса называются условными. После со ставления программы в таком виде условные адреса заменяются конкретными числовыми значениями. Эта программа называется рабочей программой, или про граммой-в действительных адресах.
В качестве примера запишем в условных адресах программу, алгоритм которой приведен на рис. 2.30. Со ставление такой программы начинается с установления условных адресов ячеек, где предполагается размещать
107
команды, исходные данные и т. д. Размещение ячеек с условными номерами в памяти ЭВМ показано на рис. 2.31а. На датойом этапе под памятью подразумевается
и ) _____________________________________ 5)_______________________________
то нч _ЛО_
Адрес ячейа ш для разме *щечая команд
Р'О |
-РЧ |
Р+2 |
А |
в |
41 |
Р*3 |
0*6 |
Р*5 |
ос2 |
а |
1 |
р*В |
Константы |
|
|
||
с*0 |
сч |
с*г |
1*0 |
i*i |
1*2 |
|
М асси в |
с програм м ой |
ввода |
|
|
2i*t |
41 |
П |
|
|
||||
т о |
|
|
|
|
|
|||
1*3 |
|
|
0081 |
0081 |
0083 |
0086 |
0685 |
|
|
Содержание |
X |
X |
+ |
V"4 |
|
|
|
ячейки Оля разме |
Команды для реализации блоков 5,6 ,1 |
|||||||
щения исходных донна |
|
|
|
|
|
|
||
|
' Массив |
|
0W6 |
0101 |
о т |
0103 |
ОНО |
от |
(XV0 |
|
- |
|
‘1.1 |
«1 |
+ i |
А |
|
а*/ |
(х+2 |
оно |
||||||
0-1*1 |
|
|
о т |
о т |
0 /15 |
0116 |
от |
|
|
|
в |
o il |
а г |
0 |
1 |
а 1*1 |
|
CC-fJ |
|
|
о т |
|
|
|
|
|
|
|
|
|
|
|
|
|
Окончательные
результаты |
Операт ивное ЗУ |
|
|
С*3 |
|
|
Промежуточные |
результаты |
|
|
I |
Память |
звм |
\ |
|
I |
|
|
I |
|
Рис. |
2.31. Размещение ячеек |
с условными |
'номерами и н а м я т ЭВМ |
|
( а ) |
н рабочем программы к оперативном |
ЗУ ( б ) |
ЗУ вообще без уточнения его вида. Принимается усло вие, при котором номера ячеек, предназначенные для размещения команд программы, будут обозначаться, например, в виде /г + 0, /г-|-1, /г+2 .... номера ячеек для исходных данных будут обозначаться /+0, /+1 ... н т.д. Константами в пашем примере будут значения А, В, <ц< О и 1. Исходными данными являются значения /i+1( и ut, а окончательными результатами вычислений будем считать текущие значения а. Разместим перечисленные выше величины в соответствующих массивах, как пока зано в табл. 2.3. Получаемые в процессе вычисления промежуточные данные, а также значения Д н у будем размещать в массиве с адресами с+0, с+1 и т. д. Счи таем также, что гипотетическая ЭВМ, на которой реша ется наша задача, является трехадресной.
Имея теперь все исходные условия, запишем про грамму, составленную в условных адресах, в виде табл. 2.3.
Из таблицы видно, что команда умножения, разме щаемая в ячейке, /г+0, служит для выполнения опера ции возведения в степень значения /2;.|_ь Величина
I0S
|
А дрес |
|
К о м анда |
|
|
Р е зу л ь т а т оп ер ац и и , |
|||
|
|
|
|
|
|
||||
№ ком ан- |
|
|
|
А дрес |
|
заносим ы й |
в З У по |
||
|
ды |
; |
О п ерац и я |
1-й |
2-й |
3 -й |
тр еть ем у |
а д р е с у |
|
|
|
|
|
|
|
|
|||
1 |
£ |
0 |
У м н ож ен и е |
‘ |
/ + 0 |
/-1-0 |
с + 0 |
I 2 |
|
|
|
|
|
|
|
|
|
‘ н - 1 |
|
2 |
/Н - 1 |
У м н ож ен и е |
|
р + 0 |
с + 0 |
с + 0 |
A t2 |
|
|
|
|
|
|
|
|
|
|
л ‘ М -1 |
|
3 |
£ + 2 С л ож ен и е |
|
с + 0 |
р + 1 с + 0 •4 / г + 1 + в |
|
||||
4 |
к+ |
3 |
И звл еч ен и е |
корня |
с + 0 |
- |
d + 0 |
V А $ + 1 + |
В |
5 |
+ | - 4 |
Вы читание |
|
1 + 1 |
d + 0 |
с + 0 |
Д = а , — |
а £+1 |
|
6 |
/ Н - 5 |
У словн ы й |
п ер ехо д |
с + 0 |
р + 4 |
£ + 0 0 |
|
||
|
|
|
при Д > 0 |
|
|
||||
7 |
£ + 0 0 |
Вы читание |
|
d + 0 |
р + 2 |
с + 0 |
Г = « г+ 1 — оц |
||
8 |
£ + 0 1 |
У сл овн ы й |
п ер ех о д |
|
|
|
|
||
|
|
|
при y > 0 |
|
с + 0 |
р + 4 |
£ + • • ■ |
|
|
записана по адресу /+0. При выполнении операции про изводится двукратное обращение к ячейке /+ 0 (в соот ветствии с первым н 'вторым адресами). .Результат опе рации записывается в массив для размещения проме жуточных результатов в ячейке с адресом с+ 0.
По команде /г+1 из массива для размещения кон стант из ячейки с адресом ц+ 0 считывается постоянная А, из ячейки с адресом с+ 0 считывается значение t\.и, и эти две величины перемножаются. Полученный резуль тат записывается вновь в ячейку с+ 0, причем находив шаяся там величина t2i+i в момент записи стирается. Аналогичным образом выполняется и команда, записан ная по адресу/е+2.
О выполнении операции извлечения квадратного кор ня следует сказать несколько подробнее. Существуют ЭВМ, в которых упрощенная конструкция арифметичес кого устройства (АУ) не позволяет выполнять указан ное действие по одной команде. Это сравнительно ред кое действие, а также -ряд других операций могут быть, выполнены путем определенной посладователиноети че тырех арифметических действий, представляющих собой: небольшую программу, называемую стандартной под программой. Если бы конструкция АУ нашей гипотети ческой ЭВМ не позволяла бы извлекать квадратный ко-
Юй