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

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

.pdf
Скачиваний:
20
Добавлен:
23.10.2023
Размер:
8.7 Mб
Скачать

 

Т а б л и ц а 26

 

Номера

Содержимое

 

ячеек

ячеек*

 

“1

а

 

“а

ь

 

аз

С

 

“4

d

Составляем

рабочую программу

для З-адресной ЭВМ, предвари­

тельно составив следующую блок-схему программы:

Нахождение

>

Нахождение

с d

а b

I

I

(Рі)— (Ра) > О

да

Печать (р,)

?

 

I нет

і

Печать (р,)

190'

Т а б л и ц а 2F

§ 2—3. Программирование по формулам на алгоритмическом I языке АЛГОЛ *

Для -написания программы на языке АЛГОЛ -нет необхо­ димости знать команды конкретной ЦВМ, так как програм­ ма, написанная на АЛГОЛЕ, может быть решена практиче­ ски на любой ЭВМ, имеющей транслятор, т. е. программу перевода с языка АЛГОЛ на язык конкретной машины. На­ помним, что для записи программы на АЛГОЛЕ используют­ ся большие и малые буквы латинского алфавита, знаки различных операций, точка с запятой и др. (приложение 1).

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

Арифметические операции в АЛГОЛе разбиты по стар­ шинству на 3 класса: возвышение в степень | является самой старшей операцией, сложение + и вычитание — явля­ ются младшими операциями; умножение и деление занимают промежуточное положение между старшей и младшей опера­ циями.

Порядок выполнения операций определяется либо поста­ новкой .круглых скобок, либо старшинством операций. В слу­

чае подряд

-стоящих

операций одного класса

выполнение

операций происходит слева направо.

 

Пример 1.

Вычислить у =

а х + b

численных

'--------—— при определенных

значениях,

 

 

сх + а

 

а = 37,77855.

й =

87,376

 

6 = 76,7701,

т =

3,14159

 

с =

77,856,

 

 

 

Программа на АЛГОЛе запишется в виде:

begin real у; у: = (3.14159 x 37.77856 + 76,7701)/

(3.14159X 37 . 77856 + 87.376); outpui{y) end

Здесь знак: = называется оператором присваивания и читается «вычислить значение выражения и присвоить это значение переменной у». begin . . . end операторные скобки; real служит для описания дей­ ствительных переменных (заметим, что для описания целых переменных служит integer); output— это процедура вывода данных из машины на

печать.

Пример 2. Вычислить

 

у =

sin X +

X» +

0,97

 

 

V х г +

0,24

где X = 0,35.

 

 

 

 

 

 

 

 

 

 

 

На АЛГОЛе программа запишется в виде:

 

 

begin real у,

г\ г:

=

sqrt

(0.35 1 2

+ 0.24); у. =

sin (0.35) +

+

(0.35

t

2 +

0,97)//-;

outpui(y) end

 

* Для детального изучения языка АЛГОЛ рекомендуется пользо­ ваться литературой (8, 9).

192

Пример 3. Вычислить

У ~

А + В-х

» •

х*

 

 

 

 

1 + 3 + 2.x3

 

где А = 1, В = 5, X = 3.

 

 

 

Запись программы на АЛГОЛе:

 

begin real belay, beta у: = (1 +

5 X 3 )/ (1 + 3 | 2)'/(3 + 2 x 3 f 3); output

{beta у) end

 

 

 

Пр и м е р 4. Написать на АЛГОЛе программу вычисления выражения

Ь + (— \)1ѴЬ' — 4ас

где Ьг — 4ас > 0.

begin integer i; real a, b, c; X (b X b — 4 X a. X c)) /

