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

книги из ГПНТБ / Михельсон В.С. Элементы вычислительной математики учебное пособие для электроприборостроительных техникумов

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

является в программе восьмой, то она попадет в ячейку М + 7, по­ этому в третьем адресе команды условного перехода (36) записано

М+7.

Из первого столбца видно, что после адреса М+ 7 записан ад­ рес М+10. Следует помнить, что адреса — четырехзначные восьме­ ричные числа. Поэтому для облегчения перехода от условных адре­ сов к истинным необходимо все числа, прибавляемые к буквенным изображениям адресов, писать в восьмеричной системе.

Когда программа составлена в условных адресах, можно ее пере­ писать в истинных (числовых) адресах. Для этого нужно выбрать числовое значение для каждой буквы, указанной в адресах команд программы. Если взять в рассмотренном примере Л = 0061, 5=0066, С=0074 и М=2305 и в каждой команде записать числовые значения адресов, то получим программу, составленную в начале параграфа.

Составленную программу можно записать, использовав меньшее

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

 

м

02

Л+4

л + з

5

 

 

 

 

М+1

03

В

в

В

М + 2

36

Л+1

в

М +7

М +3

02

Л+4

Л+2

В

М + 4

03

В

В

5+1

М +5

03

в

5 + 1

| С+1

М +6

33

0000

0000

0000

М +7

01

л

Л+4

5

М+10

03

Л+4

Л +4

я+1.

М+11

04

В

5+1

с

М+12

33

| 0000

0000

0000

2 4 0

Пр и м е р .

Составить программу в условных адресах вычисления функции

 

 

х 4- ах + Ьх2

при

(с — х ) 2

> d.

/(*) =

(с — х ) 2

 

 

 

 

х ab >

при

(с — х) 2

< d,

 

 

 

 

abc,

при х) 2

— d.

Р е ш е н и е .

Исходные данные а,

Ъ, с и d разместим в ячейках

А, А+ 1, А+ 2, Л+З, для значения х отведем

ячейку А + 4.

Блок-схема

алгоритма имеет следующий

вид:

 

6. Прекратить

Д а'

 

 

вычисления

 

 

 

 

1

 

 

7.

Вычислить

8.

Вычислить

 

х-\-ах-\-Ьх2

 

(с—х) 2

 

х—аЬ

 

 

 

 

1

 

i

9.

Прекратить

10.

Прекратить

вычисления

вычисления

2)

Согласно

этой

схеме мы должны:

1) вычислить Д= (с—х )2\

проверить,

равно

ли Д числу d;

3) вычислить произведение abc\

4)

проверить, больше ли Д числа d; 5)

вычислить значение

х + ах + Ьх2

(с — xf

и 6) вычислить значение хab.

 

 

 

Д, ab, Ьх, а+bx, ах+Ьх2

 

Для промежуточных результатов с—х,

и х+ах+Ьх2

отведем ячейки £ + 1,

5+ 2,

В + 3, В+4,

5+ 5, 5 + 6,

5+ 7; для итоговых результатов — ячейки С, С+1 и С+2. Для

ко­

манд программы отведем ячейки, начиная с адреса Т.

Значение

Д

вычисляется командами

 

 

 

 

 

 

02

А+ 2

Л+4

5+1

 

 

 

 

03

5+1

5+1

5 + 2

 

 

 

Эти команды будут заданы в ячейках Т и Т + 1.

 

 

 

Чтобы проверить, равно ли Д числу d, выполняется команда

 

 

 

75

л + з

5 + 2

Т0

 

 

Если Д ф d, то будет выполняться команда, которая будет по­ мещена в ячейке Г0; если A = d, то — очередная команда.

Так как при A= d требуется вычислить произведение abc, то сле­ дующими командами должны быть

03

л

Л+1

5 + 3

03

В+3

Л +2

С+2

33

0 0 0 0

0 0 0 0

0 0 0 0

Для этих команд отводятся ячейки Г+3, Г+4 и Т+5.

Теперь мы должны проверить,

больше

ли

Д числа d, поэтому

применим команду

 

 

 

 

 

 

 

 

3 6

л +

з

В + 2

 

 

 

 

 

