Arrays คือ ตัวแปรที่มีลักษณะเป็นโครงสร้าง (Structured Type) ชนิดหนึ่ง ที่มีสมาชิกเป็น Data Type ชนิดเดียวกันทั้งหมด
โดยทั่วไป Array จะสามารถแยกได้เป็น 2 ชนิด คือ Static Array และ Dynamic Array (หรือ เรียกว่า Open Array) รายละเอียดของแต่ละชนิดสามารถสรุปได้ตามนี้
| Array Type | การประกาศ (Declaration) |
|---|---|
| Static Array |
var
ArrX1:array[3..10] of real;
ArrX2:array[1..2,1..3] of integer;
ArrX3:array[1..2] of array[1..3] of integer;
//static array with initial value
Arr1:array[1..2] of integer = (10,20);
Arr2:array[1..2,1..3] of integer =
((10,20,30),(40,50,60));
Arr3:array[1..2] of array[1..3] of integer =
((10,20,30),(40,50,60));
|
| Dynamic Array |
var
ArrY1:array of real;
ArrY2:array of array of real;
begin
setlength(ArrY1,3); //Set array[0..2]
setlength(ArrY2,3,5); //Set array[0..2,0..4]
end.
|
การกำหนดค่าสมาชิกของ Arrays สามารถทำได้ดังตัวอย่างต่อไปนี้
การส่งผ่าน Array เป็นตัวแปร สามารถทำได้โดยการประกาศ identifier ของ Array ให้เป็น Open Array (Dynamic Array) ใน Argument นั้นๆ
Procedure ShowItemArray(Arr:array of real);
นอกจากนี้ เรายังสามารถประกาศ Open Array ล่วงหน้า แล้วนำมาใส่เป็น identifier ได้เช่นกัน ดังนี้
Type TArrR:array of real;
Procedure ShowItemArray(Arr:TArrR);
หมายเหตุ - index ของ Array ที่ถูกส่งผ่านเข้ามาใน Procedure/Function แล้วนั้น จะเริ่มจาก 0 เสมอ
หากเราต้องการส่งค่า Array เป็นตัวแปร โดยที่ Array ดังกล่าวเป็นค่าคงที่ซึ่งไม่ได้มีการประกาศ identifier ชัดเจน (ไม่มีการประกาศ array of …) เช่น [1,2,3,4] หรือ ['A','B','C'] หรือ [true,false,false] เป็นต้น เราเรียก identifier ของ Array ดังกล่าวว่าเป็น Array of Const ดังตัวอย่างต่อไปนี้
procedure Print_Length_Array(Arr:Array of const);
begin
writeln('Number of member in Array = ',length(Arr));
end;
begin
Print_Length_Array([1,2,3,4,5,6]);
Print_Length_Array([1.234,-8.432]);
Print_Length_Array(['Hi','Everybody','How','Are','You?']);
Print_Length_Array([True,True,False]);
end.
Compiled Results:
Number of member in Array = 6 Number of member in Array = 2 Number of member in Array = 5 Number of member in Array = 3
Function เกี่ยวกับ Array ที่เราจะได้ใช้บ่อยๆ มีดังนี้
กำหนดให้
const Arr1:array[1..2] of integer = (10,20); Arr2:array[5..8] of integer = (5,6,7,8);
| Functions | Examples |
|---|---|
| Low() - หาค่า index ของ Array ตัวแรกสุด | writeln(Low(Arr1)); // = 1 writeln(Low(Arr2)); // = 5 |
| High() - หาค่า index ของ Array ตัวสุดท้าย | writeln(High(Arr1)); // = 2 writeln(High(Arr2)); // = 8 |
| Length() - หาจำนวนสมาชิกของ Array | writeln(Length(Arr1)); // = 2 writeln(Length(Arr2)); // = 4 |