[05/02/10] งานชิ้นที่ 6

ให้นักศึกษาหาข้อมูลคำสั่งอาร์เรย์มีกี่ชนิด แต่ละชนิดมีรูปแบบการใช้คำสั่งอย่างไร ยกตัวอย่าง 1 ตัวอย่าง

อาร์เรย์ คือแถวหรือลำดับของข้อมูลชนิดเดียวกันที่มีจำนวนหลายตัวนำมาเก็บในตัวแปรชื่อเดียวกัน แต่ต่างกันที่ตัวบอกลำดับ ซึ่งเรียกว่าตัวห้อยหรือตัว Subscript ของตัวแปรนั้น ตัวแปรอาเรย์สามารถเก็บข้อมูลหลายๆข้อมูลไว้ได้โดยไม่ต้องใช้ตัวแปรหลายตัว เช่นถ้าต้องการเก็บอายุของเพื่อนทั้ง 20 คน ถ้าเราใช้ตัวแปรแบบ int เราจะต้องประกาศตัวแปร age1, age2, age3,…..,age20 ให้เป็นแบบ integer ซึ่งเป็นการประกาศตัวแปรถึง 20 ตัวด้วยกัน แต่ถ้าใช้อาเรย์เราประกาศตัวแปร age ให้เป็นอาเรย์แบบ integer เพียงตัวเดียวก็สามารถเก็บค่าทั้ง 20 ค่าได้แล้ว

อาเรย์ 1 มิติ (One-Dimensional Array)
เราสามารถสร้างตัวแปรอาเรย์ของข้อมูลชนิดต่างๆได้ไม่ว่าจะเป็นอาเรย์แบบ integer, char, real โดยจะกำหนดตัวแปรไว้ในส่วนของคำสั่ง VAR ซึ่งมีรูปแบบการกำหนดค่าดังตัวอย่างต่อไปนี้
VAR ชื่อตัวแปร:ARRAY[Index แรก..Index สุดท้าย] OF ชนิดตัวแปร;
เช่น  VAR AGE:ARRAY[1..5] OF INTEGER;

จากตัวอย่างเป็นการประกาศตัวแปรชื่อ AGE ให้เป็นอาเรย์ของข้อมูลชนิด integer ที่มีขนาดเท่ากับ 5 ดังนั้นตัวแปร AGE จะสามารถเก็บเลขจำนวนเต็มได้ถึง 5 จำนวน ในหน่วยความจำจะมีการจองพื้นที่เอาไว้ตามจำนวนที่กำหนด โดยตัวแปร AGE นั้นจะมีการเตรียมพื้นที่ว่างในหน่วยความจำสำหรับเก็บค่าตัวแปร 5 ค่า
การนำค่าใส่ลงไปในตัวแปรอาเรย์
AGE [0] = 20;
AGE [1] = 21;
AGE [2] = 23;
AGE [3] = 26;
จะเห็นว่าตัวแปร AGE เป็นอาเรย์แบบ integer ซึ่งเก็บเลขจำนวนเต็มได้ 5 ค่า แต่จากตัวอย่างเรากำหนดค่าให้กับสมาชิกลำดับที่ 0 ถึง 3 โดยไม่ได้กำหนดค่าให้กับสมาชิกลำดับที่ 4 เพราะว่าการใส่ข้อมูลลงในอาเรย์นั้นไม่จำเป็นจะต้องใส่ทุกๆช่องให้ครบจึงจะใช้งานได้ ช่องใดไม่ได้ใส่ค่าลงไป มันก็ไม่เก็บค่าอะไรไว้จะเป็นช่องว่างๆไปโดยอัตโนมัติ
อาเรย์ของข้อมูลชนิด char คือตัวแปรสตริง
ตัวแปรอาเรย์ของข้อมูลชนิด char อีกนัยหนึ่งก็คือตัวแปรแบบข้อความหรือตัวแปรสตริง
(String) ตัวแปรสตริงคือการนำเอาตัวแปรแบบ char มาเรียงต่อๆกัน ซึ่งตัวแปร char ที่เรียงต่อกันก็เรียกได้ว่าเป็นตัวแปรอาเรย์ของข้อมูลชนิด char นั่นเอง จึงสรุปได้ว่า ”สตริง” กับ “อาเรย์ของ ข้อมูลชนิด char” คือสิ่งเดียวกัน
ตัวแปรอาเรย์ของข้อมูลชนิด char จะแตกต่างจากอาเรย์ของ integer,real หรือแบบอื่นๆ เพราะว่าสมาชิกตัวสุดท้ายของอาเรย์แบบ char จะใช้เก็บรหัสสิ้นสุดข้อความ ด้วยเหตุนี้ถ้าเราประกาศตัวแปรอาเรย์แบบ char เพื่อเก็บข้อความ เราจะต้องประกาศอาเรย์ให้มีขนาดมากกว่าจำนวนตัวอักษรของข้อความที่ต้องการเก็บอย่างน้อย 1 ตัวอักษร
สมมติว่าเราประกาศตัวแปรอาเรย์แบบ char เพื่อที่จะเก็บคำว่า “Computer” ซึ่งมีทั้งหมด 8 ตัวอักษร เราจะต้องประกาศตัวแปรอาเรย์แบบ char ที่มีขนาด 9 ตัวอักษร นอกจากนี้การกำหนดค่าให้กับตัวแปรอาเรย์แบบ char หรือตัวแปรสตริงนี้ยังสามารถทำไปพร้อมกับการประกาศตัวแปรได้เลย

