Методичні вказівки до лабораторних робіт з дисципліни Алгоритмізація розрахунків в хімічній технології
.pdf41
Продовження таблиці 2.2
1 |
2 |
3 |
4 |
5 |
|
Сума додатних |
|
|
|
|
|
елементів |
sum |
sum |
Real |
– |
|
масиву |
|
|
|
|
|
Файлова змін- |
|
|
|
|
|
на, пов'язана з |
– |
f1 |
Text |
– |
|
файлом вихід- |
|||||
|
|
|
|
||
них даних |
|
|
|
|
|
Файлова змін- |
|
|
|
|
|
на, пов'язана |
– |
f2 |
Text |
– |
|
з файлом |
|||||
|
|
|
|
||
результатів |
|
|
|
|
2.2.3 Програма на мові Turbo Pascal 7.0
Program lab3_2;
Type Vec=array [1..100] of real; Var a:Vec;
I,j,n:integer;
f1,f2:text;
c,s,sum:real;
Procedure VVID;
Begin
read(f1,n); |
|
|
|
|
for |
i:=1 to |
n |
do |
read(f1,a[i]); |
End; |
|
|
|
|
Function |
SUMA:real; |
|
||
Begin |
|
|
|
|
s:=0; |
|
|
|
|
for |
i:=1 to |
n |
do |
|
if |
a[i]>0 |
then |
s:=s+a[i]; |
SUMA:=s;
End;
42
Procedure UPOR;
Begin
for i:=1 to n-1 do
for |
j:=i+1 to n |
do |
if |
a[i]<a[j] |
then |
begin c:=a[i]; a[i]:=a[j]; a[j]:=c;
end;
End;
Procedure VYVID;
Begin
writeln(f2,' Упорядкований по убуванню вектор А'); for i:=1 to n do write(f2,a[i]:6:1);
writeln(f2);
writeln(f2,' Сума додатних елементів вектора А =',s:4:1); End;
Begin assign(f1,'lab2.dat'); assign(f2,'lab2_2.res'); reset(f1);
rewrite(f2);
VVID;
sum:=SUMA;
UPOR;
VYVID;
close(f1);
close(f2);
End.
43
2.2.4 Вихідні дані
10
12 -45 1 0 25 -64 -9.7 24 -43.1 5
2.2.5 Результати розрахунку
Упорядкований по убуванню вектор А
25.0 24.0 12.0 5.0 1.0 0.0 -9.7 -43.1 -45.0 -64.0
Сума додатних елементів вектора А =67.0
2.3Алгоритм з використанням підпрограм, які мають формальні параметри
2.3.1 Блок-схема алгоритму
2.3.1.1 Блок-схема основної програми
1
Початок
2
VVID(a,n,f1)
3
sum=SUMA(a,n)
4
UPOR(a,n)
5
VYVID(a,n,sum,’A’,f2)
6
Кінець
44
2.3.1.2 Блок-схема процедури VVID ( var b:Vec; var m:integer; var ff1:text )
1
Початок
2
Введення m
3
i=1,m
4
Введення bi
5
Кінець
2.3.1.3 Блок-схема функції SUMA ( const b:Vec; m:integer )
|
1 |
|
|
|
Початок |
|
|
|
|
2 |
|
|
|
S=0 |
|
|
|
3 |
|
|
i=1,m |
|
|
Ні |
4 |
bi >0 |
Так |
|
|
5 |
|
|
|
|
|
|
|
|
S=S+bi |
|
6 |
|
|
|
SUMA=S |
|
|
|
7 |
|
|
|
Кінець |
|
45
2.3.1.4 Блок-схема процедури UPOR ( var b:Vec; m:integer )
|
|
1 |
|
Початок |
|
|
|
2 |
|
|
i=1,m-1 |
|
|
3 |
|
|
j=i+1,m |
Ні |
4 |
Так |
|
bi < bj |
|
|
|
5 |
|
|
c = bi |
|
|
bi = bj |
|
|
bj = c |
|
|
6 |
|
|
Кінець |
2.3.1.5Блок-схема процедури VYVID ( const b:Vec; m:integer; ss:real; p:char; var ff2:text )
1
Початок
2
‘Вектор ’,p
3
i=1,m
4
bi
5
‘Сума =’, ss
6
Кінець
46
2.3.2 Ідентифікація змінних
Таблиця 2.3 – Ідентифікація глобальних змінних
Математичний |
Ім’я в |
Ім’я в |
Тип |
Початкове |
|
сенс змінної |
блок-схемі |
програмі |
значення |
||
|
|||||
|
|
|
|
|
|
Одновимірний |
|
|
Vec = |
(12;-45; 1; 0; |
|
а |
а |
array [1..100] |
25;-64;-9.7; |
||
масив |
|||||
|
|
of real |
24; -43.1; 5) |
||
|
|
|
|||
Кількість еле- |
n |
n |
Integer |
10 |
|
ментів у масиві |
|||||
|
|
|
|
||
Параметр |
i |
i |
Integer |
– |
|
циклу |
|||||
|
|
|
|
||
Параметр |
j |
j |
Integer |
– |
|
циклу |
|||||
|
|
|
|
||
Сума додатних |
|
|
|
|
|
елементів |
S |
s |
Real |
– |
|
масиву |
|
|
|
|
|
Тимчасове |
|
|
|
|
|
сховище |
c |
с |
Real |
– |
|
значення |
|||||
|
|
|
|
||
змінної |
|
|
|
|
|
Сума додатних |
|
|
|
|
|
елементів |
sum |
sum |
Real |
– |
|
масиву |
|
|
|
|
|
Файлова змін- |
|
|
|
|
|
на, пов'язана з |
– |
f1 |
Text |
– |
|
файлом вихід- |
|||||
|
|
|
|
||
них даних |
|
|
|
|
|
Файлова змін- |
|
|
|
|
|
на, пов'язана |
– |
f2 |
Text |
– |
|
з файлом |
|||||
|
|
|
|
||
результатів |
|
|
|
|
47
Таблиця 2.4 – Ідентифікація локальних змінних процедури VVID
Математичний сенс |
Ім’я в блок- |
Ім’я в |
Тип |
|
змінної |
схемі |
програмі |
||
|
||||
|
|
|
|
|
Одновимірний |
|
|
Vec = |
|
b |
b |
array [1..100] |
||
масив |
||||
|
|
of real |
||
|
|
|
||
Кількість елементів у |
m |
m |
Integer |
|
масиві |
||||
|
|
|
||
Файлова змінна, |
|
|
|
|
пов'язана з файлом |
– |
ff1 |
Text |
|
вихідних даних |
|
|
|
Таблиця 2.5 – Ідентифікація локальних змінних функції SUMA і процедури UPOR
Математичний сенс |
Ім’я в блок- |
Ім’я в |
Тип |
|
змінної |
схемі |
програмі |
||
|
||||
|
|
|
|
|
Одновимірний |
|
|
Vec = |
|
b |
b |
array [1..100] |
||
масив |
||||
|
|
of real |
||
|
|
|
||
Кількість елементів у |
m |
m |
Integer |
|
масиві |
||||
|
|
|
Таблиця 2.6 – Ідентифікація локальних змінних процедури VYVID
Математичний сенс |
Ім’я в блок- |
Ім’я в |
Тип |
|
змінної |
схемі |
програмі |
||
|
||||
|
|
|
|
|
Одновимірний |
|
|
Vec = |
|
b |
b |
array [1..100] |
||
масив |
||||
|
|
of real |
||
|
|
|
||
Кількість елементів у |
m |
m |
Integer |
|
масиві |
||||
|
|
|
||
Сума додатних |
ss |
ss |
Real |
|
елементів масиву |
||||
|
|
|
||
Ім’я одновимірного |
p |
p |
Char |
|
масиву |
||||
|
|
|
||
Файлова змінна, |
|
|
|
|
пов'язана з файлом |
– |
ff2 |
Text |
|
результатів |
|
|
|
48
2.3.3 Програма на мові Turbo Pascal 7.0
Program |
lab3_3; |
Type |
Vec=array [1..100] of real; |
Var |
a:Vec; |
|
I,j,n:integer; |
|
f1,f2:text; |
|
c,s,sum:real; |
Procedure VVID(var b:Vec; var m:integer; var ff1:text); Begin
read(ff1,m);
for i:=1 to m do read(ff1,b[i]); End;
Function |
SUMA(const |
b:Vec; |
m:integer):real; |
|
Begin |
|
|
|
|
s:=0; |
|
|
||
for |
i:=1 to m do |
|
|
|
|
if |
b[i]>0 then |
s:=s+b[i]; |
|
SUMA:=s; |
|
|
||
End; |
|
|
|
|
Procedure |
UPOR(var b:Vec; |
m:integer); |
||
Begin |
|
|
|
|
for i:=1 to m-1 do |
|
|||
|
for |
j:=i+1 to m do |
|
|
|
|
if b[i]<b[j] |
then |
|
|
|
begin |
|
|
c:=b[i];
b[i]:=b[j];
b[j]:=c;
end;
End;
49
Procedure VYVID(const b:Vec; m:integer; ss:real; p:char; var ff2:text);
Begin
writeln(ff2,' Упорядкований по убуванню вектор ',p); for i:=1 to m do write(ff2,b[i]:6:1);
writeln(ff2);
writeln(ff2,' Сума додатних елементів вектора ',p,' =', ss:4:1);
End;
Begin assign(f1,'lab2.dat'); assign(f2,'lab2_3.res'); reset(f1);
rewrite(f2);
VVID(a,n,f1);
sum:=SUMA(a,n);
UPOR(a,n);
VYVID(a,n,sum,'A',f2);
close(f1);
close(f2);
End.
2.3.4 Вихідні дані
10 12 -45 1 0 25 -64 -9.7 24 -43.1 5
2.3.5 Результати розрахунку
Упорядкований по убуванню вектор А
25.0 24.0 12.0 5.0 1.0 0.0 -9.7 -43.1 -45.0 -64.0
Сума додатних елементів вектора А =67.0
50
Лабораторна робота № 4
ПРОГРАМУВАННЯ З ВИКОРИСТАННЯМ МОДУЛІВ
Ціль – навчитися складати користувальницькі модулі і використовувати їх як бібліотеки корисних елементів.
Завдання:
-скласти блок-схему алгоритму, яка б містила підпрограми з формальними параметрами;
-скласти програму і два модулі на мові Turbo Pascal 7.0: перший модуль використати як бібліотеку змінних, констант і користувальницьких типів, другий – як бібліотеку підпрограм;
-організувати файлове введення вихідних даних і файлове виведення результатів;
-варіанти завдання взяти з лабораторної роботи № 3, номер варіанту розрахувати за формулою:
41 - N,
де N – номер вашого варіанту.