• user warning: Duplicate entry '536306482' for key 'PRIMARY' query: INSERT INTO accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values('เครื่องลมทองเหลือง (Brass Instruments)', 'node/51049', '', '18.119.123.252', 0, 'e8a486dfa330ff9cd254a0c6873f4497', 138, 1716149230) in /home/tgv/htdocs/modules/statistics/statistics.module on line 63.
  • user warning: Table 'cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:f189c2248b96b52251731abe765418c6' in /home/tgv/htdocs/includes/cache.inc on line 27.
  • user warning: Table 'cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<!--paging_filter--><p><span style=\"color: #ff0000\"></span><span style=\"color: #ff0000\"></span><br />\n<span style=\"color: #ff0000\"><strong><span style=\"color: #ff0000\">ข้อมูลชนิดอาร์เรย์</span><br />\n</strong></span></p>\n<p>\nอาร์เรย์ เป็นข้อมูลแบบโครงสร้างชนิดหนึ่ง ซึ่งประกอบขึ้นจากข้อมูลหลายๆ ตัวรวมเข้าด้วยกันเป็นกลุ่ม โดยข้อมูลแต่ละตัวในกลุ่มถูกเรียกว่าอีลีเมนต์ (Element) และแต่ละอีลีเมนต์จะต้องเป็นข้อมูลชนิดเดียวกันการอ้างถึงข้อมูลจะใช้ตัวแปรชื่อเดียว ซึ่งจะหมายถึงชื่อของกลุ่ม และสามารถอ้างถึงข้อมูลแต่ละอีลีเมนต์ในกลุ่มได้โดยใช้ดัชนี (Index) ต่อท้ายหลังชื่อตัวแปรของกลุ่ม ดัชนีนี้จะเป็นตัวบ่งบอกถึงลำดับที่ของอีลีเมนต์ ลักษณะของดัชนีที่เราสามารถเข้าใจได้ง่ายที่สุดก็คือ ตัวเลขหรือ หมายเลข\n</p>\n<dd>ตัวแปรที่มีชนิดข้อมูลอาร์เรย์นั้น เมื่อเรานำมาใช้งานส่วนใหญ่แล้วผู้ใช้<br />\nจะต้องการอ้างเข้าไปถึงอีลีเมนต์แต่ละตัวของอาร์เรย์ โดยใช้ดัชนีเป็นตัว<br />\nช่วยอ้างถึงตำแหน่งอีลีเมนต์ที่ต้องการ หากต้องการใช้หรืออ้างถึงทุกๆ<br />\nอีลีเมนต์ หรือช่วงใดช่วงหรือช่วงหนึ่งของอาร์เรย์ เราสามารถทำได้โดย<br />\nใช้คำสั่งวนรอบเพื่อเข้าถึงอีลีเมนต์ทีละอีลีเมนต์จนครบทุกอีลีเมนต์ตาม<br />\nที่ต้องการ ในหัวข้อนี้จะกล่าวถึงวิธีการเขียนโปรแกรมเพื่อเข้าถึงอีลีเมนต์<br />\nต่างๆ ในตัวแปรอาร์เรย์ \n<p><span style=\"color: #ff0000\"><strong><span style=\"color: #ff0000\">การกำหนดค่าเริ่มต้นให้แก่ชนิดข้อมูลอาร์เรย์</span></strong></span><br />\n       การตั้งค่าข้อมูลเริ่มต้นให้แก่ทุกอีลีเมนต์ให้มีข้อมูลค่าเดียวกันเขียนได้ดังตัวอย่างที่ 1</p></dd>\n<p><span style=\"color: #0000ff\">ตัวอย่างที่ 1<span style=\"color: #ff2255\"> </span></span><span style=\"color: #0000ff\"><span style=\"color: #ff2255\"><dir>CONST max_samp = 100;<br />\nVAR <dir>Score : ARRAY [ 1.. max_samp] OF real;<br />\nIDX : integer; </dir>BEGIN <dir>FOR IDX := 1 TO max_samp DO <dir>Score[IDX] := 0.0; </dir></dir>END. </dir></span></span></p>\n<p><!--. การรับข้อมูลและการแสดงผลตัวแปรชนิดข้อมูล--><!--. การรับข้อมูลและการแสดงผลตัวแปรชนิดข้อมูล--></p>\n<dt><strong><span style=\"color: #ff0000\"><span style=\"color: #ff0000\">การรับข้อมูลและแสดงผลดังตัวแปรชนิดอาร์เรย์</span></span></strong> <br />\n<span style=\"color: #000000\"><br />\n<dd>คำสั่ง READ, READLN, WRITE, WRITELN ซึ่งเป็นคำสั่งรับข้อมูล และ<br />\nแสดงผลของภาษาปาสคาล ไม่สามารถใช้รับข้อมูลหรือแสดงผลตัวแปร<br />\nอาร์เรย์ได้ทั้งตัว ต้องสั่งให้แสดงผลทีละ อีลีเมนต์ไป ตัวอย่างในการรับ<br />\nข้อมูลและแสดงผลตัวแปรอาร์เรย์ แสดงดัง<span style=\"color: #0000ff\"><span style=\"color: #000000\">ตัวอย่างที่ 2\n<p></p></span><span style=\"color: #ff2255\"><dir><span style=\"color: #0000ff\"><span style=\"color: #ff0000\">ตัวอย่างที่ 2</span>\n<p></p></span>PROGRAM Examination_Result (Input,Output);<br />\nCONST <dir>Max_Samp = 100; </dir>VAR <dir>Exp_Result : ARRAY [1.. Max_Samp] OF real;<br />\nExNo : integer;<br />\nMax_Exp : integer; </dir>BEGIN <dir>REPEAT <dir>Write(\'Enter no. OF sampling : \');<br />\nReadln(Max_Exp); </dir>UNTIL (Max_Exp &lt;= max_samp) and (max_exp &gt; 0);<br />\nFOR ExNo := 1 TO Max_Exp DO<br />\nBEGIN <dir>Write(\'Result No.\',ExNo:4\':\');<br />\nReadln(\'Exp_Result[ExNo]); </dir>END;<br />\nFOR ExNo := 1 TO Max_Exp DO <dir>Writeln(\'Result no.\',ExNo:4,\' :\',Exp_Result[ExNo]); </dir></dir>END. \n<p></p></dir>\n<!--. การใช้ชื่ออาร์เรย์ทั้งตัวในคำสั่งบางประเภท--><!--. การใช้ชื่ออาร์เรย์ทั้งตัวในคำสั่งบางประเภท--><dt></dt>\n<dt><strong><span style=\"color: #ff0000\"><span style=\"color: #ff0000\">การอ้างถึงตัวแปรอาร์เรย์ในรูปแบบต่างๆ</span></span></strong> <span style=\"color: #000000\"><br />\n<dd>การใช้ตัวแปรอาร์เรย์ในคำสั่งต่างๆ ต้องอ้างถึงอีลีเมนต์ของอาร์เรย์ โดย<br />\nระบุดัชนี เช่น <dir><span style=\"color: #ff2255\">RESULT[I] := SCORE [ I ] / 100;<br />\nSUMMARY[1] := SUM_SCORE / NUM_SCORE;<br />\nSUMMARY[2] := NUM_SCORE;<br />\nSTEP_VALUE[STEP_NO+1] := STEP_VALUE[STEP_NO] + STEP_INC; <span style=\"color: #000000\">การอ้างถึงตัวแปรอาร์เรย์ทั้งตัว ที่มีการใช้ในคำสั่งบางลักษณะ ได้แก่ </span><span style=\"color: #000000\">\n<p>\n1. คำสั่งกำหนดค่าตัวแปรให้อาร์เรย์ตัวหนึ่งๆ (ทุกๆ อีลีเมนต์) มีข้อมูล<br />\nเหมือนตัวแปรอาร์เรย์อีกตัวหนึ่งมีข้อจำกัดว่า ตัวแปรอาร์เรย์ทั้งสองตัว<br />\nจะต้องประกาศด้วยชนิดข้อมูลอาร์เรย์ที่เหมือนกันเท่านั้น ดังตัวอย่างที่ 3 \n</p>\n<p><span style=\"color: #0000ff\"><span style=\"color: #ff0000\">ตัวอย่างที่ 3</span></span></p>\n<p></p></span></span></dir></dd></span><span style=\"color: #ff2255\"><span style=\"color: #000000\"><span style=\"color: #0000ff\"><span style=\"color: #ff2255\">TYPE <br />\n        Result_Array = ARRAY [1..100] OF real; <br />\nVAR <br />\n</span></span></span></span><span style=\"color: #ff2255\"><span style=\"color: #000000\"><span style=\"color: #0000ff\"><span style=\"color: #ff2255\">        First_result, Second_Result : Result_Array; </span></span></span></span><span style=\"color: #ff2255\"><span style=\"color: #000000\"><span style=\"color: #0000ff\"><span style=\"color: #ff2255\"><dir>BEGIN <dir>Second_Result := First_Result; </dir>END. </dir><br />\n<dd><span style=\"color: #000000\">2. เป็นพารามิเตอร์ของโปรซิเยอร์ หรือฟังก์ชันที่กำหนดชนิดพารามิเตอร์<br />\nเป็นอาร์เรย์หากมีโปรซิเยอร์ หรือฟังก์ชันที่ต้องส่งผ่านอาร์เรย์ทั้งตัวเป็น<br />\nพารามิเตอร์ ก็สามารถใช้ชนิดข้อมูลอาร์เรย์เป็นชนิดของพารามิเตอร์ได้<br />\nแต่ต้องประกาศชนิดโดยใช้ส่วนประกาศชนิด (Type) สร้างชื่อชนิดใหม่ที่<br />\nเป็นอาร์เรย์ที่มีจำนวน และชนิดของอีลีเมนต์ตามที่ต้องการ จึงนำชื่อ<br />\nชนิดนั้นไปใช้เป็นชื่อชนิดของพารามิเตอร์ได้ในการเรียกใช้โปรซิเยอร์<br />\nหรือฟังก์ชัน ตัวแปรที่จะส่งไปเป็นพารามิเตอร์ก็ต้องใช้ชนิดเดียวกันกับ<br />\nชื่อชนิดของการกำหนดพารามิเตอร์ในการประกาศโปรซิเยอร์หรือ<br />\nฟังก์ชันด้วย ดังตัวอย่างที่ 4\n<p><span style=\"color: #0000ff\"><span style=\"color: #ff0000\">ตัวอย่างที่ 4</span><span style=\"color: #ff2255\"> </span></span></p></span><span style=\"color: #000000\"><span style=\"color: #0000ff\"><span style=\"color: #ff2255\"><dir>TYPE <dir>Result_Array = ARRAY [1..100] OF real; </dir>VAR <dir>First_Result : Result_Array;<br />\nFrist_count : integer;<br />\nFirst_arg : real; </dir>\n<p>\nFUNCTION Result_avg(Result_A:Result_Array;Res_no:INTEGER):real;<br />\nVAR\n</p>\n<p><dir>R_SUM : real;<br />\nIDX : integer; </dir>BEGIN <dir>R_SUM := 0.0;<br />\nFOR IDX := 1 TO Res_no DO<br />\n<dir>R_SUM := R_SUM + Result_A[IDX]; </dir>Result_avg := R_Sum/Res_no; </dir>END; </p>\n<p>\nPROCEDURE Print_Result(Result_A:Result_Array; Res_no:integer);<br />\nVAR\n</p>\n<p><dir>IDX : integer; </dir>BEGIN <dir>FOR IDX := 1 TO Res_no DO <dir>Writeln(LST,\'Result no.\',IDX:4\':\',Result_A[IDX]:10:4); </dir></dir>END; </p>\n<p>\nBEGIN\n</p>\n<p><dir>First_avg := Result_avg(First_Result,First_count);<br />\nPrint_Result(First_Result,First_count); </dir>END. </p></dir>\n<p>\n<span style=\"color: #000000\">           ประโยชน์ของการใช้อาร์เรย์ มักใช้เก็บข้อมูลที่เป็นชุด ในบางครั้งอาจต้องมีการค้นหาข้อมูล ที่เก็บอยู่ในอาร์เรย์เพื่อให้ได้ข้อมูลที่ต้องการ เช่นต้องการข้อมูลที่มีค่าสูงสุด ต่ำสุด ต้องการข้อมูลที่มีค่าต่ำกว่าตัวแรกที่พบในชุดข้อมูลที่มีข้อความนำหน้าด้วยอักษร &quot;S&quot; หรืออาจต้องการรับข้อมูลเข้าสู่ตัวแปรอาร์เรย์ แล้วนำไปจัดเรียงลำดับค่ามากน้อย หรือเรียงลำดับตัวอักษรของข้อความ เพื่อนำไปแสดงผล หรือเก็บบันทึกให้สามารถนำไปใช้ต่อ ในหัวข้อนี้จะยกตัวอย่างการเขียนโปรแกรมเพื่อค้นหา และจัดเรียงลำดับข้อมูลที่มีอยู่ในอาร์เรย์</span></p>\n<p>\n                                                                            <a href=\"/node/40498\" title=\"กลับสู่หน้าหลัก\"><img border=\"0\" align=\"middle\" width=\"70\" src=\"/files/u18287/home_copy.gif\" alt=\"กลับสู่หน้าหลัก\" height=\"76\" style=\"width: 50px; height: 56px\" /></a></p></span>\n\n<p></p></span></span></dd></span></span></span></span></dt></span></span></dd>\n<p></p></span>\n<p></p></dt>\n<p>\n</p><p>\n</p><p></p>\n', created = 1716149240, expire = 1716235640, headers = '', serialized = 0 WHERE cid = '3:f189c2248b96b52251731abe765418c6' in /home/tgv/htdocs/includes/cache.inc on line 112.

