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

книги из ГПНТБ / Бакиров Р.О. Применение современных электронных вычислительных машин при расчете и проектировании конструкций инженерных сооружений учебное пособие

.pdf
Скачиваний:
19
Добавлен:
29.10.2023
Размер:
4.93 Mб
Скачать

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

Алгоритмизация задачи или составление машинного алгоритма,, т. е. сведение ее к выполнению определенной последовательности простейших арифметических и логических операций, — следующий ответственный элемент решения задачи на машине. От специалиста, разрабатывающего машинный алгоритм, требуется знание всех особенностей устройства машины, владение всеми методами про­ граммирования рассматриваемого класса задач, знание методов численного анализа и, наконец, необходимые познания в области той специальности, к которой относится подготавливаемая к ре­ шению на машине задача. Последнее требование особенно важно потому, что при отладке задачи специалист должен принимать ре­ шения по результатам промежуточных вычислений и судить о до­ стоверности получаемых при этом выходных данных. Таким обра­ зом, алгоритмизация задачи — это серьезный творческий процесс, требующий напряженных усилий со стороны научных работников ВЦ, объединяющих в своем лице квалифицированных математиков, программистов и специалистов той области знаний, к которой от­ носится алгоритмизируемая задача. Если некоторые проблемы еще не решаются на машине или решаются в недостаточном объеме, то объясняется это прежде всего тем, что еще не разработан ее ма­ шинный алгоритм. После составления такого алгоритма принципи­ альная сторона машинного метода решения проблемы может счи­ таться законченной.

Существуют различные способы описания алгоритмов, отличаю­ щиеся разной степенью детализации и приближения к машинному языку. Применяя в дальнейшем блок-схемную и операторную фор­ мы, целесообразно обратить внимание читателя также на получив­ ший в последнее время распространение алгоритмический язык АЛГОЛ-60 (1], наиболее близкий к обычной математической симво­ лике, применяемой при ручном счете и поэтому имеющий большую перспективу.

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

Для программирования задачи необходимы все расчетные фор­ мулы и логические условия с входящими в них параметрами, под-

20

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

От программиста в работе требуется большая аккуратность, внимательность и способность к математическому мышлению. Ка­ чество и продолжительность разработки программы для ЭЦВМ во многом зависят от уровня подготовки и опытности программиста.

Не останавливаясь более подробно на вопросах программиро­ вания, укажем, что более или менее сложные задачи программиру­ ют сначала в условных адресах, так как при программировании еще неизвестно, сколько адресов (или ячеек) потребуется для раз­ мещения программы и числового материала. Например, начальные адреса для различных массивов обозначают следующими буквами: а + ° ) .... программа; в + о ) .... исходные данные; с + о ).... ре­ зультаты промежуточных вычислений; d —|—о) выходные данные и т. д. После окончания программирования и тщательной ее про­ верки (отладки на бумаге) программе присваивают действитель­ ные адреса.

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

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

После отладки программы производится решение задачи на ма­ шине. Для этого программа и числовой материал набиваются на перфоленту (перфокарту), вводятся в оперативную память машины и по команде оператора «пуск» начинается автоматическое реше­ ние задачи.

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

Анализ полученных результатов является завершающим этапом решения задач с применением ЭЦВМ. Следует предупредить чита­ теля, что необходимо стремиться к выдаче минимально необходи­ мого количества выходных данных, ибо в противном случае их ана­ лиз может занять слишком много времени.

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

21

§ 2. ЭЛЕМЕНТЫ ПРОГРАММИРОВАНИЯ

ОСНОВНЫЕ КОМАНДЫ МАШИНЫ

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

Всвязи с тем, что общие принципы программирования не за ­ висят от конкретного типа машины, вопросы программирования! ниже разбираются для условной одноадресной машины, которую в дальнейшем будем называть ЭЦВМ-У.

Для удобства изложения введем несколько обозначений:

0001), 0002) — восьмеричные числа — номера ячеек памяти для размещения программы;

< С > — ячейка, отведенная для хранения величийы /;

(s) — содержимое сумматора (выше указывалось, что одноад­ ресная машина все действия производит через сумматор);

(0) — код операции, например ( + ) и (-» ), обозначает содер­ жание действия, предусмотренного программой ( « + » сложение,

«-> » — безусловная передача управления и т. д.);

