книги из ГПНТБ / Караваев, Н. И. Электронные цифровые вычислительные машины и программирование учеб. пособие
.pdf-180 -
7)вычесть у^ из х ;
8) |
запомнить |
результат |
х 2 - У 2 |
; |
|
9) |
ваять у 2 - , |
|
|
|
|
10) |
умножить |
у 2 |
на у 2 ; |
|
|
11) |
сложить |
у 4 |
и х 2 |
; |
|
12) |
разделить |
х 2 |
+ у 4 |
на X 2 - |
У 2 ; |
13) |
запомнить |
результат |
Z . |
|
В составленном алгоритме имеются преимущественно опера ции арифметического характера. Однако алгоритмы задач, ре шаемых на ЭЦВМ, обычно весьма сложны и содержат много эта пов, по-разному связанных между собой. Эти этапы различны по своему назначению. Одни из них заключаются в проведении вычислений .по определённым формуламарифметические этапы, или арифметическая часть задачи, другие-логические этапысостоят в проверке выполнения определённых условий, уста навливающих моменты перехода от одного арифметического эта па к другому. Эти этапы составляют логическую часть задачи. Сложность алгоритма определяется сложностью задачи.
Алгоритмы задач, какой бы сложности они не были, долж ны обладать следующими основными свойствами:
-определённостью, то-есть не должны допускать различ
ных толкований пунктов, входящих в алгоритм;
-массовостью, то-есть должны быть универсальными и
пригодными для решения любой задачи данного типа; - результативностью, то-есть должны обеспечивать по
лучение определённого результата /числа, группы чисел или логического условия/.
В области умственной деятельности человека существует большое количество разнообразных процессов, которые им вы полняются по строго определённым правилам и которые могут быть выражены тем или иным алгоритмом. Так,например, можно говорить об алгоритме игры в шахматы, об алгоритме разработ ки плана операции, об алгоритме нахождения оптимального ре шения и т.д.
Составной частью геодезических работ является обработке
- 181 -
результатов геодезических измерений, включающая большой объём вычислений, которые проводятся в определённой после довательности. Так как формальные правила, по которым про водится вычисления, известны, то процесс обработки резуль татов геодезических измерений алгоритмизируем, то-есть воз можно составление алгоритмов обработки результатов геодези ческих измерений. Следовательно, проведение вычислений мож но возложить на ЭЦВМ, так как на последней может быть реа лизовано решение любой задачи, алгоритм которой существует и известен.
При разработке алгоритма задачи очень важно, чтобы ал горитм был записан в наглядной и компактной форме, удобной для практического использования.
Существуют следующие способы для описания алгоритмов:
-запись алгоритмов на разговорном языке и языке, ма
тематических символов с пояснениями на разговорном языке;
-запись алгоритмов на языке машины или непосредствен ное программирование;
-запись алгоритмов в виде блок-схем;
-запись алгоритмов на языке логических схем или опе
раторная запись алгоритмов;
-алгоритмические языки.
В простейшем случае для описания алгоритмов может быть использован обычный разговорный язык или язык математичес ких символов /язык формул/ с пояснениями на разговорном языке. Примером такого способа записи алгоритма является пример, приведении! в начале нестоящего параграфа.
Такой способ записи отличается ясностью и отсутствием связи с машинной реализацией. Однако описывать на разговор ном языке можно довольно простые алгоритмы, так как для бо лее сложных случаев запись получается громоздкой и ненагляд ной. Поэтому применение указанного способа записи весьма ограничено.
Следующий способ записи алгоритмов, называемый непосред ственным программированием, может быть использован также 'при решении сравнительно простых задач. Более подробно этот
- 182 -
способ будет описан в § 7.9 при рассмотрении вопроса про граммирования в действительных; адресах. Однако следует от метить, что запись алгоритмов этим способом доступна весь ма искусным программистам, имеющим большой опыт работы на конкретной ЭЦВМ.
Большое распространение получила графическая запись структуры алгоритмов в виде так называемых блок-схем. При
этом способе записи один общий алгоритм разбивается на ряд частных алгоритмов, соответствующих определённым арифмети ческим и логическим частям звдачи. Каждый частный алгоритм называется блоком и изображается графически в виде прямо угольника /вычислительный блок/ или овала /логический блок/ Блоки соединяются стрелками, указывающими связи между раз личными этапами. Внутри блока указывается краткое содержа ние данного этапа вычислений или формулы, по которым эти вычисления осуществляются. Блоки нумеруются сквозной нуме рацией.
В качестве примера рассмотрим составление блок-схемы ал горитма вычисления корней квадратного уравнения:
Ах2 + Вх + С - 0 -
Корни этого уравнения находятся по формуле
причем, |
если В2 |
- |
4AG >• 0, |
то вычисляются действительные |
||
корни |
х.| |
и |
Xg |
по приведенной выше формуле, а |
если |
|
В2 - 4 А С < 0 , |
то |
|
необходимо |
вычислить комплексно |
сопряжён |
|
ные корни |
|
|
|
|
|
Очевидно, перед тем как решить, по каким формулам вы числять корни, необходимо предварительно определить эначе-
- 183 -
ние В2 - 4АС.
Блок-схема алгоритма вычисления корней квадратного урав
нения приведена на рис. 7 . 1 . |
|
|
|
|||
|
1 |
|
Вычисление |
3^ - 4AG |
|
|
|
( 2 |
|
Проверка |
условия В2 - 4АС < О |
||
|
v. |
—, |
|
— |
1 |
|
|
|
|
Нет |
|
|
Да |
3 |
Вычисление |
действи |
4 |
Вычисление |
комплек- |
|
|
тельных корней |
|
сных корней |
|
||
|
|
5 |
|
|
+ |
|
|
|
i Запоминание |
|
|||
|
|
|
результата |
|
||
|
|
Рис. 7.1. |
|
|
|
|
На схеме блок 2 - логический |
блок, проверяющий условие |
|||||
В2 - 4АС<0 или |
- 4АС>0, далее происходит переход либо |
|||||
к блоку |
3, либо к блоку 4. После |
того как будет |
исполнен |
|||
любой из |
этих блоков, |
произойдёт |
выполнение блока 5. |
Однако полная блок-схема алгоритма задачи, предназна ченная для машинной реализации должна иметь в своём соста ве ряд других блоков, обусловленных спецификой решения за дач на ЭЦВМ, а именно:
- ввод программы и исходных данных в машину и перевод их в двоичную систему счисления;
.-• контроль правильности счёта ;
-перевод результатов в десятичную систему счисления
ивывод их из машины и др.
Такая блок-схема алгоритма вычисления корней квадрат ного уровнения приведена на рис. 7.2.
- 184 -
Ввод программы и исходных данных
2Перевод "10 — 2"
3Вычисление В2 - 4AG
|
Проверка |
условия В2 |
- 4ДС < |
0.) |
|
|
I нет |
|
j |
да' |
комплек- |
Вычисление действи |
|
бВычисление |
|||
тельных |
корней |
|
сных корней |
||
7 |
Перевод |
" |
2 — 10" |
|
|
8 |
Печать |
результатов |
|
|
|
9 |
I |
|
|
|
|
Останов машины |
|
|
Рис. 7 2.
Запись алгоритма задачи на языке блок-схем является по сути дела графическим изображением структуры решаемого ал горитма. Блок-схемы весьма наглядны и позволяют разобрать ся во всех сложностях алгоритма. Они являются незаменимым вспомогательным средством описания алгоритмов на первой стадии разработки схемы счёта. Недостатком блок-схем явля ется их громоздкость. От этого недостатка свободна опера торная запись алгоритмов.
В 1953 году советским ученым А.А. ЛЯПУНОВЫМ был предло жен язык логических схем, который получил большое распрост ранение и положен в основу операторной записи алгоритмов.
При этом способе описания алгоритмов этапы вычислительно го процесса изображаются с помощью специальных символов - операторов. Каждый оператбр имеет определенное функциональ ное назначение и название, соответствующие изображаемому этапу вычислительного процесса, и изображается определен ной буквой.
Арифметический оператор обозначается буквой А, логичес кий оператор - буквой Р, оператор вводабуквой В, оператор
- 185 |
- |
•выдачи результатов на печать - |
буквой П, оператор останова- |
- буквой Я. |
|
Применяются и другие операторы имеющие функциональные |
назначения, определяемые спецификой конкретного типа задач. При операторной записи алгоритм изображается в виде по
следовательности операторов, записываемых в одну строку. Каждый из операторов снабжается индексом, указывающим поряд ковый номер оператора. Нумерация операторов сквозная и не зависит от их назначения.
При записи алгоритмов в операторной форме руководствуют ся следующими правилами:
1. Если символы двух операторов стоят рядом, то это о з начает, что стоящий справа оператор получает управление от
соседнего слева оператора. |
|
|
2. |
Если оператор, стоящий справа, не получает |
управле |
ние от оператора, стоящего слева, то между этими |
оператора |
|
ми ставится точка с запятой. |
|
|
3. |
Передача управления к любому оператору, не |
стоящему |
спрвва рядом, обозначается стрелкой, которая проводится ли бо над строкой записи алгоритме /верхняя стрелка/, либо под этой строкой /нижняя стрелка/. Стрелка проводится от опера тора, передающего управление, к оператору, принимающему уп равление.
4. Если расстояние между операторами, связанными стрел кой передачи управления, велико, то горизонтальная часть стрелки может опускаться. При этом у оставшихся её концов проставляются индексы операторов, связываемых этой стрел кой.
В соответствии с этими правилами алгоритм вычисления кор
ней квадратного |
уравнения |
будет иметь |
вид |
B l |
h А 3 Р 4 J 5 |
i 4;|7 °8 |
Я9- |
Здесь В} - оператор ввода программы и исходных данных в машину;
Ag - оператор, выполняющий перевод исходных данных из десятичной в двоичную систему счисления;
|
|
|
- |
186 - |
|
|
|
оператор, |
вычисляющий величину В2 |
- 4 |
А С ; |
||
|
логический |
оператор, проверяющий |
условие |
|||
|
"В2 - 4АС < |
0?" ; |
|
|
||
|
оператор, |
вычисляющий действительные |
корни; |
|||
Ag - |
оператор, |
вычисляющий комплексные |
корни; |
|||
Ар - |
оператор |
перевода результатов из двоичной систе |
||||
|
мы счисления в десятичную; |
|
|
|||
Пд - |
оператор |
печати |
результатов; |
|
|
|
Яд - |
оператор |
останова машины. |
|
|
||
Эту же операторную схему можно записать |
в следующем |
виде:
С
Этот способ записи удобно применять в тех случаях, когда показывается много передач управления или когда за пись не помещается в одну строку.
Операторная запись алгоритмов более компактна, чем блок-схема. Однако операторная запись менее наглядна- и,
кроме того, в той или иной форме требует расшифровки значе
ния каждого оператора.
В настоящее время, кроме рассмотренных способов, для описания алгоритмов все более широкое применение находят так называемые алгоритмические языки. Они представляют со бой наиболее прогрессивные способы описания алгоритмов, по скольку дают возможность записать алгоритм задачи в самом общем виде, близком к общепринятой математической символи ке. Это дает возможность осуществлять запись алгоритмов в такой форме, которая понятна широкому кругу лиц. Запись ал горитмов на алгоритмических языках производится по строгим формальным правилам, устраняющим всякую возможность неод нозначного толкования. 3 связи с этим алгоритмические язы
ки |
требуют |
специального |
изучения. |
Но так как по этому вопро |
су |
выпущено |
достаточно |
литературы |
//7 6 -г й\0/ ,то в нас |
тоящем пособии приведены только наиболее общие сведения об алгоритмических языках.
- 187 -
$ 7.2. СТРУКТУРА КОЫАВД И ЧИСЕЛ СЭЦВМ-1
После окончания разработки и записи алгоритма произво дится составление программа, обеспечивающей автоматическую работу ЭЦВМ.
Программа представляет собой задаваемую машине инструк цию, указывающую, в какой последовательности, над какими числами и какие операции должна выполнить машина. Програм ма состоит из отдельных команд, которые записываются в
ячейки |
памяти ЭЦВМ. Каждая команда |
несет в |
себе информацию |
о том, |
какую операцию и над какими |
числами |
машина должна |
выполнить. |
В связи с этим команда состоит из кода операции |
и адресной |
части. |
лод операции определяет ту операцию, которая будет вы полнена машиной по данной команде.
Адресная часть команды определяется конструкцией машины. В ней размещаются не сами числа, с которыми оперирует ма шина, а адреса ячеек памяти, в которых эти числа хранятся или в которые засылаются результаты операций. В некоторых командах адреса имеют специальное назначение.
Адресом ячейки памяти называется номер ячейки в восьме ричной системе счисления, в которой хранится машинное сло во. Под машинным словом понимается содержимое ячейки памя ти: либо команда, либо число.
Машинное слово, если оно поступает из ЗУ в АУ и уча - ствует в арифметической операции, то оно воспринимается машиной как число, над которым можно производить различные операции. Если же машинное слово поступает из ЗУ в УУ, то оно воспринимается как команда.
Структура чисел и команд, хранимых в ячейках памяти ЭЦВМ, различна и зависит от конструктивных особенностей и типа машины. ЭЦВМ различаются мему собой по величине ад ресной части команды. Количество адресов в команде называет ся адресностью машины. Адресность является одной из техни ческих характеристик ЭЦВМ. В зависимости от адресности ма-
- 188 -
шины бывают одноадресные, двухадресные и т.д. Наибольшее распространение получили ЭЦВМ с количеством адресов в ко манде от одного до трех. Рассмотрим структуру различных ко манд, предварительно условившись, что в дальнейшем номера ячеек памяти, в которых хранятся команды /или числа/ будут отделяться круглыми скобками от кодов самих команд /или чи сел/.
В общем случае трёхадресная команда записывается следую щим образом:
|
|
к) 0 |
Г , . |
|
где К |
- |
номер ячейки памяти, |
в которое хранится команда; |
|
0 |
- код операции; |
|
|
|
ck,p/]f - |
соответственно 1,2 и 3-й адреса. |
|||
Трёхадресная команда |
более |
всего соответствует обычной |
логике выполнения операций над числами. При выполнении ариф
метических |
и логических операций по первому |
Л. |
и второ |
му £> |
адресам происходит выборка чисел |
и посылка их в |
АУ, где над ними производится операция, соответствующая ука
занному в команде коду операции |
в |
|
; результат |
операции |
|||||||
посылается в ЗУ по третьему адресу |
f |
|
|
|
|
||||||
|
Примером трёхадресных машин являются отечественные маши |
||||||||||
ны БЭСМ-2, БЭСМ-4, "Киев", М-220. |
|
|
|
|
|
||||||
|
Двухадресная |
команда имеет |
вид |
|
|
|
|
|
|||
|
|
к) |
0 |
л р |
• |
|
|
|
|
|
|
|
У этого |
типа |
команд имеются |
только |
первый |
Л |
|
и вто |
|||
рой |
f |
адреса, по которым происходит выборка |
чисел, уча |
||||||||
ствующих в операциях. Результат операции либо остаётся в |
|||||||||||
сумматоре, |
либо |
записывается по |
второму |
адресу |
j5 |
, |
при |
||||
этом в последнем случае прежнее |
содержимое ячейки |
j3 |
, уча |
||||||||
ствовавшее в операции, автоматически стирается. |
|
|
|
||||||||
|
Из отечественных машин двухадресными являются машины с е |
||||||||||
рии "Раздан", "Минск", "Наири", "Днепр". |
|
|
|
||||||||
|
Команды одноадресных машин записываются в виде |
|
|
||||||||
|
|
|
|
к ) |
е л - |
|
|
|
|
|
|
- 189 |
- |
|
|
В команде имеется только |
один адрес |
<А. |
. Поэтому в |
такого типа машинах одно из чисел, участвующих в выполнении операции, должно заранее помещаться в специально отведенный для этого регистр арифметического устройства. Такая переда ча числа из ячейки памяти в этот регистр осуществляется с помощью одноадресной команды. Следующая команда должна оп ределять необходимую операцию над этим числом и числом, адрес которого указан в этой команде. Результат операции получается в том же регистре. Очередная команда МОЛИТ ис
пользовать |
этот результат или записать его в какую-то ячей |
ку памяти. |
Как видно, в некоторых случаях для равноценной |
замены одной трёхадресной команды необходимы три одноадрес ных. Однако при многократном последовательном использовании результата предыдущего действия несколько трехадресных ко манд могут оказаться эквивалентными такому же количеству одноадресных.
Отечественными одноадресными машинами являются машины серии "Урал" и БЭСМ-б.
Машина СЗЦВМ-1 также относится к одноадресным, но в связи с наличием в ней трёх регистров модификации /РгМд/, позволяющих разрабатывать экономичные и компактные програм мы, команда этой машины записывается в виде
к) 8 m Л,
где Q - код операции,
та- _ номер регистра модификации или признак модифи кации,
Я - адрес ячейки памяти.
Количество разрядов в каждом регистре модификации рав но 14. Наличие трёх регистров модификации позволяет изме нять адресную часть выполняемой команды таким образюм, что
операция выполняется с числом, хранящимся |
по адресу А + I , |
|||||
где L - содержимое |
регистра модификации |
с |
номером m |
, |
А- |
|
содержимое |
адресной |
части выполняемой команды. Если тп |
- |
О, |
||
то операция |
будет выполняться с числом |
хранящимся по |
адре- |