x[i] : —( — b + (— 1) t i X sqrt X (2 X a); output {x [r]) end

§2—4. Описание циклических программ

вмашинных командах

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

Рассмотрим основные методы организации циклов.

Метод счетчика. Пусть в некоторой ячейке находится число п, определяющее количество циклов. Метод счетчика заключается в том, что, прибавляя «1» к содержимому неко­ торой ячейки а, в которой первоначально находился ноль, при каждом проходе сравнивают (а) и п*.

Пример

1.

Вычислить

и

напечатать

последовательность

чисел

У і =

а . X? ,

где

і — 1,

2, . . .

100

и x t = 1 , х2 =

2, х 3 3, . . . x t =

і; ..

•*іоо = 1 0 0 .

 

 

 

 

 

 

 

 

 

* Числа л

и 1 могут быть представлены либо в виде целых десятич­

ных чисел (как

во всех

последующих

примерах,

т. е., например

 

затем

(а) =

1,

затем

(а) = 2

и

(о) =

0,

л),

 

 

т. д.

(а) =

 

 

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

рядах

машинного слова

(т. е. например: сначала (а)

= 00 0000

0000

0000,

затем

(о) =00 0000 0000

0001, затем

(<*)

= 00 0000

0000 0010

и т.

д,

Если, например, п 25, то конечное

(а) =

00 0000 0001 0101).

 

 

13*

 

 

 

 

 

 

193

Расположим числа в ячейках памяти.

1

Содержимое

JNfo

ячеек

ячеек

 

“і

= 1

°2

а

а3

1

а4

100

°5

0

Т а б л и ц а 28

Примечание

Дальше л'г = 2, л'з — 3, ... Хі = і,

• • • х п = п

Шаг изменения і и х п — число циклов. Ячейка счетчика

Составим блок-схему программы:

Печать ах2.

Прибавление

,

«1» к счетчику

1

 

Содержимое

да

счетчика

равно

_______і-Останов

п

 

?

 

нет

 

Составим рабочую программу для 3-х адресной ЭВМ.

\

194

 

к о п

А,

Аг

Аз

ячеек

 

 

 

 

N +

1

X

а ,

 

р

N +

2

X

р

“2

р

N +

3

ПЧ

р

 

 

N +

4

+1

“j

“3

аі

N + 5

+!

«Б

О.

а5

W + 6

+ ср

аБ

а4

 

N +

7

УГЦ

 

N + 1

 

N +

10

о с т .

 

 

 

N +

11

0 0

000»

0000

0000

 

 

1

 

 

 

Т а б л и ц а 29

Примечание

X1

р

 

 

 

3<

t

 

 

 

ах2 ->■

на печать

 

Определение х,- ->■ а.

Организация счетчика:

0 +

1 “*■°8 і 1

+ 1

“*• °5і

1 + 1 + 1 - М ( ' И Т . д.

(“б)= Ы ,

ТО

О) =

1

К )

=г= (“4).

то

ш =

0

р рабочая

ячейка

 

В данной программе в ячейке as происходит перебор циклов (подсчет количества циклов). Как только (as) = ко­ личеству циклов п, машина выходит на останов.

Программа отпечатает последовательность чисел ахи ах2, ахз,... ахп.

Пример

2. Вычислить

и

напечатать

последовательность уі Xj3,

где хі = 1

п и изменяется с шагом

S, а / = 1, 2,

3, •... т.

То есть хі =

1, х3 1 + S,

х 3 =

1 +

2S .........

х т =

I + (т — 1) S = я

 

 

 

 

Т а б л и ц а 30

'

Содержимое

Примечание

ячеек

 

 

ячеек

 

 

 

“і

 

.

1

■*;

 

 

 

т

количество циклов

“3

 

 

S

шаг изменения х

°4

 

 

1-

1 для увеличения счетчика на «1»

Об

 

 

0

Ячейка счетчика

 

 

 

/

 

 

Составим

рабочую программу для 3-х адресной ЭВМ

13*

 

 

 

195

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а

31

 

к о п

 

А,

Ач

Аз

 

 

Примечание

 

 

 

ячеек

 

 

 

 

 

 

N + 1

 

X

 

 

“і

 

аі

р

Х і 2 - р

 

 

 

 

 

 

 

