การเขียนผังงาน - คณะเทคโนโลยีการจัดการ

Download Report

Transcript การเขียนผังงาน - คณะเทคโนโลยีการจัดการ

การเขียนโปรแกรมคอมพิวเตอร์ 1
1
โปรแกรมเมอร์คนแรกของโลก
Augusta Lovelace Ada คือ โปรแกรมเมอร์ คนแรกของโลก แต่ Edsger Wybe Dijkstra ใช้คำ
ว่ำ โปรแกรมเมอร์ (Programmer) กับโลกของคอมพิวเตอร์ เป็ นคนแรก
ข้อมูลจำก http://www.twoguru.com/playground/article/dijkstra.htm
ข้อมูลจำก http://www.cs.utexas.edu/users/dahlin/Classes/GradOS/papers/p341-dijkstra.pdf
ข้อมูลจำก http://www.twoguru.com/playground/article/dijkstra.htm
ข้อมูลจำก http://www.thaiall.com/article/teachpro.htm
โปรแกรมเมอร์คนแรกของโลก
•"what if a calculating engine could not
only foresee but could act on that
foresight"
•(จะเป็ นอย่ำงไร ถ้ำหำกเครื่ องคำนวณไม่
เพียงสำมำรถหยัง่ รู้ได้ หำกแต่สำมำรถ
ตอบสนองต่อกำรหยัง่ รู้น้ นั ได้ดว้ ย)
•สิ่ งที่เธอทำคือ กำรสร้ำงภำษำสำหรับ
เครื่ องวิเครำะห์ (analytical engine)
โปรแกรมเมอร์คนแรกของโลก
•แต่งเพลงที่ซบั ซ้อน
•สร้ำงภำพกรำฟิ ก
•นำมำใช้เพื่อกำรคำนวณขั้นสูง
•พัฒนำวงกำรวิทยำศำสตร์ได้
•ร้ อยกว่ำ ปี ต่ อ มำ ในปี พ.ศ. 2522 (ค.ศ.
1979) กระทรวงกลำโหมสหรั ฐ ฯ สร้ ำ ง
ภำษำคอมพิวเตอร์ มำตรฐำนISO ขึ้นมำตัว
แรก พร้อมตั้งชื่อเพื่อเป็ นเกียรติแก่ เลดี้ เอ
ดำ ว่ำ ภำษำ "ADA"
ภาษาคอมพิวเตอร์
หมายถึง สั ญลักษณ์ ทผี่ ้ ูคดิ พัฒนาภาษากาหนดขึน้ มา
 เพือ
่ ใช้ แทนคาสั่ งสื่ อสารสั่ งงาน ระหว่ างมนุษย์ กบั
เครื่องคอมพิวเตอร์ และอุปกรณ์ ต่อพ่ วงอืน่ ๆ

ภาษาคอมพิวเตอร์มีมากมาย
ข้อมูลจำก http://dmoz.org/Computers/Programming/Languages/ 143 ภำษำ
ข้อมูลจำก http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm 2500 ภำษำ
ข้อมูลจำก http://www.levenez.com/lang/ 50 ภำษำ (Computer Languages Timeline)
ABC, Ada, ADL, Algol 60, Algol 68, APL, AppleScript@,
Assembly, Awk, BASIC, Befunge, BETA, Bigwig, Bistro@,
Blue, Brainfuck, C, C++, Caml@, Cecil, CHILL, Clarion,
Clean, Clipper, CLU, Cobol, CobolScript, Cocoa, Component
Pascal@, C-sharp, Curl, D, DATABUS, Delphi, DOS Batch@,
Dylan, E, Eiffel, ElastiC, Erlang, Euphoria, Forth,
Fortran, Fortress, FP, Frontier, Goedel, Groovy@, Haskell,
HTML@, HTMLScript@, HyperCard@, ICI, Icon, IDL, Intercal,
Io, Jal@, Java, JavaScript, Jovial, LabVIEW, Lagoona@,
LaTeX@, Leda, Limbo, Lisp, Logo@, Lua, m4, Maple@,
Mathematica@, MATLAB@, Mercury, Miranda, Miva, ML, Modula2, Modula-3, Moto, Oberon, Objective Caml@, Objective-C,
Obliq, Occam, Oz, Pascal, Perl, PHP, Pike, PL, Pliant, PLSQL, POP-11, PostScript@, PowerBuilder@, Prograph, Prolog,
Proteus, Python, R@, REBOL, Refal, Rexx, Rigal, RPG, Ruby,
SAS, Sather, Scheme@, Self@, SETL, SGML@, Simkin, Simula,
Sisal, S-Lang, Smalltalk, Snobol, SQL, Squeak@, Tcl-Tk,
Tempo, TeX@, TOM, TRAC, Transcript, Turing, T3X, UML@,
VBScript@, Verilog@, VHDL@, Visual Basic, Visual
DialogScript, Visual FoxPro, Water, XML@, XOTcl@, YAFL,
Yorick, Z
ภาษาคอมพิวเตอร์

