หน่วยการเรียนรู้ที่ 19 ข้อมูลชนิดอาร์เรย์ (Array)
ข้อมูลชนิดอาร์เรย์
อาร์เรย์ เป็นข้อมูลแบบโครงสร้างชนิดหนึ่ง ซึ่งประกอบขึ้นจากข้อมูลหลายๆ ตัวรวมเข้าด้วยกันเป็นกลุ่ม โดยข้อมูลแต่ละตัวในกลุ่มถูกเรียกว่าอีลีเมนต์ (Element) และแต่ละอีลีเมนต์จะต้องเป็นข้อมูลชนิดเดียวกันการอ้างถึงข้อมูลจะใช้ตัวแปรชื่อเดียว ซึ่งจะหมายถึงชื่อของกลุ่ม และสามารถอ้างถึงข้อมูลแต่ละอีลีเมนต์ในกลุ่มได้โดยใช้ดัชนี (Index) ต่อท้ายหลังชื่อตัวแปรของกลุ่ม ดัชนีนี้จะเป็นตัวบ่งบอกถึงลำดับที่ของอีลีเมนต์ ลักษณะของดัชนีที่เราสามารถเข้าใจได้ง่ายที่สุดก็คือ ตัวเลขหรือ หมายเลข
จะต้องการอ้างเข้าไปถึงอีลีเมนต์แต่ละตัวของอาร์เรย์ โดยใช้ดัชนีเป็นตัว
ช่วยอ้างถึงตำแหน่งอีลีเมนต์ที่ต้องการ หากต้องการใช้หรืออ้างถึงทุกๆ
อีลีเมนต์ หรือช่วงใดช่วงหรือช่วงหนึ่งของอาร์เรย์ เราสามารถทำได้โดย
ใช้คำสั่งวนรอบเพื่อเข้าถึงอีลีเมนต์ทีละอีลีเมนต์จนครบทุกอีลีเมนต์ตาม
ที่ต้องการ ในหัวข้อนี้จะกล่าวถึงวิธีการเขียนโปรแกรมเพื่อเข้าถึงอีลีเมนต์
ต่างๆ ในตัวแปรอาร์เรย์
การกำหนดค่าเริ่มต้นให้แก่ชนิดข้อมูลอาร์เรย์
การตั้งค่าข้อมูลเริ่มต้นให้แก่ทุกอีลีเมนต์ให้มีข้อมูลค่าเดียวกันเขียนได้ดังตัวอย่างที่ 1
ตัวอย่างที่ 1
VAR
IDX : integer;
แสดงผลของภาษาปาสคาล ไม่สามารถใช้รับข้อมูลหรือแสดงผลตัวแปร
อาร์เรย์ได้ทั้งตัว ต้องสั่งให้แสดงผลทีละ อีลีเมนต์ไป ตัวอย่างในการรับ
ข้อมูลและแสดงผลตัวแปรอาร์เรย์ แสดงดังตัวอย่างที่ 2
CONST
ExNo : integer;
Max_Exp : integer;
Readln(Max_Exp);
FOR ExNo := 1 TO Max_Exp DO
BEGIN
Readln('Exp_Result[ExNo]);
FOR ExNo := 1 TO Max_Exp DO
ระบุดัชนี เช่น
SUMMARY[1] := SUM_SCORE / NUM_SCORE;
SUMMARY[2] := NUM_SCORE;
STEP_VALUE[STEP_NO+1] := STEP_VALUE[STEP_NO] + STEP_INC; การอ้างถึงตัวแปรอาร์เรย์ทั้งตัว ที่มีการใช้ในคำสั่งบางลักษณะ ได้แก่
1. คำสั่งกำหนดค่าตัวแปรให้อาร์เรย์ตัวหนึ่งๆ (ทุกๆ อีลีเมนต์) มีข้อมูล
เหมือนตัวแปรอาร์เรย์อีกตัวหนึ่งมีข้อจำกัดว่า ตัวแปรอาร์เรย์ทั้งสองตัว
จะต้องประกาศด้วยชนิดข้อมูลอาร์เรย์ที่เหมือนกันเท่านั้น ดังตัวอย่างที่ 3
ตัวอย่างที่ 3
Result_Array = ARRAY [1..100] OF real;
VAR
First_result, Second_Result : Result_Array;
เป็นอาร์เรย์หากมีโปรซิเยอร์ หรือฟังก์ชันที่ต้องส่งผ่านอาร์เรย์ทั้งตัวเป็น
พารามิเตอร์ ก็สามารถใช้ชนิดข้อมูลอาร์เรย์เป็นชนิดของพารามิเตอร์ได้
แต่ต้องประกาศชนิดโดยใช้ส่วนประกาศชนิด (Type) สร้างชื่อชนิดใหม่ที่
เป็นอาร์เรย์ที่มีจำนวน และชนิดของอีลีเมนต์ตามที่ต้องการ จึงนำชื่อ
ชนิดนั้นไปใช้เป็นชื่อชนิดของพารามิเตอร์ได้ในการเรียกใช้โปรซิเยอร์
หรือฟังก์ชัน ตัวแปรที่จะส่งไปเป็นพารามิเตอร์ก็ต้องใช้ชนิดเดียวกันกับ
ชื่อชนิดของการกำหนดพารามิเตอร์ในการประกาศโปรซิเยอร์หรือ
ฟังก์ชันด้วย ดังตัวอย่างที่ 4
ตัวอย่างที่ 4
Frist_count : integer;
First_arg : real;
FUNCTION Result_avg(Result_A:Result_Array;Res_no:INTEGER):real;
VAR
IDX : integer;
FOR IDX := 1 TO Res_no DO
PROCEDURE Print_Result(Result_A:Result_Array; Res_no:integer);
VAR
BEGIN
Print_Result(First_Result,First_count);
ประโยชน์ของการใช้อาร์เรย์ มักใช้เก็บข้อมูลที่เป็นชุด ในบางครั้งอาจต้องมีการค้นหาข้อมูล ที่เก็บอยู่ในอาร์เรย์เพื่อให้ได้ข้อมูลที่ต้องการ เช่นต้องการข้อมูลที่มีค่าสูงสุด ต่ำสุด ต้องการข้อมูลที่มีค่าต่ำกว่าตัวแรกที่พบในชุดข้อมูลที่มีข้อความนำหน้าด้วยอักษร "S" หรืออาจต้องการรับข้อมูลเข้าสู่ตัวแปรอาร์เรย์ แล้วนำไปจัดเรียงลำดับค่ามากน้อย หรือเรียงลำดับตัวอักษรของข้อความ เพื่อนำไปแสดงผล หรือเก็บบันทึกให้สามารถนำไปใช้ต่อ ในหัวข้อนี้จะยกตัวอย่างการเขียนโปรแกรมเพื่อค้นหา และจัดเรียงลำดับข้อมูลที่มีอยู่ในอาร์เรย์