книги из ГПНТБ / Семененко В.А. Вычислительная техника в инженерных и экономических расчетах учеб. пособие для студентов всех специальностей
.pdfПример 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
п
п + 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 |