สามารถแบ่ งออกได้ เป็ น 5 ยุคคือ
1. ภำษำเครื่ อง (Machine language)
2. ภำษำแอสเซมบลี (Assembly language)
3. ภำษำชั้นสูง (High-level language)หรื อ ภำษำรุ่ นที่ 3
(3GL:Third Generation Language)
4. ภำษำชั้นสูงมำก (Very high-level language)
หรื อภำษำรุ่ นที่ 4 (4GL)
5. ภำษำธรรมชำติ (Natural language) หรื อภำษำรุ่ นที่ 5
(5GL)
1. ภำษำเครื่ อง (Machine language)

เป็ นภำษำพื้นฐำนที่คอมพิวเตอร์ สำมำรถเข้ำใจได้ แต่
ละคำสั่งประกอบขึ้นจำกกลุ่มตัวเลข 0 และ 1 ซึ่ งเป็ น
เลขฐำนสอง
2. ภำษำแอสเซมบลี (Assembly language)

เป็ นภำษำที่ ใ ช้ สั ญ ลัก ษณ์ ข ้อ ควำม แทนกลุ่ ม ของตัว
เลขฐำนสอง เพื่อให้ง่ำยต่อกำรเขียนและกำรจดจำมำกขึ้น
กำรท ำงำนของโปรแกรมจะต้ อ งท ำกำรแปลภำษำ
แอสเซมบลีให้เป็ นภำษำเครื่ อง โดยใช้ตวั แปลที่เ รี ยกว่ำ
แอสเซมเบลอร์ (Assembler)
3. ภำษำชั้นสู ง (High-level language) หรื อภำษำรุ่ นที่ 3
(3GL:Third Generation Language)


ถู ก สร้ ำ งขึ้ น มำเพื่ อ ให้ เ ขี ย นโปรแกรมได้ง่ ำ ยขึ้ น โดยมี ล ัก ษณะเหมื อ นกับ
ภำษำอังกฤษทัว่ ไป ผูเ้ ขียนไม่จำเป็ นต้องมี ควำมรู ้ เกี่ ยวกับฮำร์ แวร์ แต่อย่ำงใด
ภำษำนี้ จำเป็ นต้องมีตวั แปลภำษำเครื่ องเช่นกัน เรี ยกตัวแปลนี้ ว่ำ คอมไพเลอร์
(compiler) หรื อ อินเตอร์พรี เตอร์ (Interpreter) อย่ำงใดอย่ำงหนึ่ง
ตัวอย่ำงของภำษำชั้นสู ง เช่ น ภำษำปำสคำล ภำษำซี ภำษโคบอล ภำษำเบสิ ก
ภำษำฟอร์แทรน
4. ภำษำชั้นสู งมำก (Very high-level language) หรื อภำษำรุ่ นที่ 4 (4GL)
เป็ นภำษำที่มีลกั ษณะคล้ำยภำษำพูดตำมปกติของมนุ ษย์ ภำษำนี้
จะช่ ว ยให้ ก ำรเขี ย นโปรแกรมเร็ ว มำกขึ้ น กว่ำ ภำษำในรุ่ น ที่ 3
เนื่ องจำกมี เครื่ องมื อที่ ช่วยในกำรสร้ ำงแบบฟอร์ มหน้ำจอ เพื่อ
จัดกำรกับข้อมูลรวมไปถึงกำรออกรำยงำน เมนูต่ำง ๆ
 ตัวอย่ำงของภำษำชั้นสู งมำกได้แก่ informix-4GL, MAGIC ,
Delphi , Power Builder ฯลฯ

5. ภำษำธรรมชำติ (Natural language) หรื อภำษำรุ่ นที่ 5 (5GL)
เป็ นภำษำที่สำมำรถสั่งงำนคอมพิวเตอร์ โดยใช้รูปแบบของภำษำ
มนุ ษ ย์ ไ ด้ เ ลย ค ำสั่ ง อยู่ ใ นรู ปแบบที่ ไ ม่ แ น่ น อนตำยตัว แต่
คอมพิวเตอร์ จะทำกำรแปลให้ออกมำในรู ปที่คอมพิวเตอร์ เข้ำใจ
ได้ ภำษำนี้ ถู ก สร้ ำ งขึ้ นมำจำกเทคโนโลยี ท ำงด้ ำ นระบบ
ผูเ้ ชี่ยวชำญ (Expert system)
 ตัวอย่ำงภำษำในรุ่ นที่ 5 ได้แก่ ภำษำ PROLOG เป็ นต้น

ขั้นตอนกำรเขียนโปรแกรมคอมพิวเตอร์
13
 กำรวิเครำะห์ปัญหำ (Problem analysis)
 กำรออกแบบโปรแกรม (Design)
 กำรเขียนโปรแกรมโดยใช้ภำษำใดภำษำหนึ่ ง (Coding)
 กำรตรวจสอบข้อผิดพลำดของโปรแกรม (Testing and Debugging )
 กำรทดสอบควำมถูกต้องของโปรแกรม (Testing and validating)
 กำรทำเอกสำรประกอบโปรแกรม (Documentation)
 กำรบำรุ งรักษำโปรแกรม (Program Maintenance)
กำรวิเครำะห์ปัญหำ
14

