Разделы


Рекомендуем
Автоматическая электрика  Автоматика радиоустройств 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 [ 125 ] 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

Таблица 24-11

Условное обозначение команды

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

(с)Ха21

(с)-*Р0

an-с (с)ХСг2

(с)-(Ро)

(с)Хб2

(с)-*Ро

о22-с

(С)Х6! а

(с)-(Ро).

(с) г (Pi)

Печать

с21-*с 1 (cJXfci

(с)Ро (с)ХбЕ

(с)-(Ро)

(с):(Р) Печать Стой

Переслать число а]2 в сумматор

Содержимое сумматора умножить на число а2\ и результат оставить, в сумматоре. В сумматоре после выполнения этой команды будет произведение а]2 а2]

Содержимое сумматора с12 а2\ переслать в ячейку р0 памяти (ро- рабочая ячейка для хранения промежуточных результатов).

Переслать число an в сумматор

Содержание сумматора умножить на число с22 и результат оставить в сумматоре. В сумматоре после выполнения этой команды будет произведение аи - а

Из содержимого сумматора вычесть содержимое ячейки ро и результат оставить в сумматоре. После этой команды в сумматоре получим значение D

Содержимое сумматора (D) переслать в рабочую ячейку pi памяти

Переслать число аг2 в сумматор

Умножить содержимое сумматора на число Ь2 и результат оставить в сумматоре. После выполнения этой команды в сумматоре получим произведение с12 Ь2

Переслать содержимое сумматора в рабочую ячейку р0

Переслать в сумматор числа а22

Умножить содержимое сумматора на число bi и результат оставить в сумматоре. В сумматоре после выполнения этой команды получим произведение а22 Ь\

Вычесть из содержимого сумматора содержимое ячейки ро и результат оставить в сумматоре. В сумматоре получим значения Dx\

Разделить содержимое сумматоров (Dxi) на содержимое ячейки р\ (D) и результат оставить в сумматоре. В сумматоре получим Х\ После перевода содержимого сумматора (*i) из двоичной системы в десятичную вывести на печать

Переслать а2\ в сумматор

Умножить содержимое сумматора на число Ь\ и результат оставить в сумматоре. В сумматоре получим произведение а21 Ъ\ Переслать содержимое сумматора в рабочую ячейку р0 Переслать число ап в сумматор

Умножить содержимое сумматора на Ь2 и результат оставить в сумматоре. В сумматоре получим ац bi

Вычесть из содержимого сумматора содержимое ячейки р0 и результат оставить в сумматоре

В сумматоре получим Dx2

Разделить содержимое сумматора на содержимое ячейки р\ и результат оставить в сумматоре. В сумматоре получим х2

После перевода содержимого сумматора (х2) из двоичной системы в десятичную вывести на печать. .

За основной программой, начиная с ячейки 0130, разместим исходный число-

Ячейки 0136 и 0137 отведены под рабочие:

0130

- аи

0131

- а12

0132

0133

- а-а

0134

- а22

0135

исходный числовой материал

0136-. 0137 -

Ро] Рх.\

рабочие ячейки.

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



В табл. 24-12 приведена программа решения системы двух уравнений в условных обозначениях, а также в закодированном виде.

Таблица

24-12

Условный

Адрес

Команда

Условное -обоз-

адрес

начение команды

коман-

адрес-

коман-

опера-

часть

а1г-*с

0100

0131

(с)Х%

0101

0133

с-*-р

0102

0136

аи-*с

01G3

0130

0104

0134

(с)-(Ро)

0105

0136

(с)-Pi

0106

0137

0107

06 .

0131

к+10

(с)ХЬ2

0135

к+11

0111

0136

к+12 ~

0112

0134

к+13

(c)Xbj

0113

0132

к+14

(с)-(Ьо)

0114

0136

к+15 к+16

(с):(Pi)

0115

0137

Печать

0116

0000

к+17

a2i- c

0117

0133

к+20

(c)Xbi

0120

0132

к+21

(с)-Р0

0121

0136

к+22

а1г-*с

0122

0130

к+23

(с)хЬ2

0123

0135

к+24

(с)-(рв)

0124

0136

к+25

(с): (Pi)

0125

0137

к+26

Печать

0126

0000

к+27

Стоп

0127

0131

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

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

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

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

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

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

В качестве примера циклической программы рассмотрим программу вычисления квадратного корня из положительного числа Л<1:

