The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

หน่วยที่ 2 อัลกอริทึมและการเขียนโปรแกรม

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by นายประจักษ์ ปะทะดี, 2022-04-24 02:14:56

หน่วยที่ 2 อัลกอริทึมและการเขียนโปรแกรม

หน่วยที่ 2 อัลกอริทึมและการเขียนโปรแกรม

หลักการเขียนโปรแกรม

PROGRAMMING PRINCIPLES

PROGRAMMER

หน่วยที่ 2 อัลกอริทึมและการเขียนโปรแกรม

ประจักษ์ ปะทะดี LEARN NOW

ตำแหน่ง ครู วิทยฐานะ ครูชำนาญการ



อัลกอรทิ มึ และการเขียนโปรแกรม

ก่อนที่เราจะเขียนโปรแกรมคอมพิวเตอร์ภาษาใดภาษาหนึ่งเพื่อแก้ปัญหาทางคอมพิวเตอร์ เราควรจะต้อง
คำนึงถึงหลกั การในการเขียน โปรแกรมคอมพวิ เตอร์ที่มีขั้นตอนวิธีการทางคอมพิวเตอร์ เพื่อให้เกดิ ความรู้ ความ
เขา้ ใจที่ถกู ต้องในการเขยี นโปรแกรมซึ่งการเขยี นโปรแกรมคอมพวิ เตอรจ์ ะมีหลักการเปน็ ข้นั ตอนดงั ตอ่ ไปน้ี

2.1 หลักการเขยี นโปรแกรมคอมพวิ เตอร์

 ขน้ั วิเคราะหง์ าน (Job Analysis)

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

 การออกแบบลำดบั ขั้นตอนสำหรับโปรแกรม (Program Design)

วธิ กี ารในการออกแบบข้นั ตอนสำหรบั โปรแกรม มผี คู้ ดิ ไว้หลายวธิ ี เช่น
o การเขยี นเป็นอัลกอรทิ ึม (Algorithm)
o ผงั งาน (Flowchart)
o รหัสเทยี ม (Pseudocode)
o แผนภมู ิโครงสรา้ ง (Structure Charts)

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

 ข้ันดำเนินการเขียนโปรแกรม (Program Coding)

เป็นการเปลี่ยนขัน้ ตอนของวธิ ีการในผังงานหรือรหสั เทียมให้อยู่ในรูปภาษาคอมพิวเตอรภ์ าษาใดภาษา
หนง่ึ การเลือกเขยี นโปรแกรมโดยใช้ภาษาคอมพวิ เตอรภ์ าษาใดนัน้ มีสงิ่ ท่ีต้องพจิ ารณาคือ

o เลือกใชภ้ าษาคอมพวิ เตอร์ให้เหมาะสมกับลกั ษณะและประเภทของงาน
o ขดี จำกดั ของเคร่ืองและโปรแกรมแปลภาษาทีม่ อี ยู่
o ความถนัดและความชำนาญของผูเ้ ขยี นโปรแกรม

ครูผสู้ อน ประจักษ์ ปะทะดี 1

 ทดสอบและแกไ้ ขโปรแกรม (Program Testing and Debugging)

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

o Syntax error
o Run-time error
o Logical error

Syntax error

o เกดิ จากการเขียนไวยากรณ์ของภาษาผดิ
o ตรวจพบไดข้ ณะทำการแปล (compile) โปรแกรม
o สามารถแกไ้ ขได้ง่ายทสี่ ุด ตวั อยา่ งเช่น คำสงั่ print( ) ในภาษา C ตอ้ งเขียนดว้ ยตวั อกั ษรตัวเล็ก แต่

เขียนเป็น PRINTF( ) เป็นต้น โดยส่วนมากความผดิ พลาดทางไวยากรณ์สามารถแก้ไขโดยการเขยี น
คำสงั่ ใหถ้ ูกต้องตามไวยากรณข์ องภาษาน้นั ๆ

Run-time error

o เปน็ ความผิดพลาดของโปรแกรมในระหวา่ งการปฏิบตั งิ าน
o ตรวจไม่พบในขณะทำการแปลโปรแกรม เช่น คำสั่ง 1 /x โดยกำหนดให้ x >= 0 และ x <= 10 ซึ่ง

การหากดว้ ย 0 จะทำใหเ้ กิดขอ้ ผดิ พลาดตอน Run-time (ซง่ึ ในการแปลจะไม่พบข้อผิดพลาด)

Logical error

o เกิดจากการตีความหมายของปญั หาผิดไป
o เปน็ ข้อผิดพลาดที่แก้ไขไดย้ ากท่สี ุด เช่น x = b เขียน x = b / 2 * a ตคี วามเป็น x = b * a จะผดิ ที่

ถูกต้องเป็น x = b / ( 2 * a ) วิธีการตรวจหาความผิดพลาดแบบนี้คือ ตรวจสอบการคำนวณ
ผลลัพธข์ องโปรแกรมว่าตรงกบั ผลลัพธท์ ี่คำนวณด้วยมอื หรือเคร่ืองคดิ เลขหรือไม่ ถ้าไมต่ รงกันแสดง
ว่าเกิดความผิดพลาดทางตรรกะขึ้น วิธีการแก้ไขก็คือ การแก้ไขสูตรใหถ้ ูกต้อง หรือแกไ้ ขลำดบั การ
ทำงานใหถ้ กู ต้อง
การตรวจสอบโปรแกรมเพอ่ื หาขอ้ ผิดพลาดดังกล่าวอาจจะกระทำเป็นข้นั ตอนดังนี้ คือ
1. การตรวจสอบก่อนนำโปรแกรมเข้าเครื่องคอมพิวเตอร์ โดยผเู้ ขียนโปรแกรมเรียกวิธีการนี้วา่ Desk
Checking วิธีการนจ้ี ะตรวจสอบวา่ โปรแกรมสามารถใหผ้ ลลพั ธ์ตามตอ้ งการหรือไม่ เป็นการตรวจสอบข้อผิดพลาด
ทางตรรกะโดยกำหนดข้อมลู ชดุ หนง่ึ

2 หลักการเขยี นโปรแกรม (Programming Principles)

ขนึ้ มาแล้วแทนคา่ ตามข้ันตอนต่าง ๆ ทเี่ ขยี นเปน็ โปรแกรมไวแ้ ตต่ ้นจนจบ โดยสมมุติว่าเป็นการปฏิบตั งิ านของ
เครอื่ งคอมพวิ เตอร์ วิธีการเชน่ น้จี ะช่วยลดข้อผดิ พลาดทางตรรกะไดม้ ากก่อนจะส่งโปรแกรมเขา้ เครือ่ งคอมพวิ เตอร์
ตอ่ ไป้

2. การตรวจสอบโดยเคร่ืองคอมพวิ เตอร์ เมื่อผา่ นการตรวจขนั้ แรกแล้วจึงสง่ โปรแกรมเขา้ สู่
เคร่อื งคอมพิวเตอร์พรอ้ มขอ้ มูลสมมุตทิ ท่ี ราบคำตอบ ขน้ั แรกเครื่องคอมพวิ เตอร์จะทำการตรวจ Syntax Error
หรอื ขอ้ ผิดพลาดทางไวยากรณ์ ถา้ มที ีผ่ ิดเครื่องคอมพวิ เตอรจ์ ะพมิ พ์ข่าวสาร ข้อผดิ พลาดนอ้ี อกมา ถา้ ไม่มี
ข้อผดิ พลาดกส็ ามารถผ่านไปสูร่ อบแบบ (Compilation run) จนไดผ้ ลลพั ธ์ออกมา ถ้าไดค้ ำตอบตรงตามที่ทราบก็
ค่อนขา้ งมั่นใจว่าโปรแกรมนา่ จะถูกต้อง

 ขนั้ เขยี นเอกสารประกอบ (Documentation)