สิ่ งที่ตอ้ งพิจำรณำ
Input ? (พิจำรณำจำก Output)
Output? (พิจำรณำอันดับแรก)
Process (ยังไม่ตอ
้ งสนใจตอนนี้)
Input
Input
2
Process
3
Output
1
แนวควำมคิดเบื้องต้นกำรวิเครำะห์ปัญหำ
15

กำรวิเครำะห์ปัญหำ
วิเคราะห์ ผลลัพธ์
วิเคราะห์ Input
Process
เขียนขั้นตอนการแก้ ปัญหา
กำรออกแบบโปรแกรม
16

เครื่ องมือที่ใช้ในกำรออกแบบ
ผังงำน (Flowchart) ขั้นตอนกำรแก้ปัญหำทีละขั้นตอน
ในลักษณะรู ปภำพ
รหัสจำลอง (Pseudo) รู ปแบบเป็ นภำษำพูดง่ำย ๆ
ภำษำอังกฤษ หรื อภำษำไทยก็ได้
กำรพัฒนำอัลกอริ ธึม
17
ข้อดีของรหัสเทียม (จำลอง)
แปลงเป็ นโปรแกรมได้ง่ำย
 ข้อดีของผังงำน
อ่ำนง่ำย เข้ำใจตรงกันได้

สัปดาห์ ที่ ๑
ขั้นตอนการวิเคราะห์งาน
๑ การหาวัตถุประสงค์ ของการเขียนโปรแกรม
๒ การหารู ปแบบผลลัพธ์ ทตี่ ้ องการ
๓ การหาข้ อมูลนาเข้ าของโปรแกรม
๔ การหาตัวแปรทีจ่ าเป็ นต้ องใช้ ในโปแกรม
๕ การหาขั้นตอนวิธีการทางานของโปรแกรม
๑ การหาวัตถุประสงค์ ของการเขียนโปรแกรม
ผูเ้ ขียนโปรแกรมจะต้องหำวัตถุประสงค์จำกงำนที่ตอ้ งกำรเขียน
โปรแกรม ว่ำงำนต้องกำรแก้ปัญหำอะไรบ้ำง เช่น
ต้องกำรหำพื้นที่สำมเหลี่ยมมุมฉำกโดยรับค่ำทำงแป้ นพิมพ์
วัตถุประสงค์
เพื่อคำนวณหำพื้นที่สำมเหลี่ยม
สู ง
ฐำน
๒ การหารูปแบบผลลัพธ์ของโปรแกรม
เมื่อผูเ้ ขียนโปรแกรมหำวัตถุประสงค์จำกงำนที่ตอ้ งกำรเขียน
โปรแกรมเรี ยบร้อยแล้ว ก็มำทำกำรออกแบบผลลัพธ์ของ
โปรแกรม ตำมควำมต้องกำรของงำน
เช่ น
กรุณาป้อน ค่ าความสู ง =
ค่ าฐาน =
พืน้ ที่สามเหลีย่ ม =
วิชา
สู ง
รับค่ำทำงแป้ นพิมพ์
ฐำน
13-100-152 กำรเขียนโปรแกรมคอมพิวเตอร์ (Computer Programming ) (2-2-3)
บรรยำยโดย อำจำรย์ สุวฒ
ุ ิ ตุม้ ทอง
สัปดาห์ ที่ ๑
๓ การหาข้อมูลนาเข้าของโปรแกรม
ผูเ้ ขียนโปรแกรมจะต้องหำข้อมูลนำเข้ำ จำกผลลัพธ์ของโปรแกรม
โดยคำนึงถึงวิธีกำรคำนวณ และข้อมูลที่ใช้ เพื่อให้ได้ผลลัพธ์เช่น
ผลลัพธ์ ต้องการ พืน้ ทีส่ ามเหลีย่ มมุมฉาก
ข้ อมูลทีห่ าและเตรียม ประกอบด้ วย
สู ง
๑ สู ตรการคานวณพืน้ ที่ = 0.5 X ฐาน X สู ง
๒ ค่ าความยาวของฐาน และ ค่ าความสู ง
ฐำน
สัปดาห์ ที่ ๑
๔ การหาตัวแปรทีจ่ าเป็ นต้ องใช้ ในโปแกรม
ผูเ้ ขียนโปรแกรมจะต้องกำหนดชื่อตัวแปรสำหรับใช้เป็ นที่เก็บข้อมูล
ทั้งหมดของโปรแกรม ซึ่ งรวมทั้งจำนวนรอบกำรทำงำนของโปรแกรมด้วย
กฏการตั้งชื่อตัวแปร
๑ ชื่อตัวแปรจะต้ องขึน้ ต้ นด้ วยตัวอักษร ตัวต่ อไปอาจเป็ นตัวอักษรหรือตัวเลข
ก็ได้ แต่ จะต้ องไม่ มีเครื่องหมาย บวก(+) ลบ(-) คูณ(*) หาร (/) หารเอาเศษ(%)
และเครื่องเว้ นวรรค (Blank) เช่ น A+5
๒ ความยาวของตัวแปรและตัวอักษรตัวเล็กตัวใหญ่ กแ็ ตกต่ างกัน
๓ ซื่อตัวแปรต้ องไม่ ซ้าคาสงวน เช่ น For , If
๔ ชื่อตัวแปรควรตั้งให้ สื่อความหมาย เช่ น ความยาวฐาน = Base
๕ การหาขั้นตอนวิธีการทางานของโปรแกรม
ขั้นตอนนี้หำวิธีกำรทำงำนของโปรแกรม หรื อเรี ยกว่ำ อัลกอริ ทึม
( Algorithm)โดยจะขึ้นอยู่กบั ลักษณะงำนโดยที่ผูเ้ ขียนจะต้องมี
ควำมเข้ำใจในงำนที่วิเครำะห์ ถ้ำผูเ้ ขียนสำมำรถกำหนดขั้นตอน
วิธีกำรทำงำนของโปรแกรมอย่ำงละเอียด และ ถูกต้องแล้วจะทำ
ให้กำรเขียนโปรแกรมด้วยภำษำจะทำง่ำยขึ้น เช่น
ขั้นตอนวิธีการทางานของ
โปรแกรมการหาพืน้ ทีส่ ามเหลีย่ มมุมฉากป้อนค่ าทางแป้นพิมพ์
๕ การหาขั้นตอนวิธีการทางานของโปรแกรม
ขั้นตอนวิธีการทางานของ (อัลกอริทึม )
โปรแกรมการหาพืน้ ทีส่ ามเหลีย่ มมุมฉากป้อนค่ าทางแป้นพิมพ์
๑ เริ่มต้ นโปรแกรม
๒ กาหนดค่ าให้ กบั ตัวแปร
๓ รับข้ อมูลค่ าฐาน ค่ าความสู ง จากแป้นพิมพ์
๔ คานวณพืน้ ทีส่ ามเหลีย่ มมุมฉาก
๕ แสดงค่ าผลลัพธ์ ทางจอภาพ
๖ จบโปรแกรม
นักศึกษาจงเขียนขั้นตอนการวิเคราะห์ งานทั้ง ๕ ขั้นตอน
แบบฝึ กหัดครั้งที่ ๑
 จงเขียนขั้นตอนการวิเคราะห์ งานโปรแกรมการคานวณ
