บทที่ 10 การแบ่งปัญหาใหญ่ออกเป็นปัญหาย่อยและการสร้างลำดับขั้นตอนย่อย

Slides:



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

คอมพิวเตอร์ช่วยสอน (CAI)
การเขียนโปรแกรม ภาษาซีเบื้องต้น โดย คุณครูปวีณา แนววงศ์
การเริ่มใช้งาน โปรแกรม นรด. เวอร์ชั่น 2003 และ ติดตั้งโปรแกรม ของ สถานศึกษา การเริ่มใช้งาน โปรแกรม นรด. เวอร์ชั่น 2003 และ ติดตั้งโปรแกรม ของ สถานศึกษา.
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
ระบบจัดการพนักงาน E-Clocking. E-clocking Application คืออะไร E-clocking ย่อมาจากคำว่า Easy Clocking ก็คือทำงานและ ดูแลข้อมูลการบริหารบันทึกเวลาการทำงานของพนักงานแบบ.
โปรแกรมคำนวณคะแนน สหกรณ์ ตามเกณฑ์ดีเด่นแห่งชาติ กรมส่งเสริม สหกรณ์ กองพัฒนาสหกรณ์ด้านการเงิน และร้านค้า วิธีการใ ช้
Adaptive Software Development. วงจรชีวิตของการพัฒนาซอฟแวร์ หรือ Software Development Life Cycle (SDLC) เป็นโครง ร่างหรือแนวทางวิธีการ เพื่อใช้ทำความเข้าใจและเพื่อ.
จัดทำโดย นางสาว อุศนันท์หาดรื่น ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยสยาม ปีการศึกษา 2557.
หลักสูตรการอบรมวิทยากรตัวคูณ ระดับจังหวัด ครั้งที่ 1 ภาคกลางตอนบน ( วันที่สอง ) ณ โรงแรมริชมอนด์ จังหวัดนนทบุรี ระหว่างวันที่ 9 – 11 มีนาคม 2558.
เทคนิคการใช้ Microsoft Excel. 1. การตีตารางในรูปแบบต่าง ๆ 2. การแทรกภาพในตาราง 3. การตกแต่งข้อมูลด้วย Format Cells 4. การคำนวณ บวก ลบ คูณ หาร 5. การย่อ.
วิธีการใ ช้ โปรแกรมคำนวณคะแนน กลุ่มเกษตรกรดีเด่น กองพัฒนาสหกรณ์ด้าน การเงินและร้านค้า กรมส่งเสริม สหกรณ์
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
การจัดกิจกรรมการ เรียนรู้แบบการทำ โครงงานคอมพิวเตอร์ การจัดกิจกรรมการ เรียนรู้แบบการทำ โครงงานคอมพิวเตอร์ ครูชาญณรงค์ ปานเลิศ โรงเรียนพระบางวิทยา ครูชาญณรงค์
การกำจัดขยะ โดยใช้หลัก 3R. มารู้จักหลัก 3R กัน Reduce Reuse Recycle.
สาธิตการใช้โปรแกรมฐานข้อมูล
ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts.
โครงงาน(Project) เรื่อง ระบบร้านเช่าหนังสือออนไลน์
อาจารย์อภิพงศ์ ปิงยศ Lab 05 : Microsoft Excel (Part3) พท 260 เทคโนโลยีสารสนเทศและการสื่อสารทางการท่องเที่ยว อาจารย์อภิพงศ์ ปิงยศ.
การกำจัดขยะ โดยใช้หลัก 3R. มารู้จักหลัก 3R กัน Reduce Reuse Recycle.
เกม คณิตคิดเร็ว.
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การทำ Normalization 14/11/61.
IP-Addressing and Subneting
องค์ประกอบและเทคนิคการทำงาน
บทสรุป ความรู้พื้นฐานเกี่ยวกับระบบฐานข้อมูล
Content Team: คู่มือการป้องกันสินค้าลอกเลียนแบบ 9 July 2015
บทที่ 11 วงจรรายจ่าย.
ACCOUNTING FOR INVENTORY
บทที่ 7 การหาปริพันธ์ (Integration)
การบันทึกรายการค้าในสมุดบัญชี
DC Voltmeter.
การบัญชีต้นทุนช่วง (Process Costing).
Vernier เวอร์เนียร์ คือเครื่องมือที่ใช้วัดระยะ (distance) หรือ ความยาว (length) ให้ได้ค่าอย่างละเอียด เวอร์เนียร์ต่างจากไม้บรรทัดทั่วๆไป เพราะมี 2 สเกล.
กลุ่มคำและประโยค ภาษาไทย ม. ๓
ประเภทแผ่นโปร่งใส (แผ่นใส) รายวิชา ออปแอมป์และลิเนียร์ไอซี
บทที่ 8 เงื่อนไขตัดสินใจ
บทที่ 8 การควบคุมโครงการ
บทที่ 3 แฟ้มข้อมูลและฐานข้อมูล
ข่าวประชาสัมพันธ์สำนักงานเกษตรจังหวัดสุโขทัย
ทำการวิจัยโดย นางรุ่งนภา ทินช่วย
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
กลุ่มสาระการเรียนรู้วิทยาศาสตร์
บริษัท พัฒนาวิชาการ (2535) จำกัด
บทที่ 9 การทำซ้ำ (Loop).
SMS News Distribute Service
บทที่7 ทฤษฎีกราฟเบื้องต้น
ผู้ช่วยศาสตราจารย์จุฑาวุฒิ จันทรมาลี
วัฏจักรหิน วัฏจักรหิน : วัดวาอาราม หินงามบ้านเรา
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
บรรยายครั้งที่ 8 - กราฟฟิกวิศวกรรม 1
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
Storyboard คืออะไร.
บทที่ 7 การประมวลผลอาร์เรย์
Storyboard คืออะไร.
หน่วยการเรียนรู้ที่ 2 การกำหนดประเด็นปัญหา
ค่ารูรับแสง - F/Stop ค่ารูรับแสงที่มีค่าตัวเลขต่ำใกล้เคียง 1 มากเท่าไหร่ ค่าของรูรับแสงนั้นก็ยิ่งมีความกว้างมาก เพราะเราเปรียบเทียบค่าความสว่างที่ 1:1.
กิจกรรมที่ 7 นายปรีชา ขอวางกลาง
บทที่ 10 วงจรรายได้.
Chapter 3 : Array.
ฟังก์ชันของโปรแกรม Computer Game Programming
มหาวิทยาลัยราชภัฏสวนสุนันทา
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
พุทธวิธีในการสอน.
Decision: Single and Double Selection (if and if-else statement)
กำหนดการเชิงเส้น : การแก้ปัญหาด้วยวิธีกราฟ
บทที่ 7 การบัญชีภาษีมูลค่าเพิ่ม
ADDIE model หลักการออกแบบของ
กระดาษทำการ (หลักการและภาคปฏิบัติ)
การใช้ระบบสารสนเทศในการวิเคราะห์ข่าว
ใบสำเนางานนำเสนอ:

