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

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

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

Пример 1.

Вычислить

 

Z ; =

A + t f

 

где/ =

1 ~ 1000.

Циклическая прогаам-

 

 

0.357

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

begin teal array jt. у,

z

[1:1005];

integen /; for

i: — 1

step

1 until

1000 do

z[Z]: =

(jc[t]

1 2 +

//[/]

f

2)/0,357;

output(г[і\) end.

 

 

 

 

 

 

 

Здесь

 

real

array

x,

у,

г

[1 : 1000]

задает імасснв

действительных

чисел

-VI, у і ,

zi

с индексом

і =1 ~

1000.

 

 

 

 

 

 

 

 

 

 

 

Элемент списка

цикла

1 step

1 until

1000 определяет

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

ность с шагом 1:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2=

1,

2=1 + 1, 2=

1 +

1 + 1, . . J до

 

1000.

 

 

 

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

 

Z; =

"j/" yj +1 для

і =

1 =

100,

где уі

=

-t? +

+ 0,75 и напечатать

уі и Z;.

 

 

 

 

 

 

 

 

 

 

 

 

 

Циклическая программа на АЛГОЛе:

 

2; for

 

 

 

 

 

 

 

 

 

èegin

real

array х,

 

у,

z

[1:100]-,

infèger

i : =

1

 

step

1 until

100 do

begin y[i] : = x [2]

 

t

3 +

0,75;

output (y\i})\

z [2]: =

sqrt (2Д2] t

2 + 1)

output (Z [/]) end end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x) +

17,9 л:? +

123,

 

 

а <

1

 

 

 

 

 

 

 

Уі =

л:?- 1 ,8 9 5 ,

 

 

 

 

1

<

а <

16

 

 

 

 

 

 

 

ctg

Xi,

 

 

 

 

 

 

 

22

>

16

 

 

 

 

где

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

 

Л' /

+ 0

' 2 5

 

 

 

 

 

 

7ОД

 

 

 

 

 

 

 

- -------------- ,

 

 

 

2= 1

+-

1739,

 

 

 

 

 

 

 

 

 

sin Xi + 2

 

 

 

 

 

 

 

 

 

 

 

 

Напомним, что при решении выражений

такого

типа в АЛГОЛе

используются условные операторы типа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

і/ В then

V else 5

 

 

 

 

 

 

 

 

 

или

 

 

 

 

 

 

 

 

i f В then

V,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где В — булевское выражение,

 

 

 

 

 

 

 

 

 

 

 

 

 

V —: безусловный оператор,

 

 

 

 

 

 

 

 

 

 

 

 

 

S —іліобой оператор.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тоща программа на АЛГОЛе запишется

в

виде (вначале

вычис­

лим а):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

begin

real

array х,

 

2/(1:1739);

real a;

integer/;

 

 

 

 

 

 

 

 

 

for/:

=

1

step 1 until

1739

do

begin

a: = (* [/]

t

3 +

 

0,25)/(sin(лг[(/])+2);

if 2i <

1 then

2/[Z]: =

JC[Z] t

4 +

17,9 X x[i]

t 3 +

123

else

 

if a > 16

then

y[t\: =

cos (x[/])/sin (JC[i])

else

2/[/]: =

x[i]

t 3 — 1,895;

output y[i])

end end

 

 

 

 

 

 

 

 

 

 

 

П

 

 

 

 

 

 

 

 

 

 

 

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

 

у — m 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/= 1

 

 

 

 

 

 

 

 

 

 

 

210

 

Программа на АЛГОЛе:

 

 

 

 

 

 

 

begin

real

array

х,

у[\:п);

integer/;

real

sum,

у,

m; sum: = 0 ;

for/: = 1 step 1 until n do

 

 

 

 

 

 

 

begin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sum: =sum + x\i\ end

 

 

 

 

 

 

 

 

 

у: =

m X sum; output (у) end

 

 

 

 

 

 

 

 

Пример 5.

Вычислить у = a.v3 + bx2 +

cx + ,

 

 

где

jc =

1, 2,

3 ... n.

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

begin real у, a, b, с,

d;

integer

х;

 

 

 

 

 

for

х: = 1 step

1

until

п do

 

 

 

 

 

 

 

begin

 

 

у: =

яХ-*|3 + 6Х -*|2+сХ д:+^; output

(у) end end

 

 

 

 

 

Пример

6. Написать на АЛГОЛЕ

программу вычисления.

 

Программа запишется в виде:

У = я!

 

 

 

 

 

 

 

 

 

 

 

begin integer п, i, а;

 

 

 

 

 

 

 

 

 

а: =

1;

fori: =

1 step

1

until п do

 

c,

d),

 

 

