Make your own free website on Tripod.com

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

อาร์เรย์ (Array) คืออะไร

    ความหมายของอาร์เรย์ คือแถวหรือลำดับ นั่นคือแถวหรือลำดับของข้อมูลชนิดเดียวกันที่มีจำนวนหลายตัวนำมาเก็บในตัวแปรชื่อเดียวกัน แต่ต่างกันที่ตัวบอกลำดับ ซึ่งเรียกว่าตัวห้อยหรือตัว Subscript ของตัวแปรนั้น เช่น

    float Score[40]; มีความหมายว่า คะแนนสอบของนักเรียนที่เป็นเลขทศนิยม จำนวน 40 ตัว เก็บไว้ในตัวแปรชื่อ Score

    char name[100][20] ; มีความหมายว่า ข้อมูลรายชื่อพนักงาน 100 คน ที่ชื่อมีความยาวไม่เกิน 20 อักษร    

ประเภทของอาร์เรย์

    จากตัวอย่างและข้อสังเกตที่กล่าวมา เราพอจะแบ่งประเภทของอาร์เรย์ตามชนิดของข้อมูล ได้ 2 ประเภท คือ อาร์เรย์ของตัวแปรที่เก็บข้อมูลจำนวน (Array of number) เช่น static char msg[ ] และ int student[5] เป็นต้น และอาร์เรย์ของตัวแปร Pointer (Array of pointer) เช่น int *test[5] เป็นต้น

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

มองเห็นเส้น (ยาว)
มิติเดียว
มองเห็นทั้งยาว และสูง
สองมิติ
มองเห็นทั้งยาว สูง และลึก
สามมิติ

อาร์เรย์มิติเดียว (One Dimension Array)

    อาร์เรย์มิติเดียว คือ ตัวแปรอาร์เรย์ที่ใช้เก็บข้อมูลเป็นกลุ่ม ที่มีลักษณะตำแหน่งที่ตั้งที่เป็นลักษณะแถวเดียว (วางตามนอน) หรือคอลัมน์เดียว (วางตามตั้ง) เช่น x[7], number[100], time[3] เป็นต้น การมองว่าเป็นอาร์เรย์มิติเดียวหรือไม่ พิจารณาได้ดังรูปต่อไปนี้

  1. มองตามนอน (แถว) เป็นอาร์เรย์มิติเดียว ดังรูป

แสดงอาร์เรย์มิติเดียวที่มองตามนอน

  1. มองตามตั้ง (คอลัมน์) เป็นอาร์เรย์มิติเดียวเช่นกัน

แสดงอาร์เรย์มิติเดียวที่มองตามตั้ง

อาร์เรย์หลายมิติ ( Multi Dimension Array )

    อาร์เรย์หลายมิติ คือ อาร์เรย์ตั้งแต่ 2 มิติเป็นต้นไป หมายถึงตัวแปรอาร์เรย์ที่ใช้เก็บข้อมูลเป็นกลุ่ม ที่ข้อมูลนั้นใช้ตัวแปรชื่อเดียวกันแต่มีข้อแตกต่างกันที่ตัวห้อย หรือ subscript ที่บอกลำดับความแตกต่างของตัวแปรนั้นว่าอยู่ในแถวใด ในคอลัมน์ที่เท่าไร ลำดับใดในแถว ที่กล่าวมานี้ คือ อาร์เรย์ 2 มิติ และถ้ากลุ่มข้อมูลดังกล่าวยังมีหลายชุดในที่นี้จะใช้คำว่า มีหลายระนาบ (Plate) ก็จะมีตัวห้อยเพิ่มมาอีกเพื่อระบุว่าเป็นของระนาบใด ลักษณะดังกล่าวนี้เป็นอาร์เรย์ 3 มิติ ดูภาพความคิดจากรูป

รูปซ้าย ความคิด 2 มิติ   รูปขวา ความคิด 3 มิติ

    ลักษณะปัญหางานที่เป็น 2 มิติ เป็นดังตัวอย่างต่อไปนี้

    ข้อมูลจำนวนนักศึกษาของสถาบันซึ่งมี 5 คณะวิชา แต่ละคณะวิชามี 4 ชั้นปี กลุ่มข้อมูลนี้จะเก็บไว้ในตัวแปรชื่อ stud จะต้องกำหนดให้เป็นตัวแปรอาร์เรย์ 2 มิติ คือ stud[5][4] ดังรูป

แสดงข้อมูลวางรูปแบบ 2 มิติ

    อาร์เรย์หลายมิติ คืออาร์เรย์ที่ถูกกำหนดขึ้นโดยใช้ [ ] หลายคู่ และเวลาติดต่อกับข้อมูลใด ในอาร์เรย์ ก็สามารถทำได้โดยใช้ตัวห้อย (Subscript) หลายตัว เช่น

    char address[3][10];

     int Score[40][4];

    float avg[5][4];

แสดงข้อมูลวางในลักษณะ 3 มิติ

    ตามรูป คือ ข้อมูลจำนวน 3 ระนาบ (หลักสูตร) ระนาบละ 5 แถว (คณะวิชา) แถวละ 4 คอลัมน์ (ชั้นปี) จะได้สมาชิก 3 x 5 x 4 = 60 elements หรือ 60 ตัวแปร ดังนี้

Stud[0][0][0], Stud[0][0][1], Stud[0][0][2], Stud[0][0][3],
Stud[0][1][0], Stud[0][1][1], Stud[0][1][2], Stud[0][1][3],
Stud[0][2][0], Stud[0][2][1], Stud[0][2][2], Stud[0][2][3],
Stud[0][3][0], Stud[0][3][1], Stud[0][3][2], Stud[0][3][3],
Stud[0][4][0], Stud[0][4][1], Stud[0][4][2], Stud[0][4][3],

Stud[1][0][0], Stud[1][0][1], Stud[1][0][2], Stud[1][0][3],
Stud[1][1][0], Stud[1][1][1], Stud[1][1][2], Stud[1][1][3],
Stud[1][2][0], Stud[1][2][1], Stud[1][2][2], Stud[1][2][3],
Stud[1][3][0], Stud[1][3][1], Stud[1][3][2], Stud[1][3][3],
Stud[1][4][0], Stud[1][4][1], Stud[1][4][2], Stud[1][4][3],

Stud[2][0][0], Stud[2][0][1], Stud[2][0][2], Stud[2][0][3],
Stud[2][1][0], Stud[2][1][1], Stud[2][1][2], Stud[2][1][3],
Stud[2][2][0], Stud[2][2][1], Stud[2][2][2], Stud[2][2][3],
Stud[2][3][0], Stud[2][3][1], Stud[2][3][2], Stud[2][3][3],
Stud[2][4][0], Stud[2][4][1], Stud[2][4][2], Stud[2][4][3],

 

ศึกษาเนื้อหาโดยละเอียดได้จากหนังสือเสริม ....