Хорошо, что удобнее читать, сопровоздать и проч., вот это:
Код: Выделить всё
...
var
i, j, k: integer;
tmp1: string;
tmp2: char;
...
begin
...
for i := 1 to 10 do
begin
for j := 1 to 10 do
begin
for k := 1 to 10 do
begin
tmp1 := arr[i, j, k] + func1('some_arg');
tmp2 := func2(tmp1);
func3(tmp1 + tmp2);
end;
end;
end;
...
for i := 4 to 8 do
begin
for j := 2 to 5 do
begin
for k := 8 to 15 do
begin
tmp1 := func5(arr[i, j], 'some_other_arg');
tmp2 := tmp1 + func6(k, tmp1);
func7(tmp1 + tmp2, j, k);
end;
end;
end;
...
или вот это:
Код: Выделить всё
...
for var i: integer := 1 to 10 do
begin
for var j: integer := 1 to 10 do
begin
for var k: integer := 1 to 10 do
begin
var readable_name_1: string := arr[i, j, k] + func1('some_arg');
var readable_name_2: char := func2(readable_name_1);
func3(readable_name_1 + readable_name_2);
end;
end;
end;
...
for var i: integer := 4 to 8 do
begin
for var j: integer := 2 to 5 do
begin
for var k: integer := 8 to 15 do
begin
var readable_name_1: string := func5(arr[i, j], 'some_other_arg');
var readable_name_2: char := readable_name_1 + func6(k, readable_name_1);
func7(readable_name_1 + readable_name_2, j, k);
end;
end;
end;
...
В первом случае, чтобы для каждого цикла сделать читаемые имена временных переменных, необходимо объявить столько наборов переменных, сколько у нас циклов. В результате, в секции объявления переменных сам черт ногу сломит.
Во втором случае, переменные объявляются там, где они нужны, так что секция объявления не загромождается временными переменными, счетчиками цикла и т.п.