บทที่ 10 การแบ่งปัญหาใหญ่ออกเป็นปัญหาย่อยและการสร้างลำดับขั้นตอนย่อย (Dividing main problems into sub problems)

จุดประสงค์การเรียนรู้ เข้าใจความจำเป็นในการแบ่งปัญหาใหญ่เป็นปัญหาย่อย เข้าใจการทำงานแบบฟังก์ชัน (การแก้ปัญหาย่อย) เข้าใจและสามารถแยกฟังก์ชันออกจากปัญหาใหญ่ได้ เข้าใจและสามารถเขียนผังงานแบบมีฟังก์ชันได้

หัวข้อเรื่อง ฟังก์ชันคืออะไร ข้อดีของฟังก์ชัน ตัวอย่าง

ฟังก์ชันคืออะไร ฟังก์ชัน คือ การทำงานในส่วนย่อย ๆ ของงานหลัก ซึ่งงานหลักมักจะ ประกอบไปด้วยส่วนย่อย ๆ นี้หลายส่วน หรืออาจพูดได้ว่า ฟังก์ชัน เกิดจากการแตกปัญหาใหญ่ออกเป็นปัญหา ย่อย ๆ และแก้ปัญหาย่อยออกไปที่ละส่วนจนกว่าจะหมด เพื่อลดความซับซ้อน ของปัญหา และหาข้อผิดพลาดได้ง่าย ที่มา : https://th.wikipedia.org

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

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

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

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

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

