ไม่มีชื่อเรื่องภาพนิ่ง

Download Report

Transcript ไม่มีชื่อเรื่องภาพนิ่ง

บทที่ 3-2
การวางแผนการแก้ ปัญหา,
การสร้ างอัลกอริทมึ่ (Algorithm)
1
2. การวางแผนการแก้ ปัญหา
• การสร้ างอัลกอริท่มึ (Algorithm)
เป็ นขันตอนการก
้
าหนดการกระทา (Actions) และ
ลาดับของการกระทา(Orders) เพื่อให้ ได้ ผลลัพธ์
ออกมา โดยเรี ยกรวม ๆ ว่า การสร้ างอัลกอริ ทมึ่ นัน่ เอง
2
การสร้ างอัลกอริท่มึ (Algorithm)
2.1 ภาษาธรรมชาติ (Nature language)
2.2 ผังงาน (Flowchart)
2.3 การเขียนซูโดโคด หรื อ รหัสจาลอง (Pseudo
Code)
2.4 การเขียนโครงสร้ างการทางาน (Structure
Chart)
3
รู ปแบบการเขียนอัลกอริทมึ
2.1 ภาษาธรรมชาติ (Nature language)
ใช้ ภาษาปกติในการเขียนขันตอนการท
้
างาน
โดยยึดหลักการเขียนตามรูปแบบการทางาน
ว่าอะไรบ้ าง ซึง่ อาจจะเขียนเป็ นข้ อ ๆ ก็ได้ เพื่อ
ความสะดวกและเข้ าใจง่าย
4
2.1 ตัวอย่ าง (Nature language)
ตัวอย่ างที่1. จงเขียนอัลกอริ ทมึ เพื่อคานวณหาความยาว
ของที่ดินแปลงหนึง่ โดยทราบค่าพื ้นที่และความกว้ าง
แล้ วแสดงผลทางหน้ าจอ
วิธีทา (1). กาหนดค่าเริ่ มต้ นของความยาวที่ดิน เป็ น 0
(2). รับค่าของข้ อมูลพื ้นที่และความกว้ างของที่ดิน
(3). คานวณค่า ความยาวที่ดนิ = พื ้นที่ / ความกว้ าง
(4). แสดงผลค่าความยาวที่ดนิ ที่ได้ จากการคานวณ
5
ตัวอย่ างที่2. จงเขียนอัลกอริทมึ เพื่อรั บข้ อมูลราคาสินค้ าต่ อหน่ วย และจานวนที่ซือ้
สินค้ านัน้ เพื่อคานวณหาราคาสินค้ ารวม ภายใต้ เงื่อนไขต่ อไปนี ้
ถ้ าซือ้ เป็ นจานวนน้ อยกว่ า 6 ชิน้ ลดราคา 10 %
ถ้ าซือ้ เป็ นจานวนมากกว่ าหรื อเท่ ากับ 6 ชิน้ ลดราคา 15 %
วิธีทา (1). กาหนดค่าเริ่มต้ นของราคาสินค้ ารวม เป็ น 0
(2). รับข้ อมูล ราคาสินค้ าต่ อหน่ วย และจานวนสินค้ าที่ซือ้
(3). เปรี ยบเทียบจานวนสินค้ า
ถ้ าสินค้ ามีน้อยกว่ า 6 ชิน้ ให้ คานวณ
ราคาสินค้ ารวม = (ราคาสินค้ าต่ อหน่ วยxจานวนชิน้ ) x 90/100
ถ้ าสินค้ ามีมากกว่ าหรื อเท่ ากับ 6 ชิน้ ให้ คานวณ
ราคาสินค้ ารวม = (ราคาสินค้ าต่ อหน่ วย xจานวนชิน้ ) x 85/100
(4). แสดงผลราคาสินค้ ารวมที่คานวณได้
6
ตัวอย่ างที่ 3. จงเขียนอัลกอริ ทึมเพื่อรับข้อมูลราคาสิ นค้าต่อหน่วย และ
จานวนที่ซ้ือสิ นค้ามากกว่า 1 รายการสิ นค้า เพื่อคานวณหาราคาสิ นค้ารวม
ภายใต้เงื่อนไขคือ ให้หยุดเมื่อรายการสิ นค้ามากกว่า 10 รายการ
วิธีทา (1). กาหนดค่าเริ่มต้ นของ ราคาสินค้ า และราคาสินค้ ารวม เป็ น 0 และจานวน
รายการเป็ น 0
(2). รับข้ อมูลราคาสินค้ าต่อหน่วย และจานวนสินค้ าที่ซื ้อ
(3). คานวณ เพิ่มจานวนรายการสินค้ า นัน่ คือ
จานวนรายการ = จานวนรายการ + 1
(4). คานวณ ราคาสินค้ า = ราคาสินค้ าต่อหน่วย x จานวนสินค้ า
คานวณสะสม ราคาสินค้ ารวม = ราคาสินค้ ารวม +ราคาสินค้ า
(5). เปรี ยบเทียบจานวนรายการว่ามากกว่า 10 รายการหรื อไม่ ถ้ าไม่ ให้ ทาวน
ข้ อ (2)ใหม่ ถ้ ามากกว่าก็ให้ ทาข้ อ (6)
7
(6). แสดงผลค่าราคาสินค้ ารวม
การสร้ างอัลกอริทมึ่ (Algorithm)
2.1 ผังงาน (Flowchart) คือ แผนภาพแสดงขันตอนของ
้
การทางานตามลาดับก่อนหลังภายใต้ สญ
ั ลักษณ์ที่
กาหนด ซึง่ จะทาภายหลังการวิเคราะห์ปัญหาหรื อ
กาหนดปั ญหาแล้ ว
– ผังงาน เป็ นเครื่ องมือของผู้เขียนโปรแกรมที่ใช้ ในการ
จาลองการวางแผนของโปรแกรม ใช้ แสดงลาดับการ
เคลื่อนที่ของ Input ถูกประมวลผลออกมาเป็ น Output
ตามความต้ องการของผู้ใช้
8
การสร้ างอัลกอริทึ่ม (Algorithm)
2.2. รหัสจาลอง (Pseudo Code) คือ รหัสจาลองช่วยให้
ผู้แก้ ปัญหาทางานได้ สะดวกขึ ้น เขียนได้ ง่ายกว่าผังงาน
และสะดวกในการถ่ายทอดเป็ นคาสัง่ งานในการเขียน
โปรแกรมคอมพิวเตอร์
9
ผังงาน (Flowchart)
• เหตุผลที่ต้องใช้ Flowchart
– เนื่องจากผังงานเป็ นแผนผังหรื อรูปภาพที่แสดงแนวความคิดใช้ ติดต่อ
ประสานงานระหว่างผู้วิเคราะห์ระบบกับผู้เขียนโปรแกรม หรื อผู้เขียน
โปรแกรมกับผู้ใช้ ในการเขียนโปรแกรมให้ เห็นเป็ นภาพพจน์วา่
โปรแกรมจะทางานอย่างไร
– ใช้ เป็ นเอกสารอ้ างอิง เพื่อให้ ผ้ เู ขียนโปรแกรมคนอื่นได้ ทราบ ทังนี
้ ้ผัง
งานที่ดีจะต้ องไม่ขึ ้นกับภาษาใดภาษาหนึง่
– สามารถใช้ ผงั งานในการทดสอบหรื อแก้ ไขการทางานของโปรแกรมได้
โดยยังไม่ต้องลงมือเขียนเป็ นรหัสของเครื่ องหรื อส่งเข้ าทดสอบกับ
เครื่ อง
10
ข้ อเสียของการทาผังงาน(Flowchart)
1. ต้ องใช้ เวลาในการเขียนผังงานมากขึ ้น
2. ผังงานสามารถแสดงให้ เห็นว่า จากข้ อมูลที่เป็ น input ทา
อย่างไรจึงจะออกเป็ น output ได้ แต่ไม่ได้ แสดงว่า ทาไมต้ องมี
เหตุผลที่ทาเช่นนัน้ ดังนันควรมี
้
หมายเหตุอธิบายประกอบ
3. ผังงานเป็ นลักษณะเฉพาะตามแนวความคิดของแต่ละบุคคล
ดังนันผั
้ งงานของเรื่ องเดียวกัน ผู้เขียนแต่ละคนจะเขียนไม่
เหมือนกัน ทาให้ การเขียนโปรแกรมอาจแตกต่างกันไป จึงดู
คล้ ายกับว่าไม่มีกฏเกณฑ์
11
ประเภทของผังงาน
1. ผังงานระบบ (System Flowchart)
เป็ นผังงานที่เขียนขึ ้นมาทาให้ มองเห็นภาพอย่างกว้ าง ๆ จะเห็น
ข้ อมูลแต่ละส่วนของระบบ ผังงานแบบนี ้จะแสดงความสัมพันธ์
ระหว่างบุคคล การทางานเอกสาร และสื่อต่าง ๆ ซึง่ แสดงถึงการ
ไหลของข้ อมูลและข้ อมูลที่เกี่ยวข้ องกันแต่ละแผนกงาน หรื อ
หน่วยงาน อธิบายถึงขันตอนที
้
่จะต้ องทาของแต่ละระบบ
2. ผังงานโปรแกรม (Program Flowchart)
เป็ นการเขียนขึ ้นมาเพื่อทาให้ มองเห็นภาพการทางานของ
โปรแกรม ซึง่ เป็ นส่วนหนึง่ ของระบบ
12
2. ผังงานโปรแกรม (Program Flowchart)
แบ่ งออกเป็ น 2 แบบ
2.1 โมดูลาโปรแกรมโฟล์ชาท (Modular Program Flowchart)
2.2 ดีเทลโปรแกรมโฟล์ชาท (Detail Program Flowchart) หรื อ
ไมโครโฟล์ชาท (Micro Flowchart)
13
2. ผังงานโปรแกรม (Program Flowchart)
2.1 โมดูลาโปรแกรมโฟล์ ชาท (Modular Program Flowchart)
บางครัง้ เรี ยกว่า Block Diagram ในแต่ละ Block จะแสดงการ
ทางานอย่างกว้ าง ๆ ของแต่ละขันของโปรแกรม
้
จะแสดงการ
ทางานของระบบทังระบบแต่
้
ไม่สามารถแสดงรายละเอียด
2.2 ดีเทลโปรแกรมโฟล์ ชาท (Detail Program Flowchart) หรื อไม
โครโฟล์ชาท (Micro Flowchart) ซึง่ จะแสดงทีละขันตอนของการ
้
ทางาน การคานวณ การทดสอบ และการเปรี ยบเทียบในการ
ทางานของปั ญหา ผังงานนี ้จะแสดงให้ การทางานอย่างละเอียด
ของแต่ละขันของระบบ
้
ผังงานนี ้ สามารถทาให้ ผ้ เู ขียนโปรแกรม
สามารถเขียนโปรแกรมได้
14
ประโยชน์ ของผังงาน (Advantage of Flowchart)
1. ทาให้ เข้ าใจและสามารถแยกแยะปั ญหาต่าง ๆ ให้ เข้ าใจได้ งา่ ย
ขึ ้น
2. ทาให้ ผ้ เู ขียนโปรแกรมมองเห็นถึงลาดับขันตอนในการท
้
างาน
3. ช่วยให้ ผ้ อู ื่นสามารถเข้ าใจงานที่ทาขึ ้นได้ งา่ ยกว่าการดูจาก
โปรแกรม
15
สัญลักษณ์ ของผังงาน
• แสดงจุดเริ่มต้ น/สิ ้นสุดของงาน
• กระบวนการ (Process)
• การตัดสินใจ(Decision) ตัดสินเงื่อนไข
• การเตรี ยม(Preparation) กาหนดค่าเริ่มต้ นของการทางาน เซ็ต
ค่าต่าง ๆ
16
สัญลักษณ์ ของผังงาน
• การประมวลผลที่กาหนดไว้ ก่อน (Predefined process)
ใช้ แทนการที่ถกู กาหนดไว้ แล้ ว ณ.จุดใดจุดหนึง่ ในโปรแกรม
เช่นโปรแกรมย่อยเป็ นต้ น หรื อ อาจแสดงถึงกระบวนการ
ประมวลผลชุดใด ๆ ที่ประกอบขึ ้นจากคาสัง่ จานวนหนึ่ง
• การควบคุมด้ วยมือ (Manual Operation)
เป็ นการแสดงถึงการควบคุมการทางานด้ วยมนุษย์เข้ าด้ วย
บางครัง้ เราเรี ยกว่าเป็ น การประมวลผลแบบออฟไลน์ (OFFLINE processing)
• การรวม (Merge)
แสดงถึงการนาเอาเซ็ทของการบันทึกตังแต่
้ 2 ชุดขึ ้นไปมา
รวมกันเป็ นชุดเดียว
17
สัญลักษณ์ ของผังงาน
• การแยก (Extract)
แสดงการแยกชุดของบันทึกที่เกิดจากการรวมหลาย ๆ ชุด
ออกเป็ นชุดที่ต้องการ
• การป้อนอินพุทด้ วยมือ (Manual Input)
เป็ นการควบคุมการป้อนอินพุทด้ วยการใช้ มนุษย์ช่วย
อาจจะเป็ นการกดสวิทช์ของเครื่ อง แสดงถึงการป้อนอินพุท
ในขณะที่เครื่ องกาลังประมวลผลอยู่
• อินพุท/เอาท์ พุท (Input/output)
แสดงถึงการป้อนข่าวสารที่ประมวลผลได้ เข้ าไป หรื อการ
แสดงข่าวสารที่เกิดจากการประมวลผลออกมา
18
สัญลักษณ์ ของผังงาน
• การเก็บแบบออนไลน์ (On-line Storage)
แสดงถึงการใช้ อปุ กรณ์ความจาแบบออนไลน์ในการอินพุท/
เอาท์พทุ เช่น อุปกรณ์ประเภท เทปแม่เหล็ก (Magnetic
Tape) ครัมแม่เหล็ก (Magnetic Drum) หรื อจานแม่เหล็ก
(Magnetic Disk) เป็ นต้ น
• เอกสาร (Document)
แสดงถึงการอินพุท/เอาท์พทุ ข้ อมูลประเภทเอกสารได้
• จานแม่ เหล็ก (Magnetic Disk)
แสดงถึงการอินพุท/เอาท์พทุ ด้ วยจานแม่เหล็ก
19
สัญลักษณ์ ของผังงาน
• การแสดงผล (Display)
การแสดงข่าวสารให้ ทราบในขณะประมวลผล อาจผ่านทาง
อุปกรณ์ใด ๆ เช่น อุปกรณ์จอภาพ หลอดไฟ เครื่ องวาดภาพ
• เส้ นแสดงการไหล (Flow line)
แสดงการเชื่อมต่อระหว่างสัญลักษณ์โฟล์ชาร์ ต 2 สัญลักษณ์
• การทางานแบบขนาน (Parallel Mode)
แสดงการเริ่มหรื อสิ ้นสุดของการทางานตังแต่
้ 2 ชนิดที่เกิดขึ ้น
พร้ อมกัน
• การติดต่ อทางสาย (Communication link)
แสดงถึงการส่งข่าวสารไปตามสายสื่อสาร
20
สัญลักษณ์ ของผังงาน
• คอนเนคเตอร์ (Connector)
แสดงการอินพุท / เอาท์พทุ ของโฟลว์ชาร์ ตที่ที่มาจาก /
ออกไปยังจุดอื่น ๆ
• หมายเหตุ (Comment)
แสดงถึงคาอธิบายเหตุตา่ ง ๆ เพื่อให้ เข้ าใจง่ายขึ ้น
• การขึน้ หน้ าใหม่
ในกรณีที่ผงั งานมีความยาวเกินกว่าที่จะแสดงพอในหนึง่
หน้ า
21
กฏเกณฑ์ ต่าง ๆ เกี่ยวกับ Flowchart
• จากซ้ ายไปขวา
• จากบนลงล่าง
22
กฏเกณฑ์ ต่าง ๆ เกี่ยวกับ Flowchart
 โฟลว์ชาร์ ตประกอบขึ ้นจากเครื่ องหมายสาหรับการเขียนโฟล์ชาร์ ต