พืน้ ที่ วงกลม โดยรับค่ ารัศมีจากแป้ นพิมพ์ โดยแสดงการ
วิเคราะห์ ทลี ะขั้นตอนอย่ างละเอียด
การเขียนผังงาน ( Flowchart)
ควำมหมำย
แผนภำพที่เขียนขึ้นโดยใช้สญ
ั ลักษณ์มำตรฐำนเพื่อแสดง
ขั้นตอนวิธีกำรทำงำนของโปรแกรม หรื อระบบงำนที่ตอ้ งกำร
ประเภทของผังงำน
๑ ผังงำนระบบ (System Flowchart) ผังงำนที่แสดงถึงขึ้น
ตอนกำรทำงำนของระบบ ให้เห็นในภำพรวมอย่ำงกว้ำงๆ
๒ ผังงำนโปรแกรม (Program Flowchart) ผังงำนที่แสดงถึง
ขึ้นตอนกำรทำงำนของระบบ อย่ำงละเอียดซึ่งสำมำรถนำเอำผัง
งำนมำเขียนโปรแกรมตำมที่ตอ้ งกำรได้
สัญลักษณ์ในผังงำน
จุดเริ่มต้ น หรือสิ้นสุ ด
อ่ านข้ อมูลเข้ า หรือแสดงผล
แฟ้มข้ อมูล
จุดเชื่อมต่ อในหน้ าอืน่
จุดเชื่อมต่ อในหน้ าเดียวกัน
ประมวลผล
ตัดสิ นใจ
แสดงผลทางหน้ าจอ
27
โปรแกรมย่อย
พิมพ์ผลทางเครื่องพิมพ์
แสดงทิศทางการประมวลผล
สั ญลักษณ์ มาตรฐานที่ใช้ เขียนผังงานโปรแกรม
สั ญลักษณ์ Process
Process คือ การกาหนดค่ า หรือการคานวณค่ า
ตัวอย่ าง
สู ตรการคานวณพืน้ ที่
A= 0.5 * H * B
สั ญลักษณ์ มาตรฐานทีใ่ ช้ เขียนผังงานโปรแกรม
สั ญลักษณ์ Decision
Decision คือ การทดสอบเงื่อนไขหรือเปรียบเทียบเงื่อนไข
เพือ่ ตัดสิ นใจทางานอย่ างใดอย่ างหนึ่ง
ตัวอย่ าง การตัดสิ นใจเลือก ๑ ทาง
False
True
X>Y
X=X+2
สั ญลักษณ์ มาตรฐานที่ใช้ เขียนผังงานโปรแกรม
สั ญลักษณ์ Decision
Decision คือ การทดสอบเงื่อนไขหรือเปรียบเทียบ
เงื่อนไขเพือ่ ตัดสิ นใจทางานอย่ างใดอย่ างหนึ่ง
ตัวอย่ าง การตัดสิ นใจเลือก ๒ ทาง
False
True
X>Y
X=X+2
Y=X+1
สั ญลักษณ์ มาตรฐานทีใ่ ช้ เขียนผังงานโปรแกรม
สั ญลักษณ์ Start / Stop Program OR Terminal Interrupt
คือ การเริ่มต้ นโปรแกรมหรือสิ้นสุ ดการทางานโปรแกรม
หรือการหยุดชั่วคราว
ตัวอย่ าง การใช้ งาน
Start
Stop
Pause
สั ญลักษณ์ มาตรฐานทีใ่ ช้ เขียนผังงานโปรแกรม
สั ญลักษณ์ Input / Output
Input / Output คือ การรับข้ อมูล หรือ การแสดงผลลัพธ์
โดยไม่ ได้ ระบุสื่อทีใ่ ช้
ตัวอย่ าง การใช้ งาน
Print P,O,M
Input P,O,M
สั ญลักษณ์ มาตรฐานทีใ่ ช้ เขียนผังงานโปรแกรม
สัญลักษณ์ Display
Display คือ กำรแสดงผลลัพธ์ทำงจอภำพ
ตัวอย่ำง กำรใช้งำน
Display P,O,M
สั ญลักษณ์ มาตรฐานทีใ่ ช้ เขียนผังงานโปรแกรม
สั ญลักษณ์ Document
Document คือ การพิมพ์ผลลัพธ์ ออกทางกระดาษพิมพ์
ตัวอย่ าง การใช้ งาน
Print P,O,M
สั ญลักษณ์ มาตรฐานทีใ่ ช้ เขียนผังงานโปรแกรม
สั ญลักษณ์ Manual Input
Manual Input คือ การรับข้ อมูลหรือคาสั่ งผ่านทางคีย์บอร์ ด
ตัวอย่ าง การใช้ งาน
Input x,y
สั ญลักษณ์ มาตรฐานที่ใช้ เขียนผังงานโปรแกรม
สั ญลักษณ์ Connector
Connector คือ แสดงจุดเชื่อมต่ อจากทีห่ นึ่งไปยังอีกที่หนึ่ง
ของผังงาน โดยทีจ่ ุดเชื่อมต่ อนีอ้ ยู่ในหน้ าเดียวกัน
ตัวอย่ าง การใช้ งาน
X = x+1
A
สั ญลักษณ์ มาตรฐานทีใ่ ช้ เขียนผังงานโปรแกรม
สั ญลักษณ์ Off page Connector
Off page Connector คือ แสดงจุดเชื่อมต่ อจากที่
หนึ่งไปยังอีกทีห่ นึ่งของผังงาน โดยทีจ่ ุดเชื่อมต่ อนีอ้ ยู่ต่าง
หน้ ากัน
ตัวอย่ าง การใช้ งาน
X = x+1
A
สั ญลักษณ์ มาตรฐานทีใ่ ช้ เขียนผังงานโปรแกรม
สั ญลักษณ์ Flow line and arrowheads
คือ แสดงทิศทางการทางานของผังงาน โดยใช้
ลูกศรเป็ นตัวกาหนดทิศทางการทางานของผังงาน
ตัวอย่ าง การใช้ งาน
X = x+1
A
หลักการเขียนผังงานโปรแกรม
เขียนผังงำนจำกด้ำนบนลงด้ำนล่ำง
ใช้สญ
ั ลักษณ์ให้ตรงกับควำมหมำยของผังงำน
ใช้เส้น Flow line and arrowheads แสดงทิศทำงกำรทำงำนของผังงำน
ใส่ คำอธิบำยในสัญลักษณ์ส้ นั ๆ แต่เข้ำใจง่ำย จะใช้ภำษำไทยหรื อ
ภำษำอังกฤษก็ได้
หลีกเลียงกำรโยงเส้นทิศทำงของผังงำน ควรใช้จุดเชื่อมต่อหน้ำ
เดียวกันแทน
พยำยำมเขียนผังงำนให้จบในหน้ำเดียวกัน ถ้ำไม่จบควรใช้จุดต่อหน้ำ
ขั้นตอนการเขียนผังงานโปรแกรม
จงเขียนผังงานโปรแกรม จากการวิเคราะห์ งาน ซึ่งมีข้นั ตอนวิธีการทางาน
(อัลกอริทึม) ดังนี้
 เริ่ มต้นทำงำน
 รับข้อมูลค่ำควำมยำวและควำมกว้ำงของสี่ เหลี่ยมผืนผ้ำผ่ำนทำง