ตัวอย่างที่ 2 หาค่ามากสุด และค่าน้อยสุด โปรแกรมสามารถรับตัวเลขได้ 5 จำนวน ส่งตัวเลข 5 จำนวนจากโปรแกรมหลักไปยังฟังก์ชัน 2 ฟังก์ชัน ฟังก์ชันหนึ่งทำการหาค่ามากที่สุดจากข้อมูลทั้ง 5 จำนวน อีกฟังก์ชันหนึ่งทำการหาค่าน้อยที่สุดจากข้อมูล 5 จำนวน สุดท้าย ทั้งสงฟังก์ชันส่งค่ามากที่สุด และค่าน้อยที่สุดที่หาได้ กลับมายัง โปรแกรมหลัก โปรแกรมหลักแสดงผลลัพธ์ที่รับมาจากฟังก์ชัน

2, 5, 90, 8, 12 รับข้อมูลเข้า 5 จำนวน ดังนี้ จากนั้นส่งข้อมูลทั้ง 5 จำนวนไปยังฟังก์ชันสองฟังก์ชัน คือ ฟังก์ชันหาค่าที่มากที่สุด ชื่อฟังก์ชัน max ฟังก์ชันหาค่าที่น้อยที่สุด ชื่อฟังก์ชัน min

เริ่มต้น โปรแกรมหลัก รับค่า n1, n2, n3, n4, n5 รับค่า 2, 5, 90, 8, 12 m = max(n1, n2, n3, n4, n5) m = max(2, 5, 90, 8, 12) n = min(n1, n2, n3, n4, n5) n = min(2, 5, 90, 8, 12) แสดงค่า m, n แสดงค่า m, n สิ้นสุด

ฟังก์ชัน max max(2, 5, 90, 8, 12) temp = 2 2<5 temp = 5 5<90 max(n1, n2, n3, n4, n5) max(2, 5, 90, 8, 12) ฟังก์ชัน max temp = n1 temp = 2 temp<n2 2<5 จริง temp = n2 temp = 5 เท็จ temp<n3 5<90 จริง temp = n3 temp = 90 เท็จ temp<n4 90<8 จริง temp = n4 เท็จ temp<n5 90<12 จริง คืนค่า temp temp = n5 เท็จ คืนค่า 90

ฟังก์ชัน min min(2, 5, 90, 8, 12) temp = 2 2>5 2>90 2>8 min(n1, n2, n3, n4, n5) min(2, 5, 90, 8, 12) ฟังก์ชัน min temp = n1 temp = 2 temp>n2 2>5 จริง temp = n2 เท็จ temp>n3 2>90 จริง temp = n3 เท็จ temp>n4 2>8 จริง temp = n4 เท็จ temp>n5 จริง 2>12 คืนค่า temp temp = n5 คืนค่า 2 เท็จ

เริ่มต้น โปรแกรมหลัก รับค่า n1, n2, n3, n4, n5 รับค่า 2, 5, 90, 8, 12 m = max(n1, n2, n3, n4, n5) m = max(2, 5, 90, 8, 12) n = min(n1, n2, n3, n4, n5) n = min(2, 5, 90, 8, 12) แสดงค่า m, n แสดงค่า 90, 2 สิ้นสุด