เอกสารประกอบโปรแกรมมคี วามสำคัญกับงานเขียนโปรแกรมมาก และอาจจะเรม่ิ ทำไปพร้อมกับการ
เขียนโปรแกรม โดยทั่วไปเอกสารทีจ่ ัดทมีอยู่สองประเภทคือ คู่มือผู้ใช้ (Users Manual) และคู่มือโปรแกรมเมอร์
(Programmers Manual) ในเอกสารคู่มือผู้ใช้จะอธิบายวิธีการใช้โปรแกรม ส่วนคู่มือโปรแกรมเมอร์จะมี
รายละเอียดตา่ ง ๆ เกยี่ วกับช่อื โปรแกรม ชือ่ ผเู้ ขียนโปรแกรม วนั ท่เี ขยี นโปรแกรม จุดประสงคข์ องโปรแกรม สอ่ื ทใ่ี ช้
บนั ทึกข้อมูลเข้าผลลัพธท์ ีได้ วิธกี ารหรอื ขั้นตอนต่าง ๆ ในโปรแกรม ร่วมทง้ั ผังงาน ฯลฯ โดยที่เอกสารชนิดแรกจะ
เป็นประโยชน์แก่ผู้ใช้โปรแกรม ในขณะที่คู่มือโปรแกรมเมอร์จะมีประโยชน์ ต่อการปรับปรุงแก้ไขโปรแกรมใน
อนาคต

 ขน้ั บำรุงรักษาโปรแกรม (Program Maintenance)

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

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

ครูผสู้ อน ประจกั ษ์ ปะทะดี 3

2.2 การวิเคราะหง์ าน (Job Analysis)

ในการวเิ คราะหง์ านนเี้ ป็นข้ันแรกทสี่ ำคญั มาก ซง่ึ เราจะต้องกำหนดจุดประสงค์ของการวเิ คราะหง์ าน และ
ขัน้ ตอนวิธีการวิเคราะหง์ านแตล่ ะอย่างให้ได้ ในการวิเคราะห์งานแตล่ ะอย่างมีจดุ ประสงค์ของการวิเคราะห์งานที่
สำคญั ดงั นี้

1) เพื่อหาวัตถุประสงค์ของการเขียนโปรแกรม
2) เพ่อื หารูปแบบผลลพั ธท์ ี่ตอ้ งการ
3) เพอื่ หาข้อมูลนำเขา้ ทต่ี ้องใส่เขา้ ไปในโปรแกรม
4) เพื่อหาตัวแปรท่ีจำเปน็ ต้องใชใ้ นโปรแกรมเพ่อื หาขั้นตอนวธิ กี ารทำงานของโปรแกรม
5) เพือ่ หาขนั้ ตอนวิธกี ารทำงานของโปรแกรม
การวิเคราะหง์ าน เป็นงานขน้ั แรกท่ีตอ้ งกระทำเมือ่ ทจี่ ะเขยี นโปรแกรมและถือวา่ เป็นขน้ั ตอนทีส่ ำคัญท่ีสุด
การวเิ คราะห์งานเริ่มต้นจากการกำหนดขอบขา่ ยหรือปัญหาของงานรวบรวมรายละเอียดของงาน ศกึ ษาวิเคราะห์
โดยละเอียดว่าต้องการให้คอมพิวเตอร์ทำอะไรมรี ูปแบบของผลลพั ธ์อย่างไร ต้องการข้อมูลอะไรเพื่อให้ไดผ้ ลลัพธ์
ตามต้องการ และการประมวลผลจะมีขั้นตอนและใช้สูตรอะไรบ้าง การวิเคราะห์จึงเป็นงานขั้นวางแผนเพื่อ
เตรยี มการให้พร้อมทจ่ี ะเขยี นโปรแกรม
สรุปได้ว่า การวิเคราะห์งานเป็นการศึกษาผลลัพธ์ (Output) ข้อมูลที่นำเข้า (Input) และวิธีการ
ประมวลผล (Process) ที่จะใช้ในการเขียนโปรแกรมน้ันเอง โดยทั่วไปนิยมแบ่งวิธีการวิเคราะห์งานเป็น 5 หัวข้อ
ไดแ้ ก่
1) ส่งิ ท่ตี อ้ งการ : เปน็ การพิจารณาวา่ ผใู้ ชต้ ้องการใหค้ อมพวิ เตอรท์ ำอะไรบา้ ง
2) รปู แบบผลลัพธ์ : เปน็ การพิจารณารปู แบบของผลลัพธท์ ต่ี ้องการให้คอมพวิ เตอร์แสดง
3) ขอ้ มลู นำเขา้ : เปน็ การพิจารณาขอ้ มูลทน่ี ำเข้าสู่คอมพวิ เตอร์เพ่อื ใช้ในการประมวลผล
4) เป็นการพิจารณาวา่ ใชต้ ัวแปรอะไรแทนขอ้ มลู นำเข้า หรอื แทนค่าท่ีอย่รู ะหว่างการประมวลผล

ตลอดจนตวั แปรทีใ่ ช้แสดงผลลัพธ์
5) วิธีการประมวลผล : เป็นการพิจารณาลำดบั ขั้นตอนของการเขยี นคำส่งั เพอื่ ใหค้ อมพวิ เตอร์

ประมวลผลให้ไดข้ อ้ มลู หรือผลลัพธ์ตามความตอ้ งการของผูใ้ ช้อยา่ งถูกตอ้ ง

4 หลกั การเขยี นโปรแกรม (Programming Principles)

สิง่ ทต่ี อ้ งการ

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

รูปผลลัพธ์

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

ความยาวฐาน :_____________
ความสงู :_____________
พืน้ ท่ีสามเหล่ยี ม :_____________

ขอ้ มลู นำเข้า

การหาข้อมูลนำเข้าที่ต้องใส่เข้าไปในโปรแกรม ผู้เขียนโปรแกรมจะต้องหาข้อมูลนำเข้า โดยคำนึงถึง
ขั้นตอน วิธีการคำนวณ และข้อมูลที่จำเป็นต้องใส่เข้าไปเพื่อให้ได้ผลลัพธ์ที่ต้องการ ตัวอย่างเช่นต้องการเขียน
โปรแกรมคำนวณหาพื้นที่สามเหลี่ยม สูตรคำนวณพื้นที่สามเหลี่ยมมุมฉาก คือ ½ x ความยาวฐาน x ความสูง
ดงั น้ีนสิ่งทต่ี อ้ งปอ้ นเข้าไปเพอื่ ใหไ้ ด้ผลลัพธ์คอื ความยาวของฐาน และความสูงของรูปสามเหลย่ี ม

ตวั แปรทใี่ ช้

ตวั แปร หมายถึง ช่อื ทผ่ี ู้เขียนโปรแกรมตั้งขึ้นเองตามหลกั การตั้งชือ่ ตัวแปรของภาษาคอมพิวเตอร์ เพ่ือใช้
ในการอ้างอิงการเกบ็ ข้อมลู และเรียกใช้ข้อมลู ภายในตัวแปรดังน้ันผู้เขียนโปรแกรมจะตอ้ งตั้งชื่อตัวแปรที่ใช้ในการ
เก็บข้อมูลทั้งหมดภายในโปรแกรม ตัวอย่างเช่น ต้องการเขียนโปรแกรมคำนวณหาพื้นที่สามเหลี่ยม รูปแบบของ
การคำนวณ คอื พ้ืนทสี่ ามเหลี่ยม = ½ x ความยาวฐาน x ความสงู ดงั น้ันตัวแปรทีใ่ ช้คอื

