کاربرد آرایه در زبان دلفی
به طور کلی تمامی زبان های سطح بالا دارای اختمان داده ای هستند که به صورت پشت سرهم چیده شده و میتوان داده را به صورت رشته ای در ان ذخیره کرد
مثلا گاهی شما نیاز دارید تا تعدادی اسم یا نمره را در یک ساختمان کلی ذخیره کنید در اینصورت نیاز به تعریف ارایه دارید که تقریبا در همه زبان های برنامه نویسی حتی اسمبلی این امکان وجود دارد
در واقع عملی که در ارایه انجام میشود این است که خانه های پشت سرهم حافظه برای مقدار دهی شما اماده میشود
نحوه تعریف ارایه در دلفی:
در قسمت private فرم اصلی به صورت زیر تعریف میشود :
private
{ Private declarations }
a:array[1..10] of string
برای مثال ارایه بالا دارای 10 خانه بوده از نوع String که میتواند 10 اسم یا حروف یا… را دریافت کند
عکس1:
البته تعریف ارایه نیز مانند تعریف متغیر دارای انواع متفاوت میباشد برای مثال ارایه ای از نوع اعداد که به صورت زیر تعریف میشود :
a:array[1..10] of Integer;
پس از تعریف ارایه نوبت به استفاده و نحوه پرکردن ان میرسد که بهترین راه استفاده از تابع Inputbox میباشد که میتوان با استفاده از ان در یک حلقه تمامی خانه های ارایه را توسط کاربر پر کرد که نحوه ان به صورت زیر است :
ابتدا پس از ایجاد Button در ان متغیر حلقه را تعریف میکنیم :
var i:integer;
سپس ایجاد حلقه:
for i:1 to 10 do
Begin
a[i]:=(inputbox(‘Name’,’Name’,’’));
end;
در روند بالا برای 10 بار Inputbox برای کاربر اجرا میشود و درخواست نام را میکند و در هربار 1 بار حلقه جلو میرود و در ارایه به ترتیب ذخیره میکند ..توجه کنید در قسمت Name در Inputbox میتوانید هر کلمه ای قرار دهید و بیشتر جنبه راهنمایی و اطلاع به کاربر میباشد که چه نوع داده ای مدنظر میباشد و در قسمت سوم پرانتز Inputbox درواقع کلمه ای است که در Edit که داخل کادر Inputbox میباشد نمایش داده میشود که بهتراست خالی باشد .
نماد کروشه بیان کننده هرخانه ارایه هست برای مثال زمانی که i برابر 2 میشود به سراغ خانه 2 ارایه رفته و مقدار کاربر را در ان خانه قرار میدهد که با استفاده از حلقه خانه های حلقه پشت سرهم جلو میروند …
پس از ذخیره کردن هناصر ارایه نحوه به کارگیری ارایه مطرح میشود … که البته رابطه مستقیم با هدف برنامه دارد که برای نمونه اینجا نمایش ان در یک Listbox را مطرح میکنیم :
پس از اضافه کردن Listbox به فرم خود با استفاده از دستور زیر که در حلقه به کار میرود مقادیر ارایه به صورت پشت سرهم در listbox نمایش داده میشود
Listbox1.items.add(a[i]);
توجه کنید نماد [] همان نماد ارایه در دلفی است که در داخل ان شماره خانه ارایه نوشته میشود .
بسته به نوع ارایه شما از توابع تبدیل مانند inttostr استفاده میشود چون نوع داده در listbox باید به صورت String باشد
نکته:پاک کردن یک listbox با دستور listbox1.items.clear امکان پذیر است
چگونه امکان Search در ارایه ممکن است؟
گاهی شما نیاز دارید تا مقداری را در ارایه خود جستجو کنید که میتوانید با حلقه و عمل مقایسه ان عنصر را پیدا کنید:
ابتدا Button جستجو را ایجاد کنید و سپس نیاز به دریافت یک نام از کاربر دارید پس متغیری تعریف میکنیم تا نام کاربر در ان قرار بگیرد(در این مثال به دلیل نوع داده تعریف شده ارایه که از نوع String میباشد از نوع متغیر String استفاده میکنیم )
Var d:string;
پس از تعریف متغیر از یک inputbox نام گرفته شده را در ان میریزیم :
D:=(inputbox(‘search’,’name’,’’));
حالا نام گرفته شده از کاربر را داریم کافیست مقایسه را با حلقه و دستور IF انجام دهیم :
for i:=1 to 10 do;
begin
if d=a[i]then showmessage(‘found’);
end;
برای 10 بار نام گرفته شده از کاربر با عناصر ارایه مقایسه و سپس در صورت مساوی بودن با پیغامی به اطلاع کاربر میرساند
عکس3:
نحوه مرتب سازی عناصر در ارایه :
ممکن است شما نیاز به این داشته باشید که داده های مرتب شده داشته باشد مثلا بر حسب حروف الفبا یا اعداد برای این منظور 2 حلقه متوالی که به Bubble sort معرفو هستند در این کار مورد نیاز هستند که حالت کلی ان به صورت زیر است :
For i:=1 to n-1;
For j:=i+1 to n;
N در واقع تعداد عناصر ارایه شما میباشد
برای مثال برای یک ارایه 10 عضوی پس از تعریف متغیرهای شمارنده از 2 حلقه زیر به همراه دستوارت مقایسه زیر استفاده میشود :
for i:=1 to 9 do
for j:=i+1 to 10 do
if a[i] > a[j] then
begin
d:=a[i];
a[i]:=a[j];
a[j]:=d
end;
در صورت اجرای کد بالا اعداد یا حروف از کوچک به بزرگ مرتب میشوند چون جای عدد کوچکتر با بزگتر تعویض میشود با تغییری کوچک در کد بالا میتوان از بزرگ به کوچک مرتب کرد به صورت زیر:
if a[i] < a[j] then
اd:=a[i];
A[i]:=a[j];
A[j]:=d;
همواره برای جا به جا کردن دو مقدار از یک متغیر میانی استفاده میکنیم تا مقدار ها را حفظ کنیم که در اینجا متغیر d میباشد
در مقاله بعدی انواع توابع کاربردی روی ارایه هارا توضیح میدهیم !