บทที่1ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูล และอัลกอริทึม
ความหมายของข้อมูล
ข้อมูล คือ ข้อเท็จจริงที่มีอยู่ในชีวิตประจำวันเกี่ยวกับบุคคล สิ่งของ หรือ เหตุการณ์ที่สนใจศึกษา ข้อมูลอาจเป็นตัวเลข (numeric) หรืออาจเป็นตัวอักษรหรือข้อความ (alphabetic) และข้อความที่เป็นตัวเลขผสมข้อความ (alphanumeric) นอกจาก นี้ข้อมูลอาจเป็นภาพ (image) หรือ เสียง(sound) ก็ได้
โครงสร้างข้อมูล
1.โครงสร้างข้อมูล (data structures) เกิดจากคำสองคำ คือ โครงสร้าง และ ข้อมูล
2.โครงสร้าง เป็นความสัมพันธ์ระหว่างสมาชิกในกลุ่ม
3.โครงสร้างข้อมูล หมายถึง ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น
ขั้นตอนการพัฒนาโปรแกรม(steps in Program Development )
มี 7 ขั้นตอน ประกอบด้วย
-ขั้นตอนการประเมณผลส่วนหลักๆ
-ส่วนหลักของงานที่ได้มีการแตกย่อย(Subtask)
-ส่วนความสัมพันธ์กับผู้ใช้งาน
-โครงสร้างที่ใช้ควบคุม เช่น การวนซ้ำ หรือการกำหนดทางเลือก
-ตัวแปรและโครงสร้างของเรคอร์ด
-ตรรกะโปรแกรม(Logic)
ตรวจสอบทั้งตรรกะของอัลกอริทึม
ขั้นตอน ตัวแปรหลักและการนำข้อมูลทดสอบเข้าไปประมวลผลในแต่ละ
1.5 เขียนโปรแกรม(Proramming)
1.6 ทดสอบโปรแกรม(Testing)
การจัดทำเอกสารประกอบโปรแกรมจะต้องจัดทำขึ้นตั้งแต่ขั้นตอน การกำหนดปัญหาจนถึงขั้นตอน
สุดท้าย คือการทดสอบผลลัพธ์
เอกสารประกอบโปรแกรมประกอบด้วย
เอกสารภายนอก(External document) เช่น ผังโครงสร้างอัลกอริทึมที่ใช้แก้ปัญหาและผลของการทดสอบข้อมูล
เอกสารภายใน(Internal document) คือ ชุดคำสั่งในโปรมแกรม
การบำรุงรักษาโปรแกรมจะเกี่ยวข้องกับการดูแลและปรับปรุงโปรแกรม
ขั้นตอนการพัฒนาโปรแกรม(steps in Program Development )
มี 7 ขั้นตอน ประกอบด้วย
1.1 กำหนดปัญหา(Define the Problem)
1.2 ร่างรายละเอียดแนวทางการแก้ไขปัญหา(Outline the Solution)
1.3 พัฒนาอัลกอลิทึม(Develop and Algorithm)
1.4 ตรวจสอบความถูกต้องของอัลกอริทึม(Test the Algorithm for Correctness)
1.5 เขียนโปรแกรม(Proramming)
1.6 ทดสอบโปรแกรม(Testing)
1.7 จัดทำเอกสารและบำรุงรักษาโปรแกรม(Document and Maintain the Program)
1.1 กำหนดปัญหา(Define the Problem) ประกอบด้วย
-Input-Outputs-Processing
1.2 ร่างรายละเอียดแนวทางการแก้ไขปัญหา(Outline the Solution)
-การร่างรายละเอียดแนวทางการแก้ไขปัญหาต่างๆประกอบด้วย-แตกงานให้เป็นช้นย่อยๆหรือเป็นขั้นเป็นตอน(หลังจากกำหนดปัญหา)
-ขั้นตอนการประเมณผลส่วนหลักๆ
-ส่วนหลักของงานที่ได้มีการแตกย่อย(Subtask)
-ส่วนความสัมพันธ์กับผู้ใช้งาน
-โครงสร้างที่ใช้ควบคุม เช่น การวนซ้ำ หรือการกำหนดทางเลือก
-ตัวแปรและโครงสร้างของเรคอร์ด
-ตรรกะโปรแกรม(Logic)
1.3 พัฒนาอัลกอลิทึม(Develop and Algorithm)
-ซูโดโค้ดเป็นตัวแทนอัลกอริทึมเพื่อใช้แก้ไขปัญาหาทางคอมพิวเตอร์-ขั้นตอนที่ใช้อธิบายลำดับการทำงาน และหากได้ปฏิบัติตามขั้นตอนของอัลกิริทึมที่ออกมา
1.4 ตรวจสอบความถูกต้องของอัลกอริทึม(Test the Algorithm for Correctness) เป็นขั้นตอนที่สำคัญที่สุด
ตรวจสอบทั้งตรรกะของอัลกอริทึม
ขั้นตอน ตัวแปรหลักและการนำข้อมูลทดสอบเข้าไปประมวลผลในแต่ละ
1.5 เขียนโปรแกรม(Proramming)
-เลือกใช้ภาษาระดับสูงเพื่อใช้เขียนโปรแกรม เช่น c,PASCAL เป็นต้น-นำอัลกอริทึมที่ได้รับการออกแบบอย่างสมบูรณ์มาพัฒนาด้วยการเขียนโปรแกรม(ชุดคำสั่ง)
1.6 ทดสอบโปรแกรม(Testing)
-การตรวจสอบ-นำข้อมูลป้อนเข้าไปเพื่อทดสอบบนเครื่องกับโปรแกรมที่ได้เขียนขึ้นว่าถูกต้องหรือไม่
-รูปแบบชุดคำสั่ง(Syntax Errors)
-โปรแกรม(Logic Errors)
1.7 จัดทำเอกสารและบำรุงรักษาโปรแกรม(Document and Maintain the Program)
การจัดทำเอกสารประกอบโปรแกรมจะต้องจัดทำขึ้นตั้งแต่ขั้นตอน การกำหนดปัญหาจนถึงขั้นตอน
สุดท้าย คือการทดสอบผลลัพธ์
เอกสารประกอบโปรแกรมประกอบด้วย
เอกสารภายนอก(External document) เช่น ผังโครงสร้างอัลกอริทึมที่ใช้แก้ปัญหาและผลของการทดสอบข้อมูล
เอกสารภายใน(Internal document) คือ ชุดคำสั่งในโปรมแกรม
การบำรุงรักษาโปรแกรมจะเกี่ยวข้องกับการดูแลและปรับปรุงโปรแกรม
ข้อมูลและรูปแบบของข้อมูล
ข้อมูลชนิดจำนวนเต็ม (integer)
ข้อมูลชนิดจำนวนจริง (real หรือ floating point)
ข้อมูลชนิดตัวอักขระ (character)
โครงสร้างข้อมูลในภาษาคอมพิวเตอร์
แบ่งเป็น 2 ประเภท คือ
1.โครงสร้างข้อมูลทางกายภาพ (physical data structures)
2.โครงสร้างข้อมูลทางตรรกะ (logical data structures)
โครงสร้างข้อมูลทางกายภาพ
โครงสร้างข้อมูลทางตรรกะ
โครงสร้างข้อมูลทางกายภาพ
เป็นโครงสร้างข้อมูลทั่วไปที่มีใช้ในภาษาคอมพิวเตอร์ ซึ่งแบ่งออกเป็น 2 ประเภทตาม
ลักษณะข้อมูล ดังนี้
1. ข้อมูลเบื้องต้น (primitive data types)
2. ข้อมูลโครงสร้าง (structured data types)
เป็นโครงสร้างข้อมูลที่เกิดจากจินตนาการของผู้ใช้เพื่อใช้แก้ปัญหาในโปรแกรมที่สร้าง
ขึ้น จำแนกได้เป็น 2 ประเภท ดังนี้
1. โครงสร้างข้อมูลแบบเชิงเส้น (linear data structures)
2. โครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น (non-linear data
structures)
โครงสร้างข้อมูลที่ทางกายภาพ
เป็นโครงสร้างข้อมูลที่ใช้โดยทั่วไปในภาษาคอมพิวเตอร์ แบ่งออกเป็น 2 ประเภท ตามลักษณะข้อมูล คือ
1. ชนิดข้อมูลพื้นฐาน (Primitive Data Type) ใช้เก็บค่าพื้นฐานต่าง ๆ เช่น เลขจำนวนเต็ม เลขทศนิยม อักขระ และ ข้อมูลตรรกกะ
2 ข้อมูลโครงสร้าง (Structured Data Types) ได้แก่ แถวลำดับ ระเบียนข้อมูล และ แฟ้มข้อมูล
โครงสร้างข้อมูลทางครรกะ( Logical Data Structure)
วิธีการหาคำตอบโดยไม่ได้ต้องการคำตอบ?!? แต่ เป็นการหาคำตอบโดยให้ได้มาซึ่งวิธีการ ซึ่งฟังดูแล้วอาจจะงงๆอยู่บ้าง อธิบายง่ายๆก็คือ เราจะต้องหาวิธีการเพื่อให้ได้ผลลัพธ์ตามที่เราต้องการ เช่น การเดินทางไปดอยสุเทพ จากตัวเมืองเชียงใหม่สามารถไปโดยวิธีใดได้บ้าง เรารู้คำตอบแล้วคือจุดหมายปลายทางที่เราจะไปถึงนั้นคือดอยสุเทพ แต่วิธีการที่จะไปให้ถึงดอยสุเทพนั้นไปอย่างไร อัลกอริทึ่ม (Algorithm) คือการหาหนทางไปดอยสุเทพ!
คุณสมบัติของอัลกอริทึม
1.การเขียนอัลกอริทึมต้องไม่คลุมเครือ
2.ต้องมีลำดับขั้นตอนที่ชัดเจน
3.กระบวนวิธีการต้องให้ผลลัพธ์ตามที่กำหนดในปัญหา
4.อัลกอริทึมต้องมีจุดสุดท้ายของการทำงาน
การเขียนผังงาน มี 3 แบบ
3. ผังงานแบบการทำงานแบบวนซ้ำ (Repetiton or Loop Flowchart)
คุณสมบัติของอัลกอริทึม
1.การเขียนอัลกอริทึมต้องไม่คลุมเครือ
2.ต้องมีลำดับขั้นตอนที่ชัดเจน
3.กระบวนวิธีการต้องให้ผลลัพธ์ตามที่กำหนดในปัญหา
4.อัลกอริทึมต้องมีจุดสุดท้ายของการทำงาน
วิธีการเขียนอัลกอริทึม
1.ภาษาเขียน คือ การบรรยายเป็นย่อหน้าหรือเป็นข้อๆด้วยภาษาไทยหรือภาษาอังกฤษก็ได้การเขียนผังงาน มี 3 แบบ
1. ผังงานแบบเรียงลำดับ (Sequemce Flowchart)
เป็นการเขียนผังงานแบบง่ายที่สุด ทำงานจากบนลงล่าง ตามลูกศร
2. ผังงานแบบมีทางเลือกหรือแบบมีเงื่อนไข (Selectiom or Condition
Flowchart)
คือตรวจสอบเงื่อนไขถ้าเป็นจริง ก็ทำงานตามเงื่อนไขที่เป็นจริง ถ้าเป็นเท็จก็ทำตาม
เงื่อนไขที่เป็นเท็จ
กรณี 1 ทางเลือก
กรณีที่ 2 แบบ 2 ทางเลือก แล้วแต่ผู้ใช้ว่าถ้าเป็นจริงทำตามเงื่อนไข ถ้าเป็นเท็จจะ
ทำงานหรือไม่
3. ผังงานแบบการทำงานแบบวนซ้ำ (Repetiton or Loop Flowchart)
รหัสจำลองที่เรียกว่า การเขียนซูโดโค้ด (Pseudo Code)
คือการเขียนคำอธิบายขั้นตอนการทำงานของโปรแกรมโดยใช้ถ้อยคำผสมระหว่าง
ภาษาอังกฤษและภาษาการเขียนโปรแกรมแบบโครงสร้างซึ่งจะช่วยให้ผู้เขียน
โปรแกรมสามารถพัฒนาขั้นตอนต่าง ๆ ให้เป็นโปรแกรมได้ง่ายขึ้น ส่วนใหญ่มักใช้คำ
เฉพาะ (Reserve Word)ที่มีในภาษาการเขียนโปรแกรมและมักเขียนด้วยตัวอักษรตัว
ใหญ่ ซูโดโค้ดที่ดี จะต้องมีความชัดเจน สั้น และได้ใจความ ข้อมูลต่าง ๆ ที่ใช้จะ
ถูกเขียนอยู่ในรูปของตัวแปร