Base สำหรับเก็บค่าความยาวฐานของสามเหล่ียม
High สำหรบั เก็บค่าความสงู ของสามเหลยี่ ม
Area สำหรบั เกบ็ ผลลัพธท์ ี่ไดจ้ ากการคำนวณ

ครูผสู้ อน ประจกั ษ์ ปะทะดี 5

วธิ ีประมวลผล

การหาขั้นตอนวิธีการทำงานของโปรแกรม จะขึ้นอยู่กับลักษณะของการแก้ปัญหา ดังนั้นนักเขียน
โปรแกรมที่มีความชำนาญในระดับหนึ่งแล้วจะสามารถหาขั้นตอนวิธีการทำงานของโปรแกรมได้โดยไม่ยาก
ตวั อยา่ งเช่น ต้องการเขียนโปรแกรมคำนวณหาพน้ื ท่ีสามเหลย่ี ม มวี ธิ กี ารประมวลผลดังนี้

1) เร่มิ ต้นทำงาน
2) รับขอ้ มูลคา่ ความยาวฐานและความสูงของสามเหล่ยี มผา่ นทางคยี บ์ อร์ด
3) รบั ขอ้ มลู คา่ ความยาวฐานและความสูงของสามเหลยี่ มผา่ นทางคีย์บอร์ด
4) คำนวณพืน้ ท่สี ามาเหลย่ี มตามสูตร Area = ½ x Base x High
5) พมิ พค์ า่ ความยาวฐานความสงู และพนื้ ท่สี ามเหล่ยี มออกทางจอภาพ
6) จบการทำงาน

ในขั้นตอนการพัฒนาโปรแกรม เราจำเป็นต้องเขียนอธิบายขั้นตอนการทำงานของการเขียนอธิบาย
ขั้นตอนการทำงานของโปรแกรม หรือคำสั่ง สามารถทำได้สองแบบ คือ ผังงาน (Flowchart) และรหัสเทียม
(Pseudo code)

2.3 หลักการเขยี นอัลกอริทึม

 ความหมายของอลั กอรทิ ึม

อัลกอรทิ มึ (Algorithm) หมายถงึ ข้นั ตอนหรอื ลำดบั การประมวลผลในการแกป้ ญั หาใดปัญหาหน่งึ ซ่ึง
จะชว่ ยใหโ้ ปรแกรมเมอรเ์ หน็ ข้ันตอนของการเขียนโปรแกรมงา่ ยขึ้นอลั กอริทึม (Algorithm) หมายถงึ แนวคิดอย่าง
มีเหตุผลท่ีผู้เขียนโปรแกรม (หรือโปรแกรมเมอร์ หรือนกั วเิ คราะห์ระบบ) ใชใ้ นการอธบิ ายวธิ ีการอย่างเป็นขั้นตอน
ตามลำดับในการท่ีจะพฒั นาโปรแกรมนั้น ๆ ให้กับผู้ท่ีสนใจหรือผูท้ ี่เปน็ เจ้าของงานหรือผู้ที่รับผิดชอบได้ทราบถึง
ขั้นตอนต่าง ๆ ในการเขียนโปรแกรมหรือพัฒนาโปรแกรม ขณะเดียวกันก็ช่วยให้ผู้ที่เป็นเจ้าของงาน หรือผู้ท่ี
รับผดิ ชอบนัน้ ได้ตรวจสอบข้ันตอนตา่ ง ๆ ในการทำงานและความถกู ต้องในแต่ละขั้นตอน โดยผู้ท่ีเป็นเจ้าของงาน
หรอื ผู้ทรี่ บั ผิดชอบนนั้ ๆ ไมจ่ ำเป็นตอ้ งเขียนโปรแกรมเป็น

 หลักการเขียนอัลกอริทมึ

1) เรยี งลำดับความสำคญั ของงานท่ีจำทำ
2) เขยี นออกมาในลกั ษณะภาษาเขยี นสามารถเขา้ ใจงา่ ย
3) มคี วามละเอยี ดของโครงสรา้ งพอสมควร

6 หลักการเขียนโปรแกรม (Programming Principles)

 ประโยชน์ของอลั กอรทิ มึ

ประโยชน์ของอัลกอริทึม (Algorithm) คือ ทำให้ไม่สับสนกับวิธีดำเนินงาน เพราะทุกอย่างจะถูกจัดเรียงเป็น
ข้นั ตอนมวี ธิ ีการและทางเลือกไว้ เมอ่ื นำมาใช้จะทำให้การทำงานเสรจ็ อยา่ งรวดเร็ว ทำให้ปญั หาลดลงหรือสามารถ
ค้นหาต้นเหตุของปัญหาได้อย่างรวดเร็ว เนื่องจากกระบวนการถูกแยกแยะกิจกรรม ขั้นตอน และความสัมพันธ์
ออกมาให้เหน็ อยา่ งชดั เจน

 รปู แบบการเขียนอลั กอรทิ มึ

1. ลักษณะการบรรยาย (Narrative Description)

ตวั อย่างโจทยใ์ หเ้ ขยี นอัลกอรทิ ึมเพอ่ื หาคะแนนเฉลย่ี ของการสอบท้งั หมด 5 วิชาโดยวัดผลจากคะแนน ถา้
คะแนนต่ำกว่า 50 สอบไม่ผ่าน แตถ่ า้ คะแนนมากกว่า 50 ขึน้ ไปสอบผ่าน

อัลกอริทมึ แบบบรรยาย ใส่คะแนนสอบท้ัง 5 วิชา คอมพวิ เตอร์คำนวณค่าเฉลี่ยโดยการบวกคะแนนทั้ง 5
วชิ า แลว้ หาร 5 ถ้าคา่ เฉล่ียต่ำกว่า 50 แสดงขอ้ ความสอบไม่ผ่านแตถ่ ้าคา่ เฉลย่ี สงู กว่า 50 แสดงขอ้ ความสอบผา่ น

ตัวอยา่ งการเขียนอลั กอริทมึ

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

ตวั อย่าง 2.1 การหาผลรวมของตัวเลข N จำนวน

Program : Sum
รับคา่ จำนวนตัวเลขท้ังหมดเกบ็ ไวท้ ่ีตวั แปร N
กำหนดใหต้ ัวแปรเกบ็ ตวั นับเรมิ่ ตน้ I = 1 , เกบ็ ผลรวมเรม่ิ ต้น Sum = 0

Repeat
รับคา่ ข้อมลู เกบ็ ไว้ที่ X
นำค่าขอ้ มลู ท่ีอ่านไดบ้ วกสะสมไวท้ ่ีตัวแปรเกบ็ ผลรวม Sum
เพิม่ คา่ ตัวนับ I ขนึ้ อกี 1

Until เป็นตวั เลขตัวสุดท้ายจริง ( I > N )
แสดงตัวแปรที่เกบ็ ผบรวมสะสม Sum

End Program

ครูผสู้ อน ประจักษ์ ปะทะดี 7

ตัวอยา่ ง 2.2 หาค่าสูงสุดและต่ำสุดจากตัวเลขทงั้ หมด N จำนวน
Program : Max_Min