คียบ์ อร์ด
 คำนวณพื้นที่สี่เหลี่ยผืนผ้ำตำมสู ตร Area = Width*Length
 พิมพ์ค่ำควำมยำว ควำมกว้ำง และพื้นที่สี่เหลี่ยมออกทำงจอภำพ
 จบกำรทำงำน
ขั้นตอนการเขียนผังงานโปรแกรม
เริ่ มต้นทำงำน
รับข้อมูล Width, Length
คำนวณ Area = Width*Length
พิมพ์ Width, Length
จบกำรทำงำน
นักศึกษาจงเขียนผังงานโปรแกรม
แบบฝึ กหัดครั้งที่ ๒
 จงเขียนผังงำนโปรแกรมกำรคำนวณพื้นที่ วงกลม
โดยรับค่ำรัศมีจำกแป้ นพิมพ์ พร้อมกำรอธิ บำย
กำรพัฒนำอัลกอริ ธึม
43

หลักกำรโครงสร้ำงควบคุม (Control structures)
กำรเขียนขั้นตอนในรำยละเอียดของแต่ละอัลกอริ ธึม อำศัย
โครงสร้ำงควบคุมดังนี้
โครงสร้ำงลำดับ (Sequence structure)
โครงสร้ำงตัดสิ นใจ (Selection structure)
โครงสร้ำงทำซ้ ำ (Repetition structure)
กำรพัฒนำอัลกอริ ธึม
44

