======Arrays====== Arrays คือ ตัวแปรที่มีลักษณะเป็นโครงสร้าง (Structured Type) ชนิดหนึ่ง ที่มีสมาชิกเป็น Data Type ชนิดเดียวกันทั้งหมด =====Type of Arrays===== โดยทั่วไป 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===== การกำหนดค่าสมาชิกของ Arrays สามารถทำได้ดังตัวอย่างต่อไปนี้ Var ArrX:array[1..3] of integer; //Static Array - 1D ArrY:array[0..1,1..2] of real; //Static Array - 2D ArrZ:array of Boolean; //Dynamic Array - 1D begin //Define values of ArrX ArrX[1]:=10; ArrX[2]:=20; ArrX[3]:=30; //Define values of ArrY ArrY[0,1]:=1.20; ArrY[1,1]:=2.54; ArrY[0,2]:=3.21; ArrY[1,2]:=4.31; //Define values of ArrZ setlength(ArrZ,3); ArrZ[0]:=True; ArrZ[1]:=False; ArrZ[2]:=False; //Print values of all Arrays writeln('ArrX[1] = ',ArrX[1]); writeln('ArrX[2] = ',ArrX[2]); writeln('ArrX[3] = ',ArrX[3]); writeln('ArrY[0,1] = ',ArrY[0,1]); writeln('ArrY[1,1] = ',ArrY[1,1]); writeln('ArrY[0,2] = ',ArrY[0,2]); writeln('ArrY[1,2] = ',ArrY[1,2]); writeln('ArrZ[0] = ',ArrZ[0]); writeln('ArrZ[1] = ',ArrZ[1]); writeln('ArrZ[2] = ',ArrZ[2]); readln(); end \\ =====Open Array As Parameters===== การส่งผ่าน 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 of Const===== หากเราต้องการส่งค่า 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 \\ =====Array Functions===== 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 | \\ =====References===== http://wiki.freepascal.org/Array \\ https://www.freepascal.org/docs-html/ref/refsu68.html\\ https://www.freepascal.org/docs-html/ref/refsu69.html