Что делает программа (см. Рис.3)?
Как известно, в Pascalкомментарии могут быть обозначены в фигурных скобках и начинаться со строки "//".
Удалим комментарии и осуществим правильные переносы строк в исходном тексте.
Получим:
Uses crt;
Const z = 10;
hhh = 10;
y = 2 * hhh + 1;
s = hhh - z + 1;
Type vec = array[s..z] of integer;
var a, b: vec;
v, f: integer;
x: Boolean;
Begin
ClrScr;
Randomize;
Write('[]=');
for v:= s to z do
begin
f:= random(y);
a[v]:= hhh - f + s - 1;
Write(a[v]: 3);
End;
writeln;
b:= a;
Repeat
x:= true;
for v:= s to z - 1 do
if b[v] > b[v + 1] then
Begin
f:= b[v];
b[v]:= b[v + 1];
b[v + 1]:= f;
x:= false;
End;
Until x;
write('[]=');
for v:= s to z
do Write(b[v]: 3);
End.
2. Избавимся от запутывающих лишних переменных в начале программы:
Uses crt;
Const z = 10;
hhh = 10;
y = 21;
s = 1;
Type vec = array[1..z] of integer;
var a, b: vec;
v, f: integer;
x: Boolean;
3. Заменим фиктивные переменные числами и объединим переменные с одинаковыми значениями
Uses crt;
Const z = 10;
y = 21;
Type vec = array[1..z] of integer;
var a, b: vec;
v, f: integer;
x: Boolean;
Begin
ClrScr;
Randomize;
Write('[]=');
for v:= 1 to z do
begin
f:= random(y);
a[v]:= z - f ;
Write(a[v]: 3);
End;
writeln;
b:= a;
Repeat
x:= true;
for v:= 1 to z - 1 do
if b[v] > b[v + 1] then
Begin
f:= b[v];
b[v]:= b[v + 1];
b[v + 1]:= f;
x:= false;
End;
Until x;
write('[]=');
for v:= 1 to z
do Write(b[v]: 3);
End.
4. Переименуем переменные по смыслу и пронумеруем строки
Uses crt; //1
Const length = 10; //2
range = 21; //3
Type vector = array[1..length] of integer; //4
var a, b: vector; //5
index, number: integer; //6
flag: Boolean; //7
Begin //8
ClrScr; //9
Randomize; //10
Write('[]='); //11
for index:= 1 to length do //12
begin //13
number:= random(range); //14
a[index]:= length - number; //15
Write(a[index]: 3); //16
End; //17
writeln; //18
b:= a; //19
Repeat //20
flag:= true; //21
for index:= 1 to length - 1 do //22
if b[index] > b[index + 1] then //23
Begin //24
number:= b[index]; //25
b[index]:= b[index + 1]; //26
b[index + 1]:= number; //27
flag:= false; //28
End; //29
Until flag; //30
write('[]='); //31
for index:= 1 to length
do Write(b[index]: 3); //32
End. //33
6. Разбираем код на смысловые части:
· в строках с 1 по 7 происходит Инициализация переменных;
· в строках с 8 по 19 заполняется массив длины 10 числами в диапазоне от -10 до 10 и выводим на экран
· в строках с 20 по 30 сортируется массив методом пузырька
· в строках с 31 по 33 выводиться получившийся массив на экран.