N +

2

 

X

 

 

Р

 

“1

р

Хі3 -* р

 

 

 

 

 

 

 

N +

3

' ПЧ

 

 

Р

 

 

 

Уі ->• на печать

 

 

 

 

 

N +

4

 

■+'

 

 

а,

 

03

пі

Определение Хі

 

 

 

 

 

ЛҢ- 5

 

+ ’

 

 

“6

 

Ч

Об

Организация счетчика в ячей­

 

 

 

 

 

 

 

 

 

 

ке

ав

 

 

 

 

 

 

 

N +

6

“Ьср

 

 

«3

 

аь

 

(

(°г) Ф («б).

 

ш =

0

 

 

 

 

 

 

 

1 (“а) =

К ) .

 

“ =

1

 

 

 

N + 7

УПй>0

 

 

 

N +1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N +

10

ОСТ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N +

11

ОО

 

0000

0000

0000

Рабочая ячейка

р

 

 

 

 

 

 

 

 

 

 

 

 

 

л = 1000

 

 

і =

 

 

 

 

.п.

 

Пример 3. Найти сумму чисел

S =

 

 

где

1, 2, 3 . ,

 

 

 

 

 

 

 

 

 

 

<=і

 

 

 

 

 

 

 

 

 

Располагаем исходные числа а\, я2, я3 . . . яІОоо соответственно в ячей­

ках памяти oj,

аг,

а3, . .. а,nog,

а п = 1000 в ячейке

а1000.

 

 

 

 

 

В

6, поместим

«1» пересчета, а в ячейке

а

организуем счетчик. При­

чем

в

ячейку а вначале

поместим 3,

так как сумму трех чисел

Я] + я2 +

я3 подсчитаем

во

второй

команде. Для организации

 

переадре­

сации

по

команде+';

.pj,. а3, р,

нужно,

очевидно,

всякий раз

увеличи­

вать на 1

А2 э т о й команды. Для этого в ячейку

 

мы поместим код, в

адресе втором

которого

в 1

разряде записана

«1».

 

 

 

 

 

 

 

 

 

 

 

 

 

(В2) =

00,0000,0001, 0000.

 

 

 

 

 

 

 

 

Прибавляя

(8г)

в

команде

+'; Рі а3. рх,

будем

последовательно

накапливать в ячейку Рі сумму чисел. Таким

образом,

рабочая

програм­

ма примет следующий вид.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а

32

 

к о п

 

 

 

 

Аг

 

Аз

 

 

Примечание

 

 

ячеек

 

Аі

 

 

 

 

 

 

1

 

2

 

 

3

 

 

4

 

5

 

 

 

 

6

 

 

 

 

N + V

•+

 

 

“1

 

аг

Рі

 

й\

Q.0

 

PJ

 

 

 

 

N + 2

+

 

.

Рі

\

 

“з .

Рі

 

й\ +* Ü2 +

йз~> PJ

 

 

 

 

 

 

 

 

 

 

 

 

Оі + 1Ö2 +

Оз +

04

pj

 

 

 

 

 

 

 

 

 

 

 

 

Яі +

я2 +

.. . Яюоо

 

Рі

196

П р о д о л ж е н и е

1

2

3

4

5

 

 

 

6

 

 

N + 3

+ k

N - 1- 2

 

' N + 2

Формирование команды

 

 

 

 

 

переадресации

 

N + 4

+

а

 

а

3 + 1 •+ а И Т . Д .

 

JV + 5

+ ср

а

а1000

 

( а )

ф 1000,

со

=

0

 

 

 

 

 

( а )

=

1000,

со

=

1

N + 6

УПШ„

 

N + 2

 

СО

= 0, ТО; к JV + 2

N + 7

пч

н

 

со =

1, цальше

 

N + 10

ост

 

 

 

(Рі)

на печать

 

 

 

 

 

 

 

 

 

 

 

N + U

0 0

0000

0001

0000

82

для переадресации

N + Ѵ2