รับค่าจำนวนตวั เลขทง้ั หมดเก็บไว้ท่ตี ัวแปร N
กำหนดให้ตวั แปรเกบ็ ตวั นับเรมิ่ ตน้ I = 1
อา่ นเลขตัวแรกเกบ็ ไวท้ ีต่ วั แปร X
กำหนดให้ตัวแปร X เป็นทัง้ คา่ มากทีส่ ดุ และน้อยทส่ี ุด เก็บไวท้ ี่ตวั แปร Max และ Min
Repeat
อา่ นเลขตัวถัดไป เก็บไวท้ ี่ X และเพมิ่ ค่าตัวนับ I อกี 1
if X > Max Then

เปลีย่ นคา่ ใน Max ใหเ้ ก็บคา่ X แทน
Else

if X < Min Then
เปลีย่ นคา่ ใน Min ให้เก็บคา่ X แทน

End if
End if

ใหค้ า่ Max = Max , คา่ Min = Min
Until I > N
End Program

2. การเขียนรหสั เทียม

รหัสจำลองที่เรียกวา่ การเขียนซูโดโค้ด (Pseudo Code) คือ การเขยี นคำอธบิ ายขั้นตอนการทำงาน
ของโปรแกรม โดยใช้ถ้อยคำผสมระหว่างภาษาอังกฤษและภาษาการเขียนโปรแกรมแบบโครงสร้าง ซึ่งจะช่วยให้
ผู้เขียนโปรแกรมสามารถพัฒนาขั้นตอนต่าง ๆ ให้เป็นโปรแกรมได้ง่ายขึ้น ส่วนใหญ่มักใช้คำเฉพาะ (Reserve
Word) ทีม่ ีในภาษาการเขียนโปรแกรมและมกั เขียนด้วยตัวอักษรตัวใหญ่ ซโู ดโดด้ ที่ดจี ะตอ้ งมคี วามชดั เจน ส้นั และ
ไดใ้ จความ ขอ้ มลู ต่าง ๆ ทใี่ ช้จะถกู เขียนอยูใ่ นรปู ของตัวแปร

8 หลกั การเขยี นโปรแกรม (Programming Principles)

 ประโยชน์ของรหัสเทียม

เปน็ เคร่ืองมือในการกำหนดโครงรา่ งกระบวนการทำงานของการเขยี นโปรแกรมและใชเ้ ป็นต้นแบบในการ
ทบทวน ปรับปรุงแกไ้ ขและพัฒนาโปรแกรมของโปรแกรมเมอร์และนกั วเิ คราะห์ระบบ

 หลักการเขยี นรหสั เทียม

o ใชภ้ าษาอังกฤษท่เี ขา้ ใจง่ายในการเขยี น
o ในหนึง่ บรรทดั มเี พียงหนึ่งประโยคคำสงั่ เท่านน้ั
o ใชย้ อ่ หนา้ แบง่ การแสดงการทำงานเพื่อใหอ้ ่านง่าย
o แตล่ ะประโยคคำสั่งใหเ้ ขยี นจากบนลงล่าง และมีทางออกทางเดยี ว
o กลมุ่ ของประโยคคำส่ังอาจรวมเป็นหมวดหมู่แล้วเรียกใช้เปน็ โมดลู

 รูปแบบการเขียนรหัสเทยี ม

ประโยคคำสั่งต่าง ๆ ที่ใช้ในการเขียนรหัสเทียมสามารถแบ่งออกมาเป็นกลุ่มย่อย ๆ โดยลักษณะการใช้
งานได้ดงั นี้

การอ่าน/รับขอ้ มลู (Input/Output)

การอ่านข้อมูล สามารถใชค้ ำสงั่ READ, INPUT หรอื GET ได้ โดยเขยี นดังนี้

READ variable_1 , variable_2 , variable_n
INPUT variable_1 , variable_2 , vaiable_n
GET variable_1 , variable_2 , variable_n

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

INPUT และ GET ใชส้ ำหรับการรับค่าขอ้ มลุ ผา่ นทางแปน้ พิมพ์
Variable คือ ตัวแปรที่ใช้เก็บข้อมูลที่อ่านหรอื รบั เข้ามา ซึ่งสามารถกำหนดกี่ตัวกไ็ ด้โดยใช้เคร่ืองหมาย
“;” คน่ั ระหว่างชื่อตัวแปร
การแสดงผลข้อมูล สามารถใชค้ ำสั่ง DISPLAY, PRINT, PROMPT หรือ WRITE ได้โดยเขียนดงั น้ี

ครูผสู้ อน ประจักษ์ ปะทะดี 9

DISPLAY variable_1 , variable_2 , variable_n
WRITE variable_1 , variable_2 , variable_n
PRINT variable_1 , variable_2 , variable_n
PROMPT variable_1 , variable_2 , variable_n

DISPLAY ใช้สำหรับการแสดงผลทางจอภาพ
PRINT และ PROMPT ใชส้ ำหรับการพมิ พ์คา่ ขอ้ มูล หรือขอ้ ความ
WIRTE ใชส้ ำหรับการบนั ทกึ ข้อมลู ลงในแฟม้ ข้อมูล

การกำหนดเงื่อนไขหรือการตดั สนิ ใจ (Decision) ใชค้ ำส่ัง if…then โดยเขียนดังน้ี

IF <condition> THEN
activity1
ELSE
activity2
ENDIF

<condition> คอื เงอื่ นไขในการตดั สินนใจ หากเง่อื นไขเปน็ จรงิ จะทำกระบวนการหลงั THEN
(activity1) แตถ่ ้าเงือ่ นไขเป็นเทจ็ จะขา้ มไปทำกระบวนการหลัง ELSE (activity2)

ตัวอย่าง 2.3 รหัสเทยี มของการตดั สินใจถ้ารหัสผ่านถูกต้องกใ็ หเ้ ข้าระบบได้ แตถ่ า้ รหัสผา่ นไม่ถูกตอ้ งจะแสดง
ขอ้ ความวา่ ไมส่ ามารถเขา้ ระบบได้

IF your password is match in system password THEN
accessSystem();

ELSE
ShowMessage(“Can not access!”);

ENDIF

10 หลักการเขยี นโปรแกรม (Programming Principles)

ตัวอย่าง 2.4 รหัสเทยี มของการตดั สินใจ เรื่องการให้เกรด
IF score >= 80
grad = “A”
ELSEIF score >= 70
grad = “B”
ELSEIF score >= 50
grad = “C”
ELSE
grad = “F”
ENDIF

การทำงานแบบวนซำ้

การทำงานแบบวนซ้ำด้วย REPEAT … UNTIL
REPEAT

activity 1
UNTIL <condition>

การทำงานแบบวนซ้ำด้วย REPEAT … UNTIL จะทำ activity ภายในลปู กอ่ นแล้วคอ่ ยทำการตรวจสอบ
เงอ่ื นไขถา้ เง่อื นไขเปน็ จรงิ จะทำซำ้ ไปเรอ่ื ย ๆ จนกระทง่ั เง่อื นไขเปน็ เทจ็ จงึ จะออกจากลปู ดงั นัน้ จึงมกี ารทำงานอย่าง
น้อย 1 รอบเสมอ

ตัวอย่าง 2.5 รหสั เทียม REPEAT … UNTIL
N=0
REPEAT
N=N+1
UNTIL N = 10

จากตัวอย่าง ในตอนแรกค่าของ N เป็น 0 พอเริ่มทำงานในลูป N จะถูกบวกเพิ่มทีละ 1 จนกระทั่ง
N = 10 จงึ จบการทำงาน ค่าของ N จึงเทา่ กับ 10