โครงสร้ างลาดับ
 หมำยถึง งำนที่ตอ
้ งทำต้องมีลำดับก่อนหลัง
 เช่น
อัลกอริ ธึม “กำรตื่นนอนต้อนรับวันใหม่”
งำน ตื่นนอน
งำน ถอดชุดนอน
งำน เข้ำห้องน้ ำ
งำน แต่งตัว
งำน เดินทำงมำเรี ยน
ต้องจัดลำดับให้ถูกต้อง
งำน ตื่นนอน
งำน ถอดชุดนอน
งำน เข้ำห้องน้ ำ
งำน แต่งตัว
งำน เดินทำงมำเรี ยน
โครงสร้ำงกำรทำงำนแบบลำดับ (Sequence)
45

โครงสร้างลาดับ
 หลักการให้มองงานเป็ นชิ้ นใหญ่ก่อน ยังไม่ตอ
้ งลงรายละเอียด แล้ว
จัดลาดับความคิดว่าจะทาอะไร ก่อนหรือหลัง ตามลาดับ
งาน 1
งาน 2
ผังงาน
Begin
งำน 1
งำน 2
end
รหั สเทียม
ตัวอย่ำงกำรเขียนผังงำน
46

จงเขียนผังงำนที่แสดงลำดับกำรคำนวณตัวเลข เพื่อหำผลลัพธ์
กำรคำนวณ แล้วเก็บผลลัพธ์ไว้ในหน่วยควำมจำตำแหน่ง K
8 + 10 / 5 - 6 * 3
โดยมีลำดับกำรคำนวณทำงเลขคณิ ต ดังนี้
1. ยกกำลัง
2. คูณหรื อหำร (โดยทำจำกซ้ำยไปขวำ)
3. บวกหรื อลบ (โดยทำจำกซ้ำยไปขวำ)
ตัวอย่ำงกำรเขียนผังงำน
47
เริ่ มต้น
T1 = 10 / 5
T2 = 6 * 3
1
1
T3 = 8 + T1
K = T3 - T2
จบงำน
กำรพัฒนำอัลกอริ ธึม
48
example: จงเขียนโปรแกรมคำนวณหำค่ำ y ของสมกำร
y = x^2 + 2x +10
start
Begin
Read x
read x
y = x*x + 2*x +10
Y = x*x + 2*x +10
Write y
Write y
end
stop
ผังงาน
รหั สเทียม
จงเขียนผังงานคานวณการหาพื้ นที่สี่เหลี่ยมคางหมู โดย
กาหนดค่าความยาวด้านคู่ขนานและความสูงให้
49
เริ่ มต้น
1
อ่ำนควำมยำวด้ำน
คู่ขนำนและควำมสู ง
พิมพ์ค่ำพื้นที่
คำนวณหำพื้นที่คำงหมู =
½ * ด้ำนคู่ขนำน * สูง
1
จบงำน
กำรพัฒนำอัลกอริ ธึม
50

โครงสร้างตัดสินใจ (selection)
IF
 โครงสร้าง IF else
 โครงสร้าง
การพัฒนาอัลกอริธึม
51

โครงสร้าง IF
 เป็ นโครงสร้างที่ทดสอบเงื่อนไข
แล้วเลือกว่าจะทาหรือไม่ทา ก่อนที่จะ
ไปทางานอื่นต่อไป
ใช่
เงือ่ นไข
ไม่ ใช่
งานต่ อไป
งานที่ต้องทา
การพัฒนาอัลกอริธึม
52

ตัวอย่าง โครงสร้าง IF
 แม่ถามว่าหิวข้าวหรือไม่ ถ้าหิวก็ให้กิน
เดินทางไปโรงเรียน (งานต่อไป)
หิวใช่ ไหม?
ไม่ ใช่
ถ้าไม่หิวไม่ตอ้ งกิน แล้วจึง
ใช่
งานเดินทางมาเรียน
งานกินข้ าว
ตัวอย่ำงกำรเขียนผังงำน

จงเขียนผังงานแสดงการเขียนและส่งจดหมาย
53
เริ่มต้ น
เขียนจดหมาย
1
มี
มีแสตมป์ หรือไม่
พับจดหมาย
ทาการซื้อแสตมป์
ใส่ ซองจดหมาย
ติดแสตมป์
จ่ าหน้ าซอง
1
ไม่ มี
ส่ งจดหมาย
จบงาน
การพัฒนาอัลกอริธึม
54