ตัวอย่างที่ 3 โรงงานตุ๊กตา เปรียบเทียบโรงงานผลิตตุ๊กตาเป็นโปรแกรมหลัก เปรียบเทียบแผนกเย็บชิ้นส่วนต่าง ๆ เป็นฟังก์ชัน โรงงานประกอบไปด้วยแผนกเย็บชิ้นส่วนต่าง ๆ ของตุ๊กตา คือ ส่วนหัว ส่วนตัว และส่วนเท้า แต่ละแผนกจะเย็บตามรูปแบบที่ถูกกำหนดไว้แล้ว

โรงงานเปิดตัวขึ้นด้วยเงินทุนที่ไม่มากนัก โรงงานผลิตตุ๊กตาแบบเดียวเท่านั้น คือ ตุ๊กตาหมี โรงงาน (โปรแกรมหลัก) จะต้องรับออเดอร์เป็นจำนวนตัวของตุ๊กตา โรงงาน (โปรแกรมหลัก) จะต้องจ่ายงานไปยังแผนก (ฟังก์ชัน) สำหรับเย็บส่วนหัว ส่วนตัว และส่วนเท้า ว่าจะใช้ส่วนต่าง ๆ ในปริมาณเท่าไร โดยจะต้องสั่งดังนี้ Head(1) หมายความว่า สั่งชิ้นส่วนหัว 1 ชิ้น Body(1) หมายความว่า สั่งชิ้นส่วนตัว 1 ชิ้น Foot(2) หมายความว่า สั่งชิ้นส่วนเท้า 2 ชิ้น หรือ 1 คู่ นั่นเอง

เริ่มต้น โรงงาน (โปรแกรมหลัก) รับ Oder Head(Oder) Body(Oder) Foot(Oder*2) สิ้นสุด

แผนกเย็บส่วนหัว (ฟังก์ชัน Head) Head(num) เย็บผ้าให้เป็นรูปหัวตุ๊กตา โดยเว้นช่องเล็กน้อย ใส่ใยสังเคราะห์เข้าไปภายในผ้า เย็บผ้าให้รอบหัวตุ๊กตา ส่งหัวตุ๊กตาให้โรงงานจำนวน num หัว

แผนกเย็บส่วนตัว (ฟังก์ชัน Body) Body(num) เย็บผ้าให้เป็นรูปตัวตุ๊กตา โดยเว้นช่องเล็กน้อย ใส่ใยสังเคราะห์เข้าไปภายในผ้า เย็บผ้าให้รอบตัวตุ๊กตา ส่งตัวตุ๊กตาให้โรงงานจำนวน num ตัว

แผนกเย็บส่วนขา (ฟังก์ชัน Foot) Foot(num) เย็บผ้าให้เป็นรูปเท้าตุ๊กตา โดยเว้นช่องเล็กน้อย ใส่ใยสังเคราะห์เข้าไปภายในผ้า เย็บผ้าให้รอบเท้าตุ๊กตา ส่งเท้าตุ๊กตาให้โรงงานจำนวน num*2 เท้า

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

โดยมีคีย์เวิร์ดในการสั่ง ดังนี้ หัว โรงงาน (โปรแกรมหลัก) จะต้องจ่ายงานไปยังแผนก (ฟังก์ชัน) สำหรับเย็บส่วนหัว ส่วนตัว และส่วนเท้า ว่าจะใช้ส่วนต่าง ๆ ในปริมาณเท่าไร โดยมีคีย์เวิร์ดในการสั่ง ดังนี้ หัว คีย์เวิร์ด Bear Rabbit Dino Robot ตัว เท้า

ตัวอย่างคำสั่งผลิต Head(Rabbit,1) หมายความว่า สั่งผลิตชิ้นส่วนหัวรูปแบบ Rabbit จำนวน 1 ชิ้น Body(Bear,1) หมายความว่า สั่งผลิตชิ้นส่วนหัวรูปแบบ Bear จำนวน 1 ชิ้น Foot(Dino,2) หมายความว่า สั่งผลิตชิ้นส่วนเท้ารูปแบบ Dino จำนวน 2 ชิ้น หรือ 1 คู่

บล็อกคำสั่งสำหรับสร้างฟังก์ชัน ไปที่ Make a Block

