วันศุกร์ที่ 8 พฤศจิกายน พ.ศ. 2556

ความหมายของโครงสร้างข้อมูล

ความหมายของโครงสร้างข้อมูล


คำว่า  โครงสร้างข้อมูล” (Data structures) เกิดจากคำสองคำ คือ โครงสร้าง”   และ ข้อมูล” ซึ่งคำว่า  โครงสร้าง”  
เป็นความสัมพันธ์ระหว่างสมาชิกในกลุ่ม   ดังนั้นโครงสร้างข้อมูลจึงหมายถึงความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น สิ่งพื้นฐา
นในการประมวลผลข้อมูลคอมพิวเตอร์ คือ ข้อมูล (Data) ดังนั้นการศึกษาถึงความสัมพันธ์ของข้อมูลจึงมีความสำคัญเป็นอย่างมากใน 
ศาสตร์คอมพิวเตอร์ (computer science) 

โครงสร้างข้อมูลในภาษาคอมพิวเตอร์ที่ใช้กันอยู่ในปัจจุบันจำแนกออกเป็น ประเภท     

                   1.  โครงสร้างข้อมูลเบื้องต้น (Primitive data structure) เป็นข้อมูลพื้นฐานซึ่งมีโครงสร้างข้อมูลไม่ซับซ้อนจะต้องมีในภาษาคอมพิวเตอร์ทุกภาษา 
จะเป็นลักษณะที่กำหนดในภาษานั้นๆ ตัวอย่างของข้อมูลประเภทนี้ เช่น
                              - จำนวนเต็ม (integer)
                              - จำนวนจริง (real)
                              - ตัวอักขระ (character)
               2.  โครงสร้างอย่างง่าย (Simple  data  structure) เป็นข้อมูลที่เกิดจากการนำโครงสร้างข้อมูลเบื้องต้นมาประกอบกันเป็นโครงสร้างข้อมูลที่หลากหลายขึ้น
 ข้อมูลที่ใช้ในเครื่องคอมพิวเตอร์ยุคแรกเป็นข้อมูลเบื้องต้นเท่านั้นแต่ในปัจจุบันภาษาคอมพิวเตอร์เกือบทุกภาษามีข้อมูลโครงสร้างด้วยแทบทั้งสิ้น
 ตัวอย่างข้อมูลโครงสร้าง    เช่น
                              -  แถวลำดับ (array)
                              -  เซต (set)
                              -  ระเบียนข้อมูล (record)
                              -  แฟ้มข้อมูล (file)
               3.  โครงสร้างข้อมูลซับซ้อน (Compound data structure) เป็นการนำเอาข้อมูลองค์ประกอบอย่างง่าย ประกอบขึ้นมาเป็นโครงสร้างข้อมูลซับซ้อน 
โครงสร้างข้อมูลประเภทนี้สามารถแบ่งออกได้เป็น ประเภทคือ
                          3.1  โครงสร้างข้อมูลแบบเชิงเส้น (linear data structures)    เป็นชนิดข้อมูลที่ความสัมพันธ์ของข้อมูลเรียงต่อเนื่องกัน     
โดยข้อมูลตัวที่ 2 อยู่ต่อจาก  ข้อมูลตัวที่ 1    ข้อมูลตัวที่ 3 อยู่ต่อจากข้อมูลตัวที่ 2   และข้อมูลตัวที่ อยู่ต่อจากข้อมูลตัวที่  n - 1  ตัวอย่างโครงสร้างข้อมูลแบบเชิงเส้น   เช่น
                       -   ลิสต์  (list)
                       -   สแตก (stack)      
                       -   คิว (queue)
                       -   สตริง (string)
                          3.2  โครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น (non-linear data structures)   เป็นชนิดข้อมูลที่ข้อมูลแต่ละตัวสามารถมีความสัมพันธ์กับข้อมูลอื่นได้หลายตัว  
 ตัวอย่างโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น
                       -  ทรี (tree)
                       -  กราฟ (graph)

การดำเนินการกับโครงสร้างข้อมูล(Data Structure Operation)

   วิธีดำเนินการกับข้อมูลที่นิยมใช้กันมากมี 4 แบบ คือ
  1. การเข้าถึงเรคคอร์ด (Traversing)
  2. การค้นหา (Searching)
  3. การเพิ่ม (Inserting)
  4. การลบ (Deleting)
  ยังมีการจัดการกับข้อมูลอีก 2 อย่าง คือ
  1. การเรียงข้อมูล (Sorting)
  2. การรวมข้อมูล (Merging)

  4. การแทนที่ข้อมูลในหน่วยความจำ

        มีอยู่ 2 วิธี คือ

การแทนที่ข้อมูลแบบสแตติก (Static Memory Representation)

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

การแทนทีข้อมูลแบบไดนามิก (Dynamic Memory Representation)

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

5. ลักษณะของโปรแกรมแบบที่มีโครงสร้างที่ดี

5.1 โครงสร้างโปรแกรมแบบคำสั่งตามลำดับ

        เป็น โครงสร้างพื้นฐานที่ประกอบด้วยคำสั่งทั่วๆไป เป็นโครงสร้างที่มีลักษณะการทำงานแบบเรียงลำดับ คือ จะทำงานตั้งแต่ต้นจนจบโดยไม่มีการข้ามขั้นตอนใดๆ

5.2 โครงสร้างโปรแกรมแบบมีการตัดสินใจ (Decision)

        มี การตรวจสอบเงื่อนไข เพื่อตัดสินใจว่าจะทำการประมวลผลส่วนใด โดยผลลัพธ์ของเงื่อนไขจะมีค่าของความเป็นไปได้อยู่ 2 ลักษณะ คือ จริงและเท็จ เท่านั้น

5.3 ครงสร้างโปรแกรมแบบเป็นวงจรปิด (Loop)

        มีลักษณะการทำงานซ้ำๆกัน อยู่ในส่วนใดส่วนหนึ่งของโปรแกรม

6. อัลกอริทึม (Algorithm)

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

อัลกอริทึมที่นิยมใช้กันมาก ได้แก่

1. อัลกอริทึมแบบแตกย่อย (Divide and conquer)
2. อัลกอริทึมแบบเคลื่อนที่ (Dynamic Programming)
3. อัลกอริทึมแบบทางเลือก (Greedy Algorithm)

การเขียนผังงาน (Flowchart)

       Flow Chart เป็นการอธิบายขั้นตอนการประมวลผลโดยใช้สัญลักษณ์ในการแสดงความหมายหรือกำหนด ลำดับการทำงาน การใช้กรอบรูปสัญลักษณ์ที่สื่อความหมาย อธิบายขั้นตอนการทำงานของโปรแกรม

การเขียนรหัสเทียม (Pseudo Code)

       Pseudo Code การอธิบายขั้นตอนการประมวลผลโดยใช้วลีภาษาอังกฤษในการแสดงอธิบาย ใช้คำสั้นๆ กะทัดรัด อธิบายขั้นตอนการทำงานของโปรแกรม

พัฒนาการของภาษาโปรแกรม

- ภาษาเครื่อง (Machine Language)
- ภาษาแอสเซมบลี (Assembly Language)
- ภาษาระดับสูง (High Level Language)
- ภาษายุคที่ 4  (Fourth Generation Language หรือ 4GL)

การบำรุงรักษาโปรแกรม (Program Maintenance)

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