Google     Youtube       Psv      สพม.11

หน่วยที่1 พื้นฐานโครงสร้างข้อมูล

คอมพิวเตอร์เป็นอุปกรณ์ที่สร้างขึ้นมาเพื่อใช้จัดการและเปลี่ยนแปลงข้อมูลข่าวสาร (Information) ดัวนั้น จึงต้องมีการศึกษาถึวการควบคุมดูแลการทำงานของคอมพิวเตอร์ที่ยุ่งเกี่ยวกับข้อมูลข่าวสาร เมื่อมีการเปลี่ยนแปลงแก้ไขหรือเพื่ออำนวนประโยชน์ที่ต้องการทำงานเพื่อแก้ไขปัญหาต่าง ๆ ด้วยระบบคอมพิวเตอร์จะประกอบด้วยส่วนต่าง ๆ ทางด้านฮาร์ดแวร์ (Hardware) เช่น ซีพียู (CPU) หน่วยความจำ (Memory) อุปการณ์รับส่งข้อมูล (Input/Output Device) และซอฟต์แวร์ (Software) ที่นำมาใช้ควบคุมการทำงานของฮาร์ดแวร์เพื่อแก้ไขปัญหานั้น ๆ ในการไขปัญหาจึงต้องมีกระบอวกการพัฒนาซอฟต์แวร์ (Software Development) ที่เป็นขั้นตอนมาใช้ดังนี้
ขั้นตอนการพัฒนาซอฟต์แวร์
การแยกแยะและวิเคราะห์ปัญหา
ในขั้นตอนแรกเป็นการแก้ปัญหาโดยการวิเคราะห์และแบกแยะ สั่งแรกที่ต้องพิจารณา คือ เอ้าท์พุต (Output) ที่ต้องการและมีข้อมูลข้าวสารอะไรบ้างที่ทำให้สามารถแก้ปัญหาได้ หลังจากแยกแยะเอ้าท์พุตก็คือการพิจารณาอินพุต (Input) และมีข้อมูลข่าวสารอะไรบ้างที่ทำให้สามารถแก้ปัญหาหลังจากแยกแยะเอ้าท์พุตและอินพุต รวมถึงข้อมูลข่าวสารที่ต้องการเสร็จสิ้นลงก็เป็นการพัฒนาเขียนอัลกิริทึมและโปรแกรม

