Установил Pascal ABC.net
(версия 3.1, сборка 1179 от 29.02.2016)
Как пишет
справка:
Передача статического массива в подпрограмму
При передаче статического массива в подпрограмму по значению также производится копирование содержимого массива - фактического параметра в массив - формальный параметр:
procedure p(a: Arr); // передавать статический массив по значению - плохо!
...
p(a1);
Это крайне расточительно, поэтому статические массивы рекомендуется передавать по ссылке. Если массив не меняется внутри подпрограммы, то его следует передавать как ссылку на константу (const), если меняется - как ссылку на переменную:
type Arr = array [2..10] of integer;
procedure Squares(var a: Arr);
begin
for var i:= Low(a) to High(a) do
a[i] := Sqr(a[i]);
end;
procedure PrintArray(const a: Arr);
begin
for var i:= Low(a) to High(a) do
Print(a[i])
end;
var a: Arr := (1,3,5,7,9,2,4,6,8);
begin
Squares(a);
PrintArray(a);
end.
Для доступа к нижней и верхней границам размерности одномерного массива используются функции Low
и High
.
Вот рабочий код:
Program arrays;
type
tArray = array [0..3] of integer;
var
a, b: tArray;
i: integer;
procedure FirstProcedure(a, b: tArray);
begin
writeLn(a);
end;
begin
for i := Low(a) to High(a) do
begin
writeLn('WHAT IS A' + i + '?');
readLn(a[i]);
end;
for i := Low(b) to High(b) do
begin
writeLn('WHAT IS B' + i + '?');
readLn(b[i]);
end;
FirstProcedure(a,b);
end.