ประกอบกับประโยค ที่เขียนไว้ ภายในที่เรี ยกว่า text
23
กฏเกณฑ์ ต่าง ๆ เกี่ยวกับ Flowchart
 ทิศทางการไหลในโฟลว์ชาร์ ต มีกฏว่าต้ องเขียนจากซ้ ายไปขวาหรื อ
จากบนลงล่างจะเขียนลูกศรกากับก็ได้ แต่โดยทัว่ ไปมักไม่เขียนลูกศร
ในกรณีที่มีทิศทางจากบนลงล่าง แต่หากทิศทางกับกับทิศดังกล่าว
เช่น เป็ น จากล่างขึ ้นบน
24
กฏเกณฑ์ ต่าง ๆ เกี่ยวกับ Flowchart
 เส้ นแสดงการ (Flow Line) นันจะตั
้ ดกันที่ใดก็ได้ จากรูป บริเวณจุดตัดตรง
บริเวณรูป A วงกลมที่เป็ น เส้ นไข่ปลา เราสามารถเขียนให้ เข้ าใจง่ายโดย
เขียนในรูป B เพื่อให้ เข้ าใจว่า 2 จุดไม่ได้ ตอ่ ถึงกัน หรื อไม่ก็พยามหลีกเลียง
โดยเขียนให้ อยูใ่ นรูป C แทน
รูป A
รูป B
รูป C
25
กฏเกณฑ์ ต่าง ๆ เกี่ยวกับ Flowchart
 กรณีเป็ นการรวมกันของเส้ นที่แสดงการไหลตังแต่