ครผู สู้ อน ประจกั ษ์ ปะทะดี 11

การทำงานแบบวนซ้ำดว้ ย WHILE … ENDWHILE

WHILE <condition>
activity1

ENDWHILE

การทำงานแบบวนซ้ำด้วย WHILE จะมีการตรวจสอบเงื่อนไขก่อน โดยหากเงื่อนไขเป็นจริง จะทำ
activity ภายในลูปซ้ำไปเรื่อย ๆ จนกระทั่งเงือ่ นไขเป็นเท็จ จึงจะออกจากลูปแตห่ ากเงื่อนไขท่ีตรวจสอบครั้งแรก
เป็นเท็จ กจ็ ะไม่มกี ารทำงานเกดิ ข้ึนเลย
ตัวอยา่ ง 2.6 รหสั เทียม WHILE … ENDWHILE

N=0
WHILE N < 10
N=N+1
UNTIL

จากตัวอย่าง ในตอนแรกค่าของ N เป็น 0 พอเริ่มทำงานในลูป จะทำการตรวจสอบก่อนว่า N น้อยกว่า
10 หรอื ไม่ ถ้าใช่ N จะถกู บวกเพ่มิ ทีละ 1 และกลับมาตรวจสอบเงอ่ื นไขใหมจ่ นกระท่งั เงือ่ นไขผดิ จงึ จบการทำงาน
คา่ ของ N จงึ เทา่ กบั 10

การทำงานแบบวนซ้ำดว้ ย FOR … ENDFOR
FOR <var> = <start> to <stop>

activity1
ENDFOR

การทำงานแบบวนซ้ำด้วย FOR จะมีจำนวนรอบการทำงานที่แน่นอน โดยกำหนดจาก <var> ว่ามีค่า
เรม่ิ ต้นเป็นอะไรและค่าสุดท้ายเป็นอะไร เชน่ I = 1 to 10 ก็จะทำงาน 10 รอบ ดงั นัน้ การใช้ FOR จึงจำเป็นต้องรู้
จำนวนรอบในการทำงานทีแ่ นน่ อนจงึ จะใช้ได้

12 หลกั การเขยี นโปรแกรม (Programming Principles)

ตวั อยา่ ง 2.7 รหัสเทียม FOR … ENDFOR

FOR I = 1 to 10
WRITE “Hello World”

ENDFOR

จากตัวอย่างกำหนด I ตั้งแต่ 0 ถึง 10 จึงทำงาน 10 รอบ โปรแกรมก็จะพิมพ์คำว่า “Hello World”
ออกมา 10 ครั้ง

การประมวลผล (Process)

การประมวลผล คือ การกระทำใด ๆ ที่เป็นการคำนวณ เช่น บวก ลบ คูณ หาร ซึ่งจะใช้คำศัพทง์ ่าย ๆ
เช่น ADD ใช้บวกเพิ่มค่าให้ตัวแปร SUBTRACT. ใช้ลบค่าออกจากตัวแปร SET ใช้กำหนดค่าให้ตัวแปร แต่การใช้
คำศพั ท์ไมค่ อ่ ยสะดวกนกั จึงนยิ มใชต้ วั ดำเนนิ การมากกวา่ เช่น + , - , * , / , %

ตัวอยา่ ง 2.8 การใชต้ วั ดำเนนิ การ

SET 8 to n
ADD2 to n
n=8
n=n+2

จากตวั อยา่ ง 2.8 เปน็ การกำหนดค่าใหก้ ับตวั แปร n มีค่าเทา่ กับ 8 และบวกคา่ เพิ่มอกี 2

นอกจากดำเนินการแลว้ ยังมสี ัญลกั ษณท์ ใี่ ช้ในการเปรียบเทียบดังน้ี

• สญั ลกั ษณ์เทียบค่า ซงึ่ เปน็ ความสมั พนั ธ์ ประกอบด้วยสญั ลักษณ์ == , < , <= , > , >= , <>

ครผู สู้ อน ประจักษ์ ปะทะดี 13

ตัวอยา่ ง 2.9 การใชส้ ญั ลักษณก์ ารเปรยี บเทยี บความสัมพันธ์
IF A == B THEN
PRINT A
ENDIF
WHILE N <= 10
N=N+1
UNTIL

จากตัวอย่าง 2.9 เปรียบเทียบว่าค่าตัวแปร A เท่ากับค่าตัวแปร B หรือไม่ ถ้าใช่ให้แสดงค่า A และอีก
ตวั อย่างเปน็ การเปรียบเทียบว่าค่าตวั แปร N มีค่าน้อยกว่าหรอื เท่ากบั 10 หรือไม่ ถ้าใชใ่ ห้เพ่ิมคา่ N ทลี ะ 1

• สญั ลกั ษณ์เทยี บคา่ ทเ่ี ปน็ ตรรกะ ซ่ึงประกอบด้วยสญั ลักษณ์ AND , OR , NOT

ตัวอยา่ ง 2.10 การใชส้ ญั ลกั ษณก์ ารเปรยี บเทียบตรรกะ

IF (A == 2) OR (B == 2) THEN
PRINT A

ENDIF
IF NOT (A == 2) THEN

PRINT B
ENDIF

จากตัวอย่าง 2.10 เปรียบเทียบว่าถ้าคา่ ตวั แปร A เท่ากับ 2 หรือ ค่าตัวแปร B เท่ากับ 2 ให้แสดงค่า A
และถา้ คา่ ตวั แปร A ไมเ่ ทา่ กับ 2 ใหแ้ สดงค่า A

กรณีที่โปรแกรมมีความซับซ้อนมีขั้นตอนมากมายหรือมีการทำงานที่เหมือนกันในหลาย ๆ ที่ เราอาจ
จำเปน็ ต้องทำการลดความซบั ซอ้ นลงด้วยการแบง่ โปรแกรมออกเป็นโปรแกรมย่อยหรอื โพรซเี ยอร์ โดยแตล่ ะโพรซี
เยอรจ์ ะต้องมีช่อื กำกับ พรอ้ มชดุ คำส่งั ภายใน

ในการเรียกใช้งาน โพรซเี ยอร์ จะใช้คำส่งั CALL แล้วตามดว้ ยชื่อโพรซีเยอร์ท่ีตอ้ งการเรยี กใช้ โดยหลังจาก
ที่มีการสั่งให้ทำงานโพรซีเยอร์นั้น ๆ เสร็จแล้ว ก็จะกลับมาทำงานที่โปรแกรมหลักส่วนที่ต่อจากบรรทัดที่มีการ
เรยี กใช้โพรซีเยอร์

14 หลกั การเขียนโปรแกรม (Programming Principles)

ตวั อยา่ ง 2.11 การใช้งาน Procedure

INPUT year
CALL checkYear
PRINT february
PROCEDURE checkYear
IF year %4 == 0
february = 29
ELSE
february = 28
ENDIF
RETURN february

จากตวั อยา่ ง มกี ารรบั year เขา้ มาจากนั้นเรียกโพรซีเยอร์ checkYear เพ่ือตรวจสอบว่า february มีก่ี
วนั แล้วพิมพ์ february ออกมา

ตัวอยา่ ง 2.12 บรษิ ัทแห่งหน่ึงเปิดทำการเปน็ ายหน้าในการจัดหาสนิ ค้า 5 ชนิดโดยคดิ ค่านายหนา้ ต่างกัน