การออกแบบระบบ
เนื่องจากรับคอมพิวเตอร์ไม่สามารถที่จะเข้าใจแก้ปัญหาบางอย่างได้ จึงต้องมีวิธีการที่จะแก้ไขปัญหาโดยการออกแบบระบบ(System Design) ซึ่งเป็นการว่างแผนออกแบบที่แยกแยะออกเป็นปัญหาย่อย (Sub problem) และพิจารณาสร้างชุดคำสั่งเพื่อแก้ไขปัญหาย่อยนั้น จากนั้นนำมารวมกันเป็นระบบที่สามารถแก้ไขปัญหาทั้งหมด มีลักษณะการวางแผนออกแบบจากบนลงล่าง (Top-down-Design) ซึ่งประกอบด้วย 2 ส่วนหลัก ๆ คือ
1. โครงสร้างข้อมูล (Data Structure) ใช้ควบคุมใช้ควบคุมและจัดการกับข้อมูลของปัญหานั้น ๆ หรือที่เรียกว่าชนิดข้อมูลมีโครงสร้าง (Structure Data Type) เรียกสั้น ๆ ว่าชนิดข้อมูล เช่น อาร์เรย์ , สแตก ฯลฯ การออกแยยระบบต้องเลือกใช้โครงสร้างข้อมูลอย่างเหมาะสมเพื่อจัดการกับข้อมูลที่ใช้ในระบบ
2. การออกแบบขุดคำสั่ง (Module Design) ในการแก้ไขปัญหาจะต้องมีกระบวนการทำงานเพื่อให้ได้มาซึ่งข้อมูลข่าวสารหรือ Output ที่ต้องการโดยชุดคำสั่งเป็นส่วนประกอบของระบบ จึงต้องมีการออกแบบการทำงานที่เป็นขุดคำสั่งหรือโมดุลนั้น ๆ และเรียกว่า อัลกอริทึม ได้เป็น
โครงสร้างข้อมูล + อัลกอริทึม = โปรแกรม
การที่จะเลือกใช้โครงสร้างข้อมูลและอัลกอริทึมในการออกแบบให้การทำงานอย่างมีประสิทธิภาพ ซึ่งถือว่าเป็นหัวใจสำคัญของการออกแบบซอฟต์แวร์จะพิจารณาได้จากลักษณะดังต่อไปนี้
1. ความถูกต้อง (Correctness)
2. ระยะเวลาการทำงาน(Amount of work done)
3. จำนวนพื้นที่ใช้งาน (Amount of space used)
4. ความเรียบง่าย (Simplicity)
5. ความเหมาะสมที่สุด (Optimality)
การเขียนคำสั่งและรวมกัน
การเขียนคำสั่ง (Coding) คือ การเขียนคำสั่งต่าง ๆ ของโปรแกรมให้ทำงานเป็นไปตามโครงสร้างข้อมูลและอัลกอริทึมด้วยภาษาเขียนโปรแกรมหนึ่ง ถ้าโครงสร้างข้อมูลและอัลกอริทึมถูกออกแบบไว้เป็นอย่างดีทำให้กระบวนการแปลงคำสั่งจากภาษาเขียนให้เป็นภาษาเครื่องก็จะง่ายไม่ยุ่งยากลำบาก
การรวมกัน (Integration) เป็นกระบวนการนำคำสั่งต่าง ๆ ที่เขียนไว้เป็นแต่ละชุดคำสั่งมารวมกันและให้มีการทำงานร่วมกันได้เป็น
ซอฟต์แวร์โปรแกรมขึ้นมา
การเขียนโปรแกรมที่ดีนั้นจะต้องมีความถูกต้องในการทำงาน สามารถอ่านคำสั่งและทำควรเข้าใจได้ง่าย จึงต้องมีโครงสร้างการเขียนโปรแกรมที่ดี ซึ่งมีวิธีการเข้ามาช่วยเหลือในการเขียนโดยพิจารณาได้จากเรื่องต่อไปนี้
1. การเขียนโปรแกรมควรเป็นแบบบนลงล่าง(Top-Down) โดยเฉพาะกับปัญหาที่มีขนาดใหญ่หรือมีความซับซ้อน จึงควรแยกปัญหาใหญ่ออกเป็นปัญหาย่อย ๆ จากการเขียนคำสั่งทั้งหมดในโปรแกรม ก็แยกเป็นคำสั่งย่อย ๆ
2. ใช้โครงสร้างควบคุมการทำงาน(Control Structure) ในการเขียนโปรแกรมหรือชุดคำสั่ง เช่น การใช้เงื่อนไข IF การใช้วนลูปแบต่าง ๆ
3. ควรใช้ตัวแปรที่เป็นแบบโลคอล (Local Variable) ในการเขียนโปรแกรมหรือชุดคำสั่งเพื่อแก้ปัญหาย่อย
4. ควรใช้ตัวแปรที่เป็นพารามิเตอร์(Parameter) กับชุดคำสั่งเพื่อแก้ไขปัญหาย่อยหลีกเลี่ยงที่จะใช้ตัวแปรที่เป็นแบบโกลบอล (Global Variable) และตัวแปรพารามิเตอร์ควรมีการป้องกันหากมีการถูกแก้ไขค่า
5. นำตัวแปรคงที่ (Constant Variable) มาใช้ จะช่วยให้การเขียนโปรแกรมมีความยืดหยุ่นมากขึ้นและอ่านเข้าใจง่าย
6. การเขียนโปรแกรมควรมีการจัดพื้นที่หรือบรรทัดว่างเพื่อให้อ่านได้สะดวก มีการย่อหน้าเพื่อจัดระดับองคำสั่งและมีลักษณะที่เป็นกรอบ (Block)
การทดสอบความถูกต้อง
1. การตรวจสอบคำสั่ง (Validation) เป็นการตรวจสอบการเขียนโปรแกรมว่ามีความถูกต้องตามโครงสร้างของภาษาและทำงานตรงตามที่ต้องการหรือไม่
2. การตรวจสอบความจริง (Verification) เป็นการตรวจสอบขั้นตอนการทำงานของโปรแกรมว่ามีความถูกต้องและสอดคล้องกันหรือไม่
3. การทดสอบ (Testing) เป็นการตรวจสอบการทำงานว่าในแต่ละส่วนหรือชุดคำสั่งและการทำงานทั้งหมดในโปรแกรมมีความถูกต้องหรือไม่ มีการทดสอบแต่ละยูนิต (Unit Testing) ทดสอบการรวมกันของยูนิต
การดูแลระบบ
หลังจากการพัฒนาซอฟต์แวร์เสร็จสมบูรณ์และนำไปใช้งาน หากมีความต้องการที่จะเปลี่ยนแปลงแก้ไขเพิ่มเติม หรือโปรแกรมมีปัญหาเกิดขึ้น จึงต้องมีการดูแลระบบ (System Maintenance) เพื่อนำกลับมาปรับปรุงแก้ไขใหม่ให้เป็นไปตามความต้องการ
ความหมายโครงสร้างข้อมูล / ชนิดข้อมูล
การทำงานของคอมพิวเตอร์จะมีการจัดการอย่างไรเพื่อให้ได้มาซึ่งข้อมูลข่าวสาร และสามารถนำมาใช้งานออกมาเป็นข้อมูลข่าวสารในรูปแบบต่าง ๆ ที่ทำความเข้าใจได้ แต่เนื่องจากคอมพิวเตอร์เป็นเพียงเครื่องจักรที่ไม่สามารถเข้าใจความหมายของข้อมูลข่าวสารได้เช่นเดียงกับคน จึงมีการกำหนดรูปแบบที่ใช้สื่อความหมายของข้อมูลข่าวสารให้คอมพิวเตอร์กับผู้ใช้งานเข้าใจตรงกันเรียกว่า โครงสร้างข้อมูลหรือชนิดข้อมูล โดยแบ่งออกได้เป็นดังนี้
บิต (Bit)
เป็นหน่วยที่เล็กที่สุดในการทำงานของคอมพิวเตอร์ที่แสดงเป็นสถานะได้ 2 สถานะ คือ เปิดและปิด จึงกำหนดเป็นค่าได้ 2 ค่า คือ 0 กับ 1 เรียกว่าไบนารี่ดิจิต (Binary Digit
ไบต์ (Byte)
เป็นการนำบิตหลาย ๆ บิตมาเรียงต่อกันเพื่อกำหนดค่าได้มากขึ้นเช่น นำ 2บิตมาเรียงต่อกันจะทำให้เกิดสถานะที่ต่างกัน คือ 00,01,10,11จะได้เป็น 4 สถานะ และกำหนดเป็นโครงสร้างข้อมูลที่มีขนาดเล็กที่สุดที่ใช้งานได้ มีค่าตั้งแต่ 0 -255 (00000000 -11111111)
เลขจำนวนเต็ม (Integer)

เป็นการนำบิตหลาย ๆ บิตมาเรียงต่อกันเพื่อกำหนดเป็นเลขจำนวนเต็มซึ่งเป็นระบบเลขฐานสอง โดยแต่ละบิตมีความหมายเป็นเลขยกกำลังสอง เช่น 20 = 1 เลขที่ได้เป็นเลขจำนวนเต็มบอก ถ้าต้องการเป็นเลขจำนวนเต็มลบ จะใช้วิธีการเรียกว่า One – Complement Notation โดยการเปลี่ยนคาของบิตที่เป็น 0 ให้เป็น 1 และค่าที่เป็น 1 ให้เป็น 0 เมื่อนำบิตมาเรียงต่อกัน 16 บิตได้เป็นเลขจำนวนเต็มฐานสิบ
เลขจำนวนจริง(Real Number)
เป็นรูปแบบตัวเลขที่มีเลขทศนิยมเรียกว่า Floating – point Number โดยทำการแบ่งบิตออกเป็นสองส่วน โดบิตที่อยู่ทางด้านซ้ายเก็บค่าเป็นเลขจำนวนเต็มเรียกว่า แมนทิสสา การเก็บค่าเป็นแบบเดียวกับเลขจำนวนเต็ม ส่วนบิตที่อยู่ด้านขวาเก็บค่าเป็นจำนวนหลักของเลขทศนิยมเรียกว่า เอ็กซ์โพเนนท์ การเก็บค่าเลขทศนิยมจะใช้จำนวน 32 บิต โดยแบ่งเป็นแมนมิสสาจำนวน 24 บิต และส่วนที่เป็นเอ็กซ์โพเนนท์จำนวน 8 บิต
ตัวอักษร (Charcter)
เป็นการเก็บค่าที่เป็นตัวอักษร เนื่องจากคอมพิวเตอร์ไม่สามารุเข้าใจจึงให้ตัวเลขจำนวนเต็มสื่อความหมายแทนโดยใช้บิตจำนวน 8 บิต ซึ่งค่าที่ได้จะกำหนดเป็นตัวอักษร 1 ตัว หรือที่เรียกว่ารหัสและที่ใช้เพียง 7 ตัวเรียกว่า รหัสแอสกี (ASCII Code) ใช้ครึ่งเดียวของเอ็บซีดิกแต่การทำงานรวดเร็วกว่า จะนำมาเรียงต่อกันเป็นข้อความ
โครงสร้างข้อมูลเบื้องต้นและโครงสร้างข้อมูลนามธรรม
โครงสร้างข้อมูลมีส่วนสำคัญในระบบคอมพิวเตอร์ ตัวแปรทุกตัวต้องมีการกำหนดชนิดข้อมูลซึ่งอาจเป็นแบบเปิดเผยชัดเจน (Explicitly)หรือปิดบังไว้ (Implicitly) โครงสร้างข้อมูลเหล่านี้จึงมีลักษณะท่งตรรกะ (Logical) หรือ ทางกายภาพ (Physical) ซึ่งแบ่งตามลักษณะวิธีการเก็บข้อมูล

โครงสร้างข้อมูลเบื้องต้น โครงสร้างข้อมูลเรียบง่าย โครงสร้างข้อมูลซับซ้อน การจัดการแฟ้มข้อมูล
เชิงเส้น ไม่เป็นเชิงเส้น
ไบนารี N – อาร์เรย์
เลขจำนวนเต็ม อาร์เรย์ สแตก ไบนารีทรี กราฟ แฟ้มข้อมูลลำดับ
เลขทศนิยม สตริง คิว ไบนารีเสิร์ชทรี ทรี แฟ้มข้อมูลโดยตรง
บูลีน เรคคอร์ด ลิ้งลิสต์ เสิร์ชทรี M – ทาง แฟ้มข้อมูลลำดับเชิงดัชนี
ตัวอักษร บีทรี แฟ้มข้อมูลหลายคีย์
บี*-ทรี,บีพลัส – ทรี
ทราย

1. โครงสร้างข้อมูลเบื้องต้น (Primitive Data Structure) เป็นชนิดข้อมูลที่ไม่มีโครงสร้างข้อมูลอื่นมาเป็นส่วนประกอบ เมื่อต้องการเก็บข้อมูลสามารถเรียกใช้ได้ทันที
โครงสร้างข้อมูลแบบอื่น ๆ จะมีโครงสร้างข้อมูลอื่นเป็นส่วนประกอบ เมื่อต้องการใช้จะต้องกำหนดรูปแบบรายละเอียดโครงสร้างขึ้นมาก่อนเรียกว่าชนิดข้อมูลผู้ใช้กำหนด
2. โครงสร้างข้อมูลเรียบง่าย (Simple Data Structure) จะมีสมาชิกที่เป็นโครงสร้างข้อมูลอื่นเป็นส่วนประกอบ มีรูปแบบไม่ซับซ้อน สามารถทำความเข้าใจและสร้างขึ้นมาใช้งานได้ง่าย
3. โครงสร้างข้อมูลเชิงเส้น (Linear Data Structure) เป็นโครงสร้างที่มีความซับซ้อนมาขึ้น ประกอบด้วยสมาชิกที่เป็นโครงสร้างข้อมูลอื่นจัดเรียงต่อกันเป็นแนวเส้น
4. โครงสร้างข้อมูลไม่เป็นเชิงเส้น (Nonlinear Data Structure) เป็นโครงสร้างที่มีความซับซ้อน ประกอบด้วยสมาชิกที่เป็นโครงสร้างข้อมูลอื่นจัดเรียงกันในรูปแบบไบนารี่ ที่การจัดเรียงสมาชิกมีการแยกออกเป็น 3 ทาง และแบบ N- อาร์เรย์ ที่การจัดเรียงสมาชิกมีการแยกออกได้หลายรูปแบบไม่แน่นอน
5. โครงสร้างการจัดการแฟ้มข้อมูล(File Organization) เป็นโครงสร้างสำหรับนำข้อมูลเก็บไว้ในหน่วยความจำสำรอง โดยข้อมูลจออยู่ในรูปแบบโครงสร้างข้อมูลอื่น และมีวิธีการจัดการโดยนำโครงสร้างข้อมูลอื่น ๆ มาช่วย
โครงสร้างข้อมูลกับภาษาเขียนโปรแกรม
ภาษาเขียนโปรแกรม (Programming Language) ช่วยผู้เขียนโปรแกรม (Programmer) สามารถกำหนดโครงสร้างข้อมูลที่มีความหมายให้กับตัวแปร เนื่องจากตัวโปรแกรมเหล่านั้นต้องเก็บค่าตามลักษณะโครงสร้างข้อมูลที่ได้กำหนดมาและส่วนของกสนปฏิบัติการทีช่วยให้การทำงานกับโครงสร้างข้อมูลมีความถูกต้อง ภาษาเขียนโปรแกรมหลายภาจะมีแนวทางที่แตกต่างกันในการกำหนดโครงสร้างข้อมูลมาให้ใช้

Leave a Reply

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 / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s