หน่วยการเรียนรู้ที่ 19 ข้อมูลชนิดอาร์เรย์ (Array)


ข้อมูลชนิดอาร์เรย์

อาร์เรย์ เป็นข้อมูลแบบโครงสร้างชนิดหนึ่ง ซึ่งประกอบขึ้นจากข้อมูลหลายๆ ตัวรวมเข้าด้วยกันเป็นกลุ่ม โดยข้อมูลแต่ละตัวในกลุ่มถูกเรียกว่าอีลีเมนต์ (Element) และแต่ละอีลีเมนต์จะต้องเป็นข้อมูลชนิดเดียวกันการอ้างถึงข้อมูลจะใช้ตัวแปรชื่อเดียว ซึ่งจะหมายถึงชื่อของกลุ่ม และสามารถอ้างถึงข้อมูลแต่ละอีลีเมนต์ในกลุ่มได้โดยใช้ดัชนี (Index) ต่อท้ายหลังชื่อตัวแปรของกลุ่ม ดัชนีนี้จะเป็นตัวบ่งบอกถึงลำดับที่ของอีลีเมนต์ ลักษณะของดัชนีที่เราสามารถเข้าใจได้ง่ายที่สุดก็คือ ตัวเลขหรือ หมายเลข

ตัวแปรที่มีชนิดข้อมูลอาร์เรย์นั้น เมื่อเรานำมาใช้งานส่วนใหญ่แล้วผู้ใช้
จะต้องการอ้างเข้าไปถึงอีลีเมนต์แต่ละตัวของอาร์เรย์ โดยใช้ดัชนีเป็นตัว
ช่วยอ้างถึงตำแหน่งอีลีเมนต์ที่ต้องการ หากต้องการใช้หรืออ้างถึงทุกๆ
อีลีเมนต์ หรือช่วงใดช่วงหรือช่วงหนึ่งของอาร์เรย์ เราสามารถทำได้โดย
ใช้คำสั่งวนรอบเพื่อเข้าถึงอีลีเมนต์ทีละอีลีเมนต์จนครบทุกอีลีเมนต์ตาม
ที่ต้องการ ในหัวข้อนี้จะกล่าวถึงวิธีการเขียนโปรแกรมเพื่อเข้าถึงอีลีเมนต์
ต่างๆ ในตัวแปรอาร์เรย์