Эта команда будет помещена в ячейку Г+6. Она должна выпол­

няться, если Д + + поэтому в рассмотренной

выше

команде 75

адрес

Т0 равен Т+6.

 

 

 

 

 

из

ячейки

Г,, в

Если A>d, то управление передается команде

противном случае — команде в следующей ячейке, т. е.

в Г+7.

 

При Д< d вычисляется хab,

поэтому

включаем

в программу

команды

 

 

 

 

 

 

 

 

02

Л+4

В+3

 

С+)

 

 

33

0000

0000

 

0000

 

 

Они помещаются в ячейках Г+7 и Г+10. Остается записать ко-

 

х + ах + Ьх2

 

 

 

 

 

 

манды, вычисляющие --------т------- :

 

 

 

 

 

03

А+1

 

Л+4

 

 

5 + 4

 

01

А

 

5 + 4

 

 

5 + 5

 

03

В+5

 

Л +4

 

 

5 + 6

 

01

В+6

 

Л +4

 

 

5 + 7

 

04

5 + 7

 

5 + 2

 

 

С

 

 

33

0000

 

0000

 

 

0000

 

Э^и команды задаются в

ячейки Г+11,

Г+12, Г+13, Г+14,

Г+15, Г+16. Таким образом,

Г| = Г+11, Итак,

программа вычисле­

ния значения функции

}{х) имеет

вид:

 

 

 

 

 

24о

Адрес ячейки,

Код

в которой зада­

операции

ется команда

 

т

02

7+1

03

7 + 2

75

7 + 3

03

7 + 4

03

7 + 5

33

7 + 6

36

7 + 7

02

7+10

33

7+11

03

7+12

01

7+13

03

7+14

01

7+15

04

7+16

33

I адрес

II адрес

Л+2

/1+4

В + 1

в+1

/4+3

В+2

А/1+ 1

В+3

/4+2

0000

0000

/4+3

В+2

Л+4

В+3

0000

0000

71+1

/1+4

ЛВ+4

В+5

Л+4

В+6

Л+4

S+7

В+2

0000

0000

IIIадрес

в+1

В+2

7 + 6

В+3

С+2

0000

7+11

С+1

0000

В+4

В+5

В+6

В+7

С

0000

244

В составленной программе мы пользовались семью ячейками для записи промежуточных результатов. Так как эти результаты не нуж­ но хранить до конца вычислений, то можно ограничиться только двумя ячейками с адресами В+1 и В+ 2.

А дрес ячейки

Код

операции

т02

т+\

0 3

Т+2

75

Т + 3

03

Г+4

0 3

Г + 5

33

Г + 6

36

Г +7

02

Г + 1 0

33

Г+11

03

Г+12

01

Г + 13

0 3

Гадрес

А+ 2

В+ 1

Л+ 3

А

В+2

0 000

л + з

А + 4

0 0 0 0

А+ 1

А

В+2

11адрес

/4 + 4

В+1

В+1

А+1

Л + 2

00 00

В+1

В+2

0 0 0 0

А +4

В+2

/4 + 4

Ш адрес

В+1

В+1

7’+ 6

В+2

С+2

0 0 0 0

Г+11

С+1

0 0 0 0

В+2

В+2

В+2

245

 

 

 

 

Продолжение

Г+14

01

£ + 2

А+4

£ + 2

Г+15

04

£ + 2

£+1

С

Г+16

33

0000

0000

0000

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

§4. Программирование циклических процессов

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

Особенно эффективно можно использовать электронную вычис­

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

П р и м е р . Составить программу для вычисления Ьп (п — це­ лое положительное число).

Для вычисления Ьп будем последовательно вычислять все про­ межуточные степени: Ь2, Ь3 ........Чтобы машина прекратила вычисле­ ния после нахождения Ьп, будем все время сравнивать показатель степени очередного числа b1 с числом п. Для удобства этот пока­ затель степени обозначим через р,-, т. е. р1= 1, р2= 2 ,.... Pi—i. Прог­ рамма должна быть составлена таким образом, чтобы машина вы­

числяла Ь1 и останавливалась только в том случае, если

р, = и. Если

же Pi<n, то машина должна

