240 likes | 461 Views
Data Structure and Algorithm. โครงสร้างข้อมูลและอัลกอริทึม. วัตถุประสงค์ หนังสืออ้างอิง แนวทางการเรียนการสอน และการวัดผล สอบกลางภาค 20 % ปลายภาค 50% โครงงาน 15% อื่น ๆ 15%. Ref: อสังเวียน สิทธิเวช. Data Structure and Algorithm โครงสร้างข้อมูลและอัลกอริทึม.
E N D
Data Structure and Algorithm โครงสร้างข้อมูลและอัลกอริทึม • วัตถุประสงค์ • หนังสืออ้างอิง • แนวทางการเรียนการสอน และการวัดผล • สอบกลางภาค 20% ปลายภาค 50% โครงงาน 15%อื่น ๆ 15% Ref: อสังเวียน สิทธิเวช
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • ชนิดของข้อมูล (Data Type) • ข้อมูลเชิงเดี่ยว • เป็นคุณลักษณะของข้อมูลโดยตรง • ข้อมูลเชิงโครงสร้าง • เป็นลักษณะของการจัดการกลุ่มข้อมูล
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • ข้อมูลเชิงเดี่ยว เป็นลักษณะของข้อมูลโดยตรง ไม่สามารถแยกย่อยได้อีก • จำนวนเต็ม (Integer) • จำนวนจริง (Real) • อักขระ (Character) • ตรรกะ (Logical) • วันที่ (Date) • และอื่น ๆ ขึ้นอยู่กับภาษาของโปรแกรมที่เขียน
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • ข้อมูลเชิงเดี่ยว หมายถึง 3 สิ่ง • ค่าของข้อมูล ตัวเลข ตัวอักษร รูปภาพ • โครงสร้างของข้อมูล ความสัมพันธ์ของข้อมูล • การดำเนินงานของข้อมูล • การกำหนดค่า (assignment) = • การคำนวณ (arithmetic) +, -, *, / • การเปรียบเทียบ (relational) =, <, >, <>, <=,>= • ฟังชั่นที่ใช้ได้ (function) abs, sqrt, round
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • ข้อมูลเชิงโครงสร้าง เป็นโครงสร้างของกลุ่มข้อมูลซึ่งประกอบจากเซตของข้อมูล (component)ซึ่งอาจเป็นข้อมูลเชิงเดี่ยว หรือข้อมูลเชิงโครงสร้างก็ได้ • แถวลำดับ (Array) • ระเบียน (Record) • ไฟล์ (File)
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • วิธีการของข้อมูลแบบคัดย่อ (abstract data type) • ไม่สนใจรายละเอียดว่าจะมีการแทนค่าอย่างไรในหน่วยความจำ (ignore its representation) • ไม่สนใจว่าคอมพิวเตอร์จะดำเนินการอย่างไรเพื่อให้ได้ผลลัพท์ (ignore its implementation) ทำให้เราสร้างข้อมูลอย่างไรก็ได้ตามจินตนาการของเรา สามารถเอาไปใช้ได้ทันที
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • โครงสร้างของข้อมูล แสดงถึงความสัมพันธ์ของข้อมูล • แบบเซต (set) • แบบเชิงเส้น (linear – one to one) • แบบลำดับชั้น(tree/hierarchical – one to many) • แบบกราฟ (graph – many to many)
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • โครงสร้างของข้อมูลแบบ set • โครงสร้างของข้อมูลแบบเชิงเส้น (linear-one to one)
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • โครงสร้างของข้อมูลแบบลำดับชั้น (one to many) • โครงสร้างของข้อมูลแบบกราฟ (many to many)
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การเขียนโปรแกรมแบบโครงสร้าง (Structure programming) • แบบเรียงตามลำดับ (Sequence) • แบบมีการตัดสินใจ (if-then-else) • แบบวงจรปิด (do-while, do-until) • แบบชุดการตัดสินใจ (case)
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การเขียนโปรแกรมแบบโครงสร้าง (Structure programming) • แบบเรียงตามลำดับ (Sequence) a=1 b=2 c=a+b
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การเขียนโปรแกรมแบบโครงสร้าง (Structure programming) • แบบมีการตัดสินใจ (if-then-else) If a=1 then else c=a+b c=b-a
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การเขียนโปรแกรมแบบโครงสร้าง (Structure programming) • แบบวงจรปิด (do-while) ทำขณะเป็นจริง ทดสอบก่อนทำ Do while a < 10 วงจรจะทดสอบค่า a ก่อน ถ้ามีค่าน้อยกว่า 10 จึงจะทำงาน false true a=a+1
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การเขียนโปรแกรมแบบโครงสร้าง (Structure programming) • แบบวงจรปิด (do-until) ทำขณะเป็นเท็จ ตรวจสอบหลังทำ วงจรจะเริ่มทำงานทันทีไม่ว่า a จะมีค่าเท่าใด เมื่อทำเสร็จจึงจะตรวจสอบค่า a ถ้ายังไม่มากกว่า 10 ก็จะกลับไปทำใหม่ จนกว่าค่าจะมากกว่า 10 จริง a=a+1 Do until a > 10 true false
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การเขียนโปรแกรมแบบโครงสร้าง (Structure programming) • แบบชุดการตัดสินใจ (case) case a =1 =2 =3 otherwise คำสั่งนี้จะคล้าย คำสั่ง if ซ้อนกันหลายครั้ง (nested if) คำสั่ง ก คำสั่ง ข คำสั่ง ค คำสั่ง ง
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • รูปแบบของโปรแกรม • Top-down design • เป็นลักษณะเขียนโปรแกรมจากบนลงล่าง ไม่ย้อนกลับไปกลับมา • Sub program/sub routine • กรณีทีต้องทำชุดคำสั่งบางชุดซ้ำ ๆ กันจากเงื่อนไขหลาย ๆ แห่ง ให้ยกชุดคำสั่งนั้นไปเขียนเป็น subprogram หรือ sub routine แล้วเรียกใช้ หากมีการแก้ไขชุดคำสั่งนั้นก็จะได้ทำการแก้ไขเพียงชุดเดียว
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การประเมินผลประสิทธิภาพของโปรแกรม • การใช้เนื้อที่ในหน่วยความจำหลัก • กรณีที่ใช้ตัวแปรค่อนข้างมาก หรือสร้างขนาด array ใหญ่เกินความจำเป็น หรือใช้อัลกอริทึมที่ไม่ถูกต้อง จะทำให้โปรแกรมมีขนาดใหญ่ และเสียเวลาในการประมวลผล • ความเร็วในการประมวลผลอัลกอริทึมของโปรแกรม • การหาค่าใน array ถ้าไม่มีการคำนึงถึงวิธีการหาที่ดีที่สุด จะทำให้การ “วนซ้ำ” ของวงจรมากเกินความจำเป็น ทำให้เสียเวลาในการประมวลผล • การประเมินความเร็วของอัลกอริทึมในรูปของฟังชั่น big-O
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การจัดสรรพื้นที่ในหน่วยความจำ (ในสายตาของนักเขียนโปรแกรม) • รูปแบบเรียงลำดับ (array) Order-lists • รูปแบบพอยน์เตอร์ (pointer) Link-lists
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การจัดสรรพื้นที่ในหน่วยความจำ (ในสายตาของนักเขียนโปรแกรม) เนื้อหา (content)หรือค่าที่เก็บอยู่ในตำแหน่งนั้น ๆ address 5000 5001 5002 5003
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การจัดสรรพื้นที่ในหน่วยความจำ (ในสายตาของนักเขียนโปรแกรม) • รูปแบบเรียงลำดับ (array) Order-lists • การแทนแบบเรียงลำดับ (sequential) • เป็นลักษณะแบบอะเรย์ที่เรียงต่อเนื่องกันไป แต่ละโหนดมี 1 ช่องเก็บข้อมูล • การแทนแบบใช้พ้อยน์เตอร์ (pointer) • เป็นลักษณะการเชื่อมโหนด แต่ละโหนดจะมี 2 ช่อง ช่องแรกเก็บข้อมูล ช่องที่สองเก็บพ้อยน์เตอร์หรือแอดเดรสของโหนดถัดไป โดยจะต้องมีอีกโหนดหนึ่งเรียก headnode เพื่อเก็บแอดเดรสของค่าแรกในลิสต์นั้น ๆ
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การจัดสรรพื้นที่ในหน่วยความจำ • รูปแบบเรียงลำดับ (array) Order-lists • การแทนแบบเรียงลำดับ (sequential) Mon(1) Mon(2) Mon(3) Mon(12)
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การจัดสรรพื้นที่ในหน่วยความจำ • รูปแบบเรียงลำดับ (array) Order-lists • การแทนแบบใช้พ้อยน์เตอร์ (pointer) Head-node
Data Structure and Algorithmโครงสร้างข้อมูลและอัลกอริทึม • การจัดสรรพื้นที่ในหน่วยความจำ (ในสายตาของนักเขียนโปรแกรม) • รูปแบบ Link-lists • เป็นการสร้างการ link โดยผู้ใช้เอง โดยกำหนดเองทั้งข้อมูล และการ link • ข้อมูลแต่ละรายการจะมี link บอกถึงตำแหน่งข้อมูลถัดไป 1 2 3 4 5 6 7 Head-node Data(7) Link(7)