Monday, December 2, 2013

โปรแกรมภาษา C++ : การเข้าถึงข้อมูลในอาเรย์

ตัวแปรแบบอาเรย์เป็นตัวแปรแบบตาราง ที่หนึ่งตัวแปรเก็บค่าได้หลายค่า ประโยชน์ของตัวแปรแบบ อาเรย์ช่วยในการประหยัดเวลาในการเก็บข้อมูล การบริหารจัดการข้อมูลทำได้อย่างมีประสิทธิภาพ สิ่งหนึ่งที่สำคัญในทางวิศวกรรมคือ กลุ่มตัวแปรแบบอาเรย์มักมีความสัมพันธ์กัน ในบทความนี้จะมาทำความรู้จักกับตัวแปรแบบอาเรย์ในภาษา c และ C++ กันครับ
1. การประกาศตัวแปรแบบอาเรย์
typeVar VarName[n]
เมื่อ
typeVar คือ ชนิดของตัวแปร
VarName คือ ชื่อของตัวแปรที่จะกำหนด
n คือจำนวนสมาชิกในอาเรย์ที่ต้องจองไว้ในหน่วยความจำนั้น

ตัวอย่างเช่น
int Element [10] ;

มิติของอาเรย์ 
อาเรย์มีหลายมิติขึ้นอยู่กับจัดเก็บข้อมูลหรือความสัมพันธ์นั้นๆ ในที่นี้ขอยกตัวอย่างอาเรย์ที่ใช้กันเยอะคือ
1 อาเรย์ 1 มิติ ตัวอย่างเช่น int Element [5] ข้อมูลจะเรียงกันเป็นตารางที่มีจำนวน 1 แถว และมีสมาชิก 10 หลัก 
2 อาเรย์ 2 มิติ ตัวอย่างเช่น int Element [4][5] ซึ่งข้อมูลหรือตัวแปรย่อยจะจัดเรียงในตารางที่มีจำนวน 4 แถว 5 หลัก หรือมองง่ายๆเป็น Matrix ขนาด 4x5 


ภาพที่ 1 อาเรย์แบบ 1 มิติ


ภาพที่ 2 อาเรย์ 2 มิติ
การกำหนดค่าตัวแปรอาเรย์
เทคนิคหนึ่งในการเขียนโปรแกรมภาษา c ก็คือ จะต้องกำหนดค่าให้กับตัวแปรก่อนนำไปใช้งาน เพื่อป้องกันความผิดพลาดที่จะเกิดขึ้น ในการกำหนดค่าตัวแปรอาเรย์สามารถทำได้โดยการเข้าถึงตัวแปรสมาชิกโดยตรงจากการอ้างตำแหน่งของตัวแปร ตัวอย่างเช่น ต้องการกำหนดค่าให้กับตัวแปร Element ตัวที่ 3 สามารถเขียนโค้ดได้ดังนี้
Element[2] = value ;   // index ของตัวแปรอาเรย์ในภาษาซีจะเริ่มที่ 0 จนถึง n-1 เมื่อ n คือ จำนวนสมาชิกในอาเรย์

ข้อควรจำ
หลังจากสร้างตัวแปรอาเรย์แล้วควรกำหนดค่าตัวแปรทันที เพื่อป้องกันความผิดพลาด โดยหากยังไม่มีข้อมูลให้กำหนดค่า Null ให้กับตัวแปร อาเรย์ โค้ตตัวอย่างการกำหนดค่า 0 ให้กับตัวแปรอาเรย์จะอาศัยคำสั่ง for ดังนี้
สมมุติ อาเรย์ 4X5
for( int i = 0 ; i < 4 ; i++)
{
     for(int j = 0 ; j < 5 ; j++)
     {
          Element[i][j] = 0 ;
     }
}

การเข้าถึงข้อมูลในตัวแปรอาเรย์
เราจะอ้างด้วยตำแหน่งของตัวแปรในอาเรย์นั้น ตามภาพที่ 1 และ 2
เช่น Element[0][1] หมายถึง ตำแหน่งแถวที่ 0 หลักที่ 1 เป็นต้น การใช้คำสั่ง for , while , do..while เพื่อใช้ในการเข้าถึงหรือกำหนดค่าเป็นสิ่งที่โปรแกรมเมอร์ต้องพบอยู่เสมอ

จากตัวอย่างข้างต้นเป็นการกำหนดตัวแปรอาเรย์แบบสเตติก ซึ่งต้องจองหน่วยความจำตั้งแต่เริ่มต้น ยังมีวิธีการกำหนดตัวแปรอาเรย์แบบ dynamic ซึ่งมักจะใช้ในกรณีที่ไม่ทราบจำนวนสมาชิกในตัวแปรอาเรย์ที่แน่นอน ซึ่งเราจะใช้ pointer มาช่วยในการกำหนด ซึ่งจะทำให้โปรแกรมเมอร์จองหน่วยความจำได้พอดีกับที่ต้องใช้งานจริง ตัวอย่างเช่น
อาเรย์ 1 มิติ
// C++
int * Element ;   // ประกาศไว้ตอนต้น
Element = NULL;

เมื่อจะใช้งาน
Element = new int [size];

// do some thing

เมื่อใช้เสร็จ
delete [] Element ;
Element = NULL ;

อาเรย์ 2 มิติ ขนาด row x col
int ** Element ;
Element = NULL ;

Element = new int* [row];
for (int i= 1 ; i < row ; i++)
{
    Element[i] = new int [col];
}
// do some thing
เมื่อใช้งานเสร็จ
for (int i = 1 ; i < row ; i++)
{
       delete [] Element[i];
}
delete [] Element ;
Element = NULL;

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












1 comment :

  1. Live Sports Betting - VNTOPbet
    Our professional soccer tipsters cover all sports and offers all bk8 major European soccer, including European Champions League, Bundesliga, Serie クイーンカジノ A starvegad and more.

    ReplyDelete