(s)= (s) + < / > — содержание сумматора складывается с ве­

личиной I, и сумма записывается в сумматор;

(s) = (s) + (n) — содержимое сумматора складывается с содер­ жимым ячейки номер п, и сумма записывается в сумматор.

Условимся, что все команды машины, за исключением операций управления, имеют стандартную передачу управления.

Арифметические операции

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

22

Арифметические операции имеют коды:

( + ) —

сложение;

(—) — вычитание, (X ) — умножение, ( :)

— деление.

< / > .

Запись команд производится в виде ( + )

(п) или ( + )

В частности, приведенные выше команды означают, что содер­ жимое сумматора складывается с содержимым ячейки номер п или

содержимым ячейки для хранения величины I.

 

приведена

в

Система

арифметических

операций

ЭЦВМ-У

табл.

3.

 

 

 

 

 

 

 

 

Т а б л и ц а

3

 

 

 

 

 

 

 

 

 

 

Опе­

Код

Наименова­

Вид

 

Содержимое

Условия образо­

ние опера­

 

вания сигналов

рации операции

ции

команды

сумматора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ш =

1

<р =

1

 

 

 

 

 

 

 

 

 

 

 

 

й>

 

 

 

 

 

 

 

 

 

 

 

р >

N

Sьа

+

Сложение

( + > < / >

( S ) =

( . * ) + < / >

( « ) < 0

о

 

 

 

 

 

 

 

 

 

 

0)

 

 

 

 

 

 

 

 

 

 

 

 

 

3*

Вычитание

