Пжл, кто может объяснить программу(расписать что означает каждая строчка).

В массиве 10х10 целого типа отсортировать главную диагональ (процедура), вычислить ее сумму (функция), поменять местами строки, номера которых укажет пользователь. Вывод массива (процедура).

Написать эту задачу: 1. все процедуры в одном файле
2. процедуры/файлы в библиотечном файле
3. вывод результатов в текстовый файл


Паскаль абс

var p:array[1..10,1..10] of byte;
i,j,n1,n2,z:byte;

procedure vyvod;
var i,j:byte;
begin
For i:=1 to 10 do
begin
For j:=1 to 10 do
Write(p[i,j],' ');
Writeln;
end;
Writeln;
end;

procedure sort;
var i,z:byte;
b:boolean;
begin
Repeat
b:=true;
For i:=1 to 9 do
If p[i,i]>p[i+1,i+1] then
begin
b:=false;
z:=p[i,i];
p[i,i]:=p[i+1,i+1];
p[i+1,i+1]:=z;
end;
Until b;
end;

function summ:integer;
var i:byte;
begin
Result:=0;
For i:=1 to 10 do
Result:=Result+p[i,i];
end;

begin
Randomize;
For i:=1 to 10 do
For j:=1 to 10 do
p[i,j]:=Random(21);
vyvod;
sort;
vyvod;
Writeln(summ);
Writeln;
Writeln('Nomera strok: ');
Repeat
Write(' n1 = ');
Readln(n1);
Write(' n2 = ');
Readln(n2);
If n1=n2 then
Writeln('n1 = n2 = ',n1);
If n1>10 then
Writeln(n1,' > 10');
If n2>10 then
Writeln(n2,' > 10');
If n1<1 then
Writeln(n1,' < 1');
If n2<1 then
Writeln(n2,' < 1');
Until (n1<>n2) and (n1>=1) and (n1<=10) and (n2>=1) and (n2<=10);
For j:=1 to 10 do
begin
z:=p[n1,j];
p[n1,j]:=p[n2,j];
p[n2,j]:=z;
end;
vyvod;
Readln;
end.