00 .

0000

0000

0000

р, рабочая

ячейка ч

Пример 4. Составить программу вычисления суммы

п

S = 2

1 Общая структурная блок-схема программы, очевидно, будет иметь вид

197

Отведем

для чисел я;, &;

соответствующие ячейки

памяти.

 

 

Т а б л и ц а 33

№ ячеек

Числа

№ ячеек

Числа

“2

а1

'i

6.

а2

І2

 

а3

аз

Ьз

I

ап

ЬП

ah

а

п

1

Составляем рабочую 3-х адресную программу.

Т а б л и ц а 34

 

КОП

Л,

Лг

ячеек

N +

1

X

 

Рі

N + 2

+ Х

N +1

N + П

N +

3

+'

Ра

Р.

УѴ+

5

+ ср

Рз

а

N +

4

+

Рз

р

ІѴ + 6

УПш„

 

N + 1

N + 7

п ч

Р2

 

N +

10

ост.

 

 

где

 

 

 

 

 

к о п

А\

Аг

ячеек

 

 

 

УѴ+

11

0 0

0001

0001

Pi

0 0

Q000

0000

р2

0 0

0000

0000

Рз

0 0

0000

0000

^3

Рі

W + 1

Рг

Рз

Аз

оооо

0Ö00

0000

0000

Примечание

Определение afbi

Формирование команды переадресации

Определение 2 я/ -^г

'

Проверка условия 1 = п

Увеличение! счетчика

на

единицу

 

 

ш = 0,

к N + 1

 

ш =• 1,

к

N + 7

 

 

 

п

 

Печать

5

= S аі

 

 

 

1

 

Примечание

1 Константа переадреса-

іции

Рабочие ячейки

198

Пример 5. Составить программу, вычисления функции у = х п

Используем метод счетчика. Будем к содержимому ячейки р2, пер­ воначальный код которой равен нулю , последовательно прибавлять еди­ ничку из ячейки а2, пока (р2) не станет равным га — 2 (так как первые две команды позволяют получить Xs).

Распределяем память для исходного числового материала.

 

Т а б л и ц а 36

№ ячеек

Исходный числовой

 

материал

“і

X

“2

1

“3

га—2

Составляем рабочую 3-адресную

программу.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а

37

к о п

А,

Аг

Аз

 

 

Примечание

 

ячеек

 

 

 

 

 

 

 

 

 

 

 

 

 

Л +

1

X

“1

аі

Рі

X2

?!

 

 

 

N +

2

X

Рі

°1

Рі

X3 ........ х п ->■Рі

 

 

N + 3

+'

Р2

“2

Р2

1, ....

га — 2 -і- р2

 

N +

4

“Ъср

Р2

а3

 

(Ра) т=(о3).

ш=

0

 

N + 5

1

 

N + 2

 

(Ра) =

 

(аз).

*> =

1

 

УГЧ

 

 

 

 

 

 

 

 

N + 6

п ч

Рі

 

 

(р) на

печать

 

 

N +

7

о ст .

 

 

 

 

 

 

 

 

 

N +

10

0 0

0000

0000

0000

і)=Л7+10 1

номера

 

 

 

 

 

 

 

 

 

1

рабочих

N + 11

0 0

0000

0000

0000

(р2)=Л1+11

J

ячеек

 

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

У — ахі

для значений л:: хи х2, , . ., хп.

 

 

 

 

 

 

 

 

Используем метод счетчика: к содержимому

ячейки

р2

будем прибав­

лять по единичке, пока не переберем все числа х

(их га). Получаемые про­

изведения ах1, ахг и т. д. выводятся на печать по команде ПЧ.

 

Перебор всех чисел х осуществляется с помощью переадресации по

команде

- f к, N+1, 8, N+1, которая

каждый раз

меняет содержимое

вто­

рого

адреса первой

команды

на единицу (так как

(5) =

00, 0000,

0001,

0000), пока не будут перебраны все числа х.

199

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