начать вычислять Ь*+1= Ь1

■Ь. Из ска­

занного следует, что задача

разбивается на следующие 5 частей

246

Для выполнения первой части числа

b, п, 1 и р\ = \

задаем в

ячейки А, А + 1, А +2 и /4+3. Команды программы

будем

задавать

в ячейки С, С+1, ....

 

 

i

будем

Получаемые во второй части промежуточные степени Ь

последовательно задавать в ячейку /4 + 4.

Поэтому

в этой

ячейке

будут последовательно заданы числа Ь,

й2, ..., Ь?.

Пусть

в этой

ячейке находится очередная степень bK Чтобы перейти к следующей степени, нужно это число умножить на число Ь, т. е. на число из ячейки А. Полученное произведение ЬЧл —Ь‘ ■b нужно задать в эту же ячейку. Чтобы таким образом можно было получать различные степени Ь, в ячейке с адресом /4+ 4 еще до начала процесса умно­ жения должно находиться само число Ь. Поэтому нужно еще ввести число Ъ в ячейку /4+4, тогда вторая часть блок-схемы выполняется при помощи команды

 

03

/4+4

А

/4+4

Эта команда задается в ячейку С.

 

 

После умножения Ь1

на b у полученного числа Ь‘+> показатель

степени

на единицу больше, чем у Ь1.

Поэтому для получения оче­

редного

числа pi+i нужно к числу р< (это число находится в ячейке

247

с адресом Л+ 3) прибавить единицу (которую мы специально для

этого задали в ячейку Л+ 2). Для

этого

используется команда

01

Л +3

Л+2

Л +3

Теперь мы должны определить, п больше Pi или нет. Для этого выполняется команда

 

36

Л + 3

 

 

Л + 1

с

 

Если n=pi, то будет выполняться следующая команда. Чтобы

остановить теперь машину, должна выполняться команда

 

 

33

0000

 

 

0000

0000

 

Если «>Рг, то управление

подается команде в ячейке С и вы­

числяется следующая степень числа Ъ.

 

 

Таким образом, искомая программа имеет вид

 

Адрес ячейки,

 

Код

 

 

 

 

 

в которой зада­

операции

I

адрес

11 адрес

III адрес

ется команда

 

 

 

 

 

 

 

с

 

03

Л +4

Л

Л+4

С+1

 

01

л

+

з

Л +2

Л +3

С+2

 

36

л

+

з

Л+1

С

С+3

 

33

0000

0000

0000

В этом примере при каждом выполнении цикла адреса команд, входящих в цикл, не меняются, так как все данные берутся из од­ них и тех же ячеек А, Л+ 1, А +2, Л+3, А+4.

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

П р и м е р . Составить таблицу квадратов чисел от 1 до 5. Наиболее простой способ состоит в том, чтобы ввести в маши­

ну пять чисел от 1 до 5 и возвести' каждое из них в квадрат. Для этого в ячейках А, Л+ 1, А+2, Л +3 и Л+ 4 задаем числа 1, 2, 3, 4, и 5.

Программа для составления искомой таблицы имеет вид

248 ->

Код

I адрес

II адрес

III адрес

операции

0 3

А

А

А

0 3

А+1

А+1

А + 1

0 3

А + 2

А+2

А+2

0 3

/ 4 + 3

А + 3

А+3

0 3

/ 4 + 4

А+4

А+4

После выполнения последней команды в ячейках А, А + 1, А+ 3

н А + 4 будут заданы искомые квадраты 1, 4, 9,

16 и 25.

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

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

Однако можно значительно сократить объем программы. Для этого нужно так составить программу, чтобы число ее команд не зависело от количества чисел, возводимых в квадрат, и не нужно было бы предварительно вводить в машину все числа, квадраты которых мы хотим получить.

Сделаем это в следующем примере.

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

торой задается эта команда.

Вместо того, чтобы вводить в машину все числа от 1 до я, в программе должна быть команда, при помощи которой в определен­ ной ячейке можно будет по мере надобности получать последова­ тельно все числа от 1 до п. Для получения чисел от 1 до п будем пользоваться ячейкой А+1, в которую сначала зададим 0, а в ячейку

249

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