آرایه بهعنوان پارامتر
پاس دادن آرایه به رویه و تابع با var، الگوهای پر کردن/پیمایش/جستجو به شکل رویه.
آرایه + رویه = قدرت!
وقتی برنامهتان بزرگ میشود، میخواهید کارهای آرایه (پر کردن، چاپ، جستجو) را در رویههای جدا داشته باشید.
پاس دادن آرایه
program ArrayParams;
const
N = 5;
procedure FillArray(var a: array of integer);
var i: integer;
begin
for i := 0 to N - 1 do
a[i] := (i + 1) * (i + 1);
end;
procedure PrintArray(const a: array of integer);
var i: integer;
begin
for i := 0 to N - 1 do
write(a[i], ' ');
writeln;
end;
var
arr: array[1..N] of integer;
begin
FillArray(arr);
PrintArray(arr);
end.
در پاسکال استاندارد، پارامتر آرایهای به شکل
array of integer (آرایه باز) نوشته میشود و ایندکس آن از صفر شروع میشود. برای سادگی میتوانید آرایه را با var و نوع کامل هم بدهید.تابع روی آرایه: مجموع
function ArraySum(const a: array of integer): integer;
var
i, s: integer;
begin
s := 0;
for i := 0 to high(a) do
s := s + a[i];
Result := s;
end;
تابع جستجو: پیدا کردن مقدار
function FindValue(const a: array of integer; target: integer): integer;
var i: integer;
begin
Result := -1; { پیدا نشد }
for i := 0 to high(a) do
if a[i] = target then
begin
Result := i; { ایندکس پیدا شد }
break;
end;
end;
رویه با var: پر کردن از داخل
procedure FillSquares(var a: array of integer; n: integer);
var i: integer;
begin
for i := 0 to n - 1 do
a[i] := (i + 1) * (i + 1);
end;
اگر رویه باید تغییری در آرایه بدهد، حتماً
var بگذارید. برای فقط خواندن، const بهتر است (کپی نمیشود).مثال کامل: کتابخانه آرایه
program ArrayLib;
const N = 8;
var
data: array[1..N] of integer;
procedure Init(var a: array of integer);
var i: integer;
begin
for i := 1 to N do
a[i - 1] := 0;
end;
procedure Fill(var a: array of integer);
var i: integer;
begin
for i := 1 to N do
a[i - 1] := i * 3 - 2; { 1, 4, 7, ... }
end;
procedure Print(const a: array of integer);
var i: integer;
begin
for i := 1 to N do
write(a[i - 1]:4);
writeln;
end;
function Sum(const a: array of integer): integer;
var i, s: integer;
begin
s := 0;
for i := 1 to N do
s := s + a[i - 1];
Result := s;
end;
begin
Init(data);
Fill(data);
Print(data);
writeln('Sum = ', Sum(data));
end.
خلاصه
- آرایه را با
array of نوعبه رویه/تابع بدهید - تغییر →
var؛ فقط خواندن →const - الگوها را رویه کنید: Fill، Print، Sum، Find
این مبحث بخشی از دوره آموزش کامل پاسکال است.