ตัวอย่ำง โครงสร้ำง IF
จงเขียนผังงำน แสดงยอดขำย ถ้ำซื้ อสิ นค้ำมำกกว่ำ 1000 บำท
มีส่วนลดให้ 10%
วิธีคิด:
Output คือยอดขำยสุ ทธิ
Input คือ ยอดขำยก่อนหักส่ วนลด
Process มีรำยละเอียดเขียนด้วยผังงำนได้ในหน้ำถัดไป
start
การพัฒนาอัลกอริธึม
Read total

ตัวอย่ำง(ต่อ) โครงสร้ำง IF
Begin
read total
discount = 0
if (total >1000) then
discount = total *10/100
end if
netTotal = total – discount
Write netTotal
End
รหั สเทียม
Discount = 0
no
yes
Total >1000
Discount = total * 10/100
NetTotal = total - discount
Write NetTotal
End
ผังงาน
55
การพัฒนาอัลกอริธึม
56

โครงสร้าง IF-else
ไม่ใช่
งำน 2
เงื่อนไข
ใช่
งำน 1
If เงื่อนไข
งำน 1
Else
งำน 2
End if
การพัฒนาอัลกอริธึม
57

โครงสร้ำง IF-Else
ตัวอย่ำง ร้ ำนค้ำแห่ งหนึ่ งมี นโยบำย ลดรำคำให้ลูกค้ำ ถ้ำเป็ น
ชำยจะลดให้ 5% แต่ถำ้ เป็ นหญิง จะลดให้ 10% จงเขียน
อัลกอริ ธึมเพื่อพิมพ์ยอดขำย
วิเครำะห์ปัญหำ
Output คือ รำคำสุ ทธิ กำหนดให้เป็ น netTotal
Input คือ รำคำสิ นค้ำ และ เพศ กำหนดให้เป็ น total และ
sex ตำมลำดับ
Process เขียนด้วยผังงำน ดังในหน้ำต่อไป
start
IF-ELSE
Read total, sex
58
discount= 0
no
Sex = ‘M’
discount = total * 0.1
yes
discount = total * 0.05
netTotal = total - discount
Write netTotal
End
โครงสร้างการทางานแบบมีการเลือก (Selection)
ในบริ เวณ A และ B ของหน่วยควำมจำมี
ตัวเลขเก็บอยู่ จงเขียนผังงำนที่แสดงกำร
เปรี ยบเทียบระหว่ำง A และ B
ตำมเงื่อนไข ดังนี้
ถ้ำ A>B คำนวณ A-B นำผลที่ได้ไปเก็บไว้ที่
C
ถ้ำ A<B คำนวณ A+B นำผลที่ได้ไปเก็บไว้
ที่ C
ถ้ำ A=B เอำ ไปเก็บไว้ที่ C
เริ่มต้ น
ใช่
C=A-B
A>B
ไม่ใช่
A<B
ไม่ใช่
C=A
จบงาน
ใช่
C=A+B
ตัวอย่างการเขียนผังงาน
60
เมื่อเรำซื้อยำจำกร้ำนขำยยำที่มีอยูท่ วั่ ๆ ไปนั้น ในส่ วนของวิธีใช้ยำมักจะแยก
ขนำดรับประทำนไว้ตำมอำยุ เช่น
อำยุมำกกว่ำ 10 ปี รับประทำนครั้งละ 3 ช้อนชำ
อำยุ
6-10 ปี รับประทำนครั้งละ 2 ช้อนชำ
อำยุ
2-5 ปี รับประทำนครั้งละ 1 ช้อนชำ
เด็กอำยุต่ำกว่ำ 1 ปี ห้ำมรับประทำน
จงเขียนผังงำนที่แสดงถึงขนำดของกำรใช้ยำตำมอำยุน้ ี

เริ่มต้ น
61
ใช่
รับประทานครั้งละ
3 ช้ อนชา
ใช่
รับประทานครั้งละ
2 ช้ อนชา
ใช่
รับประทานครั้งละ
1 ช้ อนชา
อายุ > 10
ไม่ใช่
6 <= อายุ <=10
ไม่ใช่
2 <= อายุ <=5
ไม่ใช่
ห้ ามรับประทาน
จบงาน
การพัฒนาอัลกอริธึม
62

โครงสร้างทาซ้า (Repetition Structure)
 While
Repetition Structure
โครงสร้างที่ตอ้ งตรวจสอบเงื่อนไขก่อนทาในลูป
 Do While Repetition Structure
โครงสร้างที่ตอ้ งประมวลผลในลูปอย่างน้อย 1 รอบก่อนทดสอบ
เงื่อนไขออกจากลูป
การพัฒนาอัลกอริธึม
63

โครงสร้าง while
เท็จ
เงื่อนไข
จริ ง
งำน
While เงื่อนไข
งำน
end while
รหัสเทียม
ผังงำน
การพัฒนาอัลกอริธึม
64

โครงสร้าง DO while
DO
งำน
จริ ง
เงื่อนไข
เท็จ
ผังงำน
คำสั่งต่ำง ๆ
While เงื่อนไข
รหัสเทียม
การพัฒนาอัลกอริธึม
65
ตัวอย่ำง โครงสร้ำง while
จงเขียน โปรแกรมคำนวณหำผลรวมของสมกำรต่อไปนี้
sum = 1 + 2 + 3 + … + N
วิเครำะห์ปัญหำ