้ 2 เส้ นขึ ้นไป เราอาจ
นาเส้ นทังหมด
้
มารวมกันเป็ นเส้ นเดียวได้ ดังรูป A หรื อเราจะเขียนดัง
รูป B ก็ได้
รูป A
รูป B
26
กฏเกณฑ์ ต่าง ๆ เกี่ยวกับ Flowchart
 กรณีมีทางออกมากว่าสองทาง สามารถทาโดยการลากเส้ นออกจาก
สัญลักษณ์นนจ
ั ้ านวนเท่ากับที่ต้องการ แล้ วเขียนชื่อหรื อหมายเลข
สาหรับแต่ละทางออกนัน้ ๆ เพื่อแยกความแตกต่างดังรูป
27
กฏเกณฑ์ ต่าง ๆ เกี่ยวกับ Flowchart
• คาอธิบายการทางานนันควรจะให้
้
สนและเข้
ั้
าใจง่ายและควรจะ
เขียนไว้ ในเครื่ องหมายของโฟลว์ชาร์ ตทังหมด
้
• หากต้ องมีคาอธิบายเพิ่มเติม ให้ เขียนไว้ ด้านขวาบนเครื่ องหมาย
โฟลว์ชาร์ ตนัน้
• ในโฟลว์ชาร์ ตนัน้ จะแสดงถึงความสัมพันธ์ระหว่างเวลาที่
เกิดขึ ้น
28
ตัวอย่างการนาผังงานมาใช้ กบ
ั ชีวติ ประจาวัน
ตัวอย่าง 1 จงโยนเหรียญ 5 บาทลงบนพืน
้ หากด้านหัวปรา
กฏจะได้รางวัลเป็ นขนมปัง
แต่หากด้านก้อยปรากฏจะได้
กล้วยหอม ให้เขียนผังงานสาหรับแสดงถึงกรณีดงั กล่าว
เริ่มต้น
โยนเหรียญ 5 บาท
ผลการโยน
ก้อย
หัว
ให้ขนมปัง
ให้กล้วยหอม
จบ
29
30
31
2
32
เริ่ม
เริ่มต้ น
ตัวอย่าง
ผังงานแสดงการเดินข้ามถนน
รอสัญญาณไฟ
ไม่ใช่
ไฟแดงหรือไม่
ใช่
เดินข้ ามถนน
หยุจบ
ด
33
ตัวอย่างผังงานการ
ส่งจม.
34
แบบฝึ กหัด
• ให้ นกั ศึกษาเขียน Flowchart แสดงลาดับเหตุการณ์ใด ๆ ใน
ชีวิตประจาวัน 2 ตัวอย่าง
• ให้ นกั ศึกษาเขียน Flowchart แสดงลาดับการคิดเกรดเฉลี่ยตาม
การวิเคราะห์งานจากบทก่อนหน้ า
• ให้ นกั ศึกษาเขียน Flowchart แสดงลาดับการคิดค่าแรงตามการ
วิเคราะห์งานจากบทก่อนหน้ า
• ให้ นกั ศึกษาหาตัวอย่าง Flowchart โปรแกรมใด ๆ คนละ 2
ตัวอย่าง
35