АЛГОЛЕ.axi;

output

(a) end

 

 

 

 

 

 

а:

 

 

 

 

 

 

 

 

 

 

 

Пример 7. Найти

Z =

min(a,

b,

 

 

 

написать программу на

 

Программа

 

с,

d,

х,

у;

 

 

 

 

 

 

 

begin

real

a,

b,

 

 

 

 

 

 

 

if а

<

b then х: =

a

else

х: = 6;

 

 

 

 

 

if с <

d

then

у: — с else у: =

d;

 

 

 

 

 

 

іi x

< у

then

output

^ )else output (у)

end.

 

 

 

 

Пример 8. Составить программу подсчета себестоимости изделия, ис­

пользуя уравнение примера 1 § 2—б:

 

 

 

 

 

begin

integer

/,

«;

real Ml,

М2,

N1,

N2,

s,

sum;

real array р[1:л];

sum: —0;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tor /: = 1 step

1

until

n do

 

 

 

 

 

 

 

begin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sum: =

sum + /?[i]

 

 

 

 

 

 

 

 

 

 

end;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/

s: = (100 + N1 4- N2)/100

sum +

Afl

+ М2; output (s) end.

 

Пример

9.

Составить

программу

для

расчета

стоимости материалов

в соответствии с формулойx

примера 2 § 2—5:

 

 

begin

integer j ,

k; real S;

 

 

 

 

 

 

 

 

 

 

real

array

C,

Q,