ชนิด A ราคาต่อชิน้ 1,200 คดิ คา่ นายหน้า 5%
ชนิด B ราคาตอ่ ชนิ้ 2,000 คิดค่านายหนา้ 10%
ชนดิ C ราคาต่อช้นิ 4,000 คิดค่านายหนา้ 15%
ชนดิ D ราคาต่อช้ิน 4,500 คดิ ค่านายหนา้ 20%
ชนิด E ราคาต่อชน้ิ 6,000 คิดค่านายหนา้ 25%
จงเขยี นรหสั เทยี มคำนวณหารายไดจ้ ากค่านายหน้าทบี่ รษิ ทั น้จี ะได้

INPUT A, B, C, D, E
sum = 0;
sum = sum + (A * 1200) * 5 / 100
sum = sum + (B * 2000) * 10 / 100
sum = sum + (C * 4000) * 15 / 100
sum = sum + (D * 4500) * 20 / 100
sum = sum + (E * 6000) * 25 / 100

จากตัวอยา่ ง ในข้ันแรกรับคา่ วา่ มกี ารจัดหาสินคา้ แตล่ ะชนิดเป็นจำนวนกชี่ ิ้น และประกาศตัวแปร sum
ให้มีค่าเท่ากับ 0 จากนั้นทำการคำนวณหาค่านายหน้าทีไ่ ด้จากสินค้าแต่ละชิ้นเพิ่มเข้าไปไว้ในตัวแปร sum แล้ว
พิมพ์ค่า sum ออกมา

ครผู สู้ อน ประจักษ์ ปะทะดี 15

ตวั อย่าง 2.13

จงเขยี นรหัสเทียมคำนวณหาภาษที ี่ตอ้ งจา่ ยโดยคิดอัตราก้าวหน้าดังนี้
รายไดต้ ง้ั แต่ 150000 แต่ไม่ถึง 200000 คดิ ภาษี 7%
รายไดต้ ง้ั แต่ 200000 แตไ่ ม่ถึง 400000 คิดภาษี 10%
รายไดต้ ัง้ แต่ 400000 ขึน้ ไปคดิ ภาษี 15%

INPUT salary
tax = 0
IF salary >= 150000 and salary < 200000 THEN
tax = (salary * 7) / 100
ELSEIF salary >= 70 THEN
tax = (200000 * 7) / 100
tax = tax + (salary – 200000) * 10 / 100
ELSEIF salary >= 60 THEN
tax = (200000 * 7) / 100
tax = tax + (400000 – 200000) * 10 / 100
tax = tax + (salary – 400000) * 15 / 100
ENDIF
PRINT tax

จากตัวอย่าง เนื่องจากเปน็ การคดิ ภาษีในกรณีที่รายได้มากกว่า 200000 จะคิดภาษีของ 200000 บาท
แรกกอ่ นโดยคิด 7% จากนัน้ นำส่วนท่เี หลอื คือ salary – 200000 มาคดิ ภาษใี นอัตรา 10%

สง่ิ ที่ควรรู้
เนื่องจากการเขียนรหสั เทยี มไม่ใช่ภาษาโปรแกรมคอมพิวเตอร์ เราจึงสามารถนำรหสั เทียมไปเป็นต้นแบบ

ของการเขียนภาษาโปรแกรมภาษาตา่ ง ๆ ไดอ้ ย่างหลายหลาย

16 หลกั การเขียนโปรแกรม (Programming Principles)

3. การเขยี นผงั งาน (Flowchart)

 ผงั งาน

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

 ประโยชนข์ องผงั งาน

• ช่วยลำดับขั้นตอนการทำงานของโปรแกรม และสามารถนำไปเขยี นโปรแกรมไดโ้ ดยไม่สบั สน
• ชว่ ยในการตรวจสอล และแกไ้ ขโปรแกรมได้งา่ ย เม่ือเกิดขอ้ ผดิ พลาด
• ชว่ ยให้การดัดแปลง แก้ไข ทำไดอ้ ยา่ งสะดวกและรวดเรว็
• ชว่ ยให้ผ้อู น่ื สามารถศึกษาการทำงานของโปรแกรมได้อยา่ งงา่ ย และรวดเรว็ มากขึ้น

 ประเภทของผงั งาน

โดยทว่ั ไปแล้วผังงานทางคอมพิวเตอร์สามารถแบ่งออกเปน็ ประเภทใหญ่ ๆ ได้ 3 ประเภท ไดแ้ ก่

1) โฟลว์ชาร์ตระบบ (System Flow Chart) เป็นผังงานแสดงขั้นตอนการทำงานทั้งหมด ในผัง
งานประเภทนี้จะเหน็ ระบบงานภายในของระบบหนึ่ง ๆ ที่เกี่ยวข้องกบั งานทั้งหมด ทั้งวัสดุ เครื่องจักร โปรแกรม
และบุคลากร

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

ครผู สู้ อน ประจกั ษ์ ปะทะดี 17

2) โพลว์ชาร์ตโปรแกรมโมดลู (Modular Program Flow chart) คอื ผังงานทีจ่ ดั ทำขึ้นเพ่ือแบ่ง
ระบบออกเป็นส่วน ๆ เพื่อให้ง่ายต่อความเข้าใจในแต่ละส่วนของระบบให้มากขึ้นกว่าผังงานระบบ ซึ่งผังงาน
โปรแกรมโมดูลนี้จะแสดงเพียงส่วนหนึ่ง ๆ หรือโมดูลนั้น ๆ มีขั้นตอนและวิธีการในการทำงานอย่างไร แต่จะไม่มี
รายละเอยี ดยอ่ ยในโมดูลนั้น ๆ จงึ ยังไม่สามารถนำผงั งานประเภทนไี้ ปเขยี นโปรแกรมได้

3) โฟลว์ชาร์ตการเขียนโปรแกรม (Programming Flow chart) หรือที่นิยมเรียกกันสั้น ๆ ว่า
Flow chart ผังงานประเภทนี้เป็นผังงานซึ่งแสดงลำดับขั้นตอนการทำงานอย่างละเอียดในโมดูลนั้น ๆ โดยจะดงึ
เอาจดุ แตล่ ะจุดจากผงั งานโปรแกรมโมดลู ข้นึ มาเขยี นเป็นผังงานประเภทน้ี โดยจะแสดงรายละเอยี ดของขัน้ ตอนการ
ทำงานอย่างชัดเจน ไม่ว่าจะเป็นข้ันตอนของการรับข้อมูลเข้า การคำนวณ การประมวลผล และการแสดงผลลัพธ์
เป็นต้น (รายละเอียดการเขียนผงั งานดังหวั ข้อถัดไป)

 สญั ลักษณข์ องผังงาน

การเขียนผังงานประกอบไปด้วยการใชสัญลักษณ์มาตรฐานต่าง ๆ ที่เรียกว่าสัญลักษณ์ ANSI
(American National Standards Institute) ในการสร้างผังงาน ดงั ตัวอย่างทีแ่ สดงในรปู ตอ่ ไปนี้

18 หลักการเขยี นโปรแกรม (Programming Principles)

สญั ลกั ษณ์ในการแยกและควบคุม (Branching and Control of Flow Symbols)

สัญลักษณ์ คำอธบิ าย

สัญลกั ษณ์จดุ เร่มิ ต้น/ส้ินสุด (Terminator) จดุ เริม่ ต้นหรอื สิ้นสุดการทำงาน
โดยตำแหน่งเริ่มตน้ จะใช้ข้อความ START หรือ BEGIN ส่วนตำแหน่งส้นิ สดุ
จะใชข้ อ้ ความ STOP, END, EXIT และ RETURN (ใช้กับโปรเซสย่อย)