การกำหนดค่าเริ่มต้นให้แก่ชนิดข้อมูลอาร์เรย์
       การตั้งค่าข้อมูลเริ่มต้นให้แก่ทุกอีลีเมนต์ให้มีข้อมูลค่าเดียวกันเขียนได้ดังตัวอย่างที่ 1

ตัวอย่างที่ 1

CONST max_samp = 100;
VAR Score : ARRAY [ 1.. max_samp] OF real;
IDX : integer;
BEGIN FOR IDX := 1 TO max_samp DO Score[IDX] := 0.0; END.

การรับข้อมูลและแสดงผลดังตัวแปรชนิดอาร์เรย์

คำสั่ง READ, READLN, WRITE, WRITELN ซึ่งเป็นคำสั่งรับข้อมูล และ
แสดงผลของภาษาปาสคาล ไม่สามารถใช้รับข้อมูลหรือแสดงผลตัวแปร
อาร์เรย์ได้ทั้งตัว ต้องสั่งให้แสดงผลทีละ อีลีเมนต์ไป ตัวอย่างในการรับ
ข้อมูลและแสดงผลตัวแปรอาร์เรย์ แสดงดังตัวอย่างที่ 2

ตัวอย่างที่ 2

PROGRAM Examination_Result (Input,Output);
CONST Max_Samp = 100; VAR Exp_Result : ARRAY [1.. Max_Samp] OF real;
ExNo : integer;
Max_Exp : integer;
BEGIN REPEAT Write('Enter no. OF sampling : ');
Readln(Max_Exp);
UNTIL (Max_Exp <= max_samp) and (max_exp > 0);
FOR ExNo := 1 TO Max_Exp DO
BEGIN Write('Result No.',ExNo:4':');
Readln('Exp_Result[ExNo]);
END;
FOR ExNo := 1 TO Max_Exp DO Writeln('Result no.',ExNo:4,' :',Exp_Result[ExNo]);
END.

การอ้างถึงตัวแปรอาร์เรย์ในรูปแบบต่างๆ
การใช้ตัวแปรอาร์เรย์ในคำสั่งต่างๆ ต้องอ้างถึงอีลีเมนต์ของอาร์เรย์ โดย
ระบุดัชนี เช่น RESULT[I] := SCORE [ I ] / 100;
SUMMARY[1] := SUM_SCORE / NUM_SCORE;
SUMMARY[2] := NUM_SCORE;
STEP_VALUE[STEP_NO+1] := STEP_VALUE[STEP_NO] + STEP_INC; การอ้างถึงตัวแปรอาร์เรย์ทั้งตัว ที่มีการใช้ในคำสั่งบางลักษณะ ได้แก่

1. คำสั่งกำหนดค่าตัวแปรให้อาร์เรย์ตัวหนึ่งๆ (ทุกๆ อีลีเมนต์) มีข้อมูล
เหมือนตัวแปรอาร์เรย์อีกตัวหนึ่งมีข้อจำกัดว่า ตัวแปรอาร์เรย์ทั้งสองตัว
จะต้องประกาศด้วยชนิดข้อมูลอาร์เรย์ที่เหมือนกันเท่านั้น ดังตัวอย่างที่ 3 

ตัวอย่างที่ 3

TYPE
        Result_Array = ARRAY [1..100] OF real;
VAR
        First_result, Second_Result : Result_Array; BEGIN Second_Result := First_Result; END.
2. เป็นพารามิเตอร์ของโปรซิเยอร์ หรือฟังก์ชันที่กำหนดชนิดพารามิเตอร์
เป็นอาร์เรย์หากมีโปรซิเยอร์ หรือฟังก์ชันที่ต้องส่งผ่านอาร์เรย์ทั้งตัวเป็น
พารามิเตอร์ ก็สามารถใช้ชนิดข้อมูลอาร์เรย์เป็นชนิดของพารามิเตอร์ได้
แต่ต้องประกาศชนิดโดยใช้ส่วนประกาศชนิด (Type) สร้างชื่อชนิดใหม่ที่
เป็นอาร์เรย์ที่มีจำนวน และชนิดของอีลีเมนต์ตามที่ต้องการ จึงนำชื่อ
ชนิดนั้นไปใช้เป็นชื่อชนิดของพารามิเตอร์ได้ในการเรียกใช้โปรซิเยอร์
หรือฟังก์ชัน ตัวแปรที่จะส่งไปเป็นพารามิเตอร์ก็ต้องใช้ชนิดเดียวกันกับ
ชื่อชนิดของการกำหนดพารามิเตอร์ในการประกาศโปรซิเยอร์หรือ
ฟังก์ชันด้วย ดังตัวอย่างที่ 4

ตัวอย่างที่ 4

TYPE Result_Array = ARRAY [1..100] OF real; VAR First_Result : Result_Array;
Frist_count : integer;
First_arg : real;

FUNCTION Result_avg(Result_A:Result_Array;Res_no:INTEGER):real;
VAR

R_SUM : real;
IDX : integer;
BEGIN R_SUM := 0.0;
FOR IDX := 1 TO Res_no DO
R_SUM := R_SUM + Result_A[IDX]; Result_avg := R_Sum/Res_no;
END;

PROCEDURE Print_Result(Result_A:Result_Array; Res_no:integer);
VAR

IDX : integer; BEGIN FOR IDX := 1 TO Res_no DO Writeln(LST,'Result no.',IDX:4':',Result_A[IDX]:10:4); END;

BEGIN

First_avg := Result_avg(First_Result,First_count);
Print_Result(First_Result,First_count);
END.

           ประโยชน์ของการใช้อาร์เรย์ มักใช้เก็บข้อมูลที่เป็นชุด ในบางครั้งอาจต้องมีการค้นหาข้อมูล ที่เก็บอยู่ในอาร์เรย์เพื่อให้ได้ข้อมูลที่ต้องการ เช่นต้องการข้อมูลที่มีค่าสูงสุด ต่ำสุด ต้องการข้อมูลที่มีค่าต่ำกว่าตัวแรกที่พบในชุดข้อมูลที่มีข้อความนำหน้าด้วยอักษร "S" หรืออาจต้องการรับข้อมูลเข้าสู่ตัวแปรอาร์เรย์ แล้วนำไปจัดเรียงลำดับค่ามากน้อย หรือเรียงลำดับตัวอักษรของข้อความ เพื่อนำไปแสดงผล หรือเก็บบันทึกให้สามารถนำไปใช้ต่อ ในหัวข้อนี้จะยกตัวอย่างการเขียนโปรแกรมเพื่อค้นหา และจัดเรียงลำดับข้อมูลที่มีอยู่ในอาร์เรย์

                                                                            กลับสู่หน้าหลัก

สร้างโดย: 
ว่าที่ ร.ต. อัศวิน สุรวัชโยธิน

มหาวิทยาลัยศรีปทุม ผู้ใหญ่ใจดี
 

 ช่วยด้วยครับ
นักเรียนที่สร้างบล็อก กรุณาอย่า
คัดลอกข้อมูลจากเว็บอื่นทั้งหมด
ควรนำมาจากหลายๆ เว็บ แล้ววิเคราะห์ สังเคราะห์ และเขียนขึ้นใหม่
หากคัดลอกทั้งหมด จะถูกดำเนินคดี
ตามกฎหมายจากเจ้าของลิขสิทธิ์
มีโทษทั้งจำคุกและปรับในอัตราสูง

ช่วยกันนะครับ 
ไทยกู๊ดวิวจะได้อยู่นานๆ 
ไม่ถูกปิดเสียก่อน

ขอขอบคุณในความร่วมมือครับ

อ่านรายละเอียด

ด่วน...... ขณะนี้
พระราชบัญญัติลิขสิทธิ์ (ฉบับที่ 2) พ.ศ. 2558 
มีผลบังคับใช้แล้ว 
ขอให้นักเรียนและคุณครูที่ใช้งาน
เว็บ thaigoodview ในการส่งการบ้าน
ระมัดระวังการละเมิดลิขสิทธิ์ด้วย
อ่านรายละเอียดที่นี่ครับ

 

สมาชิกที่ออนไลน์

ขณะนี้มี สมาชิก 0 คน และ ผู้เยี่ยมชม 272 คน กำลังออนไลน์