1.
2.
3.
Output คือ sum
Input คือ N
Process มี งำน 3 งำน
งำน รับค่ำ N
งำนคำนวณหำค่ำของ sum (วงลูป ด้วยโครงสร้ำง while)
พิมพ์ผลลัพธ์ sum
ตัวอย่ำง โครงสร้ำง while
start
Read N
Sum = 0
I=1
I <= N
No
Yes
Sum = sum + I
I=I+1
ผังงำน
write sum
begin
Read N
Sum = 0
I=1
While (I <= N)
sum = sum + I
I = I +1
End while
Write “sum” , sum
end
รหัสเทียม
stop
66
ตัวอย่าง โครงสร้าง Do while
67
ผังงาน
รหัสเทียม
start
Begin
Read N
sum = 0
I=0
do
I=I+1
sum = sum + I
while (I < N)
write Sum
end
Read N
Sum = 0
I=0
I=I+1
Sum = sum + I
yes
I<N
no
write sum
stop
โครงสร้างการทางานแบบมีการทางานซ้า (Iteration)
68
เริ่ มต้น
เริ่ มต้น
J=0
J=0
J=J+1
J < 100
ใช่
J < 100
ไม่ใช่
จบงำน
Do While
ไม่ใช่
ใช่
J=J+1
จบงำน
While
โครงสร้างการทางานแบบมีการทางานซ้า (Iteration)
69
จงเขียนผังงาน แสดงถึงการ
พิมพ์ค่าบวกของ
1+2+3+4+5+.....+100
ออกทางเครื่องพิมพ์
เริ่ มต้น
J=1
SUM = 0
SUM = SUM+J
J=J+1
ใช่
J <=100?
ไม่ใช่
Print SUM
จบงำน
การเขียนโปรแกรมโดยใช้ภาษาใดภาษาหนึ่ ง(Coding)
70

การเขียนโปรแกรมที่ดีน้ัน ควรจะทาตามขั้นตอน คือเริ่มตั้งแต่ วิเคราะห์
ปั ญหา ก่อนแล้วทาการออกแบบโปรแกรม จึงเริ่มเขียนโปรแกรม สาหรับ
ผูท้ ี่ไม่มีประสบการณ์ควรทดลองเขียนในกระดาษก่อน แล้วตรวจสอบจน
แน่ ใจว่าสามารถทางานได้แล้วจึงทาการคียล์ งเครื่อง
การตรวจสอบข้อผิดพลาดของโปรแกรม
(Testing and Debugging the Program)
71

รูปแบบข้อผิดพลาด มี 3 แบบคือ
 Syntax Error – ข้อผิดพลาดจากการใช้ไวยากรณ์ภาษาที่ผิด หรือ
อาจเกิดจากการสะกดคาผิด
 Run-time Error – ข้อผิดพลาดในระหว่างการปฏิบต
ั ิงาน
(Execution) มักเกิดจากความรูเ้ ท่าไม่ถึงการณ์
 Logical Error – ข้อผิดพลาดที่หาและแก้ได้ยากที่สุด ต้องทาการไล่
โปรแกรมทีละคาสัง่ เพื่อหาข้อผิดพลาดนั้น
การตรวจสอบข้อผิดพลาดของโปรแกรม
(Testing and Debugging the Program)
72

วิธีการตรวจสอบข้อผิดพลาดของโปรแกรม มีดงั นี้
 การตรวจสอบด้วยตนเอง (Self
Checking) เขียนโปรแกรมลง
กระดาษแล้วไล่เช็คตรวจสอบการทางานทีละขั้นด้วยตนเอง ว่ าจะมี
การทางานที่ถูกต้องตามความต้องการหรือไม่
 ตรวจสอบด้ว ยการแปลโปรแกรม (Translating) การแปลเป็ น
ภาษาเครื่อง ตรวจสอบข้อผิดพลาดของโปรแกรม
การทดสอบความถูกต้องของโปรแกรม
(Testing and Validating)
73

วิธีทดสอบความถูกต้องของข้อมูล มีดงั นี้
 กรณีที่ขอ
้ มูลถูกต้อง (valid case) ทดสอบโดยใส่ขอ้ มูลที่ถูกต้องลงไป
ในโปรแกรม เพื่อทดสอบผลลัพธ์วา่ ตรงกับที่ตอ้ งการหรือไม่
 การใช้ขอบเขตและความถูกต้องของข้อมูล (Range check and
Completeness check) เป็ นการเช็คขอบเขตข้อมูล
 การใช้ความสมเหตุสมผล (Consistency Check)
การทดสอบความถูกต้องของโปรแกรม (Testing and Validating)
74
(Correct No. and Type character
check) ตรวจสอบว่าถ้าเป็ นฟิ ลด์ที่เป็ นตัวเลขอย่างเดียว เช่น จานวน
เงิน ก็ควรจะป้อนข้อมูลได้เฉพาะตัวเลขเท่านั้น
 ข้อมูลเป็ นไปตามข้อกาหนด (Existence Check) ข้อมูลที่ป้อนต้อง
เป็ นไปตามที่กาหนดไว้แน่ นอนแล้วเท่านั้น
 ข้อมูลที่เป็ นตัวเลขและตัวอักษร