Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Караваев, Н. И. Электронные цифровые вычислительные машины и программирование учеб. пособие

.pdf
Скачиваний:
5
Добавлен:
20.10.2023
Размер:
8.52 Mб
Скачать

-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

,

А-

содержимое

адресной

части выполняемой команды. Если тп

-

О,

то операция

будет выполняться с числом

хранящимся по

адре-

Соседние файлы в папке книги из ГПНТБ