อาเรย์ 2 มิติ (Two-Dimensional Array)
อาเรย์ 2 มิติจะเก็บข้อมูลไว้ในลักษณะของตารางโดยมีการประกาศตัวแปรดังนี้
VAR ชื่อตัวแปร:ARRAY[Index แรก..Index สุดท้าย,index แรก..Index สุดท้าย] OF ชนิดตัวแปร;
เช่น  VAR AGE:ARRAY[1..3,1..5] OF INTEGER;
สำหรับวิธีการนำเอาข้อมูลใส่ลงในตัวแปรอาเรย์ 2 มิตินี้ก็จะใช้หลักการเดียวกันกับอาเรย์ 1 มิติ โดยระบุช่องที่ต้องการใส่ค่าลงไป เช่นถ้าจะใส่ค่า 10 ลงในช่อง AGE [1,2] เราจะเขียนโปรแกรมดังนี้
AGE [1,2] = 10;

อาเรย์ 3 มิติ (Three-Dimensional Array)
ลักษณะของอาเรย์ 3 มิติจะมีความลึกมาเกี่ยวข้องด้วย การประกาศอาเรย์ 3 มิติทำได้โดย
เพิ่มมิติที่ 3 เข้าไปดังนี้
VAR ชื่อตัวแปร:ARRAY[Index แรก..Index สุดท้าย,Index แรก..Index สุดท้าย,Index แรก..Index สุดท้าย] OF ชนิดตัวแปร;
การนำข้อมูลไปเก็บไว้ในอาเรย์ 3 มิติจะใช้เลขลำดับ 3 ค่าเพื่ออ้างถึงตำแหน่งในแนวตั้ง, แนวนอน และแนวลึกของอาเรย์ ดังตัวอย่างต่อไปนี้
a[1,0,0] = 8;
a[1,1,0] = 14;
a[2,1,0] = 17;

a[2,0,1] = 9;
a[2,1,1] = 8;
a[2,2,1] = 13;

a[1,0,2] = 9;
a[1,1,2] = 8;
a[2,1,2] = 13;
โดยทั่วไปเราไม่ค่อยพบเห็นการใช้งานอาเรย์ 3 มิติบ่อยนักเพราะจะใช้ในการแก้ไขปัญหาเฉพาะด้าน เช่นการวาดกราฟิกที่มีความลึกเป็นต้น เรามักจะเห็นการใช้งานอาเรย์ 2 มิติมากกว่า แต่อย่างไรก็ตามหลักการในการกำหนดค่าและการเข้าถึงข้อมูลสามารถทำได้เช่นเดียวกัน

ตัวอย่างโปรแกรมที่ใช้ตัวแปร ARRAY
PROGRAM EX_ARRAY;
USES CRT;
VAR I,TOT:INTEGER;
       AVER:REAL;
       N:ARRAY[1..10] OF INTEGER;
BEGIN
     CLRSCR;
     WRITELN(‘INPUT 10 NUMBERS TO FIND THE AVERAGE’);
     FOR I:=1 TO 10 DO BEGIN
          WRITE(‘NUMBER [‘,I,’] = ‘);READLN(N[I]);
          TOT:=TOT+N[I];
     END;
     AVER:=TOT/10;
     WRITELN(‘AVERAGE = ‘,AVER);
     READLN;
END.

———————————————————————————————-

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: