วันอังคารที่ 23 สิงหาคม พ.ศ. 2554

อะเรย์

โครงสร้างของอะเรย์

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

อะเรย์ 1 มิติ

มีดรรชนีกำกับเพียงตัวเดียว การกำหนดโครงสร้างของอะเรย์ จะหมายถึงการอ้างถึง ตำแหน่งของความจำ ที่มีตำแหน่งต่อเนื่องกัน โดยใช้ตัวแปรชุดเดียวกันนั่นเอง โดยทั่วๆไปดรรชนีกำกับของอะเรย์ จะมีการเริ่มต้นจาก 0 หรือ 1 ซึ่งจะแทนขอบเขตล่าง (lower bound ) ของอะเรย์ อะเรย์แต่ละช่องจะมีขนาดเท่า ๆกัน หมายถึงสมาชิกแต่ละตัวของอะเรย์ จะต้องมีการใช้เนื้อที่เท่ากัน ถ้าสมาชิกของอะเรย์มี สมาชิก เท่ากับ n ตัว ก็จะต้องใช้หน่วยความจำทั้งหมด n คำ

สูตรแสดงการหาตำแหน่งที่ อยู่ของสมาชิกอะเรย์ สามารถคำนวนได้ดังนี้

loc(A[i] = l0 + c(i-1)

โดย l0 (l ศูนย์) คือ ตำแหน่งข้อมูลที่เก็บที่อยู่ของสมาชิกตัวแรก
c คือ เนื้อที่ในการจัดเก็บแต่ละตัว = 1 คำ
A[i] คือตำแหน่งที่อยู่ของสมาชิก ตัวที่ i ของ อะเรย์ A ใด ๆ
ในกรณีที่ ขอบเขตล่างของอะเรย์ ไม่ได้เริ่มต้นจาก 1 แต่เริ่มต้นที่ค่า b ก็จะใช้ การลบด้วยค่า b แทนการลบด้วย1 โดย การแทนเข้าสูตร ส่วนสมาชิกที่อยู่ในลำดับสุดท้ายของอะเรย์ คือ ขอบเขตบน (upper bound) ของอะเรย์

ขนาดของอะเรย์สามารถคำนวณได้


อะเรย์ 2 มิติ

อะเรย์ 2 มิติ มีดรรชนีในการกำกับ 2 ตัว โดยการจินตนาการว่า อะเรย์ 2 มิติ ประกอบด้วย แถว และคอลัมภ์ การหาจำนวนสมาชิก จะหาได้โดย นำจำนวนแถว คูณ กับจำนวนหลักการแทนอะเรย์ 2 มิติในหน่วยความจำ จะแทนด้วยอะเรย์ 1 มิติที่สมนัยกัน ตำแหน่งของอะเรย์ สามารถคำนวณ ได้ดังนี้
loc(A[ij] = L0 +(j-1) * n+(i -1 )

 

การประยุกต์ใช้อะเรย์ 2 มิติ

การประยุกต์ใช้งาน มักจะใช้กับงานที่มีลักษณะ งานที่มี ลักษณะเป็นแถวและคอลัมภ์ หรือตาราง 2 มิติ เช่น เมตริกซ์ อะเรย์ 3 มิติ และอะเรย์ 3 มิติขึ้นไป
อะเรย์ 3 มิติ จะมีดรรชนีกำกับ 3 ตัว การจินตนาการ จะจินตนาการว่า เป็นอะเรย์ 2 มิติ ที่มีหลายระนาบการเก็บ อะเรย์ 3 มิติ ในหน่วยความจำ เราจะแทนอะเรย์ 3 มิติ ด้วยอะเรย์ 1 มิติ ที่สมนัยกัน
สูตรในการค้นหา ตำแหน่งของอะเรย์ ซึ่งสมมติให้เป็นอะเรย์ B[i,j,k] ใด ๆของอะเรย์ หาได้จากสูตร
Loc(B[i,j,k] ) = (i - 1) * 12+(j-1)*4+k-1
อาร์เรย์ 3 มิติ
 
                  อาร์เรย์ 3 มิติ เป็นแบบที่การอ้างอิงหรือการเข้าถึงสมาชิกตัวใด จะใช้ตัวบอกลำดับ 3 ตัว โดยโครงสร้างข้อมูลแบบนี้ เราสามารถมองได้ในลักษณะของเมตริก หรือตารางที่มีหลายชั้น โดยตัวบอกลำดับตัวแรกจะหมายถึงชั้น ตัวถัดไปคือแถวและหลักตามลำดับ เช่น อาร์เรย์ 3 มิติ A ที่มี 2 ชั้น 4 แถว 3 หลัก
                                 อาร์เรย์ 3 มิติมีรูปแบบการกำหนดดังนี้

VAR A : ARRAY [L1..U1,L2..U2,L3..U3] OF DATA_TYPE;

                    A         คือ ชื่อของอาร์เรย์
                               L1       คือ ค่าซับสคริปต์ต่ำสุดของชั้น
                               U1       คือ ค่าซับสคริปต์สูงสุดของชั้น
                               L2       คือ ค่าซับสคริปต์ต่ำสุดของแถวนอน
                               U2       คือ ค่าซับสคริปต์สูงสุดของแถวนอน
                               L3       คือ ค่าซับสคริปต์ต่ำสุดของแถวตั้ง (คอลัมน์)
                    U3      คือ ค่าซับสคริปต์สูงสุดของแถวตั้ง (คอลัมน์)
                    DATA_TYPE         คือ ชนิดของข้อมูลที่จัดเก็บในอาร์เรย์
                               จำนวนตัวแปรอาร์เรย์จะมีเท่ากับ (U1-L1+1)(U2-L2+1)(U3-L3+1) ตัว
                               เช่น VECTOR : ARRAY[1..2,1..2,1..2] OF REAL;
                    อาร์เรย์ VECTOR จะมีจำนวนตัวแปรทั้งหมด (2-1+1)(2-1+1)(2-1+1) = 8 ตัวดังนี้ VECTOR[1,1,1] VECTOR[1,1,2] VECTOR[1,2,1] VECTOR[1,2,2] VECTOR[2,1,1] VECTOR[2,1,2] VECTOR[2,2,1] VECTOR[2,2,2]

วันพุธที่ 20 กรกฎาคม พ.ศ. 2554

ความรู้การใช้งานภาษาซี

      ภาษาซี (C Programming Language) คือ ภาษาคอมพิวเตอร์ใช้สำหรับพัฒนาโปรแกรมทั่วไป ถูกพัฒนาครั้งแรกเพื่อใช้เป็นภาษาสำหรับพัฒนาระบบปฏิบัติการยูนิกซ์ ( Unix Opearating System) แทนภาษาแอสเซมบลี ซึ่งเป็นภาษาระดับต่ำที่สามารถกระทำในระบบฮาร์ดแวร์ได้ด้วยความรวดเร็ว แต่จุดอ่อนของภาษาแอซเซมบลีก็คือความยุ่งยากในการโปรแกรม ความเป็นเฉพาะตัว และความแตกต่างกันไปในแต่ละเครื่อง เดนนิส ริตชี (Dennis Ritchie) จึงได้คิดค้นพัฒนาภาษาใหม่นี้ขึ้นมาเมื่อประมาณต้นปี ค.ศ. 1970 โดยการรวบรวมเอาจุดเด่นของแต่ละภาษาระดับสูงผนวกเข้ากับภาษาระดับต่ำ
โครงสร้างของโปรแกรมภาษาซี
โปรแกรมในภาษาซีทุกโปรแกรมจะประกอบด้วยฟังก์ชันอย่างน้อย หนึ่งฟังก์ชัน คือ ฟังก์ชัน main โดยโปรแกรมภาษาซีจะเริ่มทำงานที่ฟังก์ชัน main ก่อน ในแต่ละฟังก์ชันจะประกอบด้วย
          1. Function Heading ประกอบด้วยชื่อฟังก์ชัน และอาจมีรายการของ argument (บางคนเรียก parameter) อยู่ในวงเล็บ
          2. Variable Declaration ส่วนประกาศตัวแปร สำหรับภาษาซี ตัวแปรหรือค่าคงที่ทุกตัว ที่ใช้ในโปรแกรมจะต้องมีการประกาศก่อนว่าจะใช้งานอย่างไร จะเก็บค่าในรูปแบบใดเช่น interger หรือ real number
          3. Compound Statements ส่วนของประโยคคำสั่งต่างๆ ซึ่งแบ่งเป็นประโยคเชิงซ้อน (compound statement) กับ ประโยคนิพจน์ (expression statment) โดยประโยคเชิงซ้อนจะอยู่ภายในวงเล็บปีกกาคู่หนึ่ง { และ } โดยในหนึ่งประโยคเชิงซ้อน จะมีประโยคนิพจน์ที่แยกจากกันด้วยเครื่องหมาย semicolon (;) หลายๆ ประโยครวมกัน และ อาจมีวงเล็บปีกกาใส่ประโยคเชิงซ้อนย่อยเข้าไปอีกได้
เกี่ยวกับการตรวจสอบเงื่อนไข
เงื่อนไขแบบทางเลือกเดียว (ฟังก์ชัน if ทางเลือกเดียว) จะทำการตรวจสอบเงื่อนไข ถ้าเงื่อนไขเป็นจริงจะทำงานตามประโยคคำสั่งภายในวงเล็บปีกกา แต่ถ้าเป็นเท็จจะข้ามไปทำชุดคำสั่งถัดไป ซึ่งประโยคคำสั่งภายในวงเล็บปีกกาอาจจะมีเพียงประโยคคำสั่งเดียว หรือหลายประโยคคำสั่งก็ได้ ถ้ามีเพียงประโยคคำสั่งเดียวจะไม่ใส่เครื่องหมาย ปีกกาเปิดและปิด