T[\:k\;

 

 

 

 

 

 

 

 

integer

array

m

[I:ft];

 

 

 

 

 

 

 

s: = 0 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

for /: = 1 step 1 until k do

 

 

 

 

 

 

 

begin s: = s + C [/] x

m [j ] X Q [/] X (I +

T [/]/100)

 

end

output

(s)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

end

211

Пример 10. Составить на АЛГОЛе программу расчета зарплаты в соот­ ветствии с примером 3 § 2—5:

begin integer i, л; real А , D, Р\

real

array X,

Y,

В,

V,

Z,

[1:л]; '

Boolean array

d [1://];

 

 

for i: =

1

step I until

n do

 

 

begin

A: = A'[/'j X Г[/]

+

B[/];

 

 

D: = if d[t] then

о

else

0.06XA;

 

if

A > 100 then

P:

= 8,2

+ 0,13 X (A - 100)e!seP: = 8.2;

Z[i): = A — V[i] — D - P -

output (/, X[i], У[і], ß[/], Г[/], D, P , Z{i\)

end end

§2—7. Циклы с заранее неизвестным числом прохождений

иих обработка в машинных командах

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

Лрнмер 1. Вычислить sin а " , разложенный в ряд

Вычисления прекратить, когда вычисленный член ряда станет меньше

заданного числа

е.

 

 

 

 

между

членами

ряда Лл+1 и

Воспользуемся

соотношениями

частными суммами S,І+1:

 

 

 

 

 

 

 

 

 

Un+1

X1

——-

,

 

где

= 2/1(2/1+ 1)

 

 

 

 

 

 

 

Яя+1

 

 

 

 

 

 

 

Sn+i =

Sn +

Un+i-

 

 

п — 1,2...

 

Для организации цикла по этим формулам составим соотношение для

п Обозначим Ъ,, =

Гл,

сп = 2/і + 1.

 

 

 

Тогда

: сп =

Ьп +

1,

сп + 1

=

Ьп + 1

+

1,

 

 

 

bn+1=

2(л +

1) =

2/1+

1 +

1 — сп +

1,

 

 

 

1

= ^Vi+ l'C/i+ i-

 

 

 

 

 

 

 

 

 

По данным Un, Sn, сп

определим

Un+,, S„+1,

сл+1.

Начальные значения величин

U,

S

и С:

 

 

 

 

 

 

 

UQ = X , S0 = X, CQ = 1.

 

212

Распределяем память для числовой информации.

Т а б л и ц а 48

JMfe

 

 

Исходная числовая информация

ячеек

 

 

 

 

 

 

X = ІІп, в дальнейшем Uл+1 член ряда

«2

S0=

x,

в дальнейшем

5 П+ 1 сумма

«8

С„ =

1,

в дальнейшем

Ся+1.

“а

 

X

 

 

“6

 

1

 

 

«0

 

е

 

 

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

 

 

коп

ячеек

 

 

 

N +

1

.

X

N + 2

 

N + 3

 

+

N +

4

 

+,

N + 5

 

X

N + 6

 

X

N +

t

 

:

N +

10

 

+

N +

И

н

N + 12

 

УПы0

N +

13

 

п ч

N +

14

 

ост

 

 

 

 

 

 

Т а б л и ц а

49

А\

а 2

Az

 

Примечание

 

“4

ч

ч

Х~ -> ад

 

 

 

 

Ч

°4

Х г

 

ец

 

 

®3

ч

Рі

6і =

Со +

1

Рі

 

Рз

°6

«3

Ci =

by +

1 -+ а3

 

Рі

«3

Pi

Ч -

by Су -> Px

 

а1

ч

а1

X 2-V„ ■* at

 

 

“1

Рі

“1

U1 ->■а,

 

 

 

а2

“1

ч

Вычитание модулей чисеі

“1

Ов

 

 

 

 

l(oi) 1> І(ч)1.

IO « =

0

 

 

 

l(“,)l

<

l(a o)l.

TO 0) =

1

 

N 4 - 3

 

 

 

 

 

 

 

“2

 

 

S„ +1

на печать

 

Пример 2• Вычислить cos х, разложенный в ряд с точность до е.

213

где:

Un+, член ряда равен

Un+i = -г2

, Яп+х= (2я+ 1)(2п+2у

ал + 1

ичастичная сумма 5,1+і — Un+t + S„.

Начальные значения:

л = 0,

{/„ =

!,

S 0 — 1.

 

 

 

 

 

Распределим

числовую информацию.

 

 

 

 

 

 

 

 

 

Т а б л и ц а

50

 

 

 

 

Исходная информация

 

ячеек

 

 

 

 

 

 

 

 

 

 

 

 

 

“ і

 

U0,

в дальнейшем

Н,!+1

 

 

 

а3

 

S0,

в дальнейшем

5 Л+1-

 

 

 

° 8

 

X,

в дальнейшем

х г

 

 

 

а 4

 

п =

0, в дальнейшем

п

 

 

 

“ S

 

1

 

 

 

 

 

 

 

а в

 

2

 

 

 

 

 

 

 

а 7

 

е

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

Т а б л и ц а

51

 

к о п

 

Аі

Ä2

 

 

Примечание

 

ячеек

 

 

 

 

 

2

 

3

4

 

5

6

 

N + 1

X

 

“3

аз

 

“3

х г -*■03

 

N + 2

 

 

аз

 

а 8

х г - a3

 

N +

3

X

 

°в

“4

 

Pi

2я - ►pi

 

N +

4

+

 

Рі

°6

 

Рг

2л -f- 1 —>“p2

 

N 4- 5

+

 

Pi

аѳ

 

Pi

2 n + 1 2 - P!

 

N +

6

X

 

ь

рі

 

Pi

S/l+ l Pl

 

N +

7

-

 

а1

pi

 

Pi

Un

 

 

 

 

Pl

 

N +

10

 

 

 

 

 

 

fln+l

 

X

 

“8

Pi

 

“l

Un+l -* al

 

N +

11

+

 

а2

“i

 

“a

5 n+l -*■ “j

 

214

 

 

 

 

 

П р о д о л ж е н и е

1

2

3

4

5

2

N + 12

1—1

“1

“ 7

 

Вычитание модулей

N + 13 N + 14 N + 15 N + 16

 

 

 

 

ІЮІ -

ІЮІ

 

 

 

 

І(аі)І >

ЮІ> “ •= 0

 

 

 

 

ІЮ) < ІЮІ. ш = 1

+

° 4

ав

*4

П а4

УПШ„

 

N + 3

 

 

 

пч

«г

 

 

S„+j

печать

ост.

 

 

 

 

 

Пример

3. Вычислить

f{x) = е~х'

с точностью до е.Функция f(x) =

= е~х может быть разложена в ряд

 

 

 

 

е'

 

 

X

 

 

дг3

 

 

 

 

 

1!

 

 

+ . . .

 

 

 

 

 

 

 

 

3!

 

Воспользуемся соотношениями между членами ряда

и частны­

ми суммами Sn+1,

где n =

0,

1,

2 . ..

 

 

Uп+1= и п.

 

■ ■

, 5 П+1 = Sn + U,Jfl.

 

 

 

 

 

 

п +

1

 

 

Начальные значения

п =

О,

U0 =

1,

S 0 = 1

 

Распределим память для числовой информации.

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а 52

 

 

 

Исходная числовая информация

 

ячеекі

 

 

 

 

 

 

 

 

 

 

 

 

 

“1

л =0, в дальнейшем п +

1

 

а3

U0,

в дальнейшем

Un+i

 

 

аз

S 0,

в дальнейшем

Sn+x

 

“4

X

 

 

 

 

 

 

 

 

“6

1

 

 

 

 

 

 

 

 

°в

8

 

 

 

 

 

 

 

 

 

*

 

 

 

 

 

 

 

 

215

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

 

 

 

 

 

 

 

Т а б л и ц а

53

КОП

Аі

Az

Лз

 

Примечание •

-

ячеек

 

1

2

3

4

5

 

 

6

 

N + 1

ч*

 

аб

аі

/і Ч- 1

 

 

N + 2

X

а2

“4

а2

Uп*X “*• Я2

 

N + 3

.

“2

' “1

«2

 

Ѵп-х

 

 

г - ;— -> а 2

 

N + 4

 

 

 

 

 

и + 1

 

 

 

а2

“2

Un + 1

а2

 

N + 5

+

а3

“2

«3

5 П+ 1

“8

 

'

216

 

 

 

 

 

П р о д о л ж е н и е

I

2

3

4

5

6

 

 

N + 6

1—1

«2

“о

І(“а)І > І(°а)І.

<■>=

0'

 

 

 

 

 

І Ы К І Ы І .

“>=

1

N + 7

УПШо

 

N +

1

/—/ — это команда вы­

 

 

 

 

 

читаниямодулей

чи­

 

 

 

 

 

сел

 

 

N +

10

пч

°3

 

 

N +

11

ост

 

 

Пример

4.

найти у =

,

если

погрешность

г и у0.

 

 

Составим

блок-схему

программы

Поместим числа уо, 2, х и е в ячейках:

Содержимое ячеек

ячеек

 

° і

Уо

“а

2

°з

X

“ 4

е

уп+\ = Уп&~ Уп'х ) и заданы

Т а б л и ц а 54 *

Примечание

В дальнейшем у„

Программа для 3-адресной ЦВМ:

217

 

к о п

^1

Аг

As

ячеек

N +

1

X

“1

<*з

Pi

N + 2

“2

Рі

Pi

N +

3

X

“1

Рі

Pi

N +

4

— '

Рі

°1

Pa

N +

5

'—

Р2

at

 

N +

6

п

Рі

 

“1

N + 7

УГК

 

N + 1

 

 

 

 

 

 

N +

10

пч

Рі

 

 

N + 1 1

ост.

 

 

 

N +

12

0 0

0000

0000

0000

N +

13

0 0

0000

0000

0000

Т а б л и ц а 55

Примечание

Уп-х -*Pi

2 - y n- x ^ P i

Уп+і -* Pi

(Pi) — (al) =

®/l+ l —> P2

(pa) — £ > 0,

TO B = 0

(p2) — E < 0,

TO U) = 1

Пересылка yn -> аг

 

Переход к N +

1,

если

со = 0 и к N +

10,

если

СО— 1

 

 

 

уна печать

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

РіРа

§ 2—8. Организация циклов на АЛГОЛе при задании определенных условий

Напомним, что оператор вида

forV: — £ \while В do S

задает многократное выполнение оператора S для значений переменной V = Е, пока не будет выполнено условие, задан­ ное булевоким выражением В.

Пример

1.

Вычислить

 

уі =

}/~ xf — 0,1 пока не встретится первое

значение х г

для

которого

подкоренное

выражение отрицательно

begin real

х,

у;

integer

і;

 

 

 

 

 

/ : = 0 ;

 

 

while x\i\ f 2 —0,1 >

 

 

 

for і: =

I +

1

0

do

y[i]: =

sqrt

(*[/] 1 2 — 0,1);

output

((/[!]) end

Пример 2.

Вычислить ex, разложенное в ряд до тех пор пока ип+г член

ряда не станет меньше е.

 

 

 

 

 

 

 

 

 

 

 

 

 

•X

 

 

!

 

 

 

 

^

=

! +

 

+

2 ,

Частная сумма ряда

Sn+1 =

Sn +

 

£/я+1,

218

п

п + 1

Начальные значения S0 = 1, U0 ~ 1.

Обозначим S как sum, U через U1 и е — eps. Тогда на АЛГОЛе программа будет записана в виде:

begin real Ul, sum, eps, x;

integer n; Ul: = sum: = 1; «; = I

for n := n +

1 while abs (£/l)*> eps do

 

 

begin U l : =

(Ul X x)/n; sum-. =

sum + Ul;

 

output (sum)

end

end

 

 

 

 

 

 

 

 

Пример 3. Найти

у — V х ,

пользуясь

алгоритмом Герона:

 

 

 

 

 

Уо

1 і

Уп+і —

 

Уп j

/2

с точностью до I упг X I <

Е.

 

 

 

 

 

Программа' на АЛГОЛе:

 

 

 

 

 

 

begin

real

л:,

у,

eps,

г;

 

 

 

 

 

 

 

у. = 1 ; for г: =

у while у ] 2

—х > eps V х — у I 2

> eps do

у: =

(х I у +

у) /2; output

(у)

end

 

 

 

 

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

у

=

у х ,

если

 

 

 

 

 

 

Уп+1=

 

/ 3

-

 

У«2

\

 

 

 

 

 

 

 

—^ Г

) и заданы

 

 

 

 

 

 

Уо и (у3 -х )

 

Программа на АЛГОЛе:

 

 

 

 

 

 

begin

real

х,

у,

eps,

г;

 

 

 

 

 

 

 

у: =

у0;

for

г: = у while

у |

3 — х ^ e p s

do

 

У : =

У X (3/2 — у t 2/(2 X х)); outpul

(у)

end.

 

Пример 5. Найти

• у =

 

1

,

пользуясь алгоритмом

 

 

уя+і = у„(2 — Уп'Х), если заданы уо и допустимая погрешность

— 1 + х. у <

Е.

 

 

Можно написать на АЛГОЛе программу:

begin real х,

у,

eps,

г;

у : = у0; for

г: =

у while — 1 + х X У < eps do

у : = у.ѵХ (2 — у X х);

output (у) end

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