*x = V А . Вычисление будем производить по из вестной итерационной формуле Ньютона, по которой каждое последующее приближение Х-П+, искомого корня х определяется через предыдущее хп с помощью равенства:

x +i = 0,5К, + - ) . (24-103)-

\ хп I

Вычислительный процесс будем считать законченным, когда

*и+1- хп\<е, (24-104)

где е - наперед заданная положительная величина, характеризующая точность решения задачи.

Для определения первого приближения по формуле (24-103) необходимо назначить начальное значение х0. В качестве начального значения х0 удобно принять величину, определяемую по формуле

х0 = 0,5 + 0,5 .4. (24-105) При таком выборе начального приближения Хд итерационный процесс быстро сходится. Таким образом, алгоритм решения задачи состоит из формул (24-103)- (24-105). Блок-схема программы представлена на рис. 24-144.

Рис. 24-144.

B*vtarenua3

Первая группа комавд (оператор /) , обеспечивает вычисление начального, при- ближения. Эта группа команд не входит в цикл программы.



Вторая группа команд (оператор 2) обеспечивает вычисление корня по итерационной формуле (24-103).

Третья группа команд (оператор 3) оценивает разность \хп+1-Хп [-в и определяет дальнейший порядок вычислительного процесса.

Если разность \хп+\-хп\- 60, то управление передается на начальные команды цикла; если разность \xn+i-хп\-е<0, то управление передается на группу команд (оператор 4), осуществляющую вывод конечного результата из машины н остановку ее.

Программа в общем виде представлена в табл. 24-13.

Таблипа 24-13

Условный адрес команды

Условное обозначение команды

Пояснения

к+0 к+1 к+2

0,5-с (с)хА (с)+0,5

Определение начального приближения (оператор 1)

-* л+3 л+4 к+5 к+6 к+7 к+10 к+11

(с)-*Ро А-*с

(с):(Ро) (с)+(Ро) (с)Х0,5

(с)-* Pi (с)-(Рс)

Определение корня по итера- ционной формуле . (24-103) (оператор 2)

к+12 -к+13

к+14 -к+15

1(с)-М

УП (к+16) (Pi)-с ч

БП (к+3)

Определение направления вы- числительного процесса (оператор 3)

--к+16 . к+17 к+2б

(Pi)-с Печать Стоп

Вывод на печать результата вычисления § и останов машины (оператор 4)

Рассмотрим вопрос о размещении программы, исходных чисел, промежуточных и конечных результатов в памяти.

Примем, что в ячейках с 0100 по 0120 размещается программа. В ячейках 0121- 0123 - исходный числовой материал:

0121-0,5

0122 -А

0123-8

Ячейки 0124-0125 -рабочие:

0124 - р0

0125 -pi.

В табл. 24-14 программа представлена в закодированном виде.

В рассмотренной программе исходные числа в ячейках памяти записаны в двоич-

Та блица 24-14

Команда

Адрес команд

адрес-

Передача управления

операции

ная часть

0100

0121

0101

0122

0102

0121

0103

1 07

0124

0104

0122

0105

0124

0106

0124

0107

0121

0125

0111

0124

о, с

0112

0123

0113

0116

0114

0125

0115

0103,

0116

0125

0117

0000

0120

0121

вой системе счисления, а содержимое сумматора выводится на печать после перевода в десятичную систему.

Преобразование команд. В предыдущей программе в качестве исходного числа была величина х=хо. Цикл выполнялся машиной столько раз, сколько необходимо для получения результата с заданной точностью.

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

Число х n+i использовалось для определения момента выхода из цикла. Это число часто называют параметром цикла. В качестве параметра цикла может служить специально подобранное и помещенное в свободную ячейку число. Изменение параметра при каждом повторении цикла осуществляется с помощью группы команд, называемой счетчиком.

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

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

Например, если к команде 01 0135 прибавить постоянное число 00 0001 в режиме фиксированной запятой, то получим команду вида 01 0136, в которой адресная часть изменена на единицу. Если же к команде 01 0135 прибавить число 04 0002 в режиме фиксированной- запятой, то получим новую команду, в которой изменены и код опера-




1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 [ 125 ] 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

Яндекс.Метрика
© 2010 KinteRun.ru автоматическая электрика
Копирование материалов разрешено при наличии активной ссылки.