เพิ่มข้อมูลเข้าสำหรับฟังก์ชัน ตั้งชื่อฟังก์ชัน เพิ่มข้อมูลเข้าสำหรับฟังก์ชัน

ตั้งชื่อตัวแปรสำหรับรับข้อมูลเข้า เพิ่มจำนวนข้อมูลเข้า และตั้งชื่อตามต้องการ

ผลลัพธ์หลังจากสร้างบล็อคฟังก์ชันเรียบร้อยแล้ว ใส่รายละเอียดภายในฟังก์ชัน

ตัวอย่างการเรียกใช้ฟังก์ชัน

ชมตัวอย่างได้ที่ https://scratch.mit.edu/projects/111957257/

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

โปรแกรมหลัก เริ่มต้น num1,num2,num3 maximum(num1,num2,num3) max minimum(num1,num2,num3) min สิ้นสุด

เริ่มต้น num1,num2,num3 maximum(num1,num2,num3) max minimum(num1,num2,num3) min สิ้นสุด

เริ่มต้น num1,num2,num3 maximum(num1,num2,num3) max minimum(num1,num2,num3) min สิ้นสุด

เริ่มต้น num1,num2,num3 maximum(num1,num2,num3) max minimum(num1,num2,num3) min สิ้นสุด

เริ่มต้น num1,num2,num3 maximum(num1,num2,num3) max minimum(num1,num2,num3) min สิ้นสุด

เริ่มต้น num1,num2,num3 maximum(num1,num2,num3) max minimum(num1,num2,num3) min สิ้นสุด

ฟังก์ชัน maximum maximum(num1,num2,num3) num1>num2 and num1>num3 จริง เท็จ num2>num1 and num2>num3 max = num1 เท็จ จริง max = num3 max = num2 คืนค่า

num1>num2 and num1>num3 maximum(num1,num2,num3) num1>num2 and num1>num3 จริง เท็จ num2>num1 and num2>num3 max = num1 เท็จ จริง max = num3 max = num2 คืนค่า

num1>num2 and num1>num3 maximum(num1,num2,num3) num1>num2 and num1>num3 จริง เท็จ num2>num1 and num2>num3 max = num1 เท็จ จริง max = num3 max = num2 คืนค่า

num1>num2 and num1>num3 maximum(num1,num2,num3) num1>num2 and num1>num3 จริง เท็จ num2>num1 and num2>num3 max = num1 เท็จ จริง max = num3 max = num2 คืนค่า

ฟังก์ชัน minimum minimum(num1,num2,num3) num1<num2 and num1<num3 จริง เท็จ num2<num1 and num2<num3 min = num1 จริง เท็จ min = num3 min = num2 คืนค่า

num1<num2 and num1<num3 minimum(num1,num2,num3) num1<num2 and num1<num3 จริง เท็จ num2<num1 and num2<num3 min = num1 จริง เท็จ min = num3 min = num2 คืนค่า

num1<num2 and num1<num3 minimum(num1,num2,num3) num1<num2 and num1<num3 จริง เท็จ num2<num1 and num2<num3 min = num1 จริง เท็จ min = num3 min = num2 คืนค่า

num1<num2 and num1<num3 minimum(num1,num2,num3) num1<num2 and num1<num3 จริง เท็จ num2<num1 and num2<num3 min = num1 จริง เท็จ min = num3 min = num2 คืนค่า

ชมตัวอย่างได้ที่ https://scratch.mit.edu/projects/111687899/

แหล่งอ้างอิง การเขียนผังงานฟังก์ชัน จาก : http://kanokwan.sru.ac.th/e-learning/11.php ความหมายฟังก์ชันนิยามต่าง ๆ จาก : https://goo.gl/lJzZ54 ตัวอย่างตู้น้ำหยอดเหรียญ กล่องดำ และข้อดีของฟังก์ชัน จาก : สอนให้เก่งและอยากเรียน “คณิตศาสตร์” แปลโดย ดร.อรรณพ เรืองวิเศษ ตัวอย่าง Scratch จาก : https://scratch.mit.edu/