( - х

/

>

(«) =

( s ) —

<

1 >

( * ) < 0

р >

N

Я

0>

X

Умножение

(X )

<

1 >

( s ) =

( s ) x

<

1 >

(*) <

0

р >

N

2

-е*

 

 

 

 

 

 

 

 

 

 

 

 

 

Я

 

Деление

( : ) < / >

(«) =

(*): <

t >

(*) <

0

Р >

N

о.

 

<

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Логические операции

Реальные машины обычно имеют целый набор логических опе­ раций: формирование чисел, присвоение знака числу, сдвиг числа на определенное число разрядов, сравнение чисел и т. д. Эти коман­ ды, весьма существенные для программиста, в связи с предназна­ чением пособия, здесь не рассматриваются. Из этой группы опера­ ций остановимся лишь на операции сравнения, приведенной в табл. 4.

 

 

 

 

 

Т а б л и ц а 4

Опе­

Код

Наименова­

Вид

Содержимое

Условия

образо­

ние опера­

вания сигналов

рации операции

ции

команды

сумматора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

«0=

1

ср = 1

Логи­

( ~ )

Сравнение

( о < i >

(5) = 0 при срав­

(*) +

0

 

чес­

 

содержи­

 

нении

 

 

 

кие

 

мого сум­

 

(s) ФО при нес-

 

 

 

 

 

матора и

 

 

 

 

 

 

ячейки

 

равнении

 

 

 

 

 

адресной

 

 

 

 

 

 

 

части

 

 

 

 

 

23

Операции управления

Мы рассматриваем машину с последовательным порядком вы­ полнения команд, поэтому для разветвления вычислительного про­ цесса служат операции управления: безусловной и условной пере­ дачи управления, передачи управления с возвратом и останов (см. также § 1). Основные характеристики этих операций приведены в табл. 5.

 

 

 

 

 

Т а б л и ц а 5

Опе­

Код

Наименование

Вид команды

Условия

образования

опе­

рации

операции

сигналов ш<р

рации

 

 

(-*)

Безусловная пе­

(->) (0125)

Независимо

от сигнала м уп-’

 

 

редача управ­

 

равление передается коман­

 

 

ления

 

де 0125; сигнал — не выра­

 

 

 

 

батывается

 

 

 

Условная

пере­

 

 

 

( i )

дача

управле­

( ¥Г > )

<0125)

1 е н и я

 

ния

 

 

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

со

( « - - в

Передача

управ­

--s”)

(сн)

а.

 

ления

с

возвра­

 

 

с

 

том

 

 

 

 

>>

 

 

 

 

 

 

 

 

 

 

 

При ш = 0 — передача управ­ ления следующей команде, при ш = 1 — команде 0125; сигнал <р — Hte вырабатыва­ ется

Управление передается к стандартному блоку, начи­ нающемуся с ячейки „сн* последующим возвратом к с месту программы, откуда производилась эта передача

управления; сигналы ы и <р не вырабатываются

(Стоп) Останов

(Стоп) (0000) Машина останавливается

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

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

24

О пе­

Код

Наименова­

 

 

Содержимое

ние опера­

Вид команды

рации операции

сумматора

ции

 

 

 

 

 

 

 

 

(П)

Пересылка

(П)

(0125)

Пересылка

 

 

числа

 

 

числа из

3

 

 

 

 

сумматора в

 

 

 

 

ячейку 0125:

V

 

 

 

 

 

X

 

 

 

 

0125 = (s)

у

 

 

 

 

 

О

 

 

 

 

 

 

 

 

 

 

V

(5)

Вызов чис­

(S)

(0125)

Вызов числа

о

С

 

ла

 

 

из ячейки

номер 0125 в сумматор

(s) = (0125)

Т а б л и ц а 6

Условия образо­ вания сигналов

и» = 1

9 = 1

(s) < 0

V

 

(10-> 2)

Перевод

(10 -> 2) (s)

Перевод со­

 

 

 

числа

 

держимого

 

 

 

 

 

сумматора

 

 

ев

 

 

 

из десятич­

 

а

 

 

 

ной в двоич­

 

О

 

 

 

 

 

 

 

о>

 

 

 

ную систему

 

с.

 

 

 

 

 

 

 

 

(2 -*■ 10)

(2 -> 10) (s)

Перевод

 

 

 

 

(2

10)

 

 

 

(Пщ)

Печать чис­

(П,р) (s)

Печать деся­

 

 

 

ла

 

тичного чис­

 

 

 

 

 

ла,

нахо­

в

 

 

 

 

 

дящегося

 

 

 

 

 

сумматоре

 

X

 

 

 

 

 

 

 

«в

 

 

 

 

 

 

 

а1

(Пв)

 

(П») (s)

 

 

 

 

0>

*

Печать восьме­

 

 

 

 

 

ричного чис­

 

 

 

 

 

ла (коман­

 

 

 

 

 

да),

нахо­

в

 

 

 

 

 

дящегося

 

 

 

 

 

сумматоре

 

ПРОСТЕЙШАЯ ПРОГРАММА

Дана четырехшарнирная прямоугольная обделка подземного сооружения, на которую действуют нагрузки от горного давления q и е (см. рис. 1). Максимальная величина изгибающего момента в верхнем ригеле определяется по формуле (1). Требуется соста­ вить программу однократного использования в предположении, что

25

исходные данные q, /, 8 находятся в памяти машины соответствен­

но в ячейках < q > , <С1>, < 8> .

Используя принятые обозначения и рассмотренную выше систе­ му команд, для вычисления М по формуле (1) легко составить следующую простейшую программу 2.

П р о г р а м м а 2

команд

0001

0002

0003

Команды

V ч“■/« 152,

Л

( х ) < / >

(X) < 4 >

Пояснения команд Команды Пояснения

(s) =

/

 

0004

( •)

<

8 >

(s) =

М

(*) =

г-

0005

(П)

<

м >

< М >

= М

( s ) = q i

2

0006

(Стоп)

0000

Останов

В данном случае мы имеем следующие элементы описания за­ дачи: постановку (характеристика физической сущности, расчетная схема), математическую формулировку [формула ( 1)], исходные данные — (q, I, 8), выходной результат (величина М) и особое тре­ бование к программе (одноразового пользования, исходные данные находятся в памяти). Ввиду исключительной простоты задачи опи­ сание последовательности вычислений производить в данном слу­ чае не потребовалось.

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

РАЗВЕТВЛЯЮЩАЯСЯ ПРОГРАММА

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

Пусть требуется построить разветвляющуюся программу для предыдущего примера при условии, что после вычисления макси­ мального момента по формуле ( 1) определяется напряжение в опасном сечении согласно выражению

где W — момент сопротивления

элемента

ригеля, определяемый

по формуле

 

W =

(5)

 

6 ;

 

b, h — соответственно ширина и высота элемента.

26

Кроме того, следует предусмотреть сравнение расчетного и до­ пускаемого (для материала конструкции) напряжений согласно условию

а — [о] > 0 .

(6)

При выполнении этого условия необходимо выдать на печать единицу < 1> (признак того, что расчетное напряжение недопусти­ мо для материала конструкции) и остановить машину; в противо­ положном случае нужно напечатать а и остановить машину.

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

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

команд

0001

2

3

4

5

6

7

0010

1

2

Команды

(X ) < / >

(X ) < q >

( : ) < 8 >

(П) < М >

(S) < Ъ > (X ) < h > (X ) < h >

( :) < 6 >

(П) < w>

Пояснения

команд

 

 

(s) =

/

3

(s) =

П

4

(s) -

qP

5

(s) =

M

6.

< M >

= Af

7

(s) =

b

0020

(s) =

bh

1

(s) =

b h a

2

(s) =

W

3

< w > = w

4

 

 

5

 

 

П р о г р а м м а

3

Команды

Пояснения

(5)

<

M >

(*)

=

M

( : )

<

W >

(.9) =

0

(П) < a >

< а > = а

( - )

<

[а] >

(s).=

а —

( P ) ( 0 0 2 3 ) :

to =* 0

 

0020■

( 0 = 1

—> 0023

 

 

 

( S ) < 1 >

( s ) = l

(П,0)

(s)

Печать 1

(-»•)

(0025)

 

 

 

(S)

< s >

C*) = a

(Пю)

(s)

Печать a

(Стоп) (0000)

Останов

27

в десятичную систему, для чего служат стандартные подпрограммы (СПП). Пока мы не знакомы с СПП и правилами обращения к ним, в необходимых случаях будем предполагать, что по команде (Пю) (s) одновременно осуществляется перевод (2-* 10) и пе­ чать содержимого сумматора. В дальнейшем от этого предположе­ ния мы освободимся.

Из программы видно, что по команде 0017 происходит развет­ вление счета для обеспечения выполнения заданного условия (6).

ЦИКЛИЧЕСКАЯ ПРОГРАММА

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

лическими.

Для иллюстрации циклической программы несколько усложним предыдущий пример. Пусть после вычисления М по формуле (1) требуется определить напряжение сг при п различных значениях

высоты элемента hh ( / = 0, 1,

2,

п—1).

 

При этом

 

 

 

hi+i =

h [+

/АЛ.

(7)

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

Для разработки программы необходимо ввести дополнительное условие, обеспечивающее п-кратное вычисление по формулам (1),

(4) и (5) при различных значениях h. Ясно, что этому требованию можно удовлетворить различными способами. Одним из вариантов может быть следующее решение:

— для параметра i отводится специальная ячейка < i > ;

— в начале общего счета производится ее очистка ( ) - * ■ < / > ;

— в конце каждого варианта расчета увеличивается содержи­

мое ячейки < г > на единицу,

т. е. выполняется действие

< 4 >-f-

+ < / > -*• < 7 > и проверка условия

 

< / >

— < Л —1 >

(8)

при совпадении, когда « = 0, — конец вычислений; в противополож­ ном случае — необходимо осуществить передачу управления к рас­ чету очередного варианта.

Таким образом, мы имеем теперь постановку задачи, все рас­ четные формулы и логические условия. Чтобы завершить описание

.28

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

Блок-схема решения задачи приведена на рис. 6.

fii

02

А'з

Ру

%

п6

Ру

я8

Р и с. 6

На схеме большими русскими буквами обозначены отдельные блоки, в которых производятся нужные операции: А — арифмети­ ческий оператор; О — оператор восстановления; П — оператор пе­ чати; Р — логический оператор и Я — оператор останова. Операто­ ры, конкретное содержание которых раскрыто в блок-схеме, имеют сквозную десятичную нумерацию. Из схемы видно, что естествен­ ный порядок выполнения операторов нарушается операторами Р — условной и безусловной передачи управления.

При введенных обозначениях схему решения задачи можно представить и в следующей операторной форме:

А ,02 П А3Р4 Г П511;

П П61| Р7 Г Я *

(9)

7

5

 

в которой введены дополнительные обозначения передачи управле­ ния.

29-

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