АтаП_лаб
.pdfЛАБОРАТОРНА РОБОТА № 8
СКЛАДАННЯ ПРОГРАМ З ВИКОРИСТАННЯМ ДОПОМІЖНИХ АЛГОРИТМІВ
Мета: вивчення способів виклику підпрограм, отримання навичок створення підпрограм.
Короткі теоретичні відомості
Підпрограми підвищують продуктивність праці, економлять пам'ять, роблять усю програму більш наочною, спрощують розробку великих програм тощо.
В мові Pascal є два види підпрограм – процедури та функції. Вони відрізняються між собою структурою та способом виклику.
На етапі проектування програми визначається, які частини алгоритму треба реалізувати у вигляді процедури, а де знадобиться функція. В головній програмі всі підпрограми розміщуються після розділу опису даних перед оператором Begin виконуваної частини, а викликаються у разі потреби в процесі виконання головної програми або іншої підпрограми.
Всі можливості, що описані в підпрограмах, доступні лише цим підпрограмам, не поширюється на всю програму і називаються локальними.
Всі можливості, що передбачені в основній програмі, доступні як основній програмі, так і всім процедурам і функціям, що в ній описані. Вони називаються глобальними.
Схематичне представлення принципу дії глобальних та локальних змінних
основна програма А, В, С
підпрограма 1 X, Y
підпрограма 2 M, N
підпрограма 3 K, L
A, B, C – глобальні змінні;
X, Y – локальні змінні для підпрограми 1 та глобальні змінні для підпрограми 2;
M, N – локальні змінні для підпрограми 2;
K, L – локальні змінні для підпрограми 3.
Загальний вигляд процедури:
Procedure <ім’я> (список формальних параметрів); <описова частина>
Begin
... <виконувана частина>
End;
41
Усписку формальних параметрів перелічуються через «;» окремі параметри та інформація про їх тип. Деякі параметри призначені для передачі даних у процедуру, інші для повернення результатів з процедури до тієї програмної одиниці, яка її викликала.
В описовій частині (яка взагалі може бути відсутня) описують ті дані, які використовуються тільки для «службових» цілей в самій процедурі (параметри циклів, робочі змінні та масиви тощо).
Увиконуваній частині записується послідовність операторів, які реалізують потрібний алгоритм. При цьому вони оперують з формальними параметрами, локальними та глобальними даними.
Зв'язок між окремими програмними одиницями здійснюється через списки формальних/фактичних параметрів та за допомогою глобальних змінних.
Глобальні дані описуються в головній програмі, вони не є фактичними параметрами під час виклику підпрограм, не описані в підпрограмах, а використовуються в одній з них і в головній програмі.
Результати роботи підпрограми можуть бути передані до головної програми через формальні параметри та глобальні дані.
Приклад 8.1. Програма обчислення суми десяткових цифр.
Const N=5;
Var X:Array [1..N] of Integer;
SumX, Kill,I : Integer;
Procedure Sum(A:Integer; Var ISum:Integer);
Begin
ISum:=0;
While A<>0 do Begin
Kill:=Kill+1; ISum:=ISum+Abs(A) mod 10; A:=A div 10;
End;
End; Begin
Writeln(‘Введіть масив’); For I:=1 to N do
Read(X[i]);
Kill:=0;
For I:=1 to N do Begin
Sum(X[I], SumX); Writeln(X[I]:6, SumX:4);
End;
Writeln(‘Загальна кількість цифр’, Kill);
End.
42
Типове використання підпрограми-функції — реалізація алгоритму та повернення в головну програму одного результату в вигляді імені функції. Ім'я функції вибирається довільно (як ім'я змінної).
Загальний вигляд процедури:
Function <ім’я> (список формальних параметрів):<тип результату>;
<описова частина>
Begin
... <виконувана частина>
End;
Типом функції може бути скалярний тип, тобто: цілий, дійсний, логічний, символьний та рядковий.
Відносно формальних параметрів, локальних та глобальних даних в функції діють такі ж самі обмеження та вимоги, що і в процедурах.
У виконавчій частині підпрограми-функції повинен бути хоча б один оператор, в якому імені функції: надається значення.
Звернення до функції виконується як і до стандартних функцій типу sin(x), ln(x) тощо. Результат роботи функції передається в місце її виклику.
Приклад 8.2. Використання функції для обчислення степені.
Var x,y,z : Real ;
Function Step(a:real; b:real):real; begin
If a<=0 then Begin
Writeln( 'перевірте дані'); Halt(0);
End;
If b=0 then Step:=1
else Step:=exp(b*ln(a));
End;
Begin
Readln(x: y); Z:=Step(x,y)+Step(y,x); Writeln(x,y,z);
End.
Параметри, імена яких зазначені в заголовку підпрограми, називаються
формальними параметрами.
Змінні, імена яких підставляються в оператори виклику підпрограми при зверненні до неї, називаються фактичними параметрами.
Між формальними і фактичними параметрами повинні бути наступні відповідності:
–кількість параметрів;
–порядок слідування вхідних і вихідних параметрів;
–тип даних.
43
Приклад 8.3. Дано три масиви А (20), В (30), С (25). Відсортувати елементи за зростанням. Використати процедури для формування масиву, виведення початковиних значень та виведення впорядкованих елементів масиву.
Підпрограма InputVector |
Підпрограма OutputVector |
початок |
початок |
|
|
randomize |
i = 1, L |
|
|
i = 1, L |
(D[i]) |
D[i]:= random(101)-50;
кінець
кінець
Підпрограма SortVecto |
Основна програма (сортування вибором) |
||
початок |
|
початок |
|
i = 1, L-1 |
|
|
|
|
INPUTVECTOR (20,A) |
||
|
|
||
|
|
INPUTVECTOR (30,B) |
|
|
|
INPUTVECTOR (25,C) |
J = I+1, L
D[J] > D[I] |
T = D[I] |
D[I] = D[J] |
D[J] = T |
кінець
OUTPUTVECTOR (20,A) OUTPUTVECTOR (30,B) OUTPUTVECTOR (25,C)
SORTVECTOR (20,A) SORTVECTOR (30,B) SORTVECTOR (25,C)
кінець
44
PROGRAM TASK; USES CRT; CONST N = 30;
TYPE VECTOR = ARRAY[1..N] OF INTEGER; VAR A, B, C : VECTOR;
PROCEDURE INPUTVECTOR(L:INTEGER;VAR D:VECTOR) VAR I : INTEGER;
BEGIN RANDOMIZE;
FOR I:=1 TO L DO D[I]:=RANDOM (101) - 50;
END;
PROCEDURE OUTPUTVECTOR (L:INTEGER;D:VECTOR); VAR I : INTEGER;
BEGIN
FOR I:=1 TO L DO
WRITELN (D[I]);
END;
PROCEDURE SORTVECTOR (L:INTEGER; D: VECTOR); VAR I, J, T : INTEGER;
BEGIN
FOR I:=1 TO L-1 DO FOR J:=I+1 TO L DO
IF D[J]>D[I] THEN
BEGIN
T:= D[I]; D[I]:= D[J]; D[J]:= T; END;
END;
BEGIN
CLRSCR;
INPUTVECTOR(20, A);
INPUTVECTOR(30, B);
INPUTVECTOR(25, C);
WRITELN (‘Сформований масив А: ’); OUTPUTVECTOR(20, A);
WRITELN (‘Сформований масив В: ’); OUTPUTVECTOR(30, B);
WRITELN (‘Сформований масив С: ’); OUTPUTVECTOR(25, C);
WRITELN (‘Відсортований масив А: ’); SORTVECTOR(20, A);
WRITELN (‘Відсортований масив В: ’); SORTVECTOR(30, B);
WRITELN (‘Відсортований масив С: ’); SORTVECTOR(25, C);
READLN;
END.
45
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Завдання до лабораторної роботи |
|||
|
Завдання 1. Відповідно до варіанту скласти програму, використовуючи |
|||||||||||||||||||||||||||||||||
підпрограму-функцію. |
||||||||||||||||||||||||||||||||||
1. |
Дано дійсні числа s, t. Отримати f(t, -2s, 1.17)+f(2.2, t, s-t), де |
|||||||||||||||||||||||||||||||||
|
f (a,b,c) = |
2a − b − sin c |
. |
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
5 + |
|
c |
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
2. |
Дано дійсні числа s, t. Отримати g(1.2, s)+g( t, s)-g(2s-1, st), де |
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
a2 + b2 |
||||||||||||||||||||||
|
g(a,b) = |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|||
|
|
a2 + 2ab + 3b2 + 4 |
||||||||||||||||||||||||||||||||
3. |
Дано дійсні числа s, t. Отримати f(2t,-s,2.7)+f(1.3, s, s+t), де |
|||||||||||||||||||||||||||||||||
|
f (a,b,c) = |
a |
|
− b |
|
|
|
+ ab |
. |
|
||||||||||||||||||||||||
|
|
|
|
|
ab |
|
+1 |
|
|
|
|
|
||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
4. |
Дано дійсні числа s, t. Отримати f(-s,3.7)+f(1.3t, s)+f(2s-t, s), де |
|||||||||||||||||||||||||||||||||
|
f (a,b) = |
|
|
|
2a − |
|
b |
|
. |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
a + b |
|
+1 |
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
5. |
Дано дійсні числа s, t. Отримати f(t-s,3.1+t)+f(2t, 2s-t)+f(-t, 1.2), де |
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
a2 − b |
||||||||||||||||||||||
|
f (a,b) = |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
||||||||||||||
|
|
|
|
a + ab + b |
|
+ 5 |
||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||
6. |
Дано дійсні числа s, t. Отримати f(t, t-2s, 2.1)+f(1.2, t-s, st), де |
|||||||||||||||||||||||||||||||||
|
f (a,b,c) = |
2a − b |
+ ab |
. |
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
5 + |
ac |
|
|
|
|
|
||||||||||||||||
7. |
Дано дійсні числа s, t. Отримати f( -2s, 2.1,t-s )+f(2.2, st, s-t), де |
|||||||||||||||||||||||||||||||||
|
f (a,b,c) = |
a |
|
− 2 |
|
b + c |
. |
|||||||||||||||||||||||||||
|
|
|
abc |
|
+ 3 |
|
||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
8. |
Дано дійсні числа s, t. Отримати f(2t-s, 3s, 1.7)+f(2.2, t, s+t), де |
|||||||||||||||||||||||||||||||||
|
f (a,b,c) = |
2a + b + c |
. |
|||||||||||||||||||||||||||||||
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
5 + |
a + c |
|
|
|||||||||||||||||||||||
9. |
Дано дійсні числа s, t. Отримати f(t, -2s)+f( t, s-t)-f(st, 2s), де |
|||||||||||||||||||||||||||||||||
|
f (a,b) = |
|
a − b + ab |
. |
||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||
|
b + a |
+ 2 |
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
10.Дано дійсні числа s, t. Отримати f(t-2s,t+s)+f(t, s+t)-f(2st, s-t), де
|
|
|
|
|
|
ab |
||||||||
|
f (a,b) = |
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
b − a |
|
+ 2 |
|||||||||
|
|
|
||||||||||||
11. |
Дано дійсні числа s, t. Отримати f(t, t-2s, s+1.2)+f(t, s+t, 2.5), де |
|||||||||||||
|
|
|
|
|
|
|
|
ab |
||||||
|
f (a,b,c) = |
|
|
|
. |
|
|
|
||||||
|
|
c2 + a |
+1 |
|||||||||||
12. |
Дано дійсні числа s, t. Отримати f(t-s,-2s, 1.2)+f(t,2t, 2.5), де |
|||||||||||||
|
|
|
|
|
|
|
|
|
ab |
|||||
|
f (a,b,c) = |
|
|
|
|
. |
||||||||
|
|
c2 + a2 + ac |
|
+1 |
||||||||||
|
|
|
46
13.Дано дійсні числа s, t. Отримати f(t-2s, s+1.2t)+f(t, st+ 2.5), де
|
|
|
ab |
|||
f (a,b) = |
|
|
|
|
|
. |
|
|
b + a |
|
+1 |
||
|
|
|||||
14.Дано дійсні числа s, t. Отримати f(t, t-2s, s+1.2)+f(t, s+t, 2.5), де |
f (a,b,c) = |
a |
|
2 + b2 |
+ c2 |
. |
|
|
|
|||
|
|
b + a |
|
+ 4 |
|
|
|
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|||
15.Дано дійсні числа s, t. Отримати f(t, -2ts, s+2.2)+f(2.5t, s-t, 3.2), де |
|||||||||||
f (a,b,c) = |
a + b2 + |
c2 |
. |
|
|
|
|||||
c + a + b |
|
|
|
|
|||||||
|
+1 |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
æ1 0 0ö |
|
|
Завдання 2. Дано матриці A, B, |
ç |
÷ |
. Обчислити С. Відповідно до |
||||||||
E = ç |
0 1 0÷ |
||||||||||
|
|
|
|
|
|
|
|
|
ç |
÷ |
|
|
|
|
|
|
|
|
|
|
è |
0 0 1ø |
|
варіанту скласти програму, використовуючи підпрограми-процедури.
|
æ1 7 |
1 ö |
|
||||
1. |
ç |
0 |
4 0 |
÷ |
B |
||
A = ç |
÷, |
||||||
|
ç |
|
|
|
÷ |
|
|
|
è1- 3 1ø |
|
|||||
|
æ |
2 |
2 3ö |
|
|||
2. |
ç |
|
4 |
0 |
÷ |
B |
|
A = ç1 |
÷, |
||||||
|
ç |
|
|
|
|
÷ |
|
|
è1 -1 2 |
ø |
|
||||
|
æ |
0 7 3ö |
|
||||
3. |
ç |
3 4 1 |
÷ |
B |
|||
A = ç |
÷, |
||||||
|
ç |
|
|
|
÷ |
|
|
|
è1- 3 1 |
ø |
|
||||
|
æ1 2 |
3 ö |
|
||||
4. |
ç |
4 |
4 0 |
÷ |
B |
||
A = ç |
÷, |
||||||
|
ç |
|
|
|
÷ |
|
|
|
è |
7 - 3 8ø |
|
||||
|
æ |
2 7 |
3ö |
|
|||
5. |
ç |
5 4 |
1 |
÷ |
B |
||
A = ç |
÷, |
||||||
|
ç |
|
|
|
|
÷ |
|
|
è1-1 2 |
|
ø |
|
|||
|
æ |
3 5 3 ö |
|
||||
6. |
ç |
3 0 1 |
÷ |
B |
|||
A = ç |
÷, |
||||||
|
ç |
|
|
|
÷ |
|
|
|
è1- 3 0 |
ø |
|
||||
|
æ1 2 |
1 ö |
|
||||
7. |
ç |
4 1 0 |
÷ |
B |
|||
A = ç |
÷, |
||||||
|
ç |
|
|
|
÷ |
|
|
|
è |
2- 2 1ø |
|
||||
|
æ |
2 2 |
1ö |
|
|||
8. |
ç |
-11 0 |
÷ |
|
|||
A = ç |
÷, B |
||||||
|
ç |
4- 3 5 |
÷ |
|
|||
|
è |
ø |
|
æ1 0 -1ö |
|
|
||
ç |
0 2 1 |
÷ |
. C = A2 |
- B . |
=ç |
÷ |
|||
ç |
5 0 6 |
÷ |
|
|
è |
ø |
|
|
æ |
3 0 - 2ö |
|
|||
ç |
-1 2 -1 |
÷ |
+ B) . |
||
= ç |
÷. C = A(A |
||||
ç |
0 1 |
2 |
÷ |
|
|
è |
ø |
|
|||
æ |
|
4 0 -1ö |
|
|
|
ç |
|
|
÷ |
|
|
= ç |
5 2 -1÷. C = B(A - B) . |
||||
ç |
3 0 5 |
÷ |
|
|
|
è |
ø |
|
|
||
æ |
1 4 - 3ö |
|
|
||
ç |
2 0 5 |
÷ |
|
|
|
= ç |
÷. C = A2 + B . |
||||
ç |
|
÷ |
|
|
|
è3 6 1 |
ø |
|
|
||
æ |
2 0 - 3ö |
|
|
||
ç |
|
÷ |
|
|
|
= ç |
5 0 -1 ÷. C = (A - E)B . |
||||
ç |
3 4 5 |
÷ |
|
|
|
è |
ø |
|
|
||
æ |
|
3 2 -1ö |
|
|
|
ç |
|
|
÷ |
|
+ B . |
= ç1 3 -1÷. C = E + A2 |
|||||
ç |
7 0 2 |
÷ |
|
|
|
è |
ø |
|
|
||
æ |
|
0 6 -1ö |
|
|
|
ç |
2 1 5 |
÷ |
|
|
|
= ç |
÷. C = A(E + B2 ) . |
||||
ç |
4 3 1 |
÷ |
|
|
|
è |
ø |
|
|
||
æ |
1 4 - 3ö |
|
|
||
ç |
2 0 1 |
÷ |
|
|
|
= ç |
÷. C = A × B + B . |
||||
ç |
3 2 1 |
÷ |
|
|
|
è |
ø |
|
|
47
|
æ1 2 1 ö |
æ 7 0 2 ö |
|
||||||
|
ç |
4 1 0 |
÷ |
ç |
|
÷ |
|
||
9. A = ç |
÷, B = ç2 1 5 |
÷. C = A(B2 - A) . |
|||||||
|
ç |
2 |
|
÷ |
ç |
|
÷ |
|
|
|
è |
- 2 6ø |
è1 4 - 3ø |
|
|||||
|
|
æ1 2 3 |
ö |
æ |
2 1 -1ö |
||||
10. |
A = |
ç |
4 1 2 |
÷ |
ç |
2 1 5 |
÷ |
||
ç |
÷, |
B = ç |
÷. C = A(E - B2 ) . |
||||||
|
|
ç |
|
|
÷ |
ç |
3 5 3 |
÷ |
|
|
|
è |
7 - 3 1ø |
è |
ø |
||||
|
|
æ1 2 |
1 |
ö |
æ |
2 1 5ö |
|
||
11. |
A = |
ç |
3 4 |
5 |
÷ |
ç |
|
÷ |
|
ç |
÷, |
B = ç |
3 5 3÷. C = (E - A2 )B . |
||||||
|
|
ç |
|
|
÷ |
ç |
4 3 1 |
÷ |
|
|
|
è |
2- 4 1ø |
è |
ø |
|
|||
|
|
æ |
3 1 |
2 |
ö |
æ |
1 4 3 ö |
|
|
12. |
A = |
ç |
|
|
÷ |
ç |
2 3 2 |
÷ |
|
ç1 4 1 |
÷, |
B = ç |
÷. C = (E - B2 )A . |
||||||
|
|
ç |
2 3 4 |
÷ |
ç |
3 5 1 |
÷ |
|
|
|
|
è |
ø |
è |
ø |
|
|||
|
|
æ1 2 3 |
ö |
æ |
1 4 - 3ö |
||||
13. |
A = |
ç |
4 3 0 |
÷ |
ç |
2 0 5 |
÷ |
||
ç |
÷, |
B = ç |
÷. C = A2 + B . |
||||||
|
|
ç |
|
|
÷ |
ç |
3 6 1 |
÷ |
|
|
|
è |
7 - 3 8ø |
è |
ø |
||||
|
|
æ1 2 1 |
ö |
æ |
0 6 - 5ö |
||||
14. |
A = |
ç |
|
|
÷ |
ç |
2 1 5 |
÷ |
|
ç1 3 1 |
÷, |
B = ç |
÷. C = A(E + B2 ) . |
||||||
|
|
ç |
2-1 5 |
÷ |
ç |
4 3 1 |
÷ |
||
|
|
è |
ø |
è |
ø |
||||
|
|
æ1 2 1 |
ö |
æ 0 5 - 3ö |
|||||
15. |
A = |
ç |
|
|
÷ |
ç |
|
÷ |
|
ç1 3 1 |
÷, |
B = ç2 1 4 |
÷. C = B(E + A2 ) . |
||||||
|
|
ç |
|
|
÷ |
ç |
|
÷ |
|
|
|
è |
2- 3 4ø |
è1 3 1 |
ø |
Контрольні питання
1.Поняття підпрограм. Процедури.
2.Cтруктура процедури.
3.Як передаються результати роботи підпрограми до головної програми?
4.Поняття підпрограм. Функції.
5.Структура функції.
6.Типи функцій.
48
ЛАБОРАТОРНА РОБОТА № 9
РОБОТА З ЗАПИСАМИ ТА ФАЙЛОВИМИ ЗМІННИМИ
Мета: ознайомитись з комбінованим типом – запис та типами файлів. Навчитися реалізовувати функції створення файлу, читання даних з файлу, виведення даних на екран.
Короткі теоретичні відомості
Записи – це структурований тип даних, що дозволяє зберігати разом певну кількість елементів (полів або змінних), що мають різні типи даних.
Оголосити запис можна в розділі var і в розділі type. Для опису змінних типу «запис» використовується зарезервоване слово record.
Загальний вигляд повної форми оголошення змінної типу «запис»:
TYPE
<ім’я_типу> = RECORD ім’я_поля1 : тип; ім’я_поля2 : тип;
…
ім’я_поляN : тип;
END;
VAR
< ім’я_запису> : <ім’я_типу>;
Загальний вигляд скороченої форми оголошення змінної типу «запис»:
VAR
<ім’я_запису> : RECORD ім’я_поля1 : тип; ім’я_поля2 : тип;
…
ім’я_поляN : тип;
END;
<ім’я_типа>, <ім’я_запису> та им’я_поляN - правильні ідентифікатори.
Приклад оголошення:
type
CLIENT = record |
: string[20]; |
family |
|
name |
: string[10]; |
patronymic |
: string[15]; |
year_birthday : integer; address : string[30];
telephone |
: integer; |
end; |
|
var |
|
clients : CLIENT; |
|
або |
|
49
var
CLIENT : record |
: string[20]; |
family |
|
name |
: string[10]; |
patronymic |
: string[15]; |
year_birthday : integer; |
|
address : string[30]; |
|
telephone |
: integer; |
end;
При сумісній обробці кількох полів запису використовується оператор приєднання.
Загальний вигляд оператора приєднання:
WITH <ім'я змінної типу record> DO <оператор>;
Приклад заповнення масиву, елементами якого є записи:
For i := 1 to n do begin
With
End;
End;
Приклад 9.1. Програми заповнення та редагування бази даних про домашній електронний телефонний довідник.
Program demoRecord; uses dos, crt;
const n |
= 10; |
Name : array[1..n] of string[15] = ('Петренко','Титаренко',
'Василенко','Носенко','Деричуб','Вернигора',
'Котигорошко','Iвасюк','Iваненко','Коваленко'); Type Abonent = Record
FName : string[15];
50