Паскаль, совет

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

program abs;
uses crt;
var mas: array [1..5,1..7] of integer;
i,j:integer;
max,min,summ,sht:real;
begin
for i:=1 to 5 do begin
for j:=1 to 7 do begin
write(i,'.',j,': ');
readln(mas[i,j]);
end;
end;

for i:=1 to 5 do begin for j:=1 to 7 do begin
if mas[i,j]<0 then begin
if i=4 then break;
if i>4 then summ:=summ+mas[i,j] else
summ:=summ+mas[i,j]; sht:=sht+1; end else
end; end;
writeln(summ,': сума отр елем ');
writeln(sht,': количевство мин елементов ');

for i:=1 to 5 do begin
for j:=1 to 7 do begin
if mas[i,j]>0 then min:=mas[i,j];
for i:=1 to 5 do begin
for j:=1 to 7 do begin
if mas[i,j]>min then min:=mas[i,j];
end;
end;end;end;
///////////////////////////////
sht:=0;
for i:=1 to 5 do begin
for j:=1 to 7 do begin

if sht=1 then break else
if (mas[i,j]>0) and (mas[i,j]

  • процедура - это не обязательно повторение.. . Иногда это просто логическая градация кода на блоки.. . Например в данной простыне кода (даже не в целой, учитывая что не поместилось) разобраться почти невозможно, а вот если каждый процесс (нахождение минимума, максимума, суммы и т. д. ) выделить в отдельную функцию, и вместо простыни использовать набор этих функций, то код станет намного понятнее.

    А тогда возможно и повторяющиеся участки кода станут видны и будет очевидно, что их можно объединить между собой ещё :)... например мне в глаза бросаются циклы, которые, возможно, можно свести к одному методу.. . Но сейчас сказать не могу, так как код оценить очень сложно.

  • ну можно просто разбить на куски всю прогу
    раскидать в процедуры этапы работы по заполнению массива
    по выводу массива
    по калькуляии
    и потом будет тело основной программы выглядеть например так

    ....
    begin
    init;
    run;
    done;
    end.

    и еще у тебя слишком много связок begin... end
    можно сократить например так
    for i:=1 to 5 do
    for j:=1 to 7 do begin
    write(i,'.',j,': ');
    readln(mas[i,j]);
    end;
    тоесть begin нужен для того чтобы в for ...do засунуть больше одного оператора
    а у тебя for ...do порождает другой for ...do между ними begin не обязателен

    а этот участок у тебя вообще не должен пройти проверку иначе он будет бесконечным
    for i:=1 to 5 do begin
    for j:=1 to 7 do begin
    if mas[i,j]>0 then min:=mas[i,j];
    for i:=1 to 5 do begin
    for j:=1 to 7 do begin
    if mas[i,j]>min then min:=mas[i,j];
    end;
    end;end;end;