
книги из ГПНТБ / Бакиров Р.О. Применение современных электронных вычислительных машин при расчете и проектировании конструкций инженерных сооружений учебное пособие
.pdfВыбор численного метода обусловлен тем, что машины могут выполнять лишь элементарные арифметические (сложение, вычи тание, умножение, деление) и логические (больше, равно или меньше; передача управления; выделение части числа, присвоениезнака числу и т. д.) операции, поэтому к ним необходимо свести все действия, предусмотренные решением задачи, а это осуществ ляется методами численного анализа. Для решения большинства математических задач разработано несколько численных методов их реализации. Следовательно, для машинного решения задачи необходимо выбрать численный метод из существующих или раз работать новый при его отсутствии.
Алгоритмизация задачи или составление машинного алгоритма,, т. е. сведение ее к выполнению определенной последовательности простейших арифметических и логических операций, — следующий ответственный элемент решения задачи на машине. От специалиста, разрабатывающего машинный алгоритм, требуется знание всех особенностей устройства машины, владение всеми методами про граммирования рассматриваемого класса задач, знание методов численного анализа и, наконец, необходимые познания в области той специальности, к которой относится подготавливаемая к ре шению на машине задача. Последнее требование особенно важно потому, что при отладке задачи специалист должен принимать ре шения по результатам промежуточных вычислений и судить о до стоверности получаемых при этом выходных данных. Таким обра зом, алгоритмизация задачи — это серьезный творческий процесс, требующий напряженных усилий со стороны научных работников ВЦ, объединяющих в своем лице квалифицированных математиков, программистов и специалистов той области знаний, к которой от носится алгоритмизируемая задача. Если некоторые проблемы еще не решаются на машине или решаются в недостаточном объеме, то объясняется это прежде всего тем, что еще не разработан ее ма шинный алгоритм. После составления такого алгоритма принципи альная сторона машинного метода решения проблемы может счи таться законченной.
Существуют различные способы описания алгоритмов, отличаю щиеся разной степенью детализации и приближения к машинному языку. Применяя в дальнейшем блок-схемную и операторную фор мы, целесообразно обратить внимание читателя также на получив ший в последнее время распространение алгоритмический язык АЛГОЛ-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-