ตัดสนิ ใจ (Decision) คำสง่ั ตรวจสอบเงอ่ื นไข เปน็ สัญลักษณแ์ ทนเงอ่ื นไขการ
ทำงาน (Condition) ภายในสัญลักษณ์จะแสดงเงื่อนไขการทำงานจะ
ตรวจสอบลูกศรทีอ่ อกมาจากสัญลักษณ์ จะมีตัวอักษรระบุผลลัพธ์ของการ
ตรวจสอบเงอ่ื นไขวา่ เป็นจรงิ หรือเท็จ ( True, False, Yes, No, Y, N )

สัญลักษณก์ ารเชื่อมต่อ (Connector) ใช้เปน็ จุดตอ่ เช่ือมจากตำแหน่งไปอีก
ตำแหนง่ หนง่ึ โดยจะกำหนดตวั อักษรในวงกลมเพื่อระบุวา่ เปน็ ตวั เช่อื มต่อตัว
เดียวกันเพื่อหลีกเลี่ยงการตัดกันของเส้น แต่จะไมใ่ ชใ้ นการเชอื่ มต่อข้ามหน้า

สัญลักษณ์การเชื่อมต่อระหว่างหน้า (Page Connector Symbol) ใช้เพื่อ
การแสดงว่าผังงานยังไม่จบ ยังมีต่อไปหน้าอื่นอีก ซึ่งข้อความไม่ควรใช้
ตัวอักษร แนะนำใหใ้ ช้หมายเลขแทนเพ่ือใหเ้ กดิ ความแตกต่างกับสัญลักษณ์
การเช่ือมตอ่ ในหนา้ เดยี วกนั (วงกลม)

สัญลักษณ์ ทศิ ทาง (Direction) ใช้ระบเุ ส้นทางการทำงาน (Flow)

ครูผสู้ อน ประจักษ์ ปะทะดี 19

สญั ลกั ษณ์นำเข้าและส่งออกข้อมลู (Input and Output Symbols)

สญั ลักษณ์ คำอธบิ าย

สัญลักษณ์ข้อมูลนำเข้า/ส่งออก (Input/Output) แสดงการทำงานท่ี
เกี่ยวข้องกับการนำข้อมูลเข้าและส่งออก ซึ่งสามารถใช้สัญลักษณ์รับค่า
เฉพาะวา่ เป็นการนำเข้าโดยอปุ กรณ์ชนดิ ใด

สัญลักษณ์รับค่าจากการป้อน (manual Input) ใช้แทนการรับข้อมูลจาก
คียบ์ อร์ด (Keyboard)

สัญลักษณ์แสดงผลลัพธ์ทางจอภาพ (Display) ใช้แสดงข้อมูลออกทาง
จอภาพแสดงผล

สญั ลักษณเ์ อกสารและแหล่งเก็บข้อมลู (File and Information Storage Symbols)

สัญลักษณ์ คำอธบิ าย

สัญลักษณ์อปุ กรณ์เขา้ ถึงแบบโดยตรง (Direct Access Storage) ใช้อ่านและ
เขยี นข้อมลู โดยตรง เช่น เขยี นลงฮาร์ดดิสก์ (Hard disk)

สัญลกั ษณ์เอกสาร (Document) ใช้แทนการพมิ พ์ข้อมลู ออกมาเป็นเอกสาร

สญั ลกั ษณ์กระบวนการ / ปฏบิ ัตกิ าร (Process / Operation Symbols)

สัญลกั ษณ์ คำอธบิ าย

สัญลักษณ์ ประมวลผล (Process) ใช้แทนคำสั่งหนึ่งคำสัง่ หรือ การทำงาน
หนึ่งอย่าง คำอธิบายคำสั่งจะเขียนไว้สั้น ๆ อยู่ภายในสัญลักษณ์นั้น อาจใช้
สญั ลกั ษณ์ เตรยี มการ (Preparation) แทนได้ในการทำงานแบบวนซ้ำ (loop)

สัญลักษณ์ เตรียมการ (Preparation) เป็นสัญลักษณ์ที่ใช้แสดงขั้นตอน
กระบวนการใด ๆ ที่เป็นกระบวนการขั้นเตรียมตอนการทำงาน เช่น การ
กำหนดค่าเรม่ิ ตน้ ในการทำงานแบบวนซำ้ (loop)

20 หลกั การเขียนโปรแกรม (Programming Principles)

 หลักการเขยี นผังงาน

รูปแบบในการเขียน Flowchart

เพ่อื ให้ Flowchart เปน็ มาตรฐานเดยี วกนั ผอู้ ื่นสามารถอ่านเข้าใจไดง้ ่ายจงึ มหี ลกั การจัดภาพ และ
ทิศทางของ Flowchart ดังนี้

• ทศิ ทางของ Flowchart จะเริ่มจากส่วนบนลงมายังสว่ นลา่ งและจากทางซา้ ยของกระดาษโดย
มีหวั ลกู ศรกำกบั ทิศทาง

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

และเลขหน้าลำดับ

รูปแบบการทำงานตามลำดบั (SEQUENCE)

คือการเขียนการทำงานทีม่ ีลักาณะเรียบตามลำดับ จะใช้สัญลกั ษณ์ ประมวลผลเรยี งต่อกันลงมา
เรอื่ ย ๆ

รูปแบบการทำงานแบบทางเลอื ก (SELECTION)

เป็นทางเลือกของโปรแกรมซง่ึ จะตอ้ งมีเพียงสองทางเลือกเท่าน้ันและหลงั จากนั้นทางเลือกทั้งสอง
ตอ้ งมาพบกัน และทำงานในขน้ั ตอนต่อไป

การทำงานแบบ if … then

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

ครผู สู้ อน ประจักษ์ ปะทะดี 21

จากรปู ด้านซา้ ย A มคี ่าเท่ากับ 1 เมอื่ มาเจอสัญลักษณ์ตัดสินใจที่มีเงื่อนไขวา่ A น้อยกว่า 3 เงื่อนไขเป็น
จริงจึงทำโปรเซส A=5 เม่อื จบ flow A จึงมคี ่าเท่ากบั 5 สว่ นรูปทางด้านขวา A มคี ่าเท่ากบั 10 เงอ่ื นไขเป็นเท็จจึง
ไม่ทำโปรเซส เมอ่ื จบโปรแกรม A จึงมคี า่ เท่าเดิม

ทำงานแบบ If…Then…Else

ทำงานคลา้ ยกบั If…Then แต่ต่างกันเล็กน้อย คือถา้ เงื่อนไขถูกก็จะทำตามกระบวนการฝัง่ ถูกตอ่ ไป แต่ถ้า
เง่ือนไขผดิ กจ็ ะทำตามกระบวนการฝง่ั ผิด

จากรปู ดา้ นซ้าย A มีค่าเท่ากบั 1 เม่อื มาเจอสญั ลักษณ์ตัดสินใจทม่ี ีเงื่อนไขว่า A นอ้ ยกว่า 3 เง่ือนไขเป็น
จรงิ จงึ ทำโปรเซส A=5 เมอ่ื จบ flow A จงึ มีคา่ เทา่ กับ 5 สว่ นรูปทางด้านขวา A มีค่าเทา่ กับ 10 เงอ่ื นไขเป็นเท็จจึง
ทำโปรเซส A=6 เมอ่ื จบโปรแกรม A จงึ มคี า่ เท่ากับ 6

