This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
tutorial:array [2018/12/26 09:25] admin |
tutorial:array [2019/01/07 15:14] (current) admin [Arrays] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ======Arrays====== | ======Arrays====== | ||
| - | Arrays คือ ตัวแปรที่มีลักษณะเป็นโครงสร้างของตัวแปรที่มีชนิดเดียวกันทั้งหมด | + | Arrays คือ ตัวแปรที่มีลักษณะเป็นโครงสร้าง (Structured Type) ชนิดหนึ่ง ที่มีสมาชิกเป็น Data Type ชนิดเดียวกันทั้งหมด |
| - | =====Static/Dynamic Arrays===== | + | =====Type of Arrays===== |
| - | โดยทั่วไป Array จะสามารถแยกได้เป็น 2 ชนิด คือ Static Array และ Dynamic Array รายละเอียดของแต่ละชนิดสามารถสรุปได้ตามนี้ | + | โดยทั่วไป Array จะสามารถแยกได้เป็น 2 ชนิด คือ Static Array และ Dynamic Array (หรือ เรียกว่า Open Array) รายละเอียดของแต่ละชนิดสามารถสรุปได้ตามนี้ |
| ^ Array Type ^ การประกาศ (Declaration) ^ | ^ Array Type ^ การประกาศ (Declaration) ^ | ||
| |Static Array|<sxh delphi;> | |Static Array|<sxh delphi;> | ||
| - | const //Constant static array | ||
| - | ArrC1:array[1..2] of integer = (10,20); | ||
| - | ArrC2:array[1..2,1..3] of integer = | ||
| - | ((10,20,30),(40,50,60)); | ||
| - | ArrC3:array[1..2] of array[1..3] of integer = | ||
| - | ((10,20,30),(40,50,60)); | ||
| var | var | ||
| ArrX1:array[3..10] of real; | ArrX1:array[3..10] of real; | ||
| ArrX2:array[1..2,1..3] of integer; | ArrX2:array[1..2,1..3] of integer; | ||
| ArrX3:array[1..2] of array[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)); | ||
| | | ||
| </sxh> | | </sxh> | | ||
| Line 31: | Line 32: | ||
| \\ | \\ | ||
| - | =====Array As Arguments===== | + | =====การกำหนด/เรียกดู ค่าสมาชิกของ Arrays===== |
| + | การกำหนดค่าสมาชิกของ Arrays สามารถทำได้ดังตัวอย่างต่อไปนี้ | ||
| - | การส่งผ่าน Array เป็นตัวแปร สามารถทำได้โดยการประกาศ Array ใน Argument นั้นให้รับค่า Dynamic Array ดังนี้ | + | <hidden Defining/Reporting Arrays> |
| + | <sxh delphi;> | ||
| + | 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 | ||
| + | </sxh> | ||
| + | </hidden> | ||
| + | \\ | ||
| + | =====Open Array As Parameters===== | ||
| + | |||
| + | การส่งผ่าน Array เป็นตัวแปร สามารถทำได้โดยการประกาศ identifier ของ Array ให้เป็น Open Array (Dynamic Array) ใน Argument นั้นๆ | ||
| - | Type TArrR:array of real; | ||
| - | |||
| Procedure ShowItemArray(Arr:array of real); | Procedure ShowItemArray(Arr:array of real); | ||
| + | | ||
| + | นอกจากนี้ เรายังสามารถประกาศ Open Array ล่วงหน้า แล้วนำมาใส่เป็น identifier ได้เช่นกัน ดังนี้ | ||
| + | | ||
| + | Type TArrR:array of real; | ||
| + | | ||
| Procedure ShowItemArray(Arr:TArrR); | Procedure ShowItemArray(Arr:TArrR); | ||
| - | **หมายเหตุ**-index ของ Array ที่ส่งผ่านเข้ามาใน Procedure/Function จะเริ่มจาก 0 เสมอตามรูปแบบของ Dynamic Array | + | **หมายเหตุ** - 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 ดังตัวอย่างต่อไปนี้ | ||
| + | |||
| + | <sxh delphi;> | ||
| + | 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. | ||
| + | |||
| + | </sxh> | ||
| + | |||
| + | 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===== | =====Array Functions===== | ||
| - | มี Function ที่ใช้งานโดยการรับค่า Array เข้ามาเป็น Argument มากมาย สำหรับ Function ที่เราจะได้ใช้บ่อยๆ มีดังนี้ | + | Function เกี่ยวกับ Array ที่เราจะได้ใช้บ่อยๆ มีดังนี้ |
| กำหนดให้ | กำหนดให้ | ||
| Line 53: | Line 124: | ||
| | | ||
| - | ^ Function ^ Details ^ | + | ^ Functions ^ Examples ^ |
| - | |**Low()** - หาค่าของ Array ตัวแรกสุด|<sxh delphi;> | + | |**Low()** - หาค่า index ของ Array ตัวแรกสุด|<sxh delphi;> |
| - | writeln(Low(Arr1)) // = 10 | + | writeln(Low(Arr1)); // = 1 |
| - | writeln(Low(Arr2)) // = 5 | + | writeln(Low(Arr2)); // = 5 |
| </sxh> | | </sxh> | | ||
| - | |**High()** - หาค่าของ Array ตัวสุดท้าย|<sxh delphi;> | + | |**High()** - หาค่า index ของ Array ตัวสุดท้าย|<sxh delphi;> |
| - | writeln(High(Arr1)) // = 20 | + | writeln(High(Arr1)); // = 2 |
| - | writeln(High(Arr2)) // = 8 | + | writeln(High(Arr2)); // = 8 |
| </sxh> | | </sxh> | | ||
| |**Length()** - หาจำนวนสมาชิกของ Array|<sxh delphi;> | |**Length()** - หาจำนวนสมาชิกของ Array|<sxh delphi;> | ||
| - | writeln(Length(Arr1)) // = 2 | + | writeln(Length(Arr1)); // = 2 |
| - | writeln(Length(Arr2)) // = 4 | + | writeln(Length(Arr2)); // = 4 |
| </sxh> | | </sxh> | | ||
| \\ | \\ | ||
| + | |||
| + | =====References===== | ||
| + | http://wiki.freepascal.org/Array \\ | ||
| + | https://www.freepascal.org/docs-html/ref/refsu68.html\\ | ||
| + | https://www.freepascal.org/docs-html/ref/refsu69.html | ||