22 หลกั การเขยี นโปรแกรม (Programming Principles)

เราสามารถใชส้ ัญลกั ษณต์ ดั สนิ ใจซอ้ นกันหลาย ๆ ชนั้ ไดใ้ นกรณที ่ีมเี งอื่ นไขหลายเงอ่ื นไข โดยใช้สัญลกั ษณ์
ตดั สนิ ใจตอ่ จากทางออกของสัญลักษณต์ ดั สินใจก่อนหน้า

รูปแบบการทำงานแบบวนซ้ำ (ITERATION)

เป็นการเขีรนผังงานให้กลับมาทำงานในขั้นตอนเก่าซ้ำ ซึ่งผังงานจะมีลักษณะวน ซึ่งเรียกว่า loop ซึ่ง
จำเป็นจะต้องใช้สญั ลกั ษณต์ ัดสินใจเพ่ือกำหนดเง่ือนไขในการออกจาก loop

จากรูปดา้ นซ้ายเป็นการทำงานแบบวนท่ีซ้ำ เนื่องจากไม่มีการตรวจสอบเงื่อนไข ทำให้ไม่มีทางออกจาก
loop คา่ ของ A จะเพมิ่ ขนึ้ เร่อื ย ๆ ไมส่ ้นิ สุดเนื่องจากไม่มีทางออกไปทำงานในขน้ั ตอนตอ่ ไป เพ่ือทจ่ี ะทำใหอ้ อกจาก
loop ไดจ้ ะตอ้ งมกี าร ตรวจสอบเงอื่ นไขเพอื่ ออกจาก loop ดงั รปู ทางขวามอื ท่ีหลดุ จาก loop เม่ือ A เท่ากับหรือ
มากกวา่ 10

ครผู สู้ อน ประจกั ษ์ ปะทะดี 23

ตวั อยา่ ง 2.14 การเขยี น ผังงาน (Flowchart)
ถ้าต้องการเขียน Flowchart เพื่อคำนวณภาษีที่พนักงานต้องชำระ อัตราภาษี 10% ของเงินเดือนโดย

กำหนดให้ผู้ใช้ป้อนค่าเงินเดือน (salary) แล้วทำการคำนวณ ภาษี (tax) 10% ให้โดยอัตโนมัติ และจะแสดงคา่
salary กับ tax ออกมาทางหน้าจอ Output ที่เราต้องการก็คือ salary และ tax Input คือสิ่งที่ผูใ้ ช้ต้องป้อนให้
ระบบ จากตัวอย่างก็คือ salary เพราะหากผูใ้ ช้ไม่ปอ้ น salary ระบบจะคำนวณ tax ไม่ได้ ส่วนอัตราภาษี 10%
ผู้ใชไ้ ม่ต้องปอ้ นเพราะมกี ารกำหนดมาอยแู่ ล้วว่าภาษีคือ 10%

ตวั อยา่ ง 2.15 การเขยี น ผงั งาน (Flowchart)
ถ้าตอ้ งการเขียน Flowchart การหาผลรวมของตัวเลขตั้งแต่ 1 ถงึ n ( n คอื Input ท่ี กรอกเขา้ มา )
Input ในข้อนคี้ อื n เม่อื รบั คา่ n เขา้ มาแลว้ ทำการกำหนดคา่ ตัวแปรทจ่ี ะใช้นับวา่ บวกถงึ เลขอะไรแล้ว ใน

ทนี่ ้ีคอื i จากนัน้ ตรวจสอบเงอื่ นไขวา่ i น้อยกวา่ n หรอื ไม่ ถา้ น้อยกว่าให้บวกค่า i เพิ่มลงไปใน sum แลว้ ให้เพ่ิมค่า
i ข้ึน 1 แลว้ วนกลับมาตรวจสอบเงือ่ นไขใหมจ่ นกวา่ เงือ่ นไขจะผิดก็จะหลุดออกมาจากข้ันตอนการทำซ้ำ มาแสดงค่า
sum ทางหนา้ จอและจบโปรกรม

24 หลกั การเขยี นโปรแกรม (Programming Principles)

ตัวอย่าง 2.16 จงวิเคราะห์งานและเขียนผังงาน โดยให้มีการวนรอบการทำงานของ โปรแกรม จากโจทย์
ต่อไปน้ี

โจทย์ ร้านค้าแหง่ หนงึ่ ลดราคาสินคา้ ใหแ้ ก่ลูกคา้ ทม่ี าซือ้ ของ โดยมเี งอื่ นไขดังน้ี
ถ้าซื้อสินคา้ > 5,000 บาท ลดราคาให้ 5% ของราคาจ่ายจรงิ
ถ้าซอื้ สนิ ค้า 1,000 – 5,000 บาท ลดราคาให้ 3% ของราคาจ่ายจริง
ถา้ ซอ้ื สนิ ค้า 100 – 999 บาท ลดราคาให้ 1% ของราคาจา่ ยจริง
ถ้าต่ำกว่าน้ไี มล่ ดราคาให้

ครผู สู้ อน ประจกั ษ์ ปะทะดี 25

วเิ คราะห์งาน
1. สิง่ ทต่ี ้องการ
คำนวณหา ส่วนลด และ เงนิ ที่ตอ้ งจ่ายจรงิ หลงั หกั ส่วนลด
2. รูปแบบผลลพั ธ์
ราคาสินค้า : ________________
ได้รบั ส่วนลด : ________________
ราคาสนิ คา้ สทิ ธิ : ________________
3. ขอ้ มลู นำเขา้
3.1 ราคาสินคา้
3.2 ความต้องการทำงานต่อ
4. ตัวแปรท่ีใช้
pay สำหรบั เกบ็ ราคาสินคา้
sale สำหรบั เก็บส่วนลดสนิ คา้
net สำหรับเกบ็ ราคาสินค้าหลังหกั สว่ นลด
ans สำหรับเก็บค่าความตอ้ งการทำงานต่อ
5. วิธีประมวลผล
5.1 เรม่ิ ตน้
5.2 ป้อนข้อมูลราคาสนิ ค้า
5.3 คำนวณส่วนลดโดยใช้เงื่อนไขดังน้ี
- ถา้ ราคาสินคา้ > 5,000 บาท ใหค้ ำนวณ sale = pay x 0.05 แล้วไปทำขอ้ 5.4
- ถา้ ราคาสนิ ค้า >= 1,000 บาท ให้คำนวณ sale = pay x 0.03 แลว้ ไปทำขอ้ 5.4
- ถา้ ราคาสินค้า >= 100 บาท ให้คำนวณ sale = pay x 0.01 แลว้ ไปทำข้อ 5.4
- ถ้าราคาสินคา้ < 100 บาท ใหค้ ำนวณ sale = pay x 0 แล้วไปทำข้อ 5.4
5.4 คำนวณราคาสินค้าหลงั หักส่วนลดโดยใชส้ ตู ร net = pay – sale
5.5 แสดงค่า pay, sale, net
5.6 ปอ้ นคา่ ความตอ้ งการในการทำงานต่อหรือไม่
- ถ้าความตอ้ งการทำงานต่อเปน็ y ใหว้ นไปทำขอ้ 5.1
- ถา้ ความต้องการทำงานตอ่ เป็น n ใหไ้ ปทำข้อ 5.7
5.7 จบการทำงาน

26 หลกั การเขียนโปรแกรม (Programming Principles)

ครูผสู้ อน ประจักษ์ ปะทะดี 27

Note
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................

28 หลักการเขียนโปรแกรม (Programming Principles)




Click to View FlipBook Version