กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
คำนำ
เอกสารประกอบการเรียนรู้ฉบับนี้จัดทาขึ้นเพื่อใช้ในการจัดกิจกรรมการสาระที่3เทคโนโลยีสารสนเทศ
และการสื่อสาร มาตรฐาน ง 3.1 เข้าใจ เห็นคุณค่า และใช้กระบวนการเทคโนโลยีสารสนเทศในการสืบค้นข้อมูล
การเรียนรู้ การสื่อสาร การแก้ปัญหา การทางาน และอาชีพอย่างมีประสิทธิภาพ ประสิทธิผล มีคุณธรรม ตาม
หลักสูตรโรงเรียนโคกสีพิทยาสรรพ์ สานักงานเขตพื้นที่การศึกษามัธยมศึกษา เขต 25 พุทธศักราช 2551
เอกสารประกอบการเรียนรู้ฉบับนี้เป็นการนาเสนอเนื้อหาในส่วนของตัวชี้วัดที่ 5 แก้ปัญหาด้วยกระบวน
การเทคโนโลยีสารสนเทศอย่างมีประสิทธิภาพเพื่อให้นักเรียนได้ศึกษาได้ด้วยตนเอง ผู้เรียบเรียงหวังว่าเอกสาร
ประกอบการเรียนรู้ฉบับนี้ จะเป็นประโยชน์กับครูผู้สอนและนักเรียนในการจัดกิจกรรมการเรียนรู้สาหรับกลุ่ม
สาระการเรียนรู้การงานอาชีพและเทคโนโลยี ซึ่งสอดคล้องกับการปฏิรูปการศึกษาของไทย ที่มุ่งเน้นให้
นักเรียนมีความสมบูรณ์ทั้งด้านสติปัญญาความรู้ คุณธรรม จริยธรรม
อานาจ พรหมใจรักษ์
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
สำรบัญ
หน้า
ขั้นตอนการพัฒนาโปรแกรม 1
การกาหนดและวิเคราะห์ปัญหา
การเขียนผังงานและซูโดโค๊ด
การเขียนโปรแกรม
การทดสอบและแก้ไขโปรแกรม
ทาเอกสารและบารุงรักษาโปรแกรม
2
3
4
4
4
วงจรการพัฒนาโปรแกรม 5
8
14
หลักเกณฑ์ในการวิเคราะห์ปัญหา
วิธีการประมวลผล
รูปแบบผลลัพท์และลักษณะของข้อมูล
การทดสอบข้อมูลขั้นสุดท้าย
15
16
การทดสอบขั้นตอนวิธีการแก้ปัญหา 18
การเขียนผังงาน 24
สัญลักษณ์ที่ใช้ในการเขียนโปรแกรม
หลักเกณฑ์การเขียนผังงาน
ลักษณะโครงสร้างการเขียนผังงาน
28
32
33
การเขียนอัลกอริธึมและซูโดโค๊ด 39
ความหมายของอัลกอริธึม
คุณสมบัติพื้นฐานในการประมวลผลของคอมพิวเตอร์
การใช้สัญลักษณ์เชื่อมประโยคคาสั่งเงื่อนไข
39
41
44
พื้นฐานการเขียนซูโดโค๊ด 45
การเขียนซูโดโค๊ดสาหรับตัดสินใจและทดสอบทางเลือก
การเขียนซูโดโค๊ดแบบวนซ้า
การเขียนซูโดโค๊ดเพื่อเรียกโปรแกรมย่อยและกระโดดข้าม
47
49
51
รูปแบบการเขียนโปรแกรมคอมพิวเตอร์ 52
บรรณานุกรม 55
1
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์
การนาคอมพิวเตอร์มาใช้งานนั้นต้องมีโปรแกรมสาหรับทางานตามที่ต้องการ ผู้ที่พัฒนาโปรแกรม
สาหรับงานต่างๆ จะต้องเข้าใจงานนั้นเป็นอย่างดีแล้วจึงนามาพัฒนาเป็นโปรแกรมเพื่อใช้ช่วยในการทางานนั้นๆ
ต่อไปงานต่างๆที่คอมพิวเตอร์สามารถทางานได้นั้นจะต้องเป็นงานที่มีขั้นตอนการทางาน ขั้นตอนการแก้ปัญหา
ที่แน่นอน จากนั้นนักเขียนโปรแกรมจึงนาขั้นตอนการแก้ปัญหานั้นมาพัฒนาเป็นโปรแกรมคอมพิวเตอร์ต่อไป
การเขียนโปรแกรมคอมพิวเตอร์ให้ทางานได้ตามที่เราต้องการนั้น ผู้เขียนโปรแกรมจะต้องรู้ว่าจะ
ให้โปรแกรมทาอะไรมีข้อมูลอะไรที่ต้องให้กับโปรแกรมบ้าง และ ต้องการเอาต์พุตอย่างไรจากโปรแกรมรวมทั้ง
รูปแบบการแสดงผลด้วย ผู้ที่ทาการเขียนโปรแกรมจะต้องทราบถึงขั้นตอนวิธีการของแก้ปัญหาของโปรแกรม
ด้วยว่าจะต้องทาอย่างไรโดยเขียนเป็นลาดับขั้นตอนขึ้นมาก่อนแล้วจดบันทึกเอาไว้จากนั้น จึงนาลาดับขั้นตอน
ที่เขียนขึ้นมาพัฒนาเป็นโปรแกรม ถ้าหากผู้เขียนโปรแกรมไม่ได้วางแผนขั้นตอนการทางานต่างๆไว้ก่อน
หากต้องการปรับปรุงแก้ไขโปรแกรมในภายหลัง จะทาให้เสียเวลามากในศึกษาโปรแกรมก่อนที่จะทาการแก้ไข
ถ้าหากโปรแกรมมีความซับซ้อนไม่มาก การศึกษาโปรแกรมเพื่อแก้ปัญหาอาจไม่นานนักแต่หากโปรแกรม
มีความซับซ้อนมากจะทาให้ขั้นตอนการศึกษาปัญหายิ่งใช้เวลามากขึ้นไปด้วย โดยทั่วไปแล้วขั้นตอนการพัฒนา
โปรแกรมแบ่งได้ดังนี้
1. กาหนดและวิเคราะห์ปัญหา(Problem Definition and Problem Analysis)
2. เขียนผังงานและซูโดโค้ด (Flowchart and Pseudocoding)
3. เขียนโปรแกรม (Programming)
4. ทดสอบและแก้ไขโปรแกรม (Program Testing and Debugging)
5. ทาเอกสารและบารุงรักษาโปรแกรม (Progam Docmentation and Maintenance)
ขั้นตอนการพัฒนาโปรแกรม
2
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
การกาหนดและวิเคราะห์ปัญหา
ขั้นตอนนี้เป็นขั้นตอนแรกสุดที่นักเขียนโปรแกรม จะต้องทาการให้คอมพิวเตอร์แก้ปัญหาต่างๆให้เรา
นั้นเราต้องมีแนวที่แก้ไขปัญหาที่เหมาะสมให้กับคอมพิวเตอร์เพื่อให้การทางานเป็นอย่างมีประสิทธิภาพถ้าหากผู้
ที่เขียนโปรแกรมไม่สามารถทาความเข้าใจกับปัญหาที่ต้องการแก้ไขได้การนาคอมพิวเตอร์มาใช้ในการแก้ปัญหา
ต่างๆก็ไม่สามารถทาได้การกาหนดและวิเคราะห์ปัญหามีขั้นตอนย่อยๆดังนี้
1. กาหนดขอบเขตของปัญหา โดยกาหนดรายละเอียดให้ชัดเจนว่าจะให้คอมพิวเตอร์ทาอะไร ตัวแปร
ค่าคงที่ที่ต้องใช้เป็นลักษณะใด ถ้าหากเราไม่กาหนดขอบเขตของปัญหาจะทาให้คอมพิวเตอร์ตัดสินใจได้ยากว่า
ข้อมูลต่างๆที่เกิดขึ้นนั้นถูกหรือผิด
2. กาหนดลักษณะของข้อมูลเข้าแล้วออกจากระบบ ( Input/Output Specification) โดยต้องรู้ว่าข้อมูล
ที่จะส่งเข้าไปเป็นอย่างไรมีอะไรบ้าง เพื่อให้โปรแกรมทาการประมวลผลและแสดงผลลัพธ์เช่นการรับค่าจาก
คีย์บอร์ด การใช้เม้าส์การกาหนดปุ่มต่างๆลักษณะการแสดงผลทางหน้าจอว่าจะให้มีรูปร่างอย่างไร โดยคานึงถึง
ผู้ใช้เป็นหลักในการออกแบบโปรแกรม ตัวอย่างเช่น ถ้าหากต้องการรับข้อมูลเข้าไปประมวลผลก็ต้องพิจารณา
ต่อว่าเป็นเลขจานวนเต็ม หรือ ทศนิยม เอาต์พุตที่แสดงออกทางจอภาพจะให้แสดงทศนิยมกี่ตาแหน่ง เป็นต้น
3. กาหนดวิธีการประมวลผล (Process Specification)โดยต้องรู้ว่าจะให้คอมพิวเตอร์ประมวลอย่างไรจึง
ได้ตามต้องการ
ตัวอย่างที่ 1 ถ้าหากต้องออกแบบโปรแกรมให้คอมพิวเตอร์รับค่าข้อมูล 3 ค่า และ แสดงค่าเฉลี่ยทางจอภาพเรา
อาจกาหนดและวิเคราะห์ปัญหาได้ดังนี้
1. รับข้อมูลจากคีย์บอร์ด
1.1 รับข้อมูลเฉพาะที่เป็นตัวเลขมาเก็บในตัวแปรจานวน3ตัว
1.2 ถ้าข้อมูลเท่ากับ 0 ให้รับใหม่
2. หาค่าทุกค่าที่รับมาเข้าด้วยกัน
2.1 รวมค่าทุกค่าที่รับมาเข้าด้วยกัน
2.2 นาค่าผลรวมที่ได้หารด้วย3
2.3 นาค่าผลลัพธ์ไปเก็บในตัวแปร
3
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
3. แสดงลัพธ์ทางจอภาพ
3.1 แสดงคาว่าค่าเฉลี่ยเท่ากับ
3.2 แสดงผลลัพธ์โดยมีทศนิยมสองตาแหน่ง
จะเห็นว่าเราจะนาปัญหามาแจกแจงย่อยว่าจะต้องทาอะไรบ้างโดยข้อมูลที่รับเข้าไป คือ ตัวเลขสาม
ตัว การประมวลผล คือ การหาค่าเฉลี่ย ส่วนเอาต์พุต คือ การพิมพ์ผลลัพธ์ เราสามารถเขียนการทางาน
ของระบบได้ดังแผนภาพในรูปที่ 1
นาข้อมูลเข้า ประมวลผล นาข้อมูลออก
รูปที่ 1 ขั้นตอนการทางานของโปรแกรม
การเขียนผังงานและซูโดโค้ช
หลังจากที่ได้วิเคราะห์ปัญหาแล้วขั้นตอนไปจะต้องใช้เครื่องมือช่วยในการออกแบบโปรแกรม ซึ่งยัง
ไม่ได้เขียนเป็นโปรแกรมจริงๆแต่จะช่วยให้เขียนโปรแกรมได้ง่ายขึ้นโปรแกรมได้ง่ายขึ้น โดยเขียนเป็นลาดับ
ขั้นตอนการทางานของโปรแกรมที่เรียกว่า อัลกอริทึม(Algorilhm) ซึ่งจะแสดงขั้นตอนการแก้ปัญหาโดยใช้
ประโยคที่ชัดเจนไม่คลุมเครือ และ มีรายละเอียดการทางานพอสมควรเพียงพอที่จะนาไปเขียนเป็นโปรแกรมให้
ทางานจริง โดยอัลกอริทึมนั้นอาจเขียนให้อยู่ในรูปของรหัสจาลองหรือซูโดโค้ด(Pseudo-code)หรือเขียนเป็น
ผังงาน(Flowchart)ก็ได้ ซูโดโค้ดจะเป็นคาอธิบายขั้นตอนการทางานของโปรแกรมเป็นคาย่อไม่มีรูปแบบ
เฉพาะตัว โดยแต่ละส่วนจะเป็นแนวทางในการเขียนโปรแกรมซึ่งทาให้เขียนโปรแกรมเป็นภาษาต่างๆได้ง่ายขึ้น
ส่วนผังงานจะใช้สัญลักษณ์ต่างๆแทนการทางานและทิศทางของโปรแกรม
รับข้อมูลตัวที่ 1
รับข้อมูลตัวที่ 2
รับข้อมูลตัวที่ 3
อ่านค่าเฉพาะที่เป็นเลข3ตัว
นาตัวเลขทั้งสามตัวมารวม
กันนาผลรวมมาหารด้วย3
แสดงค่าเฉลี่ย
ทศนิยมสอง
ตาแหน่ง
4
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
การเขียนโปรแกรม
หลังจากที่ผ่านขั้นตอนทั้งสองแล้ว ขั้นต่อไปจะต้องเขียนเป็นโปรแกรมเพื่อให้คอมพิวเตอร์สามารถ
ประมวลผลได้ โดยเปลี่ยนขั้นตอนการทางานให้อยู่ในรูปรหัสภาษาคอมพิวเตอร์การเขียนโปรแกรมจะต้องเขียน
ตามภาษาที่คอมพิวเตอร์เข้าใจโดยอาจใช้ภาษาระดับสูงหรือระดับค่า ซึ่งสามารถเลือกได้หลายภาษาการเขียน
โปรแกรมแต่ละภาษาจะต้องทาตามหลักไวยากรณ์(syntax)ที่กาหนดไว้ในภาษานั้นนอกนี้การเลือกใช้ภาษา
จะต้องพิจารณาถึงความถนัดของผู้เขียนโปรแกรมด้วย
การทดสอบและแก้ไขโปรแกรม
หลังจากเขียนโปรแกรม จะต้องทดสอบความถูกต้องของโปรแกรมที่เขียนขึ้นหาจุดผิดพลาดของ
โปรแกรมว่ามีหรือไม่ และ ตรวจสอบจนไม่พบที่ผิดอีก จุดผิดพลาดของโปรแกรมนี่ เรียกว่า บัก(bug) ส่วนการ
แก้ไขข้อผิดพลาดให้ถูกต้อง เรียกว่า ดีบัก(debug) โดยทั่วไปแล้วข้อผิดพลาดจากการเขียนโปรแกรมจะมี
สองประเภท คือ
1. การเขียนคาสั่งไม่ถูกต้องตามหลักการเขียนโปรแกรมภาษานั้นๆ ซึ่งเรียกว่า Syntax Error หรือ
Coding Error ข้อผิดพลาดประเภทนี้เรามักพบตอนแปลภาษาโปรแกรมเป็นรหัสภาษาเครื่อง
2. ข้อผิดพลาดทางตรรกะ หรือ Logic Error เป็นข้อผิดพลาดที่โปรแกรมทางานได้แต่ผลลัพธ์ออกมา
ไม่ถูกต้อง
ทาเอกสารและบารุงรักษาโปรแกรม
ขั้นตอนนี้จะทาให้ผู้ใช้สามารถใช้งานโปรแกรมได้อย่างมีประสิทธิภาพและสะดวกในการตรวจสอบ
ข้อผิดพลาดโดยเขียนเป็นเอกสารประกอบโปรแกรมขึ้นมาโดยทั่วไปแล้วแบ่งออกเป็นสองประเภทคือ
1. คู่มือการใช้หรือ User Document หรือ User guide ซึ่งจะอธิบายการใช้โปรแกรม
2. คู่มือโปรแกรมเมอร์ หรือ Program Document หรือ Technical Reference ซึ่งจะอานวยความสะดวกใน
การแก้ไขโปรแกรมและพัฒนาโปรแกรมในอนาคตโดยจะมีรายละเอียดต่างๆเกี่ยวกับโปรแกรมเช่นชื่อโปรแกรม
การรับข้อมูลการพิมพ์ผลลัพธ์ขั้นตอนต่างๆในโปรแกรมเป็นต้น
5
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ส่วนการบารุงรักษาโปรแกรม(Maintainance) เป็นการที่ผู้เขียนโปรแกรมจะต้องคอยตรวจสอบการใช้
โปรแกรมจริงเพื่อแก้ไขข้อผิดพลาด ซึ่งอาจเกิดขึ้นในภายหลังรวมทั้งพัฒนาโปรแกรมให้ทันสมัยอยู่เสมอ
เมื่อเวลาผ่านไป
การเขียนโปรแกรมให้ทางานหนึ่งนั้นสามารถเขียนได้หลายวิธี โดยแต่ละวิธีในการเขียนอาจได้ผลลัพธ์
ออกมาเหมือนกันแม้ว่าจะมีการเขียนหรือขั้นตอนการทางานในโปรแกรมไม่เหมือนกันก็ตามการเขียนโปรแกรม
ในงานบางงานผลลัพธ์ที่ได้อาจจะไม่ถูกต้องเสมอไปตัวอย่างเช่นการเขียนโปรแกรมสาหรับหารเลข โดยให้
โปรแกรมรับค่าตัวเลขทางแป้ นพิมพ์สองค่า แล้วนาค่านั้นมาหากันอาจเป็นไปได้ว่าคอมพิวเตอร์สามารถแสดง
ผลลัพธ์การหารออกมาได้แต่ถ้าหากป้อนค่าเป็นศูนย์สาหรับตัวหารเข้าไปคอมพิวเตอร์ก็ไม่สามารถคานวณได้ถ้า
หากผู้เขียนโปรแกรมไม่ได้ตรวจสอบตรงจุดนี้ ก็จะทาให้โปรแกรมที่เขียนออกมาเป็นโปรแกรมที่ไม่สมบูรณ์
โปรแกรมบางโปรแกรมทางานได้ถูกต้องแต่หากต้องการพัฒนาต่อ หรือ ปรับปรุงโปรแกรมให้ดีขึ้นทาได้ยากก็
ไม่ถือว่าโปรแกรมนั้นมีคุณลักษณะของโปรแกรมที่ดี อาจเนื่องมาจากผู้เขียนโปรแกรมไว้ก่อนหน้านั้นไม่ได้มี
การเขียนคาอธิบายขั้นตอนต่างๆให้ผู้ต้องการพัฒนาต่อสามารถเข้าใจได้ง่ายๆ สาหรับโปรแกรมที่มีคุณลักษณะ
ของโปรแกรมที่ดีควรมีลักษณะดังต่อไปนี้
1. มีความถูกต้องและเชื่อถือได้
โปรแกรมที่ดีต้องให้ผลลัพธ์ที่ถูกต้องแม่นยาไม่คลาดเคลื่อนโปรแกรม จึงต้องมีความสมบูรณ์มาก
ที่สุดคือผ่านการทดสอบที่ครอบคลุมโปรแกรมต้องโปรแกรมต้องนิ่งทางานแล้วไม่ค่อยเกิดปัญหาเพราะอาจถูก
นาไปใช้ในการตัดสินใจที่สาคัญๆของผู้บริหาร
2. มีความเป็นมิตรต่อผู้ใช้
ปัจจุบันผู้ใช้โปรแกรมในการทางานมากขึ้นในจานวนนี้มีผู้ใช้ที่เป็นผู้เริ่มต้นและไม่มีพื้นฐานทาง
ด้านคอมพิวเตอร์เลยและมีแนวโน้มเพิ่มมากขึ้นดังนั้นการสร้างให้โปรแกรมใช้งานง่ายและสะดวกจึงเป็นเรื่องที่
มีความสาคัญ
วงจรการพัฒนาโปรแกรม
6
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
3. ค่าใช้จ่ายต่า
ก่อนการพัฒนาต้องวางแผนและประเมินค่าใช้จ่าย เมื่อพัฒนาก็ต้องควบคุมค่าใช้จ่ายให้เป็นไปตาม
แผนในมุมมองของผู้ใช้โปรแกรม จะต้องทางานได้คุ้มกับเงินที่จ่ายไปในมุมมองของผู้พัฒนาค่าใช้จ่ายในการ
พัฒนาต้องต่ากว่าราคาที่เสนอแก่ลูกค้า
4. ต้องอ่านง่ายและสามารถกลับมาใช้ใหม่
โปรแกรมที่มีความสูงมักมีโครงสร้างที่ใหญ่และซับซ้อนจึงควรมีการออกแบบเป็นโมดูล(Module)
ย่อยๆที่มีอิสระต่อกันและเรียบง่ายเพื่อให้ผู้พัฒนาโปรแกรมคนอื่นสามารถเข้าใจนาไปพัฒนาต่อให้เหมาะสมกับ
สมัยได้
5. มีความปลอดภัย
ข้อมูลสาคัญมีแนวโน้มในการเก็บไว้ในคอมพิวเตอร์เพิ่มมากขึ้นรวมถึงเผยแพร่ในอินเทอร์เน็ตทา
ให้เกิดความเสี่ยงในเรื่องของความปลอดภัยของข้อมูลเช่นการแก้ไขข้อมูลโดยไม้ได้รับอนุญาตการลักลอบขโมย
ไปจนถึงการทาลายข้อมูลโปรแกรมที่ดีจึงต้องมีความปลอดภัยสูง
6. ใช้เวลาในการพัฒนาไม่นาน
ปัจจุบันทั้งเทคโนโลยีและวิธีการทางานเปลี่ยนแปลงอย่างรวดเร็วทาให้เราไม่สามารถใช้เวลานาน
เกินไปในการพัฒนาโปรแกรมไม่เช่นนั้นแล้วกว่าโปรแกรมจะเสร็จความต้องการอาจเปลี่ยนไปแล้วและการส่ง
มอบงานก็ต้องเป็นไปตามที่ประเมินไว้
ในการเขียนโปรแกรมหรือพัฒนาโปรแกรมนั้นโปรแกรมเมอร์ต้องมีการเตรียมงานเกี่ยวกับการเขียน
โปรแกรมอย่างเป็นขั้นตอนเรียกขั้นตอนเหล่านี้ว่าวงจรการพัฒนาโปรแกรม(Program Development Life Cycle
PDLC)ประกอบด้วย 6 ขั้นตอน ดังนี้
1. ขั้นวิเคราะห์ความต้องการ (Reuirement Analysis & Feasibility Study)
2. ขั้นวางแผนแก้ไขปัญหา (Algorithm Design)
3. ขั้นดาเนินการเขียนโปรแกรม (Program Coding)
4. ขั้นทดสอบและแก้ไขโปรแกรม (Program Testing & Debugging)
5. ขั้นการเขียนเอกสารประกอบ (Documentation)
6. ขั้นบารุงรักษาโปรแกรม (Program Maintenance)
7
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ในการทากิจกรรมต่างๆในแต่ละขั้นตอนจะต้องมีการตรวจสอบความถูกต้องให้แน่นอน ก่อนที่จะทา
กิจกรรมถัดไป สาหรับในบางกรณีถ้าหากว่ามีปัญหาบางอย่างเกิดขึ้นก็อาจมีการย้อนไปตรวจสอบกิจกรรมที่
เคยเคยทามาก่อนหน้านี้แล้วก็ได้ สาหรับกิจกรรมในขั้นตอนที่5อาจทาไปพร้อมๆกับกิจกรรมในขั้นตอนที่ 1
ถึงที่ 4 เลยก็ได้
วิธีการทางคอมพิวเตอร์เป็นขั้นตอนในการจัดทาโปรแกรมที่ช่วยให้การเขียนโปรแกรมดาเนินไปอย่าง
มีประสิทธิภาพและได้ผลลัพธ์ตามที่มุ่งหมาย เพราะ แต่ละขั้นตอนจะช่วยให้เกิดความเป็นระเบียบในการเขียน
โปรแกรมทาให้การเรียนเรียบแนวคิดมีความชัดเจนไม่สับสนและเกิดความง่ายต่อการเขียนหรือพัฒนาโปรแกรม
แม้ว่าในปัจจุบันจะมีวิธีการสมัยใหม่เกิดขึ้น เช่น เทคโนโลยีการเขียนโปรแกรมเชิงวัตถุ แต่วิธีการทาง
คอมพิวเตอร์ยังเป็นสิ่งที่จาเป็นและน่ากระทา โดยเฉพาะอย่างยิ่งผู้ที่เพิ่งเริ่มต้นใหม่กับงานเขียนโปรแกรม
เพราะช่วยให้แนวคิดของการพัฒนาโปรแกรมเป็นระเบียบไม่สับสน
วางแผนแก้ไขปัญหา
เขียนโปรแกรม
ทดสอบและแก้ไข
เขียนเอกสารประกอบ
บารุงรักษา
วิเคราะห์ความต้องการ
8
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
วงจรการออกแบบและพัฒนาโปรแกรมนั้นเป็นสิ่งที่ต้องศึกษาทาความเข้าใจเพื่อให้โปรแกรมที่สร้าง
ขึ้นตอนการพัฒนาโปรแกรมทั้งหมด 6 ขั้นตอน ในการเตรียมงานเขียนโปรแกรมขั้นตอนแรกของการพัฒนา
โปรแกรม คือ การกาหนดและวิเคราะห์ปัญหาเพื่อเป็นการพิจารณาว่างานที่การนั้นต้องการนั้นจะทาอะไร
ผลลัพธ์เป็นอย่างไร ใช้ข้อมูลใดเป็นอินพุต และ มีวิธีการประมวลผลอย่างไร โดยต้องคานึงความเป็นไปได้ที่
คอมพิวเตอร์สามารถทางานได้ตามที่ได้วางแผนไว้ด้วยการวิเคราะห์งานที่ถูกต้อง จะทาให้สามารถเขียน
โปรแกรมจะต้องทราบว่าค่าจ้างคานวณได้จากสูตร
ค่าจ้าง = Hors*PayRate
หรือถ้าต้องการเขียนโปรแกรม เพื่อคานวณหาปริมาตรของทรงกระบอก ผู้เขียนโปรแกรมจะต้อง
ทราบว่าการหาปริมาตรคานวณได้จากสูตร
ปริมาตรทรงกระบอก = π x รัศมี2
x ความสูง
การวิเคราะห์ความต้องการเป็นการทาความเข้าความเข้าใจปัญหาและค้นหาสิ่งที่ต้องการ นั่นคือจะต้อง
ศึกษาโดยละเอียดว่าต้องการผลลัพธ์อะไร ต้องใช้ข้อมูลอะไร เพื่อให้ได้ผลลัพธ์ตามต้องการและมีขั้นตอนการ
ประมวลผลอย่างไรบ้างบางครั้งจะเรียกขั้นตอนนี้ว่าการวิเคราะห์ปัญหาหรือการวิเคราะห์งานการวิเคราะห์ความ
การจึงเป็นขั้นตอนแรกก่อนที่จะเริ่มต้นเขียนโปรแกรม และ ถือว่าเป็นขั้นตอนที่สาคัญที่สุดก่อนถึงขั้นวางแผน
แก้ปัญหาและดาเนินการเขียนโปรแกรม
การวิเคราะห์ปัญหานั้นมีประเด็นที่ต้องพิจารณาออกมาเป็นข้อๆดังนี้
 ต้องการอะไร
จะต้องอธิบายว่างานที่ติองการให้ทาอะไรโดยอาจเป็นการเขียนออกมาเป็นข้อๆก็ได้
 ต้องการเอาต์พุตอย่างไร
จะอธิบายถึงลักษณะของผลลัพธ์ที่ต้องการว่าต้องการอย่างไร อาจเป็นการแสดงออกทางจอภาพ
แสดงออกทางเครื่องพิมพ์หรือส่งเป็นเสียงออกทางลาโพง โดยต้องอธิบายรายละเอียดด้วย เช่น ถ้าต้องการ
ให้แสดงทางจอภาพหน้าแรกเป็นอย่างไร ตัวเลขที่แสดงเป็นทศนิยมกี่ตาแหน่ง แสดงเป็นตารางอย่างไร ถ้า
หากแสดงออกทางเครื่องพิมพ์ จะต้องบอกด้วยว่าจะให้พิมพ์เลขหน้าหรือไม่มีส่วนหัวหรือท้ายเอกสารหรือไม่
หลักเกณฑ์ในการวิเคราะห์ปัญหา
9
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
 ตัวแปรที่ใช้
เพื่อบอกว่าจะใช้ตัวแปรอะไรแทนข้อมูลนาเข้าหรือแทนค่าที่อยู่ในระหว่างการประมวลตลอดจน
ตัวแปรที่ใช้แสดงผลลัพธ์
 วิธีการประมวลผลเป็นอย่างไร
อธิบายถึงลาดับขั้นตอนของการประมวลผลวิธีการแก้ปัญหา เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ
โดยต้องพิจารณาว่าข้อมูลต่างๆที่รับเข้าไปนั้นจะต้องเก็บในตัวแปรกี่ตัวเป็นตัวแปรประเภทใด การประมวลผล
มีขั้นตอนกระทากับตัวแปรนั้นๆอย่างไรบ้าง ถ้าหากต้องการประมวลผลกับข้อมูลหลายค่าจะรับข้อมูลเข้าไป
ทีละค่าแล้วประมวลผลหรือรับข้อมูลเข้าไปทั้งหมดแล้วประมวลผล การเขียนคาอธิบายวิธีการประมวลผลนี้
อาจเป็นการเขียนออกมาเป็นการเขียนออกเป็นการเขียนออกมาเป็นข้อๆในลักษณะของรหัสเทียมหรือเขียนเป็น
ผังงานก็ได้
วิธีการประมวลผลนั้น มักจะเขียนในลักษณะอัลกอริธึมที่เป็นการจัดลาดับความคิดออกเป็น
ขั้นตอน เพื่อใช้ในการแก้ปัญหาสาหรับการโปรแกรม โดยจะแสดงลาดับของตอนเชิงแปลงข้อมูลขาเข้าของ
ปัญหาที่กาลังพิจารณาไปเป็นผลลัพธ์ตามที่ต้องการ โดยขั้นตอนต่างๆที่เขียนขึ้นจะต้องแปลไปเป็นคาสั่งของ
คอมพิวเตอร์ได้ อัลกอริธึมที่ทางานได้ต้องจะต้องแก้ไขปัญหาและหาคาตอบได้ทุกกรณี
เมื่อได้วิเคราะห์ปัญหาออกมาแล้วจะต้องลองทศสอบดูด้วยตนเองโดยลองป้อนข้อมูลเข้าไป
แล้วดูว่าการแก้ปัญหาเป็นไปตามที่ต้องการหรือไม่
ตัวอย่างที่ 2 จงเขียนแนวทางการแก้ปัญหาด้วยคอมพิวเตอร์สาหรับให้คอมพิวเตอร์คานวณหาค่าจ้างพนักงาน
เป็นรายชั่วโมงจากนั้นแสดงค่าจ้างที่คานวณได้
วิธีทา
ต้องการอะไร ต้องการทราบค่าจ้างของพนักงานแต่ละคน
ต้องการเอาต์พุตอย่างไร ต้องการเอาต์พุตเป็นค่าจ้างสุทธิของพนักงานทางจอภาพ
ข้อมูลเข้า รหัสพนักงาน,ชื่อพนักงาน,จานวนชั่วโมงทางานเก็บในตัวแปรชื่อ
Hours ,ค่าจ้างรายชั่วโมงเก็บในตัวแปรชื่อ Pay Rate
10
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
วิธีการประมวลผล
กาหนดวิธีการคานวณ
ค่าจ้างสุทธิ = จานวนชั่วโมง x อัตราต่อชั่วโมง
ขั้นตอนการประมวล
1. เริ่มต้น
2. รับรหัสพนักงาน,ชื่อพนักงาน,จานวนชั่วโมงทางาน,ค่าจ้างรายชั่วโมง
3. คานวณ ค่าจ้างสุทธิ = Hours x PayRate
4. แสดงผลลัพธ์เป็นรหัสพนักงาน ชื่อ และค่าจ้างสุทธิ
5. จบการทางาน
ตัวอย่างที่ 3 จงเขียนแนวทางการแก้ปัญหาด้วยคอมพิวเตอร์ในการหาปริมาตรกระบอก และ แสดงค่าปริมาตร
ที่คานวณได้
วิธีทา
ต้องการอะไร ต้องการคานวณปริมาตรของรูปทรงกระบอก
ต้องการเอาต์พุตอย่างไร ค่าปริมาตรทรงกระบอกเป็นรูปแบบเลขาทศนิยมทางจอภา
ข้อมูลเข้า ความสูงของทรงกระบอก(h)และรัศมีของทรงกระบอก( r )
เป็นรูปแบบเลขทศนิยม
วิธีการประมวลผล
วิธีการคานวณ
ปริมาตรทรงกระบอก = π x รัศมี2
x ความสูง
ขั้นตอนการประมวลผล
1. เริ่มต้น
2. รับค่าความสูงและค่ารัศมีของทรงกระบอก
11
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
3. คานวณค่าปริมาตรจากปริมาตร = π x r2
x h
4. แสดงค่าปริมาตรทรงกระบอกทางจอภาพ
5. จบการทางาน
ตัวอย่างที่ 4 จงเขียนโปรแกรมเพื่อรายงานผลสอบของนักเรียนวิชาคอมพิวเตอร์ โดยให้แสดงคะแนนรวม
และเกรดออกมา
วิธีทา
ต้องการอะไร ต้องการพิมพ์คะแนนผลสอบและเกรดของนักเรียน
ต้องการเอาต์พุตอย่างไร แสดงคะแนนและเกรดของนักศึกษาแต่ละคน
ข้อมูลเข้า รหัสประจาตัวนักเรียน(ID),ชื่อนักเรียน(name), คะแนนสอบ
กลางภาค(mid), คะแนนสอบย่อย(test) , คะแนนสอบปลายภาค
(final)
วิธีการประมวลผล
วิธีการคานวณ
คะแนนรวม = คะแนนกลางภาค + คะแนนสอบย่อย + คะแนนปลายภาค
ถ้าคะแนนรวม >= 80 ได้เกรด “A”
ถ้าคะแนนรวม >= 70 และ <80 ได้เกรด “B”
ถ้าคะแนนรวม >= 60 และ <70 ได้เกรด “C”
ถ้าคะแนนรวม >= 50 และ <60 ได้เกรด “D”
ถ้าคะแนนรวม <50 ได้เกรด “F”
ขั้นตอนการประมวลผล
1. เริ่มต้น
2. รับค่าตัวแปร ID , name , mid , test , final
3. คานวณคะแนนรวมและเกรด
Total = mid + final + test
12
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ถ้า Total >= 80 , Grade = “A” ไปข้อ 4
ถ้า Total > = 70 , Grade = “B” ไปข้อ 4
ถ้า Total >= 60 , Grade = “ C” ไปข้อ 4
ถ้า Total > = 50 , Grade = “D” ไปข้อ 4
ถ้า Total <50 , Grade = “F”
4. แสดง id , name , total , Grade ของนักเรียน
5. กลับไปข้อ 2 เพื่อรับจนครบทุกคน ถ้าครบแล้วไปข้อ 6
6. หยุดทางาน
ตัวอย่างที่ 5 จงวิเคราะห์ปัญหาและเขียนอัลกอริทึมของการบวกตัวเลขจาจานวนสามค่าที่อ่านเข้ามาและแสดงผล
ออกทางเครื่องพิมพ์
วิธีทา
ข้อมูลเข้า ตัวเลขสามค่าให้อยู่ในชื่อตัวแปร number , number2 และ numb
ข้อมูลเอาต์พุต ผลรวมให้มีชื่อตัวแปรเป็น total
วิธีการประมวล
อ่านค่าตัวเลขจานวนสามค่า
บวกตัวเลขทั้งสามค่า
แสดงผลรวมของตัวเลข
อัลกอริธึม สามารถเขียนได้ดังนี้
Add_three_number
1. Read number 1 , number 2 , number 3
2. Total = number 1 + number 2 + number 3
3. Print total
END
13
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ตัวอย่างที่ 6 จงวิเคราะห์ปัญหาและเขียนอัลกอริทึมสาหับหาค่าเฉลี่ยของอุณหภูมิสูงสุดและอุณหภูมิต่าสุดเป็น
เลขจานวนเต็มเข้าไปและให้แสดงค่าอุณหภูมิเฉลี่ยออกทางจอภาพ
วิธีทา
ข้อมูลเข้า รับค่าอุณหภูมิสูงสุดอยู่ในตัวแปรชื่อ max _ temp
อุณหภูมิต่าสุดอยู่ในตัวแปรชื่อ min _temp
ข้อมูลเอาต์พุต
1. รับค่าอุณหภูมิสูงสุดและอุณหภูมต่าสุด
2. หาค่าเฉลี่ยโดย avg _temp = (max _ temp + min _ temp)/2
3. แสดงค่า avg_temp ทางจอภาพ
อัลกอริทึม สามารถเขียนได้ดังนี้
Find _ average _ temperature
1. READ max _ temp , min _ temp
2. Avg_temp = (max _ temp + min_ temp) /2
3. Output avg _ temp to the screen
END
14
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
วิธีการประมวลผลเป็นขั้นตอนการประมวลเพื่อให้ได้ผลลัพธ์ตามรูปแบบที่ต้องการโดยใช้ข้อมูลนาเข้า
และตัวแปรต่างๆตามที่ได้กาหนดไว้แล้ว ขั้นตอนของวิธีการประมวลผลจะขึ้นอยู่กับวิธีการเขียนโปรแกรม
โดยทั่วไปการเรียงคาสั่งในโปรแกรมเพื่อประมวลข้อมูลมี 2 วิธี คือ การรับข้อมูลทีละค่าเข้าไปประมวลผลและ
การรับข้อมูลเข้าไปทั้งหมดแล้วจึงประมวล
รับข้อมูลเข้าสู่คอมพิวเตอร์ทีละรายการ
 วิธีการนี้จะรับข้อมูลรายงานการเข้ามาประมวลผลแล้วแสดงผลลัพธ์ โดยอาจรับจาก
แป้นพิมพ์หรือรับจากไฟล์ก็ได้หลังจากนั้นก็จะรับข้อมูลรายการใหม่เพื่อนาไปประมวลผลและแสดงผลลัพธ์อีก
เป็นเช่นนี้เรื่อยๆไปจนกว่าจะหมดข้อมูลที่ต้องการประมวลผลวิธีเป็นวิธีที่สะดวกและนิยมใช้กันโดยทั่วไปเช่น
ในร้านขายสินค้าปลีกร้านขายหนังสือตัวอย่างการประมวลผลเขียนได้ดังแผนภาพต่อไปนี้
วิธีการประมวล
เริ่มต้น
รับข้อมูลหนึ่งรายการ
ประมวลผล
แสดงผลลัพธ์หนึ่งรายการ
ข้อมูล
รายการ
จบ
ใช่
ไม่ใช่
15
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
 รับข้อมูลทั้งหมดในครั้งเดียว
วิธีการนี้จะรับข้อมูลทั้งหมดมาเก็บในหน่วยความจาก่อนจากนั้นประมวลผลแล้แสดง
ผลลัพธ์ของทุกรายในครั้งเดียววิธีนี้ต้องใช้เนื้อที่หน่วยความจามากขึ้นขณะที่ป้อนข้อมูลเข้าไป
รูปแบบผลลัพธ์และลักษณะของข้อมูล
ในส่วนของวิธีการประมวลผลนี้จะต้องมีการกาหนดรูปแบบการแสดงผลลัพธ์ด้วยว่าจะต้องมีการแสดง
อย่างไรรวมวิธีการรับข้อมูลด้วยว่าถ้าหากรับเข้ามาทีละค่าตัวแปรจะต้องมีลักษณะใดและหากใช้วิธีรับข้อมูลเข้า
มาทั้งหมดแล้วประมวลผลจะต้องรับข้อมูลอย่างไรซึ่งมีรูปแบบการดาเนินการดังนี้
1.พิจารณาว่ารูปแบบของผลลัพธ์ต้องมีหัวตาราง(Table Heading) หรือ ไม่ถ้าต้องพิมพ์หัวตารางก่อน
2.ถ้าต้องการคานวณยอดรวมทั้งหมด เช่น ยอดรวมเงินเดือนของพนักงานทุกคนก็ต้องมีการกาหนดตัว
แปรหนึ่งเพื่อเป็นที่เก็บค่าของยอดรวมไว้ตั้งแต่ต้นการกาหนดตัวแปรตัวแปรดังกล่าวมักจะกาหนดให้มีค่าเท่ากับ
ศูนย์ในตอนต้นโปรแกรม เช่น Sum = 0
เริ่มต้น
รับข้อมูลที่มีอยู่ทั้งหมด
ประมวลผล
แสดงผลลัพธ์ทั้งหมด
จบ
16
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
3.พิจารณาข้อมูลที่นาเข้า(lnput Data) หรือ ตัวเลขที่เกี่ยวข้องถ้าตัวเลขที่ใช้มีลักษณะเปลี่ยนไปอย่างไม่
เป็นระบบ กล่าวคือ มีความห่างของตัวไม่แน่นอนก็ต้องใช้รับค่าตัวแปรนาเข้าเช่นเงินเดือนของพนักงานเป็น
ข้อมูลตัวเลขที่มีความห่างของค่าที่ไม่แน่นอนตัวอย่าง เช่น พนักงานคนแรกมีเงินเดือน 7,500 คนที่สอง 9,000
คนที่สาม 13,000 คนที่สี่ 20,000 ไปเรื่อยๆ ซึ่งค่าความห่างของตัวเลขไม่เท่ากัน
ลาดับค่า 7500 9000 13000 20000………
ช่วงห่างตัวเลขมีค่าไม่แน่นอนและไม่ไม่เท่ากัน
ลักษณะข้อมูล เช่น ใช้ตัวแปรเข้ามารับค่า แต่ถ้าข้อมูลที่เกี่ยวข้องเป็นระบบและมีช่วงห่างเท่ากัน เช่น
ลาดับข้อมูล 1 2 3 4 5 6 7
ค่าข้อมูล 5 10 15 20 25 30 35
ข้อมูลลักษณะดังกล่าวอาจใช้วิธีกาหนดตัวแปรให้มีเท่ากับค่าเริ่มต้นของข้อมูลแทนการรับเข้ามาพอและ
เขียนโปรแกรมให้กาหนดค่าเอง เช่น n = l และ number = 5 เป็นต้น
ทั้งการกาหนดและการรับข้อมูลมักขั้นตอนต่อจากข้อ 1 หรือ ข้อ 2 เมื่อได้กาหนดและรับข้อมูลแล้วขั้น
ต่อไปคือการประมวลผล และพิมพ์ผลลัพธ์
4.ในการเขียนโปรแกรมรับข้อมูลทีละรายการ จะต้องมีการกาหนดจุดจบของการประมวลผล หรือมีการ
ทดสอบว่าข้อมูลหมดหรือยัง โดยอาจใช้วิธีทดสอบข้อมูลสุดท้าย หรือใช้วิธีการกาหนด่าตัวแปรสาหรับนับรอบ
(Loop) เพื่อให้นับจานวนรอบการประมวลผลจนกว่าจะครบตามจานวนครั้งที่ต้องการ ดังรายละเอียดต่อไปนี้
การทดสอบข้อมูลสุดท้าย ย
การทดสอบข้อมูลสุดท้ายมี 2 วิธี ดังนี้
วิธีที่ 1 เลือกตัวแปรที่เป็นข้อมูลนาเข้า ตัวใดตัวหนึ่งที่มีค่าเป็นไปไม่ได้เป็นตัวทดสอบ ลาดับของ
การทดสอบจะอยู่ถัดจากการรับข้อมูล ดังนั้น การทดสอบแล้วพบว่าตัวแปรมีค่าเท่ากับค่าเป็นไปได้ก็จะเลิกจาก
การประมวลผลข้อมูลทีละรายการ
วิธีที่ 2 ใช้วิธีกาหนดตัวแปรอีก 1 ตัว เพื่อรับค่าว่าข้อมูลหมดหรือยัง วิธีนี้มักจะวางคาสั่งทดสอบอยู่
หลังจากเสร็จสิ้นการแสดงผลลัพธ์ในแต่ละรอบแล้ว นั่นคือ ข้อมูลรายการสุดท้ายจะผ่านการประมวลผลมาแล้ว
หากโปรแกรมพบว่าเป็นรายการสุดท้ายก็จะเลิกการประมวลผล
17
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ตัวอย่างวิธีที่ 1 พิจารณาการเขียนโปรแกรมด้วยภาษาเบสิกง่าย ๆ ต่อไปนี้
จากตัวอย่างโปรแกรมภาษาเบสิกคาสั่งในบรรทัดที่ 20 จะใช้สาหรับทดสอบว่าข้อมูลเข้ามาหมดหรือยัง
โดยทดสอบว่า ถ้าหากข้อมูลที่เข้าเป็นค่าเลข หมายความว่าข้อมูลเข้ามาครบทั้งหมดแล้วโปรแกรมกระโดดไป
ยังบรรทัดที่ 60 เพื่อพิมพ์คาว่า “GOOD BYE” ซึ่งเป็นการจบโปรแกรมสาหรับตัวอย่างต่อไปจะเป็นการ
ประกาศตัวแปรอีกหนึ่งตัวชื่อว่า LC เป็นตัวแปรทดสอบ
ตัวอย่างวิธีที่ 2
คาสั่ง ความหมาย
10 INPUT X รับค่าตัวเลขทางแป้นพิมพ์แล้วเก็บไว้ในตัวแปร X ครั้งละ 1 ค่า
20 IF X< 0 THEN GOTO 60 ถ้าตัวเลขในตัวแปร X มีค่าติดลบ ให้ทาคาสั่งในบรรทัดที่ 60 แต่ถ้าไม่ใช่ให้ทา
คาสั่งในบรรทัดที่ 30 ต่อไป
30 Y = X + 200 นาค่าอยู่ในตัวแปร X ขณะนั้นบวกกับ 200 แล้วเก็บในตัวแปร Y
40 PRINT X , Y แสดงค่าที่อยู่ในตัวแปร X และ ตัวแปร Y
50 GOTO 10 ย้อนกลับไปทาคาสั่งในบรรทัดที่ 10 นั่นคือ รับค่าตัวเลขทางแป้นพิมพ์ตัวใหม่และ
เก็บไว้ในตัวแปร X (ค่าเดิมถูกแทนด้วยค่าใหม่)
60 PRINT GOOD BYE ถ้าค่าที่รับเข้ามาทางแป้นพิมพ์เป็นค่าลบก็ทาคาสั่งในบรรทัดที่ 60 นั่นคือแสดงคา
ว่า GOODBYE บนหน้าจอ
70 END ให้หยุดการทางาน
คาสั่ง ความหมาย
10 INPUT X ,LC รับค่าตัวเลขเข้ามาเก็บในตัวแปรXและLCถ้าหากค่าในLCเป็น1แสดงว่า
ข้อมูลยังไม่หมด
20 Y = X + 200 นาค่าในตัวแปรXบวกกับ200ออกทางจอภาพY
30 PRINT X , Y แสดงผลลัพธ์ค่าXและYออกทางจอภาพ
40 IF LC = 1 THEN
GOTO 10
ELSE
GOTO 50
ถ้าหากค่าที่อยู่ในตัวแปร LC เป็น 1 ให้ไปทาคาสั่งที่บรรทัด 10 แต่ไม่ใช่
ให้ไปทาคาสั่งที่บรรทัด 50 เป็นต้นไป
50 PRINT GOOD BYE แสดงคาว่า GOOD BYE ออกทางจอภาพ
60 END จบโปรแกรม
18
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
จากตัวอย่าง เมื่อโปรแกรมทางานจะให้ใส่ค่าตัวเลขสองค่าโดยค่าแรกเป็นค่าข้อมูลเก็บไว้ในตัวแปร X
ส่วนค่าที่สองเป็นข้อมูลทดสอบเก็บในตัวแปร LC เป็นค่า 1 หมายความว่ายังไม่ใช่ข้อมูลตัวสุดท้ายเมื่อโปรแกรม
ทางานมาถึงบรรทัดที่ 40 จะทดสอบว่าค่าในตัวแปร LC เป็น 1 ใช่ หรือ ไม่ ถ้าใช้จะกระโดดไปยังบรรทัดที่ 10
เพื่อรับข้อมูลครั้งต่อไป
หลังจากที่ได้วิเคราะห์ปัญหาแล้วขั้นตอนสุดท้าย คือ ขั้นตอนสาหรับทดสอบว่าวิธีการแก้ปัญหาที่ได้
สร้างขึ้นนั้นสามารถใช้งานได้หรือไม่ ซึ่งทดสอบ โดยการสมมติข้อมูลที่ใช้เป็นข้อมูลอินพุตในการแก้ปัญหา
โดยยกตัวอย่างข้อมูลประมาณสอง หรือสามกรณี จากนั้นให้ลองแทนค่าลงในขั้นตอนต่างๆของการประมวลผล
แล้วพิจารณาว่าได้คาตอบตามต้องการหรือไม่ ถ้าหากคาตอบผิดพลาดจะต้องกลับไปแก้ไขว่าลาดับขั้นตอนใดที่
ทางานไม่ถูกต้องและให้กลับไปแก้ไขขั้นตอนการทางานใหม่ การทดสอบขั้นตอนการแก้ปัญหานี้ควรทดสอบ
กับข้อมูลหลายๆชุด ถ้าหากทดสอบกับข้อมูลชุดเดียวแล้ทางานถูกต้องก็ไม่ได้หมายความว่าขั้นตอนการทางานที่
ออกแบบขึ้นทางานได้อย่างถูกต้องแล้ว
การตรวจสอบในแต่ละขั้นตอน ควรสร้างขึ้นมาแสดงการทางานในแต่ละขั้นตอนของการประมวลผล
หากเกิดข้อผิดพลาดขึ้นมาจะได้ดูได้ง่ายว่าผิดพลาดในขั้นตอนใด
ตัวอย่างที่ 7 จงตรวจสอบขั้นตอนในการแก้ปัญหาของโจทย์ในตัวอย่างที่ 5
วิธีทา จากตัวอย่างที่ 5 มีอัลกอริธึมการประมวลผล ดังนี้
Add_three_number
1. Read number 1, number 2 , number 3
2.Total = number 1 + number 2 + number 3
3.Print total
END
การทดสอบขั้นตอนวิธีการแก้ปัญหา
19
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
การตรวจสอบขั้นตอนวิธีทาได้ดังนี้
1. สร้างตัวเลขทดสอบทางอินพุตขึ้นมาสองชุด โดยให้ชุดแรกมีค่าเป็น 10 , 20 และ 30 ตัวเลขชุดที่สองมี
ค่าเป็น 40 , 41 และ 42
ตัวแปร ข้อมูลชุดแรก ข้อมูลชุดที่สอง
number1 10 40
number2 20 41
number3 30 42
2. ลองคิดคาตอบของการประมวลผลด้วยตนเอง
ตัวแปร ข้อมูลชุดแรก ข้อมูลชุดที่สอง
Total 60 123
3. สร้างตารางขึ้นมาแสดงการทางานตามอัลกอริธึมแต่ละขั้น โดยให้แสดงค่าของตัวแปรจากการ
ประมวลผลในแต่ละขั้นตอนและสิ่งที่กระทากับตัวแปรนั้นๆ
หมายเลขลาดับ number1 number2 number3 Total
ชุดที่ 1
1 10 20 30
2 60
3 Print
ชุดที่ 2
1 40 41 42
2 123
3 Print
4. ตรวจสอบผลลัพธ์ของขั้นที่ 2 และ ขั้นตอนที่ 3 (60 และ 123) ว่าได้ผลลัพธ์ตรงกันหรือไม่
โดยดูที่ตัวแปร Total
20
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ตัวอย่างที่ 8 ถ้าหากต้องการพัฒนาโปรแกรมให้รับข้อมูลตัวเลขจานวนเต็มทางแป้นพิมพ์จานวน9ตัวแล้วให้
ระบบนับว่าตัวเลขเหล่าว่าตัวเลขบวกกี่ตัวเป็นเลขกี่ตัวและเป็นศูนย์กี่ตัวโดยให้แสดงผลลัพธ์ทาง
จอภาพ
วิธีทา จากปัญหาดังกล่าวสามารถวิเคราะห์งานได้ดังนี้
สิ่งที่ต้องการ ต้องการทราบจานวนตัวเลขที่เป็นบวกเป็นลบและเป็นศูนย์
ผลลัพธ์ที่ต้องการ แสดงจานวนตัวเลขที่เป็นบวก,ลบและศูนย์ทางจอภาพ
ข้อมูลนาเข้า รับข้อมูลเข้าทางแป้นพิมพ์ทีละตัว
ตัวแปรที่ใช้ ให้ X แทนตัวเลขที่รับเข้าทางแป้นพิมพ์ทีละตัว
num_P แทน ตัวนับจานวนที่เป็นบวก
num_n แทน ตัวนับจานวนที่เป็นลบ
num_z แทน ตัวนับจานวนที่เป็นศูนย์
วิธีการประมวลผล สาหรับปัญหานี้จะให้รับข้อมูลเข้าทางแป้ นพิมพ์ทีละค่าโดยวิธีการดังนี้
กาหนดวิธีการคิด
ถ้าตัวเลขเป็นจานวนบวก ให้บวก 1 เข้ากับตัวนับจานวนบวก
ถ้าตัวเลขเป็นจานวนลบ ให้บวก 1 เข้ากับตัวนับจานวนลบ
ถ้าตัวเลขเป็นศูนย์ ให้บวก 1 เข้ากับตัวนับจานวนศูนย์
กรรมวิธีการประมวลผล
1. กาหนดให้ตัวนับ num_p , num_n และ num_z มีค่าเป็นศูนย์
2. อ่านค่าตัวเลขทางแป้ นพิมพ์มาเก็บในตัวแปร x
3. ถ้าอ่านไม่ได้ไปข้อ 7
4. ถ้า x เป็นจานวนบวก ให้บวก 1 กับ num_p แล้วไปข้อ 2
5. ถ้า x เป็นจานวนลบ ให้ 1 บวก num_n แล้วไปข้อ 2
6. ถ้า x เป็นค่าศูนย์ ให้บวก 1 กับ num_z แล้วไปข้อ 2
7. พิมพ์ค่าตัวนับทางจอภาพทั้งสามตัว
8. หยุด
21
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
สาหรับกรรมวิธีการประมวลผล ถ้าหากในข้อ6ตัดคาว่า ถ้า x เป็นค่าศูนย์ทิ้งไปคาตอบก็จะได้เท่าเดิม
เนื่องจากถ้าหากผ่านข้อ 4 และ 5 มาได้ แสดงว่าตัวเลขนั้นมีค่าเป็นศูนย์อยู่แล้ว สาหรับการตรวจสอบวิธีการ
ประมวลผลสามารถทาได้ดังนี้
1. ลองยกตัวอย่างข้อมูลขึ้นมา 1 ชุด ถ้าหากตัวเลขทั้ง 9 ตัว มีค่าเป็น 13 , 7 , -4 , 0 , -5 , 2 , 6 , -2 และ 35
2. คิดคาตอบการประมวลผลด้วยตนเองจะต้องได้จานวนบวก 5 ตัว จานวนลบ 3 ตัวและศูนย์1 ตัว
3. ถ้าหากสร้างตรวจตารางขึ้นมา เพื่อแสดงตามขั้นตอนวิธีการประมวลผลจะได้ดังนี้
หมายเลขลาดับ ตัวเลข(x) num_p num_n num_z
1 - 0 0 0
2 13 0 0 0
3 13 0 0 0
4 13 1 0 0
2 7 1 0 0
3 7 1 0 0
4 7 2 0 0
2 -4 2 0 0
3 -4 2 0 0
4 -4 2 0 0
5 -4 2 1 0
2 0 2 1 0
3 0 2 1 0
4 0 2 1 0
5 0 2 1 0
6 0 2 1 1
2 -5 2 1 1
3 -5 2 1 1
4 -5 2 1 1
ตัวแปร ข้อมูลชุดแรก
num_p 5
num_n 3
num_z 1
22
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
หมายเลขลาดับ ตัวเลข(x) num_p num_n num_z
5 -5 2 2 1
2 2 2 2 1
3 2 2 2 1
4 2 3 2 1
2 6 3 2 1
3 6 3 2 1
4 6 4 2 1
2 -2 4 2 1
3 -2 4 2 1
4 -2 4 2 1
5 -2 4 3 1
2 35 4 3 1
3 35 4 3 1
4 35 5 3 1
2 - 5 3 1
7 - 5 3 1
4. จะพบว่าคาตอบในขั้นตอนที่ 7 จะตรงกับคาตอบที่คิดเอาไว้แสดงว่าแนวทางการประมวลผลนี้ถูกต้อง
ซึ่งสามารถนาไปพัฒนาเป็นโปรแกรมต่อไปนี้
เมื่อแน่ใจแล้วว่าวิธีการแก้ปัญหาที่ออกแบบขึ้นเป็นวิธีที่ถูกต้อง จึงดาเนินการเขียนโปรแกรมและ
โปรแกรมที่เขียนขึ้นก็ต้องตรวจสอบจุดผิดพลาดเช่นกัน จุดผิดพลาดของโปรแกรม เรียกว่า บัก (Bug) สาหรับ
การดาเนินการแก้ไขข้อผิดพลาดนั้น เรียกว่า ดีบัก(Debug) สาหรับโปรแกรมที่ทางานไม่ได้ตามวัตถุประสงค์
เรียกว่า โปรแกรมมี Error การเกิด Error ของโปรแกรมมักมีมาจาก 2 สาเหตุหลัก คือ
1) ข้อผิดพลาดทางไวยากรณ์ของภาษา(Syntax Error) เป็นข้อผิดพลาดที่เกิดการโค้ดคาสั่ง(Source
Code)ที่ไม่ตรงกับไวยากรณ์(Syntax)ของโปรแกรมนั้นๆ ข้อผิดพลาดนี้เป็นข้อผิดพลาดที่ง่ายที่สุดในการ
ตรวจหาและแก้ไข เนื่องจากจะพบในระหว่างที่มีการแปลภาษาโปรแกรม ถ้ามีข้อผิดพลาดประเภทนี้อยู่
ตัวแปลภาษา คอมพิวเตอร์จะแจ้งให้ทราบทันที
ตัวอย่างเช่นถ้าเขียนโปรแกรมด้วยภาษาซี สั่งให้คอมพิวเตอร์ข้อความออกมาทางหน้าจอด้วยคาสั่ง
WXRITLN(The Area is : ‘,my_area) เมื่อมีการแปลภาษาโปรแกรมคอมพิวเตอร์จะตรวจสอบไวยากรณ์ของ
ภาษา พบว่า คาสั่ง WXRITLN ไม่มีอยู่ในภาษาซี ดังนั้นในบรรทัดนี้คอมพิวเตอร์จะแสดงข้อผิดพลาดประเภท
23
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
Syntax Error ออกมาให้เห็น
2) ข้อผิดพลาดที่เกิดจากการตีความหมายของปัญหาผิดไป(Logical Error) เป็นข้อผิดพลาดที่เกิดจาก
การออกแบบอัลกอริธึมให้ทางานผิดจากวัตถุประสงค์หรือ ความต้องการการแก้ไขข้อผิดพลาดปะเภทนี้ จะต้อง
ทาโดยการตรวจไล่โปรแกรมทีละคาสั่ง เพื่อหาข้อผิดพลาดนั้นให้พบ เช่น ผู้เขียนโปรแกรมต้องการนาค่า A
ไปบวกกับค่า B แต่เขียนเครื่องหมายเป็นลบก็ทาให้ค่าที่คานวณได้ไม่ถูกต้อง ซึ่งสามารถตรวจสอบข้อผิดพลาด
นี้โดยใช้ข้อมูลทดสอบ(Test Data) หรือ ข้อมูลที่ทราบคาตอบในขั้นปฏิบัติการ(Execution Run) ถ้าโปรแกรม
ถูกต้องผลลัพธ์ที่ได้จะต้องตรงกับคาตอบที่เราทราบอยู่ก่อนแล้ว
การตรวจสอบโปรแกรมเพื่อหาข้อผิดพลาดดังกล่าวอาจจะทาเป็นขั้นตอนดังนี้
1) การตรวจสอบก่อนนาโปรแกรมเข้าเครื่องคอมพิวเตอร์ เรียกวิธีการนี้ว่า Desk Checking วิธีการนี้
จะตรวจสอบว่าโปรแกรมสามารถให้ผลลัพธ์ตามต้องการได้หรือ ไม่ เป็นการตรวจสอบข้อผิดพลาดทางตรรกะ
โดยกาหนดข้อมูลชุดหนึ่งขึ้นมาแล้วแทนค่าตามขั้นตอนต่างๆที่เขียนเป็นโปรแกรมไว้ตั้งแต่ต้นจบ โดยสมมติ
ว่าเป็นการปฏิบัติงานของเครื่องคอมพิวเตอร์วิธีการ เช่น ลดข้อผิดพลาดทางตรรกะได้มาก ก่อนจะส่งโปรแกรม
เข้าเครื่องต่อไป
2) การตรวจสอบโดยเครื่องคอมพิวเตอร์ เมื่อผ่านการตรวจสอบในขั้นแรกแล้วก็ส่งโปรแกรมเข้า
เครื่องคอมพิวเตอร์พร้อมข้อมูลสมมุติที่ทราบคาตอบ ขั้นแรกเครื่องคอมพิวเตอร์จะทาการตรวจ Syntax Error
หรือข้อมูลผิดพลาดทางไวยากรณ์ ถ้ามีที่ผิดพลาดเครื่องคอมพิวเตอร์จะพิมพ์ข่าวสารข้อผิดพลาดนี้ออกมา
ถ้าได้คาตอบตรงกับที่ทราบก็ค่อนข้างมั่นใจได้ว่าโปรแกรมน่าจะถูกต้อง เมื่อทดสอบโปรแกรมแล้วสามารถ
นาโปรแกรมพร้อมกับข้อมูลจริงเข้าเครื่องคอมพิวเตอร์เพื่อทาการประมวลผลต่อไป
24
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
การวางแผนขั้นตอนการทางานก่อนที่จะลงมือเขียนโปรแกรมจริงนั้น การเขียนผังงานเป็นอีกวิธีหนึ่งที่
สามารถนามาช่วยในการพัฒนาโปรแกรมได้ผังงาน หรือ เรียกกันว่า โฟลวซาร์ต(Flowchatr) เป็นแผนภาพที่ใช้
ออกแบบและอธิบายการทางานของโปรแกรม โดยอาศัยรูปทรงต่างๆควบคู่ไปกับลูกศรแต่ละรูปในแผนภาพจะ
หมายถึงการทางานหนึ่งขั้นตอน ส่วนลูกศรจะแทนลาดับการทางานขั้นตอนต่างๆรวมทั้งทิศทางการไหลของ
ข้อมูลตั้งแต่เริ่มต้นจนได้ผลลัพธ์ตามต้องการ ระบบงานทุกชนิดที่ผ่านการวิเคราะห์เป็นลาดับขั้นตอนแล้วจะ
สามารถเขียนเป็นผังงานได้
ผังงานในการทางานของคอมพิวเตอร์สามารถแบ่งได้เป็น2ปะเภทคือผังงานระบบและผังงานโปรแกรม
ผังงานระบบ(System Flowchart)
เป็นแผนภาพที่แสดงขอบเขตและลาดับขั้นตอนในการทางานของระบบโดยรวม โดยจะแสดง
ขั้นตอนการทางานภายในระบบหนึ่ง ๆ แต่จะแสดงภาพกว้าง ๆ ถึงองค์ประกอบที่มีอยู่ในระบบทั้งหมด เช่น
เอกสารเบื้องต้น คืออะไร วัสดุที่ใช้ คืออะไร ใช้หน่วยความจาประเภทใด จะต้องส่งผ่านไปยังหน่วยใดวิธีการ
ประมวลผลและการแสดงผลลัพธ์เป็นอย่างไร แต่จะไม่มุ่งเน้นรายละเอียดในการปฏิบัติไม่สามารถนามาเขียน
เป็นโปรแกรมได้ตัวอย่าง เช่น ผังงานต่อไปนี้
การเขียนผังงาน
ใบสั่งซื้อ
ข้อมูลลูกค้า ข้อมูลสินค้า
บันทึกการขาย
ออกเอกสารกากับการขาย
25
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ผังงานโปรแกรม(Program Flowchart)
เป็นแผนภาพที่แสดงลาดับขั้นตอนในการทางานของโปรแกรมซึ่งจะแยกย่อยมาจากผังงาน
ระบบโดยมีการลงรายละเอียดใส่วิธีการและจัดลาดับขั้นตอนของโปรแกรมตั้งแต่เริ่มต้นจากการรับข้อมูลการ
ประมวลผลไปจนถึงการแสดงผลลัพธ์การทางานดังตัวอย่างต่อไปนี้
ประโยชน์ของผังงาน
1. ทาให้เข้าใจขั้นตอนและลาดับในการทางานของโปรแกรมอย่างรวดเร็ว
2. เป็นสื่อกลางระหว่างผู้พัฒนาโปแกรมนักวิเคราะห์โปรแกรม และ ผู้ที่เกี่ยวข้องให้สามารถ
เข้าใจโปรแกรมได้โดยง่าย
3. ทาให้สามารถวิเคราะห์ความถูกต้องของโปรแกรมก่อนเขียนโปรแกรมจริงได้ง่าย และ
ตรวจสอบข้อผิดพลาดของโปรแกรมได้ง่าย
4. ช่วยให้การกระจายงานให้กับโปรแกรมเมอร์หลายๆคนช่วยกันเขียนโปรแกรมเป็นส่วนๆได้
เพราะมีทิศทางการทางานของโปรแกรมชัดเจนสามารถแบ่งส่วนและประมาณการทางานได้อย่างต่อเนื่อง
5. ทาให้ผู้อื่นสามารถศึกษาการทางานของโปรแกรมและแก้ไขโปรแกรมได้ง่าย
การเขียนผังงานที่ดี
1. เขียนตามสัญลักษณ์ที่กาหนด
2. ใช้ลูกศรแสดงทิศทางการทางาน จากบนลงล่าง
เริ่มต้น
รับค่า
Price , Amount
Pay = Price x Amount
จบ
26
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
3. อธิบายสั้นๆให้เข้าใจง่าย
4. ทุกแผนภาพต้องมีทิศทางเข้าออก
5. ไม่ควรโยงลูกศรไปที่ไกลมากๆถ้าต้องทาให้ใช้สัญลักษณ์
ตัวอย่างที่ 9 ถ้าหากเราต้องการให้คอมพิวเตอร์ทาเป็นเครื่องคอดเลขโดยรับข้อมูลAและBเข้าไปจากนั้นแสดงผล
บวกออกมาเราสามารถเขียนเป็นผังงานได้ดังนี้
รูปแสดงผังงานแสดงการทางานของโปรแกรมบวกเลข
นอกจากนี้ผังงานยังยังสามารถนามาใช้กับงานที่เกี่ยวข้องกับชีวิตประจาวันได้
เริ่มต้น
อ่านค่า A และ B
คานวณ X = A + B
ทาต่อหรือไม่
แสดงผล ผลรวม X
จบ
ทำ
ไม่ทำ
27
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ตัวอย่างที่ 10 ผังงานในการจับไม้ยาวสามครั้ง ถ้าได้ไม้ยาวให้ได้เงิน 100 บาท ถ้าได้ไม้สั้นให้เสียเงิน 100 บาท
สามารถเขียนได้ดังนี้
รูปแสดงผังงานจับไม้สั้นไม้ยาว
เริ่มต้น
เลือกจับไม้
ผลการจับ
เสียเงิน 100 บาท ได้เงิน 100 บาท
ครบ 3 ครั้ง
ไม้สั้น ไม้ยำว
จบ
ครบ
ยัง
28
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
สัญลักษณ์ที่ใช้ในการเขียนผังงาน
การเขียนผังงานจะต้องใช้ภาพสัญลักษณ์ต่าง ๆ นามาเรียงต่อกัน เพื่อแสดงลาดับการทางานสัญลักษณ์
มาตรฐานที่ว่าสัญลักษณ์ ANSI (American National Standards lnstitute) ที่ควรทราบมีดังนี้
การเริ่มต้นและการสิ้นสุดการทางานของโปรแกรม
ลูกศรแสดงทิศทางการทางานของโปรแกรม
การประมวลผลการคานวณต่างๆ
การทางานย่อย
การรับหรือแสดงข้อมูลโดยไม่ระบุชนิดของอุปกรณ์
การตรวจสอบเงื่อนไขเพื่อเลือกทาอย่างใดอย่างหนึ่งโดยจะมีเส้นลูกศรแสดง
ทิศทางการทางานต่อไป
แสดงผลลัพธ์หรือรายงานทางเครื่อง
จุดเชื่อมต่อผังงาน
อ่านข้อมูล
29
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
จุดเริ่มต้นและสิ้นสุดโปรแกรม
การกาหนดจุดเริ่มต้นของโปรแกรมจะเขียนคาอธิบายคาว่า Start หรือคาว่า Begin เข้าไปในสัญลักษณ์
เริ่มต้นของผังงาน จากนั้นจะใช้ลูกศรชี้ออกไปยังจุดที่การประมวลผลต่อไป ถ้าหากเป็นจุดสิ้นสุดโปรแกรมจะ
เขียนคาว่า Stop หรือ End ในสัญลักษณ์และมีลูกศรชี้เข้าจะไม่มีลูกศรชี้ออก ในผังงานแต่งานจะมีจุดเริ่มต้นและ
จุดสิ้นสุดเพียงอย่างละหนึ่งแห่งเท่านั้น
รูปแสดงสัญลักษณ์เริ่มต้นและสิ้นสุดของผังงาน
การประมวล
สัญลักษณ์รูปสี่เหลี่ยมผืนผ้าจะใช้สาหรับการประมวล (Process) การกาหนดค่า (Assignment) และ การ
คานวณ (Computation) โดยจะเขียนวิธีการประมวลผลเข้าไปในสัญลักษณ์ และ ใช้เครื่องหมายลูกศร หรือ
เครื่องหมายเท่ากับในการส่งค่าไปประมวลผลขั้นต่อไป ตัวอย่าง เช่น ถ้าหากต้องการคานวณ X ยกกาลังสอง
แล้วนาไปเก็บในตัวแปร Y สามารถทาได้ดังนี้
รูปแสดงสัญลักษณ์แสดงการประมวล
การรับข้อมูลเข้าและแสดงข้อมูลออก
การรับข้อมูลเข้าและการส่งข้อมูลออก โดยไม่ระบุประเภทของอุปกรณ์ที่รับและส่งข้อมูลจะใช้
สัญลักษณ์รูปสี่เหลี่ยมด้านขนาน โดยจะมีทิศทางข้อมูลเข้าออกได้อย่างละหนึ่งทิศทางและเขียนคาอธิบายกากับ
ไว้ภายใน ตัวอย่าง เช่น ถ้าต้องการรับข้อมูลเข้ามาจะเขียนคาว่า รับค่า , Read , Get ,หรือ Input เพื่อรับข้อมูลเข้า
มาเก็บในตัวแปร ถ้าหากต้องการส่งข้อมูลจากตัวแปรออกไปจะเขียนคาว่า แสดงค่า ,พิมพ์,Print หรือ Output
เป็นต้น ตัวอย่างเช่น ถ้าหากต้องการรับข้อมูลมาเก็บในตัวแปร A และ B หรือ ส่งข้อมูลจากตัวแปร Y ออกไป
แสดงผลจะเขียนได้ดังรูปต่อไปนี้
Start
End
Y = X
30
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
รูปแสดงตัวอย่างการใช้สัญลักษณ์รับค่าและแสดงค่าข้อมูล
การแสดงข้อมูลออกทางเครื่องพิมพ์
การแสดงข้อมูลออกทางเครื่องพิมพ์จะใช้สัญลักษณ์ Document ในการแสดงผลดังภาพ โดยข้อมูลที่จะ
แสดงผลจะเขียนอยู่ในสัญลักษณ์นี้ จากตัวอย่างในรูปต่อไปนี้จะแสดงข้อมูล DATA ออกทางเครื่องพิมพ์
สัญลักษณ์นี้จะมีลูกศรชี้เข้าออกได้อย่างละหนึ่งทิศทาง
รูปแสดงสัญลักษณ์แสดงข้อมูลทางเครื่องพิมพ์
การตัดสินใจ
การตัดสินใจหรือการเลือกทาอย่างใดอย่างหนึ่ง จะใช้สัญลักษณ์สี่เหลี่ยมขนมเปียกปูนหรือ Decisionใน
การตรวจสอบเงื่อนไขที่จะตรวจสอบจะเขียนอยู่ในสัญลักษณ์นี้ ในส่วนของลาดับการทางานจะมีลูกศรชี้เข้า 1
ทิศทางและลูกศรชี้ออกสองทิศทาง โดยถ้าเงื่อนไขเป็นจริง(Y) จะทาโปรแกรมทิศทางหนึ่ง ถ้าเป็น (N) จะทาอีก
ทิศทางหนึ่ง ในการเขียนลูกศรจะเขียนคาอธิบายไว้ที่ลูกศรด้วยดังตัวอย่างดังรูปเป็นการตรวจสอบว่าตัวแปร age
มากกว่า หรือ เท่ากับ 50 จริงหรือไม่ ถ้าตัวแปร age มากกว่า หรือ เท่ากับ 50 จะทาทิศทาง Y ถ้า age น้อยกว่า 50
จะทิศทาง N
รูปแสดงตัวอย่างการใช้สัญลักษณ์ตัดสินใจ
Read A , B Write Y
DATA
Age = 50
จริง เท็จ
31
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
การติดต่อกับอุปกรณ์เก็บขอมูลแบบดิสก์
ถ้าหากต้องการอ่านหรือเขียนข้อมูลกับอุปกรณ์เก็บข้อมูลแบบดรัมแม่เหล็ก หรือ อุปกรณ์ที่เข้าถึง
ข้อมูลแบบโดยตรง จะใช้สัญญาลักษณ์ Magnetic drum เพื่อแสดงการรับและส่งข้อมูล ดังรูปต่อไปนี้เป็น
สัญลักษณ์นี้จะมีลูกศรได้ทั้งแบบชี้เข้าและชี้ออก
รูปสัญลักษณ์สาหรับอ่านเขียนข้อมูลกับอุปกรณ์แบบจานแม่เหล็กจุดต่อ
ผังงานที่มีความยาวมากหรือมีเส้นตัดกันมากนั้นเราสามารถลดความยุ่งยากในการเขียนได้โดยการนาจุด
ต่อมาใช้ ซึ่งจะทาให้ทาความเข้าใจผังงานได้ง่ายขึ้น ถ้าหากผังงานนั้นเขียนอยู่ภายในหน้าเดียวกัน สัญลักษณ์
ที่ใช้แสดงจุดต่อจะใช้สัญลักษณ์วงกลม หรือ connector และเขียนหมายเลขจุดต่อที่เป็นจุดต่อถึงกันเอาไว้
ภายใน ดังตัวอย่างในรูปเป็นการแสดงจุดต่อหมายเลข 1 ที่อยู่ภายในหน้าเดียวกัน
รูปแสดงจุดต่อหมายเลข 1 ที่อยู่ภายในหน้าเดียวกัน
จุดต่อระหว่างหน้า
ถ้าหากมีการสร้างจุดต่อเนื่องที่อยู่คนละหน้าหรือต้องการสร้างจุดต่อที่อยู่ระหว่างหน้าจะใช้สัญลักษณ์
off-page connector ซึ่งเป็นรูปห้าเหลิยมแสดงจุดต่อสาหรับเชื่อมการทางานถึงกัน โดยภายในสัญลักษณ์จะ
เขียนหมายเลขจุดที่ต้องการเชื่อมต่อเอาไว้ด้วยกัน และใช้ลูกศรแสดงทิศทางการทางานของโปรแกรม ดัง
ตัวอย่างในรูป
รูปแสดงจุดต่อระหว่างหน้าหมายเลข
1
1
1
1
32
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
หลักเกณฑ์การเขียนผังงาน
การเขียนผังงานที่ดีสามารถสรุปเป็นหลักเกณฑ์ได้ดังต่อไปนี้
1. ผังงานที่เขียนขึ้นต้องดูชัดเจนและดูง่าย
2. ต้องมีจุดเริ่มต้นและจุดสิ้นสุดเพียงจุดเดียว
3. กาหนดทิศทางการทางานด้วยลูกศร และควรมีทิศทางการทางานจากบนลงล่างหรือจากซ้ายไปขวา
เท่านั้น
4. สัญลักษณ์แบบเลือกทาจะต้องมีคาตอบที่ถูกต้องที่ทาให้โปรแกรมสามารถดาเนินต่อไปได้
5. ลูกศรที่ใช้บอกทิศทางการทางานไม่ควรเขียนตัดกันหรือทับกัน
6. ผังงานที่มีความซับซ้อนมาก หรือขั้นตอนการทางานอยู่ห่างกันมาก ควรนาสัญลักษณ์การเชื่อมต่อมา
ใช้เพื่อให้เข้าใจง่าย
7. การเขียนส่วนประมวลผลที่มีการคานวณ หรือ มีการใส่ค่าควรใช้เครื่องหมายลูกศร หรือ เครื่องหมาย
เท่ากับในการเขียน
8. เมื่อเขียนผังงานจบแล้วควรตรวจสอบความถูกต้องของผังงานโดยการสร้างข้อมูลขึ้นมาหนึ่งชุด แล้ว
ดูว่าผลลัพธ์เป็นไปตามที่ต้องการหรือไม่
เมื่อได้นาสัญลักษณ์ต่างๆมาเขียนเป็นผังงานแล้ว ในรูปสัญลักษณ์นั้นจะต้องเขียนคาบรรยาย เพื่อสื่อ
ความหมายให้ผู้อ่านผังงานเข้าใจด้วย โดยใช้ภาษาที่ใช้จะเป็นภาษาที่เข้าใจง่ายอาจใช้ภาษาอังกฤษหรือภาษาไทย
ก็ได้โดยเขียนเป็นภาษาที่อ่านแล้วเข้าใจได้ง่ายถ้าหากมีการกาหนดค่าข้อมูลให้กับตัวแปรต่างๆจะใช้เครื่องหมาย
ลูกศรแทนการกาหนดค่า นอกจากนี้ยังสามารถใช้ตัวดาเนินการต่างๆมาเขียนในผังงานได้อีกด้วย
สาหรับคาบรรยายประกอบทิศทางการทางานในกรณีที่มีการตรวจสอบเงื่อนไขแล้ว มีผลลัพธ์ออกมา
สองทิศทาง ถ้าหากเงื่อนไขเป็นจริงจะใช้คาว่า true หรือ yes หรือ จริง และ ถ้าหากเงื่อนไขเป็นเท็จจะใช้คาว่า
false หรือ no หรือ เท็จ เขียนไว้ในทิศทางการทางาน แต่ถ้าหากเงื่อนไขเป็นไปได้หลายกรณีจะใช้คาว่า case
33
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ลักษณะโครงสร้างการเขียนผังงาน
รูปแบบของผังงาน ซึ่งนิยมใช้เป็นมาตรฐานในการเขียนโปรแกรมแบบโครงสร้าง(Structure Program-
ming) โดยโปรแกรมทุกโปรแกรมจะมีโครงสร้างการควบคุม เพื่อกาหนดทิศทางการทางานของโปรแกรม
โครงสร้างโดยทั่วไปจะมีอยู่ 5 รูปแบบดังต่อไปนี้
1.โครงสร้างการทางานแบบลาดับ(Sequence) จะแสดงขั้นคอนการทางานที่เรียงลาดับกันไป ไม่มีการ
ข้ามขึ้น หรือ ย้อนกลับไปทาคาสั่งที่ได้ทาไปแล้ว ดังตัวอย่างในรูป
รูปแสดงผังโปรแกรมแบบมีลาดับ
เริ่มต้น
ทาชุดคาสั่งที่ 1
รับค่าตัว
แปร
ทาชุดคาสั่งที่ 2
แสดงผล
จบ
34
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
2. ผังโปรแกรมแบบมีการเลือก(Selection) เป็นโครงสร้างที่ตรวจสอบเงื่อนไข ให้ความสัมพันธ์
ทางตรรกะมาช่วยในการตัดสิตใจผังงานลักษณะนี้มีอยู่3 กรณีดังต่อไปนี้
การเลือกแบบหนึ่งเส้นทาง เมื่อมีการตรวจสอบเงื่อนไขแล้วเงื่องไขเป็นจริงจะทากิจกรรม
หนึ่งที่กาหนดแต่ถ้าเงื่อนไขเป็นเท็จจะออกจากโครงสร้างนั้น โดยไม่ทากิจกรรมที่กาหนดเลย ผังงานแบบนี้
จะเขียนคาว่าจริง/เท็จ หรือ yes/no หรือ t/f กากับทิศทางการทางานไว้ด้วย โดยผังงานแสดงได้ดังรูป
รูปแสดงผังงานแบบเลือกทาหนึ่งเส้นทาง
การเลือกทาแบบสองเส้นทาง จะพิจารณาเงื่อนไขที่เป็นจริงและเป็นเท็จ โดยถ้าเป็นจริงจะทา
อย่างหนึ่งแล้วออกจากโครงสร้าง ถ้าเป็นเท็จจะทาอีกอย่างหนึ่งแล้วออกจากโครงสร้างผังงานแสดงได้ดังรูป
รูปแสดงผังงานสาหรับการเลือกทาอย่างไดอย่างหนึ่ง
ชุดคาสั่งที่ 1
ตรวจสอบเงื่อนไข
ชุดคาสั่ง
จริง
เท็จ
ตรวจสอบเงื่อนไข
ชุดคาสั่งที่ 2
จริง เท็จ
35
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
การเลือกทาแบบหลายเส้นทาง จะพิจารณาเงื่อนไขต่างๆที่เกิดขึ้นถ้าเท่ากับทางเลือกใดจะให้
ไปทางานตามทางเลือกนั้นผังงานแบบเลือกหลายทางสามารถเขียนได้ดังรูป
รูปแสดงผังโปรแกรมแบบทางเลือกหลายทาง
การเลือกทาแบบหลายเส้นทางนี้ยังสามารถนาการเลือกทาแบบทางเดียวและแบบสองทิศทางมา
ประกอบกันเป็นโครงสร้างใหม่ได้อีกด้วย
3. ผังโปรแกรมทาซ้าถ้าเงื่อนไขเป็นจริง จะใช้ในงานที่มีการตรวจสอบเงื่อนไขก่อนการทางานทุกครั้ง
โดยเขียนได้ดังรูป
รูปแสดงผังงานการทาซ้าแบบตรวจสอบเงื่อนไขก่อน
ตัวแปร x
ชุดคาสั่ง 1 ชุดคาสั่ง 2 ชุดคาสั่ง 3 ชุดคาสั่ง 4
X = 1 X = 2 X = 3 X = 4
ตรวจสอบเงื่อนไข ออกจากทาซ้า
จริง
ชุดคาสั่งที่ต้องทางานซ้า
เท็จ
36
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
4. ผังโปรแกรมแบบทาซ้าจนกระทั่งเงื่อนไขเป็นจริง จะใช้ในระบบที่ต้องทางานก่อนการตรวจสอบ
เงื่อนไขและทางานซ้าจนกระทั่งเงื่อนไขเป็นจริง สามารถเขียนได้ดังรูป
รูปผังโปรแกรมแบบทาซ้าจนกระทั่งเงื่อนไขเป็นจริง
5.ผังโปรแกรมแบบทาซ้าตามจานวนที่ระบุ ใช้ในระบบที่ติองทางานตามจานวนรอบที่กาหนด โดยเริ่ม
จากรอบเริ่มต้นไปยังรอบสุดท้าย ตามปกติแล้วค่าการนับรอบจะเพิ่มขึ้นครั้งละหนึ่งค่า โดยเขียนได้ดังรูป
รูปผังงานการทาซ้ารอบตามจานวนที่ระบุ
ชุดคาสั่งที่ต้องทางานซ้า
ตรวจสอบเงื่อนไข ออกจากทาซ้า
จริง
เท็จ
FOR i = 1 TO N
ชุดคาสั่งที่ต้องทาซ้า
37
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ตัวอย่างที่ 11 ถ้าหากต้องการนาคะแนน(จานวนเต็ม)ของนักเรียนหนึ่งคนมาตัดเกรดตามเงื่อนไขต่อไปนี้
คะแนน 80 - 100 ได้เกรด A
คะแนน 70 - 79 ได้เกรด B
คะแนน 60 - 69 ได้เกรด C
คะแนน 50 - 59 ได้เกรด D
คะแนนต่ากว่า 50 ได้เกรด F
จากคะแนนดังกล่าวสามารถเขียนผังงานได้ดังรูป
รูปแสดงผังงานของการตัดเกรดนักเรียน
รับคะแนน
X > 79
X > 69
X > 59
X > 49
เกรด F
จบ
เริ่มต้น
เกรด A
เกรด B
เกรด C
เกรด D
จริง
จริง
จริง
จริง
38
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ตัวอย่างที่ 12 จงเขียนผังงานให้รับข้อมูลตัวเลขหนึ่งตัว เก็บในตัวแปร x จากนั้นให้พิมพ์ตามเงื่อนไขต่อไปนี้
ถ้า X > 0 แสดงผล “เป็นเลขบวก
ถ้า X < 0 แสดงผล “เป็นเลขลบ”
ถ้า X = 0 แสดงผล “ค่าเป็นศูนย์”
รูปแสดงผังงานของการรับค่าตัวเลขและแสดงผล
เริ่มต้น
รับข้อมูล x
X > 0
X < 0
พิมพ์เป็นค่ำบวก
พิมพ์ค่าเป็นศูนย์ พิมพ์ค่ำเป็นลบ
จบ
เท็จ
เท็จ
จริง
จริง
39
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
เมื่อได้ทาการวิเคราะห์ปัญหาและวางแผนการแก้ปัญหาแล้ว ก่อนที่จะลงมือเขียนโปรแกรมเราจะต้อง
ออกแบบขั้นตอนการทางานหรืออัลกอริธึม(Algorithm)ก่อน โดยจะใช้เป็นเครื่องมือในการแสดงขั้นตอน
การทางานของระบบงานใด ๆ เพื่อให้การเขียนโปรแกรมเป็นไปได้รวดเร็วและง่ายขึ้น โดยเราอาจเขียน
อัลกอริธึมในลักษณะผังงาน(Flowchart) หรือ เขียนเป็นรหัสลาลอง ที่เรียกว่า ซูโดโค้ด(Psudocodes) ก็ได้
ความหมายของอัลกอริธึม ม
อัลกอริธึม(Algorithm) หมายถึง ลาดับของขั้นตอนเชิงคานวณที่แปลข้อมูลด้านอินพุตของปัญหา
ไปเป็นผลลัพธ์ที่ต้องการ ขั้นตอนต่างๆในอัลกอริธึมสามารถเปลี่ยนไปเป็นคาสั่งที่ให้คอมพิวเตอร์ทางานได้
ดังนั้นถ้าหากทาตามอัลกอริธึมแล้ว ปัญหาจะต้องถูกแก้ได้สาเร็จและได้คาตอบที่ถูกต้องสาหรับทุกกรณีตามที่
กาหนดในอัลกอริธึม ดังนั้นเราจะไม่ยอมรับอัลกอริธึมที่การทางานติดอยู่ในวงวนไม่สิ้นสุด หรือ อัลกอริธึม
ประเภทที่ทางานแล้วได้คาตอบถูกบ้าง ผิดบ้าง ดังนั้นจุดประสงค์ของการออกแบบอัลกอริธึมสาหรับแก้ปัญหา
หนึ่ง ๆ ก็คือ การทางานที่ถูกต้องและทางานได้อย่างมีประสิทธิภาพ นอกจากการบรรยายอัลกอริธึมด้วยผังงาน
แล้วยังสามารถเขียนบรรยายอัลกอริธึมด้วยคาบรรยายสั้น ๆ ที่ได้ใจความได้ โดยการเขียนรหัสจาลอง หรือซูโด
โค้ด(Pseudocode) ซึ่งคล้ายกับโปรแกรมภาษาคอมพิวเตอร์ แต่จะบรรยายด้วยคาที่ง่าย ๆ
ซูโดโค๊ดเป็นคาอธิบายขั้นตอนการทางานของโปรแกรม โดยใช้ถ้อยคาผสมระหว่างภาษาอังกฤษ
และภาษาการเขียนโปรแกรมแบบโครงสร้างที่เข้าใจง่ายมาแสดงลาดับการทางานของโปรแกรมหรืออาจใช้ภาษา
ไทยก็ได้โดยผู้เขียนโปรแกรมสามารถพัฒนาขั้นตอนต่าง ๆ ให้เป็นโปรแกรมได้ง่ายขึ้น แต่ส่วนใหญ่แล้วคาที่ใช้
มักเป็นคาเฉพาะ(Reserve Word) ที่มีอยู่ในภาษาการเขียนโปรแกรม และ มักจะเขียนด้วยอักษรตัวพิมพ์ใหญ่ ซูโด
โค๊ดที่ดีจะต้องมีความชัดเจน สั้น และได้ใจความ ข้อมูลต่างๆ ที่ใช้จะถูกเขียนอยู่ในรูปแบบตัวแปร ซูโดโค๊ดนี้
บางครั้งจะเรียกว่า อัลกอริธึมก็ได้รูปแบบทั่วไปจะเป็นดังนี้
Algorithm <ชื่อของอัลกอริธึม>
1. . . . . . . . . . . . . . . . . . . . . . . .
2. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
END
การเขียนอัลกอริธึมและซูโดโค้ด
ขบวนการทางาน
40
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
Algorithm Average_Sum
1. Count = 0
2. Sum = 0
3. INPUT (Value)
4. IF value > 0 THEN
count = count + 1
sum = sum + value
GOTO 3
ELSE GOTO 5
5. Average = sum / count
6. OUTPUT (average)
7. END
ตัวอย่างเช่นในการเขียนซูโดโค๊ด สาหรับให้คอมพิวเตอร์หาค่าเฉลี่ยจากข้อมูลที่รับเข้าทางแป้นพิมพ์
อาจเขียนได้ดังนี้
จะเห็นว่าขั้นตอนการหาค่าเฉลี่ยจะเขียนไว้ให้ข้าใจได้ง่าย เราสามารถทราบได้ว่าในการทางานต่างๆ
จะต้องใช้ตัวแปรอย่างไรบ้าง แต่ละขั้นตอนมีการประมวลผลอย่างไร โดยทั่วไปแล้วซูโดโค๊ดจะถูกเขียนด้วย
ภาษาอังกฤษ ดังต่อไปนี้
Algorithm การหาค่าเฉลี่ย
1. ตัวนับ = 0
2. ผลรวม = 0
3. รับค่าทางแป้นพิมพ์เก็บไว้ใน (ข้อมูล)
4. ถ้าข้อมูลมากกว่า 0
เพิ่มตัวนับขึ้นหนึ่งค่า
ผลรวม = ผลรวม + ค่าข้อมูล
ย้อนกลับไปทาขั้นตอนที่ 3
ถ้าไม่มากกว่าไปทาขั้นตอนที่ 5
5. ค่าเฉลี่ย = ผลรวมหารด้วยตัวนับ
6. แสดงค่าเฉลี่ยทางจอภาพ โดยมีทศนิยมสองตาแหน่ง
7. จบ
41
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ในการคานวณหาพื้นที่สามเหลี่ยม เราอาจเขียนซูโดโค๊ดได้ดังนี้
หรืออาจเขียนเป็นภาษาอังกฤษได้ดังนี้
คุณสมบัติพื้นฐานในการประมวลผลของคอมพิวเตอร์
ก่อนที่จะศึกษาวิธีการเขียนอัลกอริธึม ควรมีความรู้ความเข้าใจและคานึงถึงคุณสมบัติพื้นฐานของระบบ
คอมพิวเตอร์ก่อน เพื่อนาไปประยุกต์ใช้ในขั้นตอนการเขียนอัลกอริธึมได้อย่างถูกต้อง แม้ว่าคอมพิวเตอร์จะเป็น
อุปกรณ์อิเล็กทรอนิกส์ที่ทางานได้อย่างรวดเร็ว ไม่มีความผิดพลาด ไม่มีการทางานในลักษณะเครื่องจักรที่มี
กลไกการเคลื่อนไหว แต่การออกแบบการทางานภายในที่ยังต้องอาศัยการกาหนดกลไกเชิงวิธีการทางานไว้ด้วย
ถ้าหากกาหนดกลไกการทาผิด คอมพิวเตอร์ก็จะทางานแบบผิดๆตามไปด้วย คุณสมบัติพื้นฐานของกลไก
การทางานมีดังนี้
 คุณสมบัติด้านหน่วยความจา
งานเขียนโปรแกรมคอมพิวเตอร์ต้องเกี่ยวข้องกับการใช้งานพื้นที่หน่วยความจาของระบบคอมพิวเตอร์
ในภาษาคอมพิวเตอร์ให้แทนสัญลักษณ์การกาหนดพื้นที่หน่วยความจาด้วยการกาหนดชื่อเป็นตัวแปรสาหรับใช้
ซูโดโค๊ดหาพื้นที่สามเหลี่ยม
เริ่มต้น
1. รับค่าความยาวของด้านที่เป็นฐานมาเก็บไว้ในตัวแปร X
2. รับความยาวของความสูงมาเก็บไว้ในตัวแปร Y
3. คานวณพื้นที่เก็บในตัวแปร ARRAY โดย ARRY = X * Y)/2
4. แสดงผลพื้นที่
จบ
START
1. READ X
2. READ Y
3. Compute ARRY = (X * Y)/2
4. Print ARRY
END
42
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
งาน เพื่อใช้อ้างอิงข้อมูลในหน่วยความจานั่นเอง ตัวอย่างเช่น
X = 4 หมายถึง กาหนดค่า 4 ไว้ในตัวแปร X
X = Y + Z หมายถึง การนาค่าในตัวแปร Y มาบวกกับค่าในตัวแปร Z แล้วเก็บผลลัพท์ที่
ได้ไว้ในตัวแปร X
X = X + 1 หมายถึง การเอาค่าในตัวแปร X ไปบวกเพิ่มอีก 1 ค่าแล้วเอาค่าผลลัพท์ใหม่ไป
เก็บในตัวแปร X แทนค่าเดิม
 คุณสมบัติด้านการคานวณ
คุณสมบัติด้านการคานวณในระบบคอมพิวเตอร์นั้น ในระดับพื้นฐานจะสามารถดาเนินการบวก ลบ
คูณ หาร ได้แต่ลักษณะการพิจารณาเลือกประมวลผลงานคานวณของคอมพิวเตอร์นั้น มีความแตกต่างจากระบบ
การคานวณของมนุษย์ คือ คอมพิวเตอร์คานวณ โดยพิจารณาลาดับความสาคัญของสัญลักษณ์เครื่องหมายการ
คานวณที่ปรากฏในนิพจน์การคานวณนั้นๆเป็นสาคัญ มิใช่เพียงการคานวณโดยยึดหลักเรียงจากซ้ายไปขวาแบบ
ที่เราบวกเลขที่เขียนเป็นสมการบนกระดานเท่านั้น เช่น 2 + 3 + 4 จะได้ผลลัพธ์เป็น 14 แต่ถ้าเขียนเป็น 2 x 3
+ 4 จะได้ผลลัพธ์เป็น 10
สัญลักษณ์ที่ใช้ในการคานวณและลาดับการทางานของการคานวณ มีดังนี้
สัญลักษณ์ ความหมายในการทางาน ลาดับการทางาน
+ บวก 3
- ลบ 3
* คูณ 2
/ , ( ) หาร 2
** หรือ ^ ยกกาลัง 1
จากลาดับการทางานในตารางถ้าหากเขียนเป็นประโยคเดียวกัน การคานวณจะทางานจากซ้ายไปขวา
คุณสมบัติด้านการเปรียบเทียบเชิงตรรกะ
ประสิทธิภาพการทางานของเครื่องคอมพิวเตอร์ที่มีเหนือกว่าเครื่องคานวณชนิดอื่นอย่างหนึ่ง ก็คือ
ความสามารถในการประมวลผลเชิงเปรียบเทียบ โดยใช้หลักการทางานของพีชคณิตมาทางานเชิงตรรกะนั่นเอง
ประสิทธิภาพการทางานของคาสั่งแต่ละภาษา ก็คือ ความสามารถในการเปรียบเทียบเงื่อนไขที่ผู้เขียนคาสั่ง
กาหนดขึ้น เพื่อให้คอมพิวเตอร์สามารถประมวลผล ลักษณะการตัดสินใจพิจารณาเงื่อนไข โดยหากเงื่อนไข
43
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
เป็นจริงให้เครื่องทางานตามคาสั่งหนึ่ง หรือหากเงื่อนไขเป็นเท็จก็ให้เครื่องทางานอีกคาสั่งหนึ่ง การเขียนคาสั่ง
ที่มีลักษณะของเงื่อนไขเพื่อให้เครื่องใช้ในการพิจารณาเลือกทิศทางการทางานตามเงื่อนไขที่กาหนดนั้น มีสิ่งที่
เกี่ยวข้องกับผู้พัฒนางานโปรแกรมก็คือต้องศึกษาวิธีการใช้สัญลักษณ์ในการเขียนประโยคคาสั่งแบบเงื่อนไขของ
แต่ละภาษาที่กาหนดให้เลือกใช้ โดยทั่วไปมีสัญลักษณ์ของพีชคณิตบูลลีน(Boolean) ดังลักษณะต่อไปนี้
การใช้สัญลักษณ์เขียนประโยคคาสั่งเงื่อนไขแบบ 1 ประโยค
การเขียนประโยคคาสั่งเงื่อนไขแบบ 1 เงื่อนไขนั้น มีสัญลักษณ์ในการใช้งานดังนี้
สัญลักษณ์ ความหมายในการทางาน
= เท่ากับ
< น้อยกว่า
> มากกว่า
<= น้อยกว่าหรือเท่ากับ
>= มากกว่าหรือเท่ากับ
< > ไม่เท่ากับ
ตัวอย่างที่ 13 รูปแบบการเขียนนิพจน์โดยใช้เงื่อนไขแบบ 1 ประโยคเทียบกับการเขียนผังงาน
ถ้า A > 0 แล้ว (ถ้าเงื่อนไขเป็นจริง)
คาสั่งชุดที่ 1
มิฉะนั้น (ถ้าเงื่อนไขเป็นเท็จ)
คาสั่งชุดที่ 2
หรือ
ถ้า A < > 0 แล้ว (ถ้าเงื่อนไขเป็นจริง)
คาสั่งชุดที่ 2
มิฉะนั้น (ถ้าเงื่อนไขเป็นเท็จ)
คาสั่งชุดที่ 1
A > 0
คาสั่งชุดที่ 1 คาสั่งชุดที่ 2
จริง เท็จ
A < > 0
คาสั่งชุดที่ 2 คาสั่งชุดที่ 1
จริง เท็จ
44
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
การใช้สัญลักษณ์เชื่อมประโยคคาสั่งเงื่อนไข
การเขียนคาสั่งกาหนดเงื่อนไขการทางานในลักษณะเชื่อมประโยคเงื่อนไข 2 ประโยค ต้องใช้สัญลักษณ์
คาสั่งเพิ่มเติม เพื่อให้ได้ข้อสรุปของการทางานว่าเป็นค่าจริง(True) หรือ ค่าเป็นเท็จ(False) ดังนี้
 สมมติให้ผลลัพธ์การเปรียบเทียบในประโยคเงื่อนไขที่ 1 เป็นสัญลักษณ์ A
 สมมติให้ผลลัพธ์การเปรียบเทียบในประโยคเงื่อนไขที่ 2 เป็นสัญลักษณ์ B
เมื่อมีการทางานหาข้อสรุปตั้งแต่ 2 เงื่อนไขประกอบกัน โดยใช้หลักการของพีชคณิตบูลลีน จะได้
ตารางต่อไปนี้
A B (A) AND (B) (A) OR (B) NOT (A)
T T T T F
T F F T F
F T F T T
F F F F T
 การใช้สัญลักษณ์ AND ในการเชื่อมประโยคเงื่อนไขนั้น จะให้ผลลัพธ์สรุปเงื่อนไขว่าเป็นจริงได้ก็
ต่อเมื่อประโยคทั้งสองประโยคมีค่าเป็นจริงเท่านั้น ถ้ามีประโยคใดประโยคหนึ่งเป็นเท็จ จะสรุปได้ว่าค่าที่ได้จะ
เป็นเท็จทันที
 การใช้สัญลักษณ์ OR ในการเชื่อมประโยคเงื่อนไขนั้น จะให้ผลลัพธ์สรุปเงื่อนไขว่าเป็นจริงได้ก็
ต่อเมื่อมีประโยคใดประโยคหนึ่งเป็นจริง จะสามารถสรุปได้ว่าค่านั้นเป็นจริงทันที
 การใช้สัญลักษณ์ NOT นาหน้าประโยคเงื่อนไขนั้น จะให้ผลลัพธ์สรุปในทางตรงกันข้าม
ตัวอย่างที่ 14 การเขียนนิพจน์ใช้เงื่อนไขแบบ 2 ประโยค โดยใช้สัญลักษณ์ AND
ถ้า (X > 10) AND (X < = 15) แล้ว (เงื่อนไขเป็นจริง)
คาสั่งชุดที่ 1
(เงื่อนไขเป็นเท็จ)
คาสั่งชุดที่ 2
45
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
จากตัวอย่างถ้าหากเงื่อนไขที่กาหนดเป็นจริงโปรแกรมจะทาคาสั่งชุดที่ 1 แต่ถ้าเงื่อนไขเป็นเท็จ
โปรแกรม จะทาคาสั่งชุดที่ 2 จากเงื่อนไขที่กาหนดในตัวอย่าง ค่าในหน่วยความจา x ต้องมีค่ามากกว่า 10 แต่
ไม่เกิน 15 จึงจะทาให้ข้อสรุปของประโยคเงื่อนไขดังกล่าวเป็นจริง นอกเหนือจากข้อสรุปนี้จะเป็นเท็จ
ตัวอย่างที่ 15 การเขียนนิพจน์ใช้เงื่อนไขแบบ 2 ประโยค โดยใช้สัญลักษณ์ OR
ถ้า (X > 50) OR (X < = 60) แล้ว (เงื่อนไขเป็นจริง)
ชุดคาสั่งที่ 1
(เงื่อนไขเป็นเท็จ)
ชุดคาสั่งที่ 2
จากตัวอย่างถ้าค่าในหน่วยความจา X มีค่ามากกว่า 50 หรือมีค่าน้อยกว่าหรือเท่ากับ 60 แล้วจะทาให้ได้
ข้อสรุปของเงื่อนไขนี้เป็น”จริง”
 คุณสมบัติด้านการแสดงผลค่าข้อมูล
เป็นการอ่านค่าข้อมูลจากพื้นที่หน่วยความจาที่เขียนคาสั่งนาไปเก็บไว้ หรือจากการคานวณที่ต้องมี
การนาค่าไปเก็บไว้ เพื่อนามาแสดงผลลัพธ์ในรูปแบบ และในตาแหน่งงานที่ต้องการ
 คุณสมบัติการจัดลาดับการทางาน
คอมพิวเตอร์จะทางานทีละคาสั่ง ตามลาดับจากบนลงล่าง กล่าวคือ คอมพิวเตอร์จะทางานตาม
คาสั่งที่อยู่บรรทัดบนสุดก่อน แล้วถึงทางานตามคาสั่งที่อยู่ในลาดับต่อมา จนถึงคาสั่งในบรรทัดสุดท้าย
แม้ว่าการเขียนซูโดโค้ดจะเป็นภาษาอังกฤษ จะเป็นพิมพ์เล็กหรือพิมพ์ใหญ่ก็ได้ ไม่มีรูปแบบที่
แน่นอน แต่โดยทั่วไปแล้วมักจะทากันดังลักษณะต่อไปนี้
การรับข้อมูลเข้าและการแสดงผลข้อมูล
การรับข้อมูลจะนิยมใช้คา READ หรือ GET หรือ INPUT ตามด้วยตัวแปรที่ต้องการใช้
เก็บหลายตัวจะใช้เครื่องหมายคอมมา ( “,“) คั่น ส่วนการแสดงผลมักใช้คาว่า PRINT หรือ WRITE สาหรับ
การรับข้อมูลมีรูปแบบดังนี้
READ VAR1, VAR2 …..
พี้นฐานการเขียนซูโดโค้ด
46
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
หรือ
INPUT VAR1, VAR2 …..
หมายความว่ารับข้อมูลเข้ามาเก็บในตัวแปรตัวที่ 1,2.....โดย VAR มาจากคาว่า Variable หมายถึงตัวแปร
ตัวอย่าง
READ X,Y หมายความว่า รับข้อมูลมาเก็บในตัวแปร X และ Y ตามลาดับ
ตัวอย่าง
Read student name อ่านค่ามาเก็บในตัวแปรชื่อ student_name
Get system_date อ่านค่ามาเก็บในตัวแปรชื่อ system_date
Input number_1, number_2 อ่านค่าสองค่ามาเก็บในตัวแปร number_1 ,number_2
สาหรับการแสดงข้อมูลมีรูปแบบดังนี้
PRINT VAR1,VAR 2,………
หรือ WRITE VAR1,VAR 2,………
หมายความว่าให้แสดงข้อมูลที่ถูกเก็บในตัวที่ 1,2 .........
ตัวอย่าง
WRITE DATA1 แสดงข้อมูลที่อยู่ในตัวแปร DATA1
PRINT A, B แสดงข้อมูลที่อยู่ในตัวแปร A และตัวแปร B
การคานวณ
การประมวลผลแบบคานวณจะขึ้นต้นด้วยคาว่า Compute หรือ Calculate แล้วตามด้วยตัวแปร
ที่ต้องการเก็บค่าจากการคานวณ เครื่องหมายเท่ากับและนิพจน์การคานวณซึ่งประกอบไปด้วยเครื่องหมายการ
กระทาทางคณิตศาสตร์
ตัวอย่าง
Compute ARRAT = (X * Y)/2
หมายความว่าให้ตัวแปร ARRAT มีค่าเท่ากับการนาตัวแปร X คูณกับตัวแปร Y แล้วหารด้วยสอง
47
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ตัวอย่าง
Compute Profit = Price – Cost
หมายความว่ากาไรคานวณได้จากตัวแปรที่เก็บราคาลบด้วยต้นทุน
การกาหนดค่า
การกาหนดค่าเริ่มต้นให้กับตัวแปรจะใช้คาว่า init และ set ถ้าหากเป็นการประกาศตัวแปร
จะต้องระบุด้วยว่าเป็นตัวแปรประเภทใด และถ้าเป็นการประกาศค่าคงที่จะใช้เครื่องหมายเท่ากับในการ
กาหนดค่า
ตัวอย่าง
INIT A,B : INTEGER ;ให้ตัวแปร A และ B เป็นตัวแปรที่เก็บเลขจานวนเต็ม
INIT Y : REAL ; ให้ตัวแปร Y เป็นตัวแปรที่เก็บเลขทศนิยม
SET A = 8 ; กาหนดให้ตัวแปร A มีค่าเท่ากับ 8
ตัวอย่างที่ 15 การเขียนซูโดโค้ดคานวณราคาเครื่องคอมพิวเตอร์รวมกับภาษี 7 %
Compute Total
init total, price, vat : real ** ประกาศตัวแปร total , price , vat
Set vat = 0.07 ** ประกาศ vat เป็นค่าคงที่ 0.07
read price ** รับราคาจากการป้อนข้อมูล
compute total = price + (price x 0.07) ** คานวณราคาบวก vat
print price, total ** แสดงผลราคา และราคารวม
End ** จบโปรแกรม
การเขียนซูโดโค้ดสาหรับตัดสินใจและทดสอบทางเลือก
การเขียนโปรแกรมที่ต้องมีการเลือกทิศทางการทางานนั้นในโปรแกรม จะต้องมีการเปรียบเทียบหรือ
ตัดสินใจเกิดขึ้นในโปรแกรมวิธีการตัดสินใจของโปรแกรมจะต้องมีการเปรียบเทียบเงื่อนไขเกิดขึ้น โดยผลลัพธ์
ที่ได้จะเป็นจริงหรือเท็จอย่างใดอย่างหนึ่งเท่านั้น
48
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
IF number > 0 THEN
PRINT “POSITIVE NUMBER”
ELSE
PRINT “NEGATIVE NUMBER”
ENDIF
CASE num OF
1 : PRINT 11111
2 : PRINT 22222
3 : PRINT 33333
ENDCASE
การตัดสินใจเพื่อเลือกทาระหว่างทางสองทางจะใช้คาว่า IF หรือ IF-THEN-ELSE และ ENDIF โดยจะ
เปรียบเทียบเงื่อนไข ถาเงื่อนไขเป็นจริงจะทากลุ่มคาสั่ง(Statement)กลุ่มหนึ่ง ถ้าเป็นเท็จจะทากลุ่มคาสั่งอีกกลุ่ม
หนึ่ง โดยมีรูปแบบดังนี้
IF ตรวจสอบเงื่อนไข THEN ;เริ่มต้น
กลุ่มคาสั่ง 1 ;ถ้าเป็นจริงทากลุ่มคาสั่งนี้
Else
กลุ่มคาสั่ง 2 ;ถ้าเป็นเท็จทากลุ่มคาสั่งนี้
ENDIF ;จบการทางาน
ตัวอย่างที่16 ตัวอย่างนี้จะนาตัวเลขในตัวแปร number มาทดสอบถามากกว่า 0 ให้แสดงว่าเป็นเลขบวก แต่
ถ้าไม่มากกว่า 0 ให้แสดงว่าเป็นเลขลบ
จากตัวอย่างหมายความว่าถ้าค่า number มีค่ามากกว่า 0 ให้คอมพิวเตอร์พิมพ์คาว่า POSITIVE NUMBER
ถ้าไม่มากกว่าจะพิมพ์คาว่า NEGATIVE NUMBER
สาหรับกรณีที่มีทางเลือกมากกว่าสองทางจะใช้คาว่า CASE ,OF และ ENDCASE โดยจะตรวจสอบว่า
ตัวแปรที่อยู่หลัง CASE มีค่าเท่ากับค่าคงที่ตัวใด ก็จะทากลุ่มคาสั่งที่อยู่หลังค่าคงที่ตัวนั้น ตัวอย่าง เช่น
จากตัวอย่างถ้าค่าในตัวแปร num เป็น 1 จะให้พิมพ์ตัวเลข 11111 ถ้าตัวแปร num มีค่าเป็น 2 จะให้
พิมพ์ตัวเลข 22222 ถ้าตัวแปร num มีค่าเป็น 3 จะให้พิมพ์ตัวเลข 33333
49
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
การเขียนซูโดโค้ดแบบวนซ้า
ในการทาซ้าหมายความว่าให้ระบบทางานซ้า ๆ ตามเงื่อนไขที่กาหนด โดยจะมีการเปรียบเทียบเงื่อนไข
ในการทาซ้า แบ่งออกได้สามรูปแบบดังนี้
1. การทาซ้าที่ทราบจานวนครั้งในการทาซ้า การทาซ้าแบบนี้จะมีการตั้งจานวนการทาซ้าไว้และมีการ
เพิ่มค่าในแต่ละรอบ จะใช้คาว่า FOR , DO และ ENDFOR โดยมีคาว่า IN STEPOF เป็นการบอกค่าที่เพิ่มใน
แต่ละรอบ ถ้าไม่มีคาว่า IN STEPOF หมายความว่าเพิ่มค่ารอบหนึ่ง โดยมีรูปแบบดังนี้
FOR กาหนดรอบการทาซ้า
Statement
ENDFOR
2. การทาซ้าจนระบบมีเงื่อนไขอย่างหนึ่งจึงหยุดทา จะใช้คาว่า REPEAT - UNTIL ดังรูปแบบต่อไปนี้
REPEAT
Statement_1
……………
UNTIL (Condition)
3. ถ้าเงื่อนไขเป็นจริงจะทาคาสั่งภายใน จะใช้คาสั่งว่า WHILE – ENDWHILE โดยจะตรวจสอบเงื่อนไข
ก่อนที่จะทาชุดคาสั่งภายใน ดังรูปแบบต่อไปนี้
WHILE (Condition)
Statement_1
……………
ENDWHILE
50
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ตัวอย่าง 17 จงเขียนซูโดโค้ดให้มีการพิมพ์ตัวเลขตั้งแต่ 1-10 โดยใช้ repeat-until
Print number 1 to 10
init num: integer /**ประกาศตัวแปร num เป็นตัวเลข
set num = 1 /**ให้ค่า num เริ่มต้นเท่ากับ 1
repeat /**การทางานวนซ้า (จนกว่า num = 10)
print num /**พิมพ์ค่าของ num จากค่าเริ่มต้น 1-10
num = num + 1 /**เพิ่มค่า num ขึ้น 1 เพื่อลดการวนซ้า
untii num > 10 /**เมื่อ num มากกว่า 10 จบการทางานแบบวนซ้า
ตัวอย่างที่ 18 จงเขียนซูโดโค้ดให้มีการพิมพ์ตัวเลขตั้งแต่ 1-10 โดยใช้ WHILE
Print number 1 to 10
init num : integer /**ประกาศตัวแปร num เป็นตัวเลข
set num = 1 /**กาหนดให้ค่า num เริ่มต้นเท่ากับ 1
while (num < = 10) /**ถ้า num น้อยกว่า 10 ให้ทาคาสั่งวนซ้า
print num /**พิมพ์ค่า num จากค่าเริ่มต้น 1-10
num = num + 1 /**เพิ่มค่า num ขึ้น 1 ค่า เพื่อลดการวนซ้า
endwhile /**จบการทางานแบบวนซ้า
ตัวอย่างที่19 จงเขียนซูโดโค้ดสาหรับบวกเลข 1+ 2 + 3 +......+ 100 แล้วพิมพ์ผลลัพธ์ออกมา
วิธีทา ตัวอย่างนี้สามารถนารูปแบบของ while มาใช้ได้ โดยให้โปรแกรมกาหนดค่าเริ่มต้นให้กับตัวนับเป็น 1
และเพิ่มค่าขึ้นครั้งละหนึ่ง จนกว่ามีการตรวจสอบว่าค่าตัวนับมีค่าน้อยกว่าหรือเท่ากับ 100 มีค่าเป็นเท็จ
จึงหยุดนับโดยสามารถเขียนซูโดโค้ดได้ดังนี้
Sum_number_1_100
init i, sum : integer /**ประกาศตัวแปร i และ sum เป็นจานวนเต็ม
set i = 0 /**กาหนดค่าเริ่มต้นให้ i มีค่าเป็น 0
set sum = 0
while (i < = 100) /**ทาซ้าเมื่อ i น้อยกว่า หรือ เท่ากับ 100
compute sum = sum + i /**นาค่า I มาบวกกับ sum แล้วเก็บใน sum
51
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
compute i = i + 1 /**เพิ่มค่าในตัวแปร i ขึ้นหนึ่งค่า
endwhile
print sum /**แสดงค่าผลรวมที่เก็บอยู่ในตัวแปร sum
ตัวอย่างที่ 20 จงเขียนซูโดโค้ดให้มีการพิมพ์ตัวเลขตั้งแต่ 1-10 โดยใช้ for
Number 1 – 10
init num : integer /**ประกาศตัวแปร num เป็นตัวเลข
for num = 1 to 10 do /**ตั้งค่า num = 1 และให้วนรอบ 10 ครั้ง
print num /** พิมพ์ค่าของ num จากค่าเริ่มต้น 1-10
endfor /**จบการทางานแบบวนซ้า
การเขียนซูโดโค้ดเพื่อเรียกโปรแกรมย่อยและกระโดดข้าม ม
สาหรับการเรียกโปรแกรมย่อยหรือโพซีเยอร์จะใช้คาว่า CALL แล้วตามด้วยชื่อโปรแกรมย่อย
หรือโพซีเยอร์ มีรูปแบบดังนี้
CALL ชื่อโปรแกรมย่อย
การกระโดดข้ามไปทาชุดคาสั่งใดๆจะใช้คาว่า LABEL กาหนดตาแหน่งที่จะกระโดดมา และใช้คาว่า
GOTO ในตาแหน่งที่จะกระโดด ตัวอย่างเช่น
START :
Statement_1
………………
AB1 : ………………
……………..
GOTO AB1
END
การเขียนโปรแกรมแบบกระโดดข้ามมีในภาษายุคเก่าๆ เช่น ภาษา BASIC สาหรับการเขียนโปรแกรม
โดยทั่วไปแล้วการกระโดดข้ามมักจะไม่ค่อยใช้มากนัก
52
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
ในการเขียนโปรแกรมคอมพิวเตอร์นั้นมีลักษณะการเขียนโปรแกรมอยู่หลายลักษณะ ซึ่งขึ้นกับภาษา
คอมพิวเตอร์ที่เลือกใช้ด้วยรูปแบบการเขียนโปรแกรมที่นิยมใช้กันมีดังนี้
การเขียนโปรแกรมแบบบนลงล่าง (Top-Down Programming)
เป็นการวางแผนการเขียนโปรแกรมแบบโมดูลาร์เป็นลาดับ โดยมองปัญหาตั้งแต่ต้นจนจบการทางาน
ถ้าหากโมดูลใดมีความซับซ้อนก็จะให้แบ่งโมดูลนั้นออกเป็นโมดูลย่อย และให้โมดูลหลักเรียกโมดูลย่อยต่างๆ
มาใช้งานเป็นลาดับ ในการออกแบบโปรแกรมจะเขียนโครงสร้างต่างๆเป็นลักษณะสี่เหลี่ยมผืนผ้า โดยเขียน
การทางานแต่ละส่วนเรียงลาดับกันไป จากนั้นจึงนาโครงสร้างที่ที่ออกแบบขึ้นมาพัฒนาเป็นโปรแกรม
คอมพิวเตอร์
การเขียนโปรแกรมแบบโมดูลาร์(Modular Programming)
เป็นการเขียนโปรแกรมที่แยกการทางานต่างๆ ออกเป็นโปรแกรมย่อยขนาดเล็กหลาย โปรแกรม แต่ละ
โปรแกรมเรียกว่า โมดูล (module) ซึ่งสามารถทางานได้อิสระจากโมดูลอื่นๆ ทาให้ถ้าหากโปรแกรมมีความ
ผิดพลาดก็สามารถแก้ไขโมดูลที่ผิดพลาดได้ง่ายขึ้น สาหรับในการเขียนโปรแกรมจะต้องมีโมดูลหลักที่ทา
หน้าที่ควบคุมการทางานทั้งหมด ว่าจะเรียกโมดูลใดมาใช้งานก่อน โมดูลแต่ละโมดูลสามารถเรียกโมดูลย่อย ๆ
ได้อีกและแต่ละโมดูลอาจมีการส่งการควบคุมไปยังโมดูลอื่นๆ ได้อีกด้วย
การเขียนโปรแกรมในลักษณะโมดูลโปรแกรมย่อยจะมีสองประเภทคือ โปรแกรมย่อยภายใน(Internal
Subroutine)ที่เป็นโปรแกรมย่อยที่ผู้เขียนโปรแกรมเขียนขึ้นเพื่อเป็นส่วนหนึ่งของโปรแกรมหลัก แต่สามารถ
เรียกใช้ได้ อีกประเภทหนึ่งคือโปรแกรมย่อยภายนอก (Erteenal Subroutine) ซึ่งโปรแกรมย่อยที่เก็บไว้ใน
ไลบรารี (library) ที่สามารถเรียกใช้ได้ และสามารถนาไปใช้ในงานอื่นๆ ได้อีก
รูปแบบการเขียนโปรแกรมคอมพิวเตอร์
53
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
รูปโปรแกรมหลักมีการเรียกโมดูลโปรแกรมย่อย
จากรูปจะเห็นว่าโปรแกรมหลักหรือโมดูลหลักจะมีการเรียกโมดูลโปรแกรมย่อย เมื่อทาโมดูลโปรแกรม
ย่อยจบแล้ว โปรแกรมจะกลับมาทาโปรแกรมหลักต่อไป การเรียกโมดูลโปรแกรมย่อยนี้สามารถใช้ได้หลายๆ
ครั้งตามติองการ สาหรับการเขียนโปรแกรมแต่ละภาษานั้นจะมีคาสั่งสาหรับเรียกโมดูลโปรแกรมย่อยแตกต่าง
กันไปและโมดูลโปรแกรมย่อยก็จะมีคาสั่งเพื่อบอกว่าโปรแกรมย่อยนั้นจบลงแล้ว
โปรแกรมหลัก โมดูลโปรแกรมย่อย
SUBPOR_A. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
CALL SUBPRO_A
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
RETURN
โปรแกรมหลัก
โมดูลโปรแกรมย่อย
SUBPOR_A. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
CALL SUBPRO_A
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
CALL sub_B
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
โมดูลโปรแกรมย่อย
sub_B
54
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
รูปโปรแกรมที่โมดูลโปรแกรมย่อยสามารถเรียกโมดูลโปรแกรมย่อยอื่นอีก
การเขียนโปรแกรมเชิงวัตถุ (Object-oriented Programming)
เป็นการเขียนโปรแกรมแนวใหม่ที่มองการทางานต่างๆ เป็นวัตถุ หรือออปเจ็ค โดยที่จะมีการบอกว่า
ออปเจ็คนั้นคืออะไร ใช้ทาอะไร เมื่อโปรแกรมต้องการใช้ ก็สามารถนาออปเจ็คนั้นมาใช้ได้ ปรับขนาดได้
เปลี่ยนสีได้ ในการเขียนโปรแกรมจะทาการสร้างออปเจ็คต่างๆ เพื่อเรียกใช้งานในภายหลัง
55
กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดย อานาจ พรหมใจรักษ์
บรรณานุกรม
สมาคมวิทยาศาสตร์แห่งประเทศไทยในพระบรมราชูปถัมภ์. คอมพิวเตอร์ . คู่มืออบรมครูวิทยาศาสตร์
คณิตศาสตร์ คอมพิวเตอร์ฯ ระดับมัธยมศึกษาตอนปลาย,2555.
http://www4.csc.ku.ac.th/~b5340201660/9.html
http://sudruadee.blogspot.com/2007/06/2.html

กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์

  • 2.
    กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ คำนำ เอกสารประกอบการเรียนรู้ฉบับนี้จัดทาขึ้นเพื่อใช้ในการจัดกิจกรรมการสาระที่3เทคโนโลยีสารสนเทศ และการสื่อสาร มาตรฐาน ง 3.1 เข้าใจ เห็นคุณค่า และใช้กระบวนการเทคโนโลยีสารสนเทศในการสืบค้นข้อมูล การเรียนรู้ การสื่อสาร การแก้ปัญหา การทางาน และอาชีพอย่างมีประสิทธิภาพ ประสิทธิผล มีคุณธรรม ตาม หลักสูตรโรงเรียนโคกสีพิทยาสรรพ์ สานักงานเขตพื้นที่การศึกษามัธยมศึกษา เขต 25 พุทธศักราช 2551 เอกสารประกอบการเรียนรู้ฉบับนี้เป็นการนาเสนอเนื้อหาในส่วนของตัวชี้วัดที่ 5 แก้ปัญหาด้วยกระบวน การเทคโนโลยีสารสนเทศอย่างมีประสิทธิภาพเพื่อให้นักเรียนได้ศึกษาได้ด้วยตนเอง ผู้เรียบเรียงหวังว่าเอกสาร ประกอบการเรียนรู้ฉบับนี้ จะเป็นประโยชน์กับครูผู้สอนและนักเรียนในการจัดกิจกรรมการเรียนรู้สาหรับกลุ่ม สาระการเรียนรู้การงานอาชีพและเทคโนโลยี ซึ่งสอดคล้องกับการปฏิรูปการศึกษาของไทย ที่มุ่งเน้นให้ นักเรียนมีความสมบูรณ์ทั้งด้านสติปัญญาความรู้ คุณธรรม จริยธรรม อานาจ พรหมใจรักษ์
  • 3.
    กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ สำรบัญ หน้า ขั้นตอนการพัฒนาโปรแกรม 1 การกาหนดและวิเคราะห์ปัญหา การเขียนผังงานและซูโดโค๊ด การเขียนโปรแกรม การทดสอบและแก้ไขโปรแกรม ทาเอกสารและบารุงรักษาโปรแกรม 2 3 4 4 4 วงจรการพัฒนาโปรแกรม 5 8 14 หลักเกณฑ์ในการวิเคราะห์ปัญหา วิธีการประมวลผล รูปแบบผลลัพท์และลักษณะของข้อมูล การทดสอบข้อมูลขั้นสุดท้าย 15 16 การทดสอบขั้นตอนวิธีการแก้ปัญหา 18 การเขียนผังงาน 24 สัญลักษณ์ที่ใช้ในการเขียนโปรแกรม หลักเกณฑ์การเขียนผังงาน ลักษณะโครงสร้างการเขียนผังงาน 28 32 33 การเขียนอัลกอริธึมและซูโดโค๊ด 39 ความหมายของอัลกอริธึม คุณสมบัติพื้นฐานในการประมวลผลของคอมพิวเตอร์ การใช้สัญลักษณ์เชื่อมประโยคคาสั่งเงื่อนไข 39 41 44 พื้นฐานการเขียนซูโดโค๊ด 45 การเขียนซูโดโค๊ดสาหรับตัดสินใจและทดสอบทางเลือก การเขียนซูโดโค๊ดแบบวนซ้า การเขียนซูโดโค๊ดเพื่อเรียกโปรแกรมย่อยและกระโดดข้าม 47 49 51 รูปแบบการเขียนโปรแกรมคอมพิวเตอร์ 52 บรรณานุกรม 55
  • 4.
    1 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ การนาคอมพิวเตอร์มาใช้งานนั้นต้องมีโปรแกรมสาหรับทางานตามที่ต้องการ ผู้ที่พัฒนาโปรแกรม สาหรับงานต่างๆ จะต้องเข้าใจงานนั้นเป็นอย่างดีแล้วจึงนามาพัฒนาเป็นโปรแกรมเพื่อใช้ช่วยในการทางานนั้นๆ ต่อไปงานต่างๆที่คอมพิวเตอร์สามารถทางานได้นั้นจะต้องเป็นงานที่มีขั้นตอนการทางาน ขั้นตอนการแก้ปัญหา ที่แน่นอน จากนั้นนักเขียนโปรแกรมจึงนาขั้นตอนการแก้ปัญหานั้นมาพัฒนาเป็นโปรแกรมคอมพิวเตอร์ต่อไป การเขียนโปรแกรมคอมพิวเตอร์ให้ทางานได้ตามที่เราต้องการนั้น ผู้เขียนโปรแกรมจะต้องรู้ว่าจะ ให้โปรแกรมทาอะไรมีข้อมูลอะไรที่ต้องให้กับโปรแกรมบ้าง และ ต้องการเอาต์พุตอย่างไรจากโปรแกรมรวมทั้ง รูปแบบการแสดงผลด้วย ผู้ที่ทาการเขียนโปรแกรมจะต้องทราบถึงขั้นตอนวิธีการของแก้ปัญหาของโปรแกรม ด้วยว่าจะต้องทาอย่างไรโดยเขียนเป็นลาดับขั้นตอนขึ้นมาก่อนแล้วจดบันทึกเอาไว้จากนั้น จึงนาลาดับขั้นตอน ที่เขียนขึ้นมาพัฒนาเป็นโปรแกรม ถ้าหากผู้เขียนโปรแกรมไม่ได้วางแผนขั้นตอนการทางานต่างๆไว้ก่อน หากต้องการปรับปรุงแก้ไขโปรแกรมในภายหลัง จะทาให้เสียเวลามากในศึกษาโปรแกรมก่อนที่จะทาการแก้ไข ถ้าหากโปรแกรมมีความซับซ้อนไม่มาก การศึกษาโปรแกรมเพื่อแก้ปัญหาอาจไม่นานนักแต่หากโปรแกรม มีความซับซ้อนมากจะทาให้ขั้นตอนการศึกษาปัญหายิ่งใช้เวลามากขึ้นไปด้วย โดยทั่วไปแล้วขั้นตอนการพัฒนา โปรแกรมแบ่งได้ดังนี้ 1. กาหนดและวิเคราะห์ปัญหา(Problem Definition and Problem Analysis) 2. เขียนผังงานและซูโดโค้ด (Flowchart and Pseudocoding) 3. เขียนโปรแกรม (Programming) 4. ทดสอบและแก้ไขโปรแกรม (Program Testing and Debugging) 5. ทาเอกสารและบารุงรักษาโปรแกรม (Progam Docmentation and Maintenance) ขั้นตอนการพัฒนาโปรแกรม
  • 5.
    2 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ การกาหนดและวิเคราะห์ปัญหา ขั้นตอนนี้เป็นขั้นตอนแรกสุดที่นักเขียนโปรแกรม จะต้องทาการให้คอมพิวเตอร์แก้ปัญหาต่างๆให้เรา นั้นเราต้องมีแนวที่แก้ไขปัญหาที่เหมาะสมให้กับคอมพิวเตอร์เพื่อให้การทางานเป็นอย่างมีประสิทธิภาพถ้าหากผู้ ที่เขียนโปรแกรมไม่สามารถทาความเข้าใจกับปัญหาที่ต้องการแก้ไขได้การนาคอมพิวเตอร์มาใช้ในการแก้ปัญหา ต่างๆก็ไม่สามารถทาได้การกาหนดและวิเคราะห์ปัญหามีขั้นตอนย่อยๆดังนี้ 1. กาหนดขอบเขตของปัญหา โดยกาหนดรายละเอียดให้ชัดเจนว่าจะให้คอมพิวเตอร์ทาอะไร ตัวแปร ค่าคงที่ที่ต้องใช้เป็นลักษณะใด ถ้าหากเราไม่กาหนดขอบเขตของปัญหาจะทาให้คอมพิวเตอร์ตัดสินใจได้ยากว่า ข้อมูลต่างๆที่เกิดขึ้นนั้นถูกหรือผิด 2. กาหนดลักษณะของข้อมูลเข้าแล้วออกจากระบบ ( Input/Output Specification) โดยต้องรู้ว่าข้อมูล ที่จะส่งเข้าไปเป็นอย่างไรมีอะไรบ้าง เพื่อให้โปรแกรมทาการประมวลผลและแสดงผลลัพธ์เช่นการรับค่าจาก คีย์บอร์ด การใช้เม้าส์การกาหนดปุ่มต่างๆลักษณะการแสดงผลทางหน้าจอว่าจะให้มีรูปร่างอย่างไร โดยคานึงถึง ผู้ใช้เป็นหลักในการออกแบบโปรแกรม ตัวอย่างเช่น ถ้าหากต้องการรับข้อมูลเข้าไปประมวลผลก็ต้องพิจารณา ต่อว่าเป็นเลขจานวนเต็ม หรือ ทศนิยม เอาต์พุตที่แสดงออกทางจอภาพจะให้แสดงทศนิยมกี่ตาแหน่ง เป็นต้น 3. กาหนดวิธีการประมวลผล (Process Specification)โดยต้องรู้ว่าจะให้คอมพิวเตอร์ประมวลอย่างไรจึง ได้ตามต้องการ ตัวอย่างที่ 1 ถ้าหากต้องออกแบบโปรแกรมให้คอมพิวเตอร์รับค่าข้อมูล 3 ค่า และ แสดงค่าเฉลี่ยทางจอภาพเรา อาจกาหนดและวิเคราะห์ปัญหาได้ดังนี้ 1. รับข้อมูลจากคีย์บอร์ด 1.1 รับข้อมูลเฉพาะที่เป็นตัวเลขมาเก็บในตัวแปรจานวน3ตัว 1.2 ถ้าข้อมูลเท่ากับ 0 ให้รับใหม่ 2. หาค่าทุกค่าที่รับมาเข้าด้วยกัน 2.1 รวมค่าทุกค่าที่รับมาเข้าด้วยกัน 2.2 นาค่าผลรวมที่ได้หารด้วย3 2.3 นาค่าผลลัพธ์ไปเก็บในตัวแปร
  • 6.
    3 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ 3. แสดงลัพธ์ทางจอภาพ 3.1 แสดงคาว่าค่าเฉลี่ยเท่ากับ 3.2 แสดงผลลัพธ์โดยมีทศนิยมสองตาแหน่ง จะเห็นว่าเราจะนาปัญหามาแจกแจงย่อยว่าจะต้องทาอะไรบ้างโดยข้อมูลที่รับเข้าไป คือ ตัวเลขสาม ตัว การประมวลผล คือ การหาค่าเฉลี่ย ส่วนเอาต์พุต คือ การพิมพ์ผลลัพธ์ เราสามารถเขียนการทางาน ของระบบได้ดังแผนภาพในรูปที่ 1 นาข้อมูลเข้า ประมวลผล นาข้อมูลออก รูปที่ 1 ขั้นตอนการทางานของโปรแกรม การเขียนผังงานและซูโดโค้ช หลังจากที่ได้วิเคราะห์ปัญหาแล้วขั้นตอนไปจะต้องใช้เครื่องมือช่วยในการออกแบบโปรแกรม ซึ่งยัง ไม่ได้เขียนเป็นโปรแกรมจริงๆแต่จะช่วยให้เขียนโปรแกรมได้ง่ายขึ้นโปรแกรมได้ง่ายขึ้น โดยเขียนเป็นลาดับ ขั้นตอนการทางานของโปรแกรมที่เรียกว่า อัลกอริทึม(Algorilhm) ซึ่งจะแสดงขั้นตอนการแก้ปัญหาโดยใช้ ประโยคที่ชัดเจนไม่คลุมเครือ และ มีรายละเอียดการทางานพอสมควรเพียงพอที่จะนาไปเขียนเป็นโปรแกรมให้ ทางานจริง โดยอัลกอริทึมนั้นอาจเขียนให้อยู่ในรูปของรหัสจาลองหรือซูโดโค้ด(Pseudo-code)หรือเขียนเป็น ผังงาน(Flowchart)ก็ได้ ซูโดโค้ดจะเป็นคาอธิบายขั้นตอนการทางานของโปรแกรมเป็นคาย่อไม่มีรูปแบบ เฉพาะตัว โดยแต่ละส่วนจะเป็นแนวทางในการเขียนโปรแกรมซึ่งทาให้เขียนโปรแกรมเป็นภาษาต่างๆได้ง่ายขึ้น ส่วนผังงานจะใช้สัญลักษณ์ต่างๆแทนการทางานและทิศทางของโปรแกรม รับข้อมูลตัวที่ 1 รับข้อมูลตัวที่ 2 รับข้อมูลตัวที่ 3 อ่านค่าเฉพาะที่เป็นเลข3ตัว นาตัวเลขทั้งสามตัวมารวม กันนาผลรวมมาหารด้วย3 แสดงค่าเฉลี่ย ทศนิยมสอง ตาแหน่ง
  • 7.
    4 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ การเขียนโปรแกรม หลังจากที่ผ่านขั้นตอนทั้งสองแล้ว ขั้นต่อไปจะต้องเขียนเป็นโปรแกรมเพื่อให้คอมพิวเตอร์สามารถ ประมวลผลได้ โดยเปลี่ยนขั้นตอนการทางานให้อยู่ในรูปรหัสภาษาคอมพิวเตอร์การเขียนโปรแกรมจะต้องเขียน ตามภาษาที่คอมพิวเตอร์เข้าใจโดยอาจใช้ภาษาระดับสูงหรือระดับค่า ซึ่งสามารถเลือกได้หลายภาษาการเขียน โปรแกรมแต่ละภาษาจะต้องทาตามหลักไวยากรณ์(syntax)ที่กาหนดไว้ในภาษานั้นนอกนี้การเลือกใช้ภาษา จะต้องพิจารณาถึงความถนัดของผู้เขียนโปรแกรมด้วย การทดสอบและแก้ไขโปรแกรม หลังจากเขียนโปรแกรม จะต้องทดสอบความถูกต้องของโปรแกรมที่เขียนขึ้นหาจุดผิดพลาดของ โปรแกรมว่ามีหรือไม่ และ ตรวจสอบจนไม่พบที่ผิดอีก จุดผิดพลาดของโปรแกรมนี่ เรียกว่า บัก(bug) ส่วนการ แก้ไขข้อผิดพลาดให้ถูกต้อง เรียกว่า ดีบัก(debug) โดยทั่วไปแล้วข้อผิดพลาดจากการเขียนโปรแกรมจะมี สองประเภท คือ 1. การเขียนคาสั่งไม่ถูกต้องตามหลักการเขียนโปรแกรมภาษานั้นๆ ซึ่งเรียกว่า Syntax Error หรือ Coding Error ข้อผิดพลาดประเภทนี้เรามักพบตอนแปลภาษาโปรแกรมเป็นรหัสภาษาเครื่อง 2. ข้อผิดพลาดทางตรรกะ หรือ Logic Error เป็นข้อผิดพลาดที่โปรแกรมทางานได้แต่ผลลัพธ์ออกมา ไม่ถูกต้อง ทาเอกสารและบารุงรักษาโปรแกรม ขั้นตอนนี้จะทาให้ผู้ใช้สามารถใช้งานโปรแกรมได้อย่างมีประสิทธิภาพและสะดวกในการตรวจสอบ ข้อผิดพลาดโดยเขียนเป็นเอกสารประกอบโปรแกรมขึ้นมาโดยทั่วไปแล้วแบ่งออกเป็นสองประเภทคือ 1. คู่มือการใช้หรือ User Document หรือ User guide ซึ่งจะอธิบายการใช้โปรแกรม 2. คู่มือโปรแกรมเมอร์ หรือ Program Document หรือ Technical Reference ซึ่งจะอานวยความสะดวกใน การแก้ไขโปรแกรมและพัฒนาโปรแกรมในอนาคตโดยจะมีรายละเอียดต่างๆเกี่ยวกับโปรแกรมเช่นชื่อโปรแกรม การรับข้อมูลการพิมพ์ผลลัพธ์ขั้นตอนต่างๆในโปรแกรมเป็นต้น
  • 8.
    5 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ส่วนการบารุงรักษาโปรแกรม(Maintainance) เป็นการที่ผู้เขียนโปรแกรมจะต้องคอยตรวจสอบการใช้ โปรแกรมจริงเพื่อแก้ไขข้อผิดพลาด ซึ่งอาจเกิดขึ้นในภายหลังรวมทั้งพัฒนาโปรแกรมให้ทันสมัยอยู่เสมอ เมื่อเวลาผ่านไป การเขียนโปรแกรมให้ทางานหนึ่งนั้นสามารถเขียนได้หลายวิธี โดยแต่ละวิธีในการเขียนอาจได้ผลลัพธ์ ออกมาเหมือนกันแม้ว่าจะมีการเขียนหรือขั้นตอนการทางานในโปรแกรมไม่เหมือนกันก็ตามการเขียนโปรแกรม ในงานบางงานผลลัพธ์ที่ได้อาจจะไม่ถูกต้องเสมอไปตัวอย่างเช่นการเขียนโปรแกรมสาหรับหารเลข โดยให้ โปรแกรมรับค่าตัวเลขทางแป้ นพิมพ์สองค่า แล้วนาค่านั้นมาหากันอาจเป็นไปได้ว่าคอมพิวเตอร์สามารถแสดง ผลลัพธ์การหารออกมาได้แต่ถ้าหากป้อนค่าเป็นศูนย์สาหรับตัวหารเข้าไปคอมพิวเตอร์ก็ไม่สามารถคานวณได้ถ้า หากผู้เขียนโปรแกรมไม่ได้ตรวจสอบตรงจุดนี้ ก็จะทาให้โปรแกรมที่เขียนออกมาเป็นโปรแกรมที่ไม่สมบูรณ์ โปรแกรมบางโปรแกรมทางานได้ถูกต้องแต่หากต้องการพัฒนาต่อ หรือ ปรับปรุงโปรแกรมให้ดีขึ้นทาได้ยากก็ ไม่ถือว่าโปรแกรมนั้นมีคุณลักษณะของโปรแกรมที่ดี อาจเนื่องมาจากผู้เขียนโปรแกรมไว้ก่อนหน้านั้นไม่ได้มี การเขียนคาอธิบายขั้นตอนต่างๆให้ผู้ต้องการพัฒนาต่อสามารถเข้าใจได้ง่ายๆ สาหรับโปรแกรมที่มีคุณลักษณะ ของโปรแกรมที่ดีควรมีลักษณะดังต่อไปนี้ 1. มีความถูกต้องและเชื่อถือได้ โปรแกรมที่ดีต้องให้ผลลัพธ์ที่ถูกต้องแม่นยาไม่คลาดเคลื่อนโปรแกรม จึงต้องมีความสมบูรณ์มาก ที่สุดคือผ่านการทดสอบที่ครอบคลุมโปรแกรมต้องโปรแกรมต้องนิ่งทางานแล้วไม่ค่อยเกิดปัญหาเพราะอาจถูก นาไปใช้ในการตัดสินใจที่สาคัญๆของผู้บริหาร 2. มีความเป็นมิตรต่อผู้ใช้ ปัจจุบันผู้ใช้โปรแกรมในการทางานมากขึ้นในจานวนนี้มีผู้ใช้ที่เป็นผู้เริ่มต้นและไม่มีพื้นฐานทาง ด้านคอมพิวเตอร์เลยและมีแนวโน้มเพิ่มมากขึ้นดังนั้นการสร้างให้โปรแกรมใช้งานง่ายและสะดวกจึงเป็นเรื่องที่ มีความสาคัญ วงจรการพัฒนาโปรแกรม
  • 9.
    6 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ 3. ค่าใช้จ่ายต่า ก่อนการพัฒนาต้องวางแผนและประเมินค่าใช้จ่าย เมื่อพัฒนาก็ต้องควบคุมค่าใช้จ่ายให้เป็นไปตาม แผนในมุมมองของผู้ใช้โปรแกรม จะต้องทางานได้คุ้มกับเงินที่จ่ายไปในมุมมองของผู้พัฒนาค่าใช้จ่ายในการ พัฒนาต้องต่ากว่าราคาที่เสนอแก่ลูกค้า 4. ต้องอ่านง่ายและสามารถกลับมาใช้ใหม่ โปรแกรมที่มีความสูงมักมีโครงสร้างที่ใหญ่และซับซ้อนจึงควรมีการออกแบบเป็นโมดูล(Module) ย่อยๆที่มีอิสระต่อกันและเรียบง่ายเพื่อให้ผู้พัฒนาโปรแกรมคนอื่นสามารถเข้าใจนาไปพัฒนาต่อให้เหมาะสมกับ สมัยได้ 5. มีความปลอดภัย ข้อมูลสาคัญมีแนวโน้มในการเก็บไว้ในคอมพิวเตอร์เพิ่มมากขึ้นรวมถึงเผยแพร่ในอินเทอร์เน็ตทา ให้เกิดความเสี่ยงในเรื่องของความปลอดภัยของข้อมูลเช่นการแก้ไขข้อมูลโดยไม้ได้รับอนุญาตการลักลอบขโมย ไปจนถึงการทาลายข้อมูลโปรแกรมที่ดีจึงต้องมีความปลอดภัยสูง 6. ใช้เวลาในการพัฒนาไม่นาน ปัจจุบันทั้งเทคโนโลยีและวิธีการทางานเปลี่ยนแปลงอย่างรวดเร็วทาให้เราไม่สามารถใช้เวลานาน เกินไปในการพัฒนาโปรแกรมไม่เช่นนั้นแล้วกว่าโปรแกรมจะเสร็จความต้องการอาจเปลี่ยนไปแล้วและการส่ง มอบงานก็ต้องเป็นไปตามที่ประเมินไว้ ในการเขียนโปรแกรมหรือพัฒนาโปรแกรมนั้นโปรแกรมเมอร์ต้องมีการเตรียมงานเกี่ยวกับการเขียน โปรแกรมอย่างเป็นขั้นตอนเรียกขั้นตอนเหล่านี้ว่าวงจรการพัฒนาโปรแกรม(Program Development Life Cycle PDLC)ประกอบด้วย 6 ขั้นตอน ดังนี้ 1. ขั้นวิเคราะห์ความต้องการ (Reuirement Analysis & Feasibility Study) 2. ขั้นวางแผนแก้ไขปัญหา (Algorithm Design) 3. ขั้นดาเนินการเขียนโปรแกรม (Program Coding) 4. ขั้นทดสอบและแก้ไขโปรแกรม (Program Testing & Debugging) 5. ขั้นการเขียนเอกสารประกอบ (Documentation) 6. ขั้นบารุงรักษาโปรแกรม (Program Maintenance)
  • 10.
    7 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ในการทากิจกรรมต่างๆในแต่ละขั้นตอนจะต้องมีการตรวจสอบความถูกต้องให้แน่นอน ก่อนที่จะทา กิจกรรมถัดไป สาหรับในบางกรณีถ้าหากว่ามีปัญหาบางอย่างเกิดขึ้นก็อาจมีการย้อนไปตรวจสอบกิจกรรมที่ เคยเคยทามาก่อนหน้านี้แล้วก็ได้ สาหรับกิจกรรมในขั้นตอนที่5อาจทาไปพร้อมๆกับกิจกรรมในขั้นตอนที่ 1 ถึงที่ 4 เลยก็ได้ วิธีการทางคอมพิวเตอร์เป็นขั้นตอนในการจัดทาโปรแกรมที่ช่วยให้การเขียนโปรแกรมดาเนินไปอย่าง มีประสิทธิภาพและได้ผลลัพธ์ตามที่มุ่งหมาย เพราะ แต่ละขั้นตอนจะช่วยให้เกิดความเป็นระเบียบในการเขียน โปรแกรมทาให้การเรียนเรียบแนวคิดมีความชัดเจนไม่สับสนและเกิดความง่ายต่อการเขียนหรือพัฒนาโปรแกรม แม้ว่าในปัจจุบันจะมีวิธีการสมัยใหม่เกิดขึ้น เช่น เทคโนโลยีการเขียนโปรแกรมเชิงวัตถุ แต่วิธีการทาง คอมพิวเตอร์ยังเป็นสิ่งที่จาเป็นและน่ากระทา โดยเฉพาะอย่างยิ่งผู้ที่เพิ่งเริ่มต้นใหม่กับงานเขียนโปรแกรม เพราะช่วยให้แนวคิดของการพัฒนาโปรแกรมเป็นระเบียบไม่สับสน วางแผนแก้ไขปัญหา เขียนโปรแกรม ทดสอบและแก้ไข เขียนเอกสารประกอบ บารุงรักษา วิเคราะห์ความต้องการ
  • 11.
    8 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ วงจรการออกแบบและพัฒนาโปรแกรมนั้นเป็นสิ่งที่ต้องศึกษาทาความเข้าใจเพื่อให้โปรแกรมที่สร้าง ขึ้นตอนการพัฒนาโปรแกรมทั้งหมด 6 ขั้นตอน ในการเตรียมงานเขียนโปรแกรมขั้นตอนแรกของการพัฒนา โปรแกรม คือ การกาหนดและวิเคราะห์ปัญหาเพื่อเป็นการพิจารณาว่างานที่การนั้นต้องการนั้นจะทาอะไร ผลลัพธ์เป็นอย่างไร ใช้ข้อมูลใดเป็นอินพุต และ มีวิธีการประมวลผลอย่างไร โดยต้องคานึงความเป็นไปได้ที่ คอมพิวเตอร์สามารถทางานได้ตามที่ได้วางแผนไว้ด้วยการวิเคราะห์งานที่ถูกต้อง จะทาให้สามารถเขียน โปรแกรมจะต้องทราบว่าค่าจ้างคานวณได้จากสูตร ค่าจ้าง = Hors*PayRate หรือถ้าต้องการเขียนโปรแกรม เพื่อคานวณหาปริมาตรของทรงกระบอก ผู้เขียนโปรแกรมจะต้อง ทราบว่าการหาปริมาตรคานวณได้จากสูตร ปริมาตรทรงกระบอก = π x รัศมี2 x ความสูง การวิเคราะห์ความต้องการเป็นการทาความเข้าความเข้าใจปัญหาและค้นหาสิ่งที่ต้องการ นั่นคือจะต้อง ศึกษาโดยละเอียดว่าต้องการผลลัพธ์อะไร ต้องใช้ข้อมูลอะไร เพื่อให้ได้ผลลัพธ์ตามต้องการและมีขั้นตอนการ ประมวลผลอย่างไรบ้างบางครั้งจะเรียกขั้นตอนนี้ว่าการวิเคราะห์ปัญหาหรือการวิเคราะห์งานการวิเคราะห์ความ การจึงเป็นขั้นตอนแรกก่อนที่จะเริ่มต้นเขียนโปรแกรม และ ถือว่าเป็นขั้นตอนที่สาคัญที่สุดก่อนถึงขั้นวางแผน แก้ปัญหาและดาเนินการเขียนโปรแกรม การวิเคราะห์ปัญหานั้นมีประเด็นที่ต้องพิจารณาออกมาเป็นข้อๆดังนี้  ต้องการอะไร จะต้องอธิบายว่างานที่ติองการให้ทาอะไรโดยอาจเป็นการเขียนออกมาเป็นข้อๆก็ได้  ต้องการเอาต์พุตอย่างไร จะอธิบายถึงลักษณะของผลลัพธ์ที่ต้องการว่าต้องการอย่างไร อาจเป็นการแสดงออกทางจอภาพ แสดงออกทางเครื่องพิมพ์หรือส่งเป็นเสียงออกทางลาโพง โดยต้องอธิบายรายละเอียดด้วย เช่น ถ้าต้องการ ให้แสดงทางจอภาพหน้าแรกเป็นอย่างไร ตัวเลขที่แสดงเป็นทศนิยมกี่ตาแหน่ง แสดงเป็นตารางอย่างไร ถ้า หากแสดงออกทางเครื่องพิมพ์ จะต้องบอกด้วยว่าจะให้พิมพ์เลขหน้าหรือไม่มีส่วนหัวหรือท้ายเอกสารหรือไม่ หลักเกณฑ์ในการวิเคราะห์ปัญหา
  • 12.
    9 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์  ตัวแปรที่ใช้ เพื่อบอกว่าจะใช้ตัวแปรอะไรแทนข้อมูลนาเข้าหรือแทนค่าที่อยู่ในระหว่างการประมวลตลอดจน ตัวแปรที่ใช้แสดงผลลัพธ์  วิธีการประมวลผลเป็นอย่างไร อธิบายถึงลาดับขั้นตอนของการประมวลผลวิธีการแก้ปัญหา เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ โดยต้องพิจารณาว่าข้อมูลต่างๆที่รับเข้าไปนั้นจะต้องเก็บในตัวแปรกี่ตัวเป็นตัวแปรประเภทใด การประมวลผล มีขั้นตอนกระทากับตัวแปรนั้นๆอย่างไรบ้าง ถ้าหากต้องการประมวลผลกับข้อมูลหลายค่าจะรับข้อมูลเข้าไป ทีละค่าแล้วประมวลผลหรือรับข้อมูลเข้าไปทั้งหมดแล้วประมวลผล การเขียนคาอธิบายวิธีการประมวลผลนี้ อาจเป็นการเขียนออกมาเป็นการเขียนออกเป็นการเขียนออกมาเป็นข้อๆในลักษณะของรหัสเทียมหรือเขียนเป็น ผังงานก็ได้ วิธีการประมวลผลนั้น มักจะเขียนในลักษณะอัลกอริธึมที่เป็นการจัดลาดับความคิดออกเป็น ขั้นตอน เพื่อใช้ในการแก้ปัญหาสาหรับการโปรแกรม โดยจะแสดงลาดับของตอนเชิงแปลงข้อมูลขาเข้าของ ปัญหาที่กาลังพิจารณาไปเป็นผลลัพธ์ตามที่ต้องการ โดยขั้นตอนต่างๆที่เขียนขึ้นจะต้องแปลไปเป็นคาสั่งของ คอมพิวเตอร์ได้ อัลกอริธึมที่ทางานได้ต้องจะต้องแก้ไขปัญหาและหาคาตอบได้ทุกกรณี เมื่อได้วิเคราะห์ปัญหาออกมาแล้วจะต้องลองทศสอบดูด้วยตนเองโดยลองป้อนข้อมูลเข้าไป แล้วดูว่าการแก้ปัญหาเป็นไปตามที่ต้องการหรือไม่ ตัวอย่างที่ 2 จงเขียนแนวทางการแก้ปัญหาด้วยคอมพิวเตอร์สาหรับให้คอมพิวเตอร์คานวณหาค่าจ้างพนักงาน เป็นรายชั่วโมงจากนั้นแสดงค่าจ้างที่คานวณได้ วิธีทา ต้องการอะไร ต้องการทราบค่าจ้างของพนักงานแต่ละคน ต้องการเอาต์พุตอย่างไร ต้องการเอาต์พุตเป็นค่าจ้างสุทธิของพนักงานทางจอภาพ ข้อมูลเข้า รหัสพนักงาน,ชื่อพนักงาน,จานวนชั่วโมงทางานเก็บในตัวแปรชื่อ Hours ,ค่าจ้างรายชั่วโมงเก็บในตัวแปรชื่อ Pay Rate
  • 13.
    10 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ วิธีการประมวลผล กาหนดวิธีการคานวณ ค่าจ้างสุทธิ = จานวนชั่วโมง x อัตราต่อชั่วโมง ขั้นตอนการประมวล 1. เริ่มต้น 2. รับรหัสพนักงาน,ชื่อพนักงาน,จานวนชั่วโมงทางาน,ค่าจ้างรายชั่วโมง 3. คานวณ ค่าจ้างสุทธิ = Hours x PayRate 4. แสดงผลลัพธ์เป็นรหัสพนักงาน ชื่อ และค่าจ้างสุทธิ 5. จบการทางาน ตัวอย่างที่ 3 จงเขียนแนวทางการแก้ปัญหาด้วยคอมพิวเตอร์ในการหาปริมาตรกระบอก และ แสดงค่าปริมาตร ที่คานวณได้ วิธีทา ต้องการอะไร ต้องการคานวณปริมาตรของรูปทรงกระบอก ต้องการเอาต์พุตอย่างไร ค่าปริมาตรทรงกระบอกเป็นรูปแบบเลขาทศนิยมทางจอภา ข้อมูลเข้า ความสูงของทรงกระบอก(h)และรัศมีของทรงกระบอก( r ) เป็นรูปแบบเลขทศนิยม วิธีการประมวลผล วิธีการคานวณ ปริมาตรทรงกระบอก = π x รัศมี2 x ความสูง ขั้นตอนการประมวลผล 1. เริ่มต้น 2. รับค่าความสูงและค่ารัศมีของทรงกระบอก
  • 14.
    11 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ 3. คานวณค่าปริมาตรจากปริมาตร = π x r2 x h 4. แสดงค่าปริมาตรทรงกระบอกทางจอภาพ 5. จบการทางาน ตัวอย่างที่ 4 จงเขียนโปรแกรมเพื่อรายงานผลสอบของนักเรียนวิชาคอมพิวเตอร์ โดยให้แสดงคะแนนรวม และเกรดออกมา วิธีทา ต้องการอะไร ต้องการพิมพ์คะแนนผลสอบและเกรดของนักเรียน ต้องการเอาต์พุตอย่างไร แสดงคะแนนและเกรดของนักศึกษาแต่ละคน ข้อมูลเข้า รหัสประจาตัวนักเรียน(ID),ชื่อนักเรียน(name), คะแนนสอบ กลางภาค(mid), คะแนนสอบย่อย(test) , คะแนนสอบปลายภาค (final) วิธีการประมวลผล วิธีการคานวณ คะแนนรวม = คะแนนกลางภาค + คะแนนสอบย่อย + คะแนนปลายภาค ถ้าคะแนนรวม >= 80 ได้เกรด “A” ถ้าคะแนนรวม >= 70 และ <80 ได้เกรด “B” ถ้าคะแนนรวม >= 60 และ <70 ได้เกรด “C” ถ้าคะแนนรวม >= 50 และ <60 ได้เกรด “D” ถ้าคะแนนรวม <50 ได้เกรด “F” ขั้นตอนการประมวลผล 1. เริ่มต้น 2. รับค่าตัวแปร ID , name , mid , test , final 3. คานวณคะแนนรวมและเกรด Total = mid + final + test
  • 15.
    12 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ถ้า Total >= 80 , Grade = “A” ไปข้อ 4 ถ้า Total > = 70 , Grade = “B” ไปข้อ 4 ถ้า Total >= 60 , Grade = “ C” ไปข้อ 4 ถ้า Total > = 50 , Grade = “D” ไปข้อ 4 ถ้า Total <50 , Grade = “F” 4. แสดง id , name , total , Grade ของนักเรียน 5. กลับไปข้อ 2 เพื่อรับจนครบทุกคน ถ้าครบแล้วไปข้อ 6 6. หยุดทางาน ตัวอย่างที่ 5 จงวิเคราะห์ปัญหาและเขียนอัลกอริทึมของการบวกตัวเลขจาจานวนสามค่าที่อ่านเข้ามาและแสดงผล ออกทางเครื่องพิมพ์ วิธีทา ข้อมูลเข้า ตัวเลขสามค่าให้อยู่ในชื่อตัวแปร number , number2 และ numb ข้อมูลเอาต์พุต ผลรวมให้มีชื่อตัวแปรเป็น total วิธีการประมวล อ่านค่าตัวเลขจานวนสามค่า บวกตัวเลขทั้งสามค่า แสดงผลรวมของตัวเลข อัลกอริธึม สามารถเขียนได้ดังนี้ Add_three_number 1. Read number 1 , number 2 , number 3 2. Total = number 1 + number 2 + number 3 3. Print total END
  • 16.
    13 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ตัวอย่างที่ 6 จงวิเคราะห์ปัญหาและเขียนอัลกอริทึมสาหับหาค่าเฉลี่ยของอุณหภูมิสูงสุดและอุณหภูมิต่าสุดเป็น เลขจานวนเต็มเข้าไปและให้แสดงค่าอุณหภูมิเฉลี่ยออกทางจอภาพ วิธีทา ข้อมูลเข้า รับค่าอุณหภูมิสูงสุดอยู่ในตัวแปรชื่อ max _ temp อุณหภูมิต่าสุดอยู่ในตัวแปรชื่อ min _temp ข้อมูลเอาต์พุต 1. รับค่าอุณหภูมิสูงสุดและอุณหภูมต่าสุด 2. หาค่าเฉลี่ยโดย avg _temp = (max _ temp + min _ temp)/2 3. แสดงค่า avg_temp ทางจอภาพ อัลกอริทึม สามารถเขียนได้ดังนี้ Find _ average _ temperature 1. READ max _ temp , min _ temp 2. Avg_temp = (max _ temp + min_ temp) /2 3. Output avg _ temp to the screen END
  • 17.
    14 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ วิธีการประมวลผลเป็นขั้นตอนการประมวลเพื่อให้ได้ผลลัพธ์ตามรูปแบบที่ต้องการโดยใช้ข้อมูลนาเข้า และตัวแปรต่างๆตามที่ได้กาหนดไว้แล้ว ขั้นตอนของวิธีการประมวลผลจะขึ้นอยู่กับวิธีการเขียนโปรแกรม โดยทั่วไปการเรียงคาสั่งในโปรแกรมเพื่อประมวลข้อมูลมี 2 วิธี คือ การรับข้อมูลทีละค่าเข้าไปประมวลผลและ การรับข้อมูลเข้าไปทั้งหมดแล้วจึงประมวล รับข้อมูลเข้าสู่คอมพิวเตอร์ทีละรายการ  วิธีการนี้จะรับข้อมูลรายงานการเข้ามาประมวลผลแล้วแสดงผลลัพธ์ โดยอาจรับจาก แป้นพิมพ์หรือรับจากไฟล์ก็ได้หลังจากนั้นก็จะรับข้อมูลรายการใหม่เพื่อนาไปประมวลผลและแสดงผลลัพธ์อีก เป็นเช่นนี้เรื่อยๆไปจนกว่าจะหมดข้อมูลที่ต้องการประมวลผลวิธีเป็นวิธีที่สะดวกและนิยมใช้กันโดยทั่วไปเช่น ในร้านขายสินค้าปลีกร้านขายหนังสือตัวอย่างการประมวลผลเขียนได้ดังแผนภาพต่อไปนี้ วิธีการประมวล เริ่มต้น รับข้อมูลหนึ่งรายการ ประมวลผล แสดงผลลัพธ์หนึ่งรายการ ข้อมูล รายการ จบ ใช่ ไม่ใช่
  • 18.
    15 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์  รับข้อมูลทั้งหมดในครั้งเดียว วิธีการนี้จะรับข้อมูลทั้งหมดมาเก็บในหน่วยความจาก่อนจากนั้นประมวลผลแล้แสดง ผลลัพธ์ของทุกรายในครั้งเดียววิธีนี้ต้องใช้เนื้อที่หน่วยความจามากขึ้นขณะที่ป้อนข้อมูลเข้าไป รูปแบบผลลัพธ์และลักษณะของข้อมูล ในส่วนของวิธีการประมวลผลนี้จะต้องมีการกาหนดรูปแบบการแสดงผลลัพธ์ด้วยว่าจะต้องมีการแสดง อย่างไรรวมวิธีการรับข้อมูลด้วยว่าถ้าหากรับเข้ามาทีละค่าตัวแปรจะต้องมีลักษณะใดและหากใช้วิธีรับข้อมูลเข้า มาทั้งหมดแล้วประมวลผลจะต้องรับข้อมูลอย่างไรซึ่งมีรูปแบบการดาเนินการดังนี้ 1.พิจารณาว่ารูปแบบของผลลัพธ์ต้องมีหัวตาราง(Table Heading) หรือ ไม่ถ้าต้องพิมพ์หัวตารางก่อน 2.ถ้าต้องการคานวณยอดรวมทั้งหมด เช่น ยอดรวมเงินเดือนของพนักงานทุกคนก็ต้องมีการกาหนดตัว แปรหนึ่งเพื่อเป็นที่เก็บค่าของยอดรวมไว้ตั้งแต่ต้นการกาหนดตัวแปรตัวแปรดังกล่าวมักจะกาหนดให้มีค่าเท่ากับ ศูนย์ในตอนต้นโปรแกรม เช่น Sum = 0 เริ่มต้น รับข้อมูลที่มีอยู่ทั้งหมด ประมวลผล แสดงผลลัพธ์ทั้งหมด จบ
  • 19.
    16 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ 3.พิจารณาข้อมูลที่นาเข้า(lnput Data) หรือ ตัวเลขที่เกี่ยวข้องถ้าตัวเลขที่ใช้มีลักษณะเปลี่ยนไปอย่างไม่ เป็นระบบ กล่าวคือ มีความห่างของตัวไม่แน่นอนก็ต้องใช้รับค่าตัวแปรนาเข้าเช่นเงินเดือนของพนักงานเป็น ข้อมูลตัวเลขที่มีความห่างของค่าที่ไม่แน่นอนตัวอย่าง เช่น พนักงานคนแรกมีเงินเดือน 7,500 คนที่สอง 9,000 คนที่สาม 13,000 คนที่สี่ 20,000 ไปเรื่อยๆ ซึ่งค่าความห่างของตัวเลขไม่เท่ากัน ลาดับค่า 7500 9000 13000 20000……… ช่วงห่างตัวเลขมีค่าไม่แน่นอนและไม่ไม่เท่ากัน ลักษณะข้อมูล เช่น ใช้ตัวแปรเข้ามารับค่า แต่ถ้าข้อมูลที่เกี่ยวข้องเป็นระบบและมีช่วงห่างเท่ากัน เช่น ลาดับข้อมูล 1 2 3 4 5 6 7 ค่าข้อมูล 5 10 15 20 25 30 35 ข้อมูลลักษณะดังกล่าวอาจใช้วิธีกาหนดตัวแปรให้มีเท่ากับค่าเริ่มต้นของข้อมูลแทนการรับเข้ามาพอและ เขียนโปรแกรมให้กาหนดค่าเอง เช่น n = l และ number = 5 เป็นต้น ทั้งการกาหนดและการรับข้อมูลมักขั้นตอนต่อจากข้อ 1 หรือ ข้อ 2 เมื่อได้กาหนดและรับข้อมูลแล้วขั้น ต่อไปคือการประมวลผล และพิมพ์ผลลัพธ์ 4.ในการเขียนโปรแกรมรับข้อมูลทีละรายการ จะต้องมีการกาหนดจุดจบของการประมวลผล หรือมีการ ทดสอบว่าข้อมูลหมดหรือยัง โดยอาจใช้วิธีทดสอบข้อมูลสุดท้าย หรือใช้วิธีการกาหนด่าตัวแปรสาหรับนับรอบ (Loop) เพื่อให้นับจานวนรอบการประมวลผลจนกว่าจะครบตามจานวนครั้งที่ต้องการ ดังรายละเอียดต่อไปนี้ การทดสอบข้อมูลสุดท้าย ย การทดสอบข้อมูลสุดท้ายมี 2 วิธี ดังนี้ วิธีที่ 1 เลือกตัวแปรที่เป็นข้อมูลนาเข้า ตัวใดตัวหนึ่งที่มีค่าเป็นไปไม่ได้เป็นตัวทดสอบ ลาดับของ การทดสอบจะอยู่ถัดจากการรับข้อมูล ดังนั้น การทดสอบแล้วพบว่าตัวแปรมีค่าเท่ากับค่าเป็นไปได้ก็จะเลิกจาก การประมวลผลข้อมูลทีละรายการ วิธีที่ 2 ใช้วิธีกาหนดตัวแปรอีก 1 ตัว เพื่อรับค่าว่าข้อมูลหมดหรือยัง วิธีนี้มักจะวางคาสั่งทดสอบอยู่ หลังจากเสร็จสิ้นการแสดงผลลัพธ์ในแต่ละรอบแล้ว นั่นคือ ข้อมูลรายการสุดท้ายจะผ่านการประมวลผลมาแล้ว หากโปรแกรมพบว่าเป็นรายการสุดท้ายก็จะเลิกการประมวลผล
  • 20.
    17 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ตัวอย่างวิธีที่ 1 พิจารณาการเขียนโปรแกรมด้วยภาษาเบสิกง่าย ๆ ต่อไปนี้ จากตัวอย่างโปรแกรมภาษาเบสิกคาสั่งในบรรทัดที่ 20 จะใช้สาหรับทดสอบว่าข้อมูลเข้ามาหมดหรือยัง โดยทดสอบว่า ถ้าหากข้อมูลที่เข้าเป็นค่าเลข หมายความว่าข้อมูลเข้ามาครบทั้งหมดแล้วโปรแกรมกระโดดไป ยังบรรทัดที่ 60 เพื่อพิมพ์คาว่า “GOOD BYE” ซึ่งเป็นการจบโปรแกรมสาหรับตัวอย่างต่อไปจะเป็นการ ประกาศตัวแปรอีกหนึ่งตัวชื่อว่า LC เป็นตัวแปรทดสอบ ตัวอย่างวิธีที่ 2 คาสั่ง ความหมาย 10 INPUT X รับค่าตัวเลขทางแป้นพิมพ์แล้วเก็บไว้ในตัวแปร X ครั้งละ 1 ค่า 20 IF X< 0 THEN GOTO 60 ถ้าตัวเลขในตัวแปร X มีค่าติดลบ ให้ทาคาสั่งในบรรทัดที่ 60 แต่ถ้าไม่ใช่ให้ทา คาสั่งในบรรทัดที่ 30 ต่อไป 30 Y = X + 200 นาค่าอยู่ในตัวแปร X ขณะนั้นบวกกับ 200 แล้วเก็บในตัวแปร Y 40 PRINT X , Y แสดงค่าที่อยู่ในตัวแปร X และ ตัวแปร Y 50 GOTO 10 ย้อนกลับไปทาคาสั่งในบรรทัดที่ 10 นั่นคือ รับค่าตัวเลขทางแป้นพิมพ์ตัวใหม่และ เก็บไว้ในตัวแปร X (ค่าเดิมถูกแทนด้วยค่าใหม่) 60 PRINT GOOD BYE ถ้าค่าที่รับเข้ามาทางแป้นพิมพ์เป็นค่าลบก็ทาคาสั่งในบรรทัดที่ 60 นั่นคือแสดงคา ว่า GOODBYE บนหน้าจอ 70 END ให้หยุดการทางาน คาสั่ง ความหมาย 10 INPUT X ,LC รับค่าตัวเลขเข้ามาเก็บในตัวแปรXและLCถ้าหากค่าในLCเป็น1แสดงว่า ข้อมูลยังไม่หมด 20 Y = X + 200 นาค่าในตัวแปรXบวกกับ200ออกทางจอภาพY 30 PRINT X , Y แสดงผลลัพธ์ค่าXและYออกทางจอภาพ 40 IF LC = 1 THEN GOTO 10 ELSE GOTO 50 ถ้าหากค่าที่อยู่ในตัวแปร LC เป็น 1 ให้ไปทาคาสั่งที่บรรทัด 10 แต่ไม่ใช่ ให้ไปทาคาสั่งที่บรรทัด 50 เป็นต้นไป 50 PRINT GOOD BYE แสดงคาว่า GOOD BYE ออกทางจอภาพ 60 END จบโปรแกรม
  • 21.
    18 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ จากตัวอย่าง เมื่อโปรแกรมทางานจะให้ใส่ค่าตัวเลขสองค่าโดยค่าแรกเป็นค่าข้อมูลเก็บไว้ในตัวแปร X ส่วนค่าที่สองเป็นข้อมูลทดสอบเก็บในตัวแปร LC เป็นค่า 1 หมายความว่ายังไม่ใช่ข้อมูลตัวสุดท้ายเมื่อโปรแกรม ทางานมาถึงบรรทัดที่ 40 จะทดสอบว่าค่าในตัวแปร LC เป็น 1 ใช่ หรือ ไม่ ถ้าใช้จะกระโดดไปยังบรรทัดที่ 10 เพื่อรับข้อมูลครั้งต่อไป หลังจากที่ได้วิเคราะห์ปัญหาแล้วขั้นตอนสุดท้าย คือ ขั้นตอนสาหรับทดสอบว่าวิธีการแก้ปัญหาที่ได้ สร้างขึ้นนั้นสามารถใช้งานได้หรือไม่ ซึ่งทดสอบ โดยการสมมติข้อมูลที่ใช้เป็นข้อมูลอินพุตในการแก้ปัญหา โดยยกตัวอย่างข้อมูลประมาณสอง หรือสามกรณี จากนั้นให้ลองแทนค่าลงในขั้นตอนต่างๆของการประมวลผล แล้วพิจารณาว่าได้คาตอบตามต้องการหรือไม่ ถ้าหากคาตอบผิดพลาดจะต้องกลับไปแก้ไขว่าลาดับขั้นตอนใดที่ ทางานไม่ถูกต้องและให้กลับไปแก้ไขขั้นตอนการทางานใหม่ การทดสอบขั้นตอนการแก้ปัญหานี้ควรทดสอบ กับข้อมูลหลายๆชุด ถ้าหากทดสอบกับข้อมูลชุดเดียวแล้ทางานถูกต้องก็ไม่ได้หมายความว่าขั้นตอนการทางานที่ ออกแบบขึ้นทางานได้อย่างถูกต้องแล้ว การตรวจสอบในแต่ละขั้นตอน ควรสร้างขึ้นมาแสดงการทางานในแต่ละขั้นตอนของการประมวลผล หากเกิดข้อผิดพลาดขึ้นมาจะได้ดูได้ง่ายว่าผิดพลาดในขั้นตอนใด ตัวอย่างที่ 7 จงตรวจสอบขั้นตอนในการแก้ปัญหาของโจทย์ในตัวอย่างที่ 5 วิธีทา จากตัวอย่างที่ 5 มีอัลกอริธึมการประมวลผล ดังนี้ Add_three_number 1. Read number 1, number 2 , number 3 2.Total = number 1 + number 2 + number 3 3.Print total END การทดสอบขั้นตอนวิธีการแก้ปัญหา
  • 22.
    19 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ การตรวจสอบขั้นตอนวิธีทาได้ดังนี้ 1. สร้างตัวเลขทดสอบทางอินพุตขึ้นมาสองชุด โดยให้ชุดแรกมีค่าเป็น 10 , 20 และ 30 ตัวเลขชุดที่สองมี ค่าเป็น 40 , 41 และ 42 ตัวแปร ข้อมูลชุดแรก ข้อมูลชุดที่สอง number1 10 40 number2 20 41 number3 30 42 2. ลองคิดคาตอบของการประมวลผลด้วยตนเอง ตัวแปร ข้อมูลชุดแรก ข้อมูลชุดที่สอง Total 60 123 3. สร้างตารางขึ้นมาแสดงการทางานตามอัลกอริธึมแต่ละขั้น โดยให้แสดงค่าของตัวแปรจากการ ประมวลผลในแต่ละขั้นตอนและสิ่งที่กระทากับตัวแปรนั้นๆ หมายเลขลาดับ number1 number2 number3 Total ชุดที่ 1 1 10 20 30 2 60 3 Print ชุดที่ 2 1 40 41 42 2 123 3 Print 4. ตรวจสอบผลลัพธ์ของขั้นที่ 2 และ ขั้นตอนที่ 3 (60 และ 123) ว่าได้ผลลัพธ์ตรงกันหรือไม่ โดยดูที่ตัวแปร Total
  • 23.
    20 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ตัวอย่างที่ 8 ถ้าหากต้องการพัฒนาโปรแกรมให้รับข้อมูลตัวเลขจานวนเต็มทางแป้นพิมพ์จานวน9ตัวแล้วให้ ระบบนับว่าตัวเลขเหล่าว่าตัวเลขบวกกี่ตัวเป็นเลขกี่ตัวและเป็นศูนย์กี่ตัวโดยให้แสดงผลลัพธ์ทาง จอภาพ วิธีทา จากปัญหาดังกล่าวสามารถวิเคราะห์งานได้ดังนี้ สิ่งที่ต้องการ ต้องการทราบจานวนตัวเลขที่เป็นบวกเป็นลบและเป็นศูนย์ ผลลัพธ์ที่ต้องการ แสดงจานวนตัวเลขที่เป็นบวก,ลบและศูนย์ทางจอภาพ ข้อมูลนาเข้า รับข้อมูลเข้าทางแป้นพิมพ์ทีละตัว ตัวแปรที่ใช้ ให้ X แทนตัวเลขที่รับเข้าทางแป้นพิมพ์ทีละตัว num_P แทน ตัวนับจานวนที่เป็นบวก num_n แทน ตัวนับจานวนที่เป็นลบ num_z แทน ตัวนับจานวนที่เป็นศูนย์ วิธีการประมวลผล สาหรับปัญหานี้จะให้รับข้อมูลเข้าทางแป้ นพิมพ์ทีละค่าโดยวิธีการดังนี้ กาหนดวิธีการคิด ถ้าตัวเลขเป็นจานวนบวก ให้บวก 1 เข้ากับตัวนับจานวนบวก ถ้าตัวเลขเป็นจานวนลบ ให้บวก 1 เข้ากับตัวนับจานวนลบ ถ้าตัวเลขเป็นศูนย์ ให้บวก 1 เข้ากับตัวนับจานวนศูนย์ กรรมวิธีการประมวลผล 1. กาหนดให้ตัวนับ num_p , num_n และ num_z มีค่าเป็นศูนย์ 2. อ่านค่าตัวเลขทางแป้ นพิมพ์มาเก็บในตัวแปร x 3. ถ้าอ่านไม่ได้ไปข้อ 7 4. ถ้า x เป็นจานวนบวก ให้บวก 1 กับ num_p แล้วไปข้อ 2 5. ถ้า x เป็นจานวนลบ ให้ 1 บวก num_n แล้วไปข้อ 2 6. ถ้า x เป็นค่าศูนย์ ให้บวก 1 กับ num_z แล้วไปข้อ 2 7. พิมพ์ค่าตัวนับทางจอภาพทั้งสามตัว 8. หยุด
  • 24.
    21 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ สาหรับกรรมวิธีการประมวลผล ถ้าหากในข้อ6ตัดคาว่า ถ้า x เป็นค่าศูนย์ทิ้งไปคาตอบก็จะได้เท่าเดิม เนื่องจากถ้าหากผ่านข้อ 4 และ 5 มาได้ แสดงว่าตัวเลขนั้นมีค่าเป็นศูนย์อยู่แล้ว สาหรับการตรวจสอบวิธีการ ประมวลผลสามารถทาได้ดังนี้ 1. ลองยกตัวอย่างข้อมูลขึ้นมา 1 ชุด ถ้าหากตัวเลขทั้ง 9 ตัว มีค่าเป็น 13 , 7 , -4 , 0 , -5 , 2 , 6 , -2 และ 35 2. คิดคาตอบการประมวลผลด้วยตนเองจะต้องได้จานวนบวก 5 ตัว จานวนลบ 3 ตัวและศูนย์1 ตัว 3. ถ้าหากสร้างตรวจตารางขึ้นมา เพื่อแสดงตามขั้นตอนวิธีการประมวลผลจะได้ดังนี้ หมายเลขลาดับ ตัวเลข(x) num_p num_n num_z 1 - 0 0 0 2 13 0 0 0 3 13 0 0 0 4 13 1 0 0 2 7 1 0 0 3 7 1 0 0 4 7 2 0 0 2 -4 2 0 0 3 -4 2 0 0 4 -4 2 0 0 5 -4 2 1 0 2 0 2 1 0 3 0 2 1 0 4 0 2 1 0 5 0 2 1 0 6 0 2 1 1 2 -5 2 1 1 3 -5 2 1 1 4 -5 2 1 1 ตัวแปร ข้อมูลชุดแรก num_p 5 num_n 3 num_z 1
  • 25.
    22 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ หมายเลขลาดับ ตัวเลข(x) num_p num_n num_z 5 -5 2 2 1 2 2 2 2 1 3 2 2 2 1 4 2 3 2 1 2 6 3 2 1 3 6 3 2 1 4 6 4 2 1 2 -2 4 2 1 3 -2 4 2 1 4 -2 4 2 1 5 -2 4 3 1 2 35 4 3 1 3 35 4 3 1 4 35 5 3 1 2 - 5 3 1 7 - 5 3 1 4. จะพบว่าคาตอบในขั้นตอนที่ 7 จะตรงกับคาตอบที่คิดเอาไว้แสดงว่าแนวทางการประมวลผลนี้ถูกต้อง ซึ่งสามารถนาไปพัฒนาเป็นโปรแกรมต่อไปนี้ เมื่อแน่ใจแล้วว่าวิธีการแก้ปัญหาที่ออกแบบขึ้นเป็นวิธีที่ถูกต้อง จึงดาเนินการเขียนโปรแกรมและ โปรแกรมที่เขียนขึ้นก็ต้องตรวจสอบจุดผิดพลาดเช่นกัน จุดผิดพลาดของโปรแกรม เรียกว่า บัก (Bug) สาหรับ การดาเนินการแก้ไขข้อผิดพลาดนั้น เรียกว่า ดีบัก(Debug) สาหรับโปรแกรมที่ทางานไม่ได้ตามวัตถุประสงค์ เรียกว่า โปรแกรมมี Error การเกิด Error ของโปรแกรมมักมีมาจาก 2 สาเหตุหลัก คือ 1) ข้อผิดพลาดทางไวยากรณ์ของภาษา(Syntax Error) เป็นข้อผิดพลาดที่เกิดการโค้ดคาสั่ง(Source Code)ที่ไม่ตรงกับไวยากรณ์(Syntax)ของโปรแกรมนั้นๆ ข้อผิดพลาดนี้เป็นข้อผิดพลาดที่ง่ายที่สุดในการ ตรวจหาและแก้ไข เนื่องจากจะพบในระหว่างที่มีการแปลภาษาโปรแกรม ถ้ามีข้อผิดพลาดประเภทนี้อยู่ ตัวแปลภาษา คอมพิวเตอร์จะแจ้งให้ทราบทันที ตัวอย่างเช่นถ้าเขียนโปรแกรมด้วยภาษาซี สั่งให้คอมพิวเตอร์ข้อความออกมาทางหน้าจอด้วยคาสั่ง WXRITLN(The Area is : ‘,my_area) เมื่อมีการแปลภาษาโปรแกรมคอมพิวเตอร์จะตรวจสอบไวยากรณ์ของ ภาษา พบว่า คาสั่ง WXRITLN ไม่มีอยู่ในภาษาซี ดังนั้นในบรรทัดนี้คอมพิวเตอร์จะแสดงข้อผิดพลาดประเภท
  • 26.
    23 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ Syntax Error ออกมาให้เห็น 2) ข้อผิดพลาดที่เกิดจากการตีความหมายของปัญหาผิดไป(Logical Error) เป็นข้อผิดพลาดที่เกิดจาก การออกแบบอัลกอริธึมให้ทางานผิดจากวัตถุประสงค์หรือ ความต้องการการแก้ไขข้อผิดพลาดปะเภทนี้ จะต้อง ทาโดยการตรวจไล่โปรแกรมทีละคาสั่ง เพื่อหาข้อผิดพลาดนั้นให้พบ เช่น ผู้เขียนโปรแกรมต้องการนาค่า A ไปบวกกับค่า B แต่เขียนเครื่องหมายเป็นลบก็ทาให้ค่าที่คานวณได้ไม่ถูกต้อง ซึ่งสามารถตรวจสอบข้อผิดพลาด นี้โดยใช้ข้อมูลทดสอบ(Test Data) หรือ ข้อมูลที่ทราบคาตอบในขั้นปฏิบัติการ(Execution Run) ถ้าโปรแกรม ถูกต้องผลลัพธ์ที่ได้จะต้องตรงกับคาตอบที่เราทราบอยู่ก่อนแล้ว การตรวจสอบโปรแกรมเพื่อหาข้อผิดพลาดดังกล่าวอาจจะทาเป็นขั้นตอนดังนี้ 1) การตรวจสอบก่อนนาโปรแกรมเข้าเครื่องคอมพิวเตอร์ เรียกวิธีการนี้ว่า Desk Checking วิธีการนี้ จะตรวจสอบว่าโปรแกรมสามารถให้ผลลัพธ์ตามต้องการได้หรือ ไม่ เป็นการตรวจสอบข้อผิดพลาดทางตรรกะ โดยกาหนดข้อมูลชุดหนึ่งขึ้นมาแล้วแทนค่าตามขั้นตอนต่างๆที่เขียนเป็นโปรแกรมไว้ตั้งแต่ต้นจบ โดยสมมติ ว่าเป็นการปฏิบัติงานของเครื่องคอมพิวเตอร์วิธีการ เช่น ลดข้อผิดพลาดทางตรรกะได้มาก ก่อนจะส่งโปรแกรม เข้าเครื่องต่อไป 2) การตรวจสอบโดยเครื่องคอมพิวเตอร์ เมื่อผ่านการตรวจสอบในขั้นแรกแล้วก็ส่งโปรแกรมเข้า เครื่องคอมพิวเตอร์พร้อมข้อมูลสมมุติที่ทราบคาตอบ ขั้นแรกเครื่องคอมพิวเตอร์จะทาการตรวจ Syntax Error หรือข้อมูลผิดพลาดทางไวยากรณ์ ถ้ามีที่ผิดพลาดเครื่องคอมพิวเตอร์จะพิมพ์ข่าวสารข้อผิดพลาดนี้ออกมา ถ้าได้คาตอบตรงกับที่ทราบก็ค่อนข้างมั่นใจได้ว่าโปรแกรมน่าจะถูกต้อง เมื่อทดสอบโปรแกรมแล้วสามารถ นาโปรแกรมพร้อมกับข้อมูลจริงเข้าเครื่องคอมพิวเตอร์เพื่อทาการประมวลผลต่อไป
  • 27.
    24 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ การวางแผนขั้นตอนการทางานก่อนที่จะลงมือเขียนโปรแกรมจริงนั้น การเขียนผังงานเป็นอีกวิธีหนึ่งที่ สามารถนามาช่วยในการพัฒนาโปรแกรมได้ผังงาน หรือ เรียกกันว่า โฟลวซาร์ต(Flowchatr) เป็นแผนภาพที่ใช้ ออกแบบและอธิบายการทางานของโปรแกรม โดยอาศัยรูปทรงต่างๆควบคู่ไปกับลูกศรแต่ละรูปในแผนภาพจะ หมายถึงการทางานหนึ่งขั้นตอน ส่วนลูกศรจะแทนลาดับการทางานขั้นตอนต่างๆรวมทั้งทิศทางการไหลของ ข้อมูลตั้งแต่เริ่มต้นจนได้ผลลัพธ์ตามต้องการ ระบบงานทุกชนิดที่ผ่านการวิเคราะห์เป็นลาดับขั้นตอนแล้วจะ สามารถเขียนเป็นผังงานได้ ผังงานในการทางานของคอมพิวเตอร์สามารถแบ่งได้เป็น2ปะเภทคือผังงานระบบและผังงานโปรแกรม ผังงานระบบ(System Flowchart) เป็นแผนภาพที่แสดงขอบเขตและลาดับขั้นตอนในการทางานของระบบโดยรวม โดยจะแสดง ขั้นตอนการทางานภายในระบบหนึ่ง ๆ แต่จะแสดงภาพกว้าง ๆ ถึงองค์ประกอบที่มีอยู่ในระบบทั้งหมด เช่น เอกสารเบื้องต้น คืออะไร วัสดุที่ใช้ คืออะไร ใช้หน่วยความจาประเภทใด จะต้องส่งผ่านไปยังหน่วยใดวิธีการ ประมวลผลและการแสดงผลลัพธ์เป็นอย่างไร แต่จะไม่มุ่งเน้นรายละเอียดในการปฏิบัติไม่สามารถนามาเขียน เป็นโปรแกรมได้ตัวอย่าง เช่น ผังงานต่อไปนี้ การเขียนผังงาน ใบสั่งซื้อ ข้อมูลลูกค้า ข้อมูลสินค้า บันทึกการขาย ออกเอกสารกากับการขาย
  • 28.
    25 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ผังงานโปรแกรม(Program Flowchart) เป็นแผนภาพที่แสดงลาดับขั้นตอนในการทางานของโปรแกรมซึ่งจะแยกย่อยมาจากผังงาน ระบบโดยมีการลงรายละเอียดใส่วิธีการและจัดลาดับขั้นตอนของโปรแกรมตั้งแต่เริ่มต้นจากการรับข้อมูลการ ประมวลผลไปจนถึงการแสดงผลลัพธ์การทางานดังตัวอย่างต่อไปนี้ ประโยชน์ของผังงาน 1. ทาให้เข้าใจขั้นตอนและลาดับในการทางานของโปรแกรมอย่างรวดเร็ว 2. เป็นสื่อกลางระหว่างผู้พัฒนาโปแกรมนักวิเคราะห์โปรแกรม และ ผู้ที่เกี่ยวข้องให้สามารถ เข้าใจโปรแกรมได้โดยง่าย 3. ทาให้สามารถวิเคราะห์ความถูกต้องของโปรแกรมก่อนเขียนโปรแกรมจริงได้ง่าย และ ตรวจสอบข้อผิดพลาดของโปรแกรมได้ง่าย 4. ช่วยให้การกระจายงานให้กับโปรแกรมเมอร์หลายๆคนช่วยกันเขียนโปรแกรมเป็นส่วนๆได้ เพราะมีทิศทางการทางานของโปรแกรมชัดเจนสามารถแบ่งส่วนและประมาณการทางานได้อย่างต่อเนื่อง 5. ทาให้ผู้อื่นสามารถศึกษาการทางานของโปรแกรมและแก้ไขโปรแกรมได้ง่าย การเขียนผังงานที่ดี 1. เขียนตามสัญลักษณ์ที่กาหนด 2. ใช้ลูกศรแสดงทิศทางการทางาน จากบนลงล่าง เริ่มต้น รับค่า Price , Amount Pay = Price x Amount จบ
  • 29.
    26 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ 3. อธิบายสั้นๆให้เข้าใจง่าย 4. ทุกแผนภาพต้องมีทิศทางเข้าออก 5. ไม่ควรโยงลูกศรไปที่ไกลมากๆถ้าต้องทาให้ใช้สัญลักษณ์ ตัวอย่างที่ 9 ถ้าหากเราต้องการให้คอมพิวเตอร์ทาเป็นเครื่องคอดเลขโดยรับข้อมูลAและBเข้าไปจากนั้นแสดงผล บวกออกมาเราสามารถเขียนเป็นผังงานได้ดังนี้ รูปแสดงผังงานแสดงการทางานของโปรแกรมบวกเลข นอกจากนี้ผังงานยังยังสามารถนามาใช้กับงานที่เกี่ยวข้องกับชีวิตประจาวันได้ เริ่มต้น อ่านค่า A และ B คานวณ X = A + B ทาต่อหรือไม่ แสดงผล ผลรวม X จบ ทำ ไม่ทำ
  • 30.
    27 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ตัวอย่างที่ 10 ผังงานในการจับไม้ยาวสามครั้ง ถ้าได้ไม้ยาวให้ได้เงิน 100 บาท ถ้าได้ไม้สั้นให้เสียเงิน 100 บาท สามารถเขียนได้ดังนี้ รูปแสดงผังงานจับไม้สั้นไม้ยาว เริ่มต้น เลือกจับไม้ ผลการจับ เสียเงิน 100 บาท ได้เงิน 100 บาท ครบ 3 ครั้ง ไม้สั้น ไม้ยำว จบ ครบ ยัง
  • 31.
    28 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ สัญลักษณ์ที่ใช้ในการเขียนผังงาน การเขียนผังงานจะต้องใช้ภาพสัญลักษณ์ต่าง ๆ นามาเรียงต่อกัน เพื่อแสดงลาดับการทางานสัญลักษณ์ มาตรฐานที่ว่าสัญลักษณ์ ANSI (American National Standards lnstitute) ที่ควรทราบมีดังนี้ การเริ่มต้นและการสิ้นสุดการทางานของโปรแกรม ลูกศรแสดงทิศทางการทางานของโปรแกรม การประมวลผลการคานวณต่างๆ การทางานย่อย การรับหรือแสดงข้อมูลโดยไม่ระบุชนิดของอุปกรณ์ การตรวจสอบเงื่อนไขเพื่อเลือกทาอย่างใดอย่างหนึ่งโดยจะมีเส้นลูกศรแสดง ทิศทางการทางานต่อไป แสดงผลลัพธ์หรือรายงานทางเครื่อง จุดเชื่อมต่อผังงาน อ่านข้อมูล
  • 32.
    29 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ จุดเริ่มต้นและสิ้นสุดโปรแกรม การกาหนดจุดเริ่มต้นของโปรแกรมจะเขียนคาอธิบายคาว่า Start หรือคาว่า Begin เข้าไปในสัญลักษณ์ เริ่มต้นของผังงาน จากนั้นจะใช้ลูกศรชี้ออกไปยังจุดที่การประมวลผลต่อไป ถ้าหากเป็นจุดสิ้นสุดโปรแกรมจะ เขียนคาว่า Stop หรือ End ในสัญลักษณ์และมีลูกศรชี้เข้าจะไม่มีลูกศรชี้ออก ในผังงานแต่งานจะมีจุดเริ่มต้นและ จุดสิ้นสุดเพียงอย่างละหนึ่งแห่งเท่านั้น รูปแสดงสัญลักษณ์เริ่มต้นและสิ้นสุดของผังงาน การประมวล สัญลักษณ์รูปสี่เหลี่ยมผืนผ้าจะใช้สาหรับการประมวล (Process) การกาหนดค่า (Assignment) และ การ คานวณ (Computation) โดยจะเขียนวิธีการประมวลผลเข้าไปในสัญลักษณ์ และ ใช้เครื่องหมายลูกศร หรือ เครื่องหมายเท่ากับในการส่งค่าไปประมวลผลขั้นต่อไป ตัวอย่าง เช่น ถ้าหากต้องการคานวณ X ยกกาลังสอง แล้วนาไปเก็บในตัวแปร Y สามารถทาได้ดังนี้ รูปแสดงสัญลักษณ์แสดงการประมวล การรับข้อมูลเข้าและแสดงข้อมูลออก การรับข้อมูลเข้าและการส่งข้อมูลออก โดยไม่ระบุประเภทของอุปกรณ์ที่รับและส่งข้อมูลจะใช้ สัญลักษณ์รูปสี่เหลี่ยมด้านขนาน โดยจะมีทิศทางข้อมูลเข้าออกได้อย่างละหนึ่งทิศทางและเขียนคาอธิบายกากับ ไว้ภายใน ตัวอย่าง เช่น ถ้าต้องการรับข้อมูลเข้ามาจะเขียนคาว่า รับค่า , Read , Get ,หรือ Input เพื่อรับข้อมูลเข้า มาเก็บในตัวแปร ถ้าหากต้องการส่งข้อมูลจากตัวแปรออกไปจะเขียนคาว่า แสดงค่า ,พิมพ์,Print หรือ Output เป็นต้น ตัวอย่างเช่น ถ้าหากต้องการรับข้อมูลมาเก็บในตัวแปร A และ B หรือ ส่งข้อมูลจากตัวแปร Y ออกไป แสดงผลจะเขียนได้ดังรูปต่อไปนี้ Start End Y = X
  • 33.
    30 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ รูปแสดงตัวอย่างการใช้สัญลักษณ์รับค่าและแสดงค่าข้อมูล การแสดงข้อมูลออกทางเครื่องพิมพ์ การแสดงข้อมูลออกทางเครื่องพิมพ์จะใช้สัญลักษณ์ Document ในการแสดงผลดังภาพ โดยข้อมูลที่จะ แสดงผลจะเขียนอยู่ในสัญลักษณ์นี้ จากตัวอย่างในรูปต่อไปนี้จะแสดงข้อมูล DATA ออกทางเครื่องพิมพ์ สัญลักษณ์นี้จะมีลูกศรชี้เข้าออกได้อย่างละหนึ่งทิศทาง รูปแสดงสัญลักษณ์แสดงข้อมูลทางเครื่องพิมพ์ การตัดสินใจ การตัดสินใจหรือการเลือกทาอย่างใดอย่างหนึ่ง จะใช้สัญลักษณ์สี่เหลี่ยมขนมเปียกปูนหรือ Decisionใน การตรวจสอบเงื่อนไขที่จะตรวจสอบจะเขียนอยู่ในสัญลักษณ์นี้ ในส่วนของลาดับการทางานจะมีลูกศรชี้เข้า 1 ทิศทางและลูกศรชี้ออกสองทิศทาง โดยถ้าเงื่อนไขเป็นจริง(Y) จะทาโปรแกรมทิศทางหนึ่ง ถ้าเป็น (N) จะทาอีก ทิศทางหนึ่ง ในการเขียนลูกศรจะเขียนคาอธิบายไว้ที่ลูกศรด้วยดังตัวอย่างดังรูปเป็นการตรวจสอบว่าตัวแปร age มากกว่า หรือ เท่ากับ 50 จริงหรือไม่ ถ้าตัวแปร age มากกว่า หรือ เท่ากับ 50 จะทาทิศทาง Y ถ้า age น้อยกว่า 50 จะทิศทาง N รูปแสดงตัวอย่างการใช้สัญลักษณ์ตัดสินใจ Read A , B Write Y DATA Age = 50 จริง เท็จ
  • 34.
    31 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ การติดต่อกับอุปกรณ์เก็บขอมูลแบบดิสก์ ถ้าหากต้องการอ่านหรือเขียนข้อมูลกับอุปกรณ์เก็บข้อมูลแบบดรัมแม่เหล็ก หรือ อุปกรณ์ที่เข้าถึง ข้อมูลแบบโดยตรง จะใช้สัญญาลักษณ์ Magnetic drum เพื่อแสดงการรับและส่งข้อมูล ดังรูปต่อไปนี้เป็น สัญลักษณ์นี้จะมีลูกศรได้ทั้งแบบชี้เข้าและชี้ออก รูปสัญลักษณ์สาหรับอ่านเขียนข้อมูลกับอุปกรณ์แบบจานแม่เหล็กจุดต่อ ผังงานที่มีความยาวมากหรือมีเส้นตัดกันมากนั้นเราสามารถลดความยุ่งยากในการเขียนได้โดยการนาจุด ต่อมาใช้ ซึ่งจะทาให้ทาความเข้าใจผังงานได้ง่ายขึ้น ถ้าหากผังงานนั้นเขียนอยู่ภายในหน้าเดียวกัน สัญลักษณ์ ที่ใช้แสดงจุดต่อจะใช้สัญลักษณ์วงกลม หรือ connector และเขียนหมายเลขจุดต่อที่เป็นจุดต่อถึงกันเอาไว้ ภายใน ดังตัวอย่างในรูปเป็นการแสดงจุดต่อหมายเลข 1 ที่อยู่ภายในหน้าเดียวกัน รูปแสดงจุดต่อหมายเลข 1 ที่อยู่ภายในหน้าเดียวกัน จุดต่อระหว่างหน้า ถ้าหากมีการสร้างจุดต่อเนื่องที่อยู่คนละหน้าหรือต้องการสร้างจุดต่อที่อยู่ระหว่างหน้าจะใช้สัญลักษณ์ off-page connector ซึ่งเป็นรูปห้าเหลิยมแสดงจุดต่อสาหรับเชื่อมการทางานถึงกัน โดยภายในสัญลักษณ์จะ เขียนหมายเลขจุดที่ต้องการเชื่อมต่อเอาไว้ด้วยกัน และใช้ลูกศรแสดงทิศทางการทางานของโปรแกรม ดัง ตัวอย่างในรูป รูปแสดงจุดต่อระหว่างหน้าหมายเลข 1 1 1 1
  • 35.
    32 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ หลักเกณฑ์การเขียนผังงาน การเขียนผังงานที่ดีสามารถสรุปเป็นหลักเกณฑ์ได้ดังต่อไปนี้ 1. ผังงานที่เขียนขึ้นต้องดูชัดเจนและดูง่าย 2. ต้องมีจุดเริ่มต้นและจุดสิ้นสุดเพียงจุดเดียว 3. กาหนดทิศทางการทางานด้วยลูกศร และควรมีทิศทางการทางานจากบนลงล่างหรือจากซ้ายไปขวา เท่านั้น 4. สัญลักษณ์แบบเลือกทาจะต้องมีคาตอบที่ถูกต้องที่ทาให้โปรแกรมสามารถดาเนินต่อไปได้ 5. ลูกศรที่ใช้บอกทิศทางการทางานไม่ควรเขียนตัดกันหรือทับกัน 6. ผังงานที่มีความซับซ้อนมาก หรือขั้นตอนการทางานอยู่ห่างกันมาก ควรนาสัญลักษณ์การเชื่อมต่อมา ใช้เพื่อให้เข้าใจง่าย 7. การเขียนส่วนประมวลผลที่มีการคานวณ หรือ มีการใส่ค่าควรใช้เครื่องหมายลูกศร หรือ เครื่องหมาย เท่ากับในการเขียน 8. เมื่อเขียนผังงานจบแล้วควรตรวจสอบความถูกต้องของผังงานโดยการสร้างข้อมูลขึ้นมาหนึ่งชุด แล้ว ดูว่าผลลัพธ์เป็นไปตามที่ต้องการหรือไม่ เมื่อได้นาสัญลักษณ์ต่างๆมาเขียนเป็นผังงานแล้ว ในรูปสัญลักษณ์นั้นจะต้องเขียนคาบรรยาย เพื่อสื่อ ความหมายให้ผู้อ่านผังงานเข้าใจด้วย โดยใช้ภาษาที่ใช้จะเป็นภาษาที่เข้าใจง่ายอาจใช้ภาษาอังกฤษหรือภาษาไทย ก็ได้โดยเขียนเป็นภาษาที่อ่านแล้วเข้าใจได้ง่ายถ้าหากมีการกาหนดค่าข้อมูลให้กับตัวแปรต่างๆจะใช้เครื่องหมาย ลูกศรแทนการกาหนดค่า นอกจากนี้ยังสามารถใช้ตัวดาเนินการต่างๆมาเขียนในผังงานได้อีกด้วย สาหรับคาบรรยายประกอบทิศทางการทางานในกรณีที่มีการตรวจสอบเงื่อนไขแล้ว มีผลลัพธ์ออกมา สองทิศทาง ถ้าหากเงื่อนไขเป็นจริงจะใช้คาว่า true หรือ yes หรือ จริง และ ถ้าหากเงื่อนไขเป็นเท็จจะใช้คาว่า false หรือ no หรือ เท็จ เขียนไว้ในทิศทางการทางาน แต่ถ้าหากเงื่อนไขเป็นไปได้หลายกรณีจะใช้คาว่า case
  • 36.
    33 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ลักษณะโครงสร้างการเขียนผังงาน รูปแบบของผังงาน ซึ่งนิยมใช้เป็นมาตรฐานในการเขียนโปรแกรมแบบโครงสร้าง(Structure Program- ming) โดยโปรแกรมทุกโปรแกรมจะมีโครงสร้างการควบคุม เพื่อกาหนดทิศทางการทางานของโปรแกรม โครงสร้างโดยทั่วไปจะมีอยู่ 5 รูปแบบดังต่อไปนี้ 1.โครงสร้างการทางานแบบลาดับ(Sequence) จะแสดงขั้นคอนการทางานที่เรียงลาดับกันไป ไม่มีการ ข้ามขึ้น หรือ ย้อนกลับไปทาคาสั่งที่ได้ทาไปแล้ว ดังตัวอย่างในรูป รูปแสดงผังโปรแกรมแบบมีลาดับ เริ่มต้น ทาชุดคาสั่งที่ 1 รับค่าตัว แปร ทาชุดคาสั่งที่ 2 แสดงผล จบ
  • 37.
    34 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ 2. ผังโปรแกรมแบบมีการเลือก(Selection) เป็นโครงสร้างที่ตรวจสอบเงื่อนไข ให้ความสัมพันธ์ ทางตรรกะมาช่วยในการตัดสิตใจผังงานลักษณะนี้มีอยู่3 กรณีดังต่อไปนี้ การเลือกแบบหนึ่งเส้นทาง เมื่อมีการตรวจสอบเงื่อนไขแล้วเงื่องไขเป็นจริงจะทากิจกรรม หนึ่งที่กาหนดแต่ถ้าเงื่อนไขเป็นเท็จจะออกจากโครงสร้างนั้น โดยไม่ทากิจกรรมที่กาหนดเลย ผังงานแบบนี้ จะเขียนคาว่าจริง/เท็จ หรือ yes/no หรือ t/f กากับทิศทางการทางานไว้ด้วย โดยผังงานแสดงได้ดังรูป รูปแสดงผังงานแบบเลือกทาหนึ่งเส้นทาง การเลือกทาแบบสองเส้นทาง จะพิจารณาเงื่อนไขที่เป็นจริงและเป็นเท็จ โดยถ้าเป็นจริงจะทา อย่างหนึ่งแล้วออกจากโครงสร้าง ถ้าเป็นเท็จจะทาอีกอย่างหนึ่งแล้วออกจากโครงสร้างผังงานแสดงได้ดังรูป รูปแสดงผังงานสาหรับการเลือกทาอย่างไดอย่างหนึ่ง ชุดคาสั่งที่ 1 ตรวจสอบเงื่อนไข ชุดคาสั่ง จริง เท็จ ตรวจสอบเงื่อนไข ชุดคาสั่งที่ 2 จริง เท็จ
  • 38.
    35 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ การเลือกทาแบบหลายเส้นทาง จะพิจารณาเงื่อนไขต่างๆที่เกิดขึ้นถ้าเท่ากับทางเลือกใดจะให้ ไปทางานตามทางเลือกนั้นผังงานแบบเลือกหลายทางสามารถเขียนได้ดังรูป รูปแสดงผังโปรแกรมแบบทางเลือกหลายทาง การเลือกทาแบบหลายเส้นทางนี้ยังสามารถนาการเลือกทาแบบทางเดียวและแบบสองทิศทางมา ประกอบกันเป็นโครงสร้างใหม่ได้อีกด้วย 3. ผังโปรแกรมทาซ้าถ้าเงื่อนไขเป็นจริง จะใช้ในงานที่มีการตรวจสอบเงื่อนไขก่อนการทางานทุกครั้ง โดยเขียนได้ดังรูป รูปแสดงผังงานการทาซ้าแบบตรวจสอบเงื่อนไขก่อน ตัวแปร x ชุดคาสั่ง 1 ชุดคาสั่ง 2 ชุดคาสั่ง 3 ชุดคาสั่ง 4 X = 1 X = 2 X = 3 X = 4 ตรวจสอบเงื่อนไข ออกจากทาซ้า จริง ชุดคาสั่งที่ต้องทางานซ้า เท็จ
  • 39.
    36 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ 4. ผังโปรแกรมแบบทาซ้าจนกระทั่งเงื่อนไขเป็นจริง จะใช้ในระบบที่ต้องทางานก่อนการตรวจสอบ เงื่อนไขและทางานซ้าจนกระทั่งเงื่อนไขเป็นจริง สามารถเขียนได้ดังรูป รูปผังโปรแกรมแบบทาซ้าจนกระทั่งเงื่อนไขเป็นจริง 5.ผังโปรแกรมแบบทาซ้าตามจานวนที่ระบุ ใช้ในระบบที่ติองทางานตามจานวนรอบที่กาหนด โดยเริ่ม จากรอบเริ่มต้นไปยังรอบสุดท้าย ตามปกติแล้วค่าการนับรอบจะเพิ่มขึ้นครั้งละหนึ่งค่า โดยเขียนได้ดังรูป รูปผังงานการทาซ้ารอบตามจานวนที่ระบุ ชุดคาสั่งที่ต้องทางานซ้า ตรวจสอบเงื่อนไข ออกจากทาซ้า จริง เท็จ FOR i = 1 TO N ชุดคาสั่งที่ต้องทาซ้า
  • 40.
    37 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ตัวอย่างที่ 11 ถ้าหากต้องการนาคะแนน(จานวนเต็ม)ของนักเรียนหนึ่งคนมาตัดเกรดตามเงื่อนไขต่อไปนี้ คะแนน 80 - 100 ได้เกรด A คะแนน 70 - 79 ได้เกรด B คะแนน 60 - 69 ได้เกรด C คะแนน 50 - 59 ได้เกรด D คะแนนต่ากว่า 50 ได้เกรด F จากคะแนนดังกล่าวสามารถเขียนผังงานได้ดังรูป รูปแสดงผังงานของการตัดเกรดนักเรียน รับคะแนน X > 79 X > 69 X > 59 X > 49 เกรด F จบ เริ่มต้น เกรด A เกรด B เกรด C เกรด D จริง จริง จริง จริง
  • 41.
    38 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ตัวอย่างที่ 12 จงเขียนผังงานให้รับข้อมูลตัวเลขหนึ่งตัว เก็บในตัวแปร x จากนั้นให้พิมพ์ตามเงื่อนไขต่อไปนี้ ถ้า X > 0 แสดงผล “เป็นเลขบวก ถ้า X < 0 แสดงผล “เป็นเลขลบ” ถ้า X = 0 แสดงผล “ค่าเป็นศูนย์” รูปแสดงผังงานของการรับค่าตัวเลขและแสดงผล เริ่มต้น รับข้อมูล x X > 0 X < 0 พิมพ์เป็นค่ำบวก พิมพ์ค่าเป็นศูนย์ พิมพ์ค่ำเป็นลบ จบ เท็จ เท็จ จริง จริง
  • 42.
    39 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ เมื่อได้ทาการวิเคราะห์ปัญหาและวางแผนการแก้ปัญหาแล้ว ก่อนที่จะลงมือเขียนโปรแกรมเราจะต้อง ออกแบบขั้นตอนการทางานหรืออัลกอริธึม(Algorithm)ก่อน โดยจะใช้เป็นเครื่องมือในการแสดงขั้นตอน การทางานของระบบงานใด ๆ เพื่อให้การเขียนโปรแกรมเป็นไปได้รวดเร็วและง่ายขึ้น โดยเราอาจเขียน อัลกอริธึมในลักษณะผังงาน(Flowchart) หรือ เขียนเป็นรหัสลาลอง ที่เรียกว่า ซูโดโค้ด(Psudocodes) ก็ได้ ความหมายของอัลกอริธึม ม อัลกอริธึม(Algorithm) หมายถึง ลาดับของขั้นตอนเชิงคานวณที่แปลข้อมูลด้านอินพุตของปัญหา ไปเป็นผลลัพธ์ที่ต้องการ ขั้นตอนต่างๆในอัลกอริธึมสามารถเปลี่ยนไปเป็นคาสั่งที่ให้คอมพิวเตอร์ทางานได้ ดังนั้นถ้าหากทาตามอัลกอริธึมแล้ว ปัญหาจะต้องถูกแก้ได้สาเร็จและได้คาตอบที่ถูกต้องสาหรับทุกกรณีตามที่ กาหนดในอัลกอริธึม ดังนั้นเราจะไม่ยอมรับอัลกอริธึมที่การทางานติดอยู่ในวงวนไม่สิ้นสุด หรือ อัลกอริธึม ประเภทที่ทางานแล้วได้คาตอบถูกบ้าง ผิดบ้าง ดังนั้นจุดประสงค์ของการออกแบบอัลกอริธึมสาหรับแก้ปัญหา หนึ่ง ๆ ก็คือ การทางานที่ถูกต้องและทางานได้อย่างมีประสิทธิภาพ นอกจากการบรรยายอัลกอริธึมด้วยผังงาน แล้วยังสามารถเขียนบรรยายอัลกอริธึมด้วยคาบรรยายสั้น ๆ ที่ได้ใจความได้ โดยการเขียนรหัสจาลอง หรือซูโด โค้ด(Pseudocode) ซึ่งคล้ายกับโปรแกรมภาษาคอมพิวเตอร์ แต่จะบรรยายด้วยคาที่ง่าย ๆ ซูโดโค๊ดเป็นคาอธิบายขั้นตอนการทางานของโปรแกรม โดยใช้ถ้อยคาผสมระหว่างภาษาอังกฤษ และภาษาการเขียนโปรแกรมแบบโครงสร้างที่เข้าใจง่ายมาแสดงลาดับการทางานของโปรแกรมหรืออาจใช้ภาษา ไทยก็ได้โดยผู้เขียนโปรแกรมสามารถพัฒนาขั้นตอนต่าง ๆ ให้เป็นโปรแกรมได้ง่ายขึ้น แต่ส่วนใหญ่แล้วคาที่ใช้ มักเป็นคาเฉพาะ(Reserve Word) ที่มีอยู่ในภาษาการเขียนโปรแกรม และ มักจะเขียนด้วยอักษรตัวพิมพ์ใหญ่ ซูโด โค๊ดที่ดีจะต้องมีความชัดเจน สั้น และได้ใจความ ข้อมูลต่างๆ ที่ใช้จะถูกเขียนอยู่ในรูปแบบตัวแปร ซูโดโค๊ดนี้ บางครั้งจะเรียกว่า อัลกอริธึมก็ได้รูปแบบทั่วไปจะเป็นดังนี้ Algorithm <ชื่อของอัลกอริธึม> 1. . . . . . . . . . . . . . . . . . . . . . . . 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . END การเขียนอัลกอริธึมและซูโดโค้ด ขบวนการทางาน
  • 43.
    40 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ Algorithm Average_Sum 1. Count = 0 2. Sum = 0 3. INPUT (Value) 4. IF value > 0 THEN count = count + 1 sum = sum + value GOTO 3 ELSE GOTO 5 5. Average = sum / count 6. OUTPUT (average) 7. END ตัวอย่างเช่นในการเขียนซูโดโค๊ด สาหรับให้คอมพิวเตอร์หาค่าเฉลี่ยจากข้อมูลที่รับเข้าทางแป้นพิมพ์ อาจเขียนได้ดังนี้ จะเห็นว่าขั้นตอนการหาค่าเฉลี่ยจะเขียนไว้ให้ข้าใจได้ง่าย เราสามารถทราบได้ว่าในการทางานต่างๆ จะต้องใช้ตัวแปรอย่างไรบ้าง แต่ละขั้นตอนมีการประมวลผลอย่างไร โดยทั่วไปแล้วซูโดโค๊ดจะถูกเขียนด้วย ภาษาอังกฤษ ดังต่อไปนี้ Algorithm การหาค่าเฉลี่ย 1. ตัวนับ = 0 2. ผลรวม = 0 3. รับค่าทางแป้นพิมพ์เก็บไว้ใน (ข้อมูล) 4. ถ้าข้อมูลมากกว่า 0 เพิ่มตัวนับขึ้นหนึ่งค่า ผลรวม = ผลรวม + ค่าข้อมูล ย้อนกลับไปทาขั้นตอนที่ 3 ถ้าไม่มากกว่าไปทาขั้นตอนที่ 5 5. ค่าเฉลี่ย = ผลรวมหารด้วยตัวนับ 6. แสดงค่าเฉลี่ยทางจอภาพ โดยมีทศนิยมสองตาแหน่ง 7. จบ
  • 44.
    41 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ในการคานวณหาพื้นที่สามเหลี่ยม เราอาจเขียนซูโดโค๊ดได้ดังนี้ หรืออาจเขียนเป็นภาษาอังกฤษได้ดังนี้ คุณสมบัติพื้นฐานในการประมวลผลของคอมพิวเตอร์ ก่อนที่จะศึกษาวิธีการเขียนอัลกอริธึม ควรมีความรู้ความเข้าใจและคานึงถึงคุณสมบัติพื้นฐานของระบบ คอมพิวเตอร์ก่อน เพื่อนาไปประยุกต์ใช้ในขั้นตอนการเขียนอัลกอริธึมได้อย่างถูกต้อง แม้ว่าคอมพิวเตอร์จะเป็น อุปกรณ์อิเล็กทรอนิกส์ที่ทางานได้อย่างรวดเร็ว ไม่มีความผิดพลาด ไม่มีการทางานในลักษณะเครื่องจักรที่มี กลไกการเคลื่อนไหว แต่การออกแบบการทางานภายในที่ยังต้องอาศัยการกาหนดกลไกเชิงวิธีการทางานไว้ด้วย ถ้าหากกาหนดกลไกการทาผิด คอมพิวเตอร์ก็จะทางานแบบผิดๆตามไปด้วย คุณสมบัติพื้นฐานของกลไก การทางานมีดังนี้  คุณสมบัติด้านหน่วยความจา งานเขียนโปรแกรมคอมพิวเตอร์ต้องเกี่ยวข้องกับการใช้งานพื้นที่หน่วยความจาของระบบคอมพิวเตอร์ ในภาษาคอมพิวเตอร์ให้แทนสัญลักษณ์การกาหนดพื้นที่หน่วยความจาด้วยการกาหนดชื่อเป็นตัวแปรสาหรับใช้ ซูโดโค๊ดหาพื้นที่สามเหลี่ยม เริ่มต้น 1. รับค่าความยาวของด้านที่เป็นฐานมาเก็บไว้ในตัวแปร X 2. รับความยาวของความสูงมาเก็บไว้ในตัวแปร Y 3. คานวณพื้นที่เก็บในตัวแปร ARRAY โดย ARRY = X * Y)/2 4. แสดงผลพื้นที่ จบ START 1. READ X 2. READ Y 3. Compute ARRY = (X * Y)/2 4. Print ARRY END
  • 45.
    42 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ งาน เพื่อใช้อ้างอิงข้อมูลในหน่วยความจานั่นเอง ตัวอย่างเช่น X = 4 หมายถึง กาหนดค่า 4 ไว้ในตัวแปร X X = Y + Z หมายถึง การนาค่าในตัวแปร Y มาบวกกับค่าในตัวแปร Z แล้วเก็บผลลัพท์ที่ ได้ไว้ในตัวแปร X X = X + 1 หมายถึง การเอาค่าในตัวแปร X ไปบวกเพิ่มอีก 1 ค่าแล้วเอาค่าผลลัพท์ใหม่ไป เก็บในตัวแปร X แทนค่าเดิม  คุณสมบัติด้านการคานวณ คุณสมบัติด้านการคานวณในระบบคอมพิวเตอร์นั้น ในระดับพื้นฐานจะสามารถดาเนินการบวก ลบ คูณ หาร ได้แต่ลักษณะการพิจารณาเลือกประมวลผลงานคานวณของคอมพิวเตอร์นั้น มีความแตกต่างจากระบบ การคานวณของมนุษย์ คือ คอมพิวเตอร์คานวณ โดยพิจารณาลาดับความสาคัญของสัญลักษณ์เครื่องหมายการ คานวณที่ปรากฏในนิพจน์การคานวณนั้นๆเป็นสาคัญ มิใช่เพียงการคานวณโดยยึดหลักเรียงจากซ้ายไปขวาแบบ ที่เราบวกเลขที่เขียนเป็นสมการบนกระดานเท่านั้น เช่น 2 + 3 + 4 จะได้ผลลัพธ์เป็น 14 แต่ถ้าเขียนเป็น 2 x 3 + 4 จะได้ผลลัพธ์เป็น 10 สัญลักษณ์ที่ใช้ในการคานวณและลาดับการทางานของการคานวณ มีดังนี้ สัญลักษณ์ ความหมายในการทางาน ลาดับการทางาน + บวก 3 - ลบ 3 * คูณ 2 / , ( ) หาร 2 ** หรือ ^ ยกกาลัง 1 จากลาดับการทางานในตารางถ้าหากเขียนเป็นประโยคเดียวกัน การคานวณจะทางานจากซ้ายไปขวา คุณสมบัติด้านการเปรียบเทียบเชิงตรรกะ ประสิทธิภาพการทางานของเครื่องคอมพิวเตอร์ที่มีเหนือกว่าเครื่องคานวณชนิดอื่นอย่างหนึ่ง ก็คือ ความสามารถในการประมวลผลเชิงเปรียบเทียบ โดยใช้หลักการทางานของพีชคณิตมาทางานเชิงตรรกะนั่นเอง ประสิทธิภาพการทางานของคาสั่งแต่ละภาษา ก็คือ ความสามารถในการเปรียบเทียบเงื่อนไขที่ผู้เขียนคาสั่ง กาหนดขึ้น เพื่อให้คอมพิวเตอร์สามารถประมวลผล ลักษณะการตัดสินใจพิจารณาเงื่อนไข โดยหากเงื่อนไข
  • 46.
    43 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ เป็นจริงให้เครื่องทางานตามคาสั่งหนึ่ง หรือหากเงื่อนไขเป็นเท็จก็ให้เครื่องทางานอีกคาสั่งหนึ่ง การเขียนคาสั่ง ที่มีลักษณะของเงื่อนไขเพื่อให้เครื่องใช้ในการพิจารณาเลือกทิศทางการทางานตามเงื่อนไขที่กาหนดนั้น มีสิ่งที่ เกี่ยวข้องกับผู้พัฒนางานโปรแกรมก็คือต้องศึกษาวิธีการใช้สัญลักษณ์ในการเขียนประโยคคาสั่งแบบเงื่อนไขของ แต่ละภาษาที่กาหนดให้เลือกใช้ โดยทั่วไปมีสัญลักษณ์ของพีชคณิตบูลลีน(Boolean) ดังลักษณะต่อไปนี้ การใช้สัญลักษณ์เขียนประโยคคาสั่งเงื่อนไขแบบ 1 ประโยค การเขียนประโยคคาสั่งเงื่อนไขแบบ 1 เงื่อนไขนั้น มีสัญลักษณ์ในการใช้งานดังนี้ สัญลักษณ์ ความหมายในการทางาน = เท่ากับ < น้อยกว่า > มากกว่า <= น้อยกว่าหรือเท่ากับ >= มากกว่าหรือเท่ากับ < > ไม่เท่ากับ ตัวอย่างที่ 13 รูปแบบการเขียนนิพจน์โดยใช้เงื่อนไขแบบ 1 ประโยคเทียบกับการเขียนผังงาน ถ้า A > 0 แล้ว (ถ้าเงื่อนไขเป็นจริง) คาสั่งชุดที่ 1 มิฉะนั้น (ถ้าเงื่อนไขเป็นเท็จ) คาสั่งชุดที่ 2 หรือ ถ้า A < > 0 แล้ว (ถ้าเงื่อนไขเป็นจริง) คาสั่งชุดที่ 2 มิฉะนั้น (ถ้าเงื่อนไขเป็นเท็จ) คาสั่งชุดที่ 1 A > 0 คาสั่งชุดที่ 1 คาสั่งชุดที่ 2 จริง เท็จ A < > 0 คาสั่งชุดที่ 2 คาสั่งชุดที่ 1 จริง เท็จ
  • 47.
    44 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ การใช้สัญลักษณ์เชื่อมประโยคคาสั่งเงื่อนไข การเขียนคาสั่งกาหนดเงื่อนไขการทางานในลักษณะเชื่อมประโยคเงื่อนไข 2 ประโยค ต้องใช้สัญลักษณ์ คาสั่งเพิ่มเติม เพื่อให้ได้ข้อสรุปของการทางานว่าเป็นค่าจริง(True) หรือ ค่าเป็นเท็จ(False) ดังนี้  สมมติให้ผลลัพธ์การเปรียบเทียบในประโยคเงื่อนไขที่ 1 เป็นสัญลักษณ์ A  สมมติให้ผลลัพธ์การเปรียบเทียบในประโยคเงื่อนไขที่ 2 เป็นสัญลักษณ์ B เมื่อมีการทางานหาข้อสรุปตั้งแต่ 2 เงื่อนไขประกอบกัน โดยใช้หลักการของพีชคณิตบูลลีน จะได้ ตารางต่อไปนี้ A B (A) AND (B) (A) OR (B) NOT (A) T T T T F T F F T F F T F T T F F F F T  การใช้สัญลักษณ์ AND ในการเชื่อมประโยคเงื่อนไขนั้น จะให้ผลลัพธ์สรุปเงื่อนไขว่าเป็นจริงได้ก็ ต่อเมื่อประโยคทั้งสองประโยคมีค่าเป็นจริงเท่านั้น ถ้ามีประโยคใดประโยคหนึ่งเป็นเท็จ จะสรุปได้ว่าค่าที่ได้จะ เป็นเท็จทันที  การใช้สัญลักษณ์ OR ในการเชื่อมประโยคเงื่อนไขนั้น จะให้ผลลัพธ์สรุปเงื่อนไขว่าเป็นจริงได้ก็ ต่อเมื่อมีประโยคใดประโยคหนึ่งเป็นจริง จะสามารถสรุปได้ว่าค่านั้นเป็นจริงทันที  การใช้สัญลักษณ์ NOT นาหน้าประโยคเงื่อนไขนั้น จะให้ผลลัพธ์สรุปในทางตรงกันข้าม ตัวอย่างที่ 14 การเขียนนิพจน์ใช้เงื่อนไขแบบ 2 ประโยค โดยใช้สัญลักษณ์ AND ถ้า (X > 10) AND (X < = 15) แล้ว (เงื่อนไขเป็นจริง) คาสั่งชุดที่ 1 (เงื่อนไขเป็นเท็จ) คาสั่งชุดที่ 2
  • 48.
    45 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ จากตัวอย่างถ้าหากเงื่อนไขที่กาหนดเป็นจริงโปรแกรมจะทาคาสั่งชุดที่ 1 แต่ถ้าเงื่อนไขเป็นเท็จ โปรแกรม จะทาคาสั่งชุดที่ 2 จากเงื่อนไขที่กาหนดในตัวอย่าง ค่าในหน่วยความจา x ต้องมีค่ามากกว่า 10 แต่ ไม่เกิน 15 จึงจะทาให้ข้อสรุปของประโยคเงื่อนไขดังกล่าวเป็นจริง นอกเหนือจากข้อสรุปนี้จะเป็นเท็จ ตัวอย่างที่ 15 การเขียนนิพจน์ใช้เงื่อนไขแบบ 2 ประโยค โดยใช้สัญลักษณ์ OR ถ้า (X > 50) OR (X < = 60) แล้ว (เงื่อนไขเป็นจริง) ชุดคาสั่งที่ 1 (เงื่อนไขเป็นเท็จ) ชุดคาสั่งที่ 2 จากตัวอย่างถ้าค่าในหน่วยความจา X มีค่ามากกว่า 50 หรือมีค่าน้อยกว่าหรือเท่ากับ 60 แล้วจะทาให้ได้ ข้อสรุปของเงื่อนไขนี้เป็น”จริง”  คุณสมบัติด้านการแสดงผลค่าข้อมูล เป็นการอ่านค่าข้อมูลจากพื้นที่หน่วยความจาที่เขียนคาสั่งนาไปเก็บไว้ หรือจากการคานวณที่ต้องมี การนาค่าไปเก็บไว้ เพื่อนามาแสดงผลลัพธ์ในรูปแบบ และในตาแหน่งงานที่ต้องการ  คุณสมบัติการจัดลาดับการทางาน คอมพิวเตอร์จะทางานทีละคาสั่ง ตามลาดับจากบนลงล่าง กล่าวคือ คอมพิวเตอร์จะทางานตาม คาสั่งที่อยู่บรรทัดบนสุดก่อน แล้วถึงทางานตามคาสั่งที่อยู่ในลาดับต่อมา จนถึงคาสั่งในบรรทัดสุดท้าย แม้ว่าการเขียนซูโดโค้ดจะเป็นภาษาอังกฤษ จะเป็นพิมพ์เล็กหรือพิมพ์ใหญ่ก็ได้ ไม่มีรูปแบบที่ แน่นอน แต่โดยทั่วไปแล้วมักจะทากันดังลักษณะต่อไปนี้ การรับข้อมูลเข้าและการแสดงผลข้อมูล การรับข้อมูลจะนิยมใช้คา READ หรือ GET หรือ INPUT ตามด้วยตัวแปรที่ต้องการใช้ เก็บหลายตัวจะใช้เครื่องหมายคอมมา ( “,“) คั่น ส่วนการแสดงผลมักใช้คาว่า PRINT หรือ WRITE สาหรับ การรับข้อมูลมีรูปแบบดังนี้ READ VAR1, VAR2 ….. พี้นฐานการเขียนซูโดโค้ด
  • 49.
    46 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ หรือ INPUT VAR1, VAR2 ….. หมายความว่ารับข้อมูลเข้ามาเก็บในตัวแปรตัวที่ 1,2.....โดย VAR มาจากคาว่า Variable หมายถึงตัวแปร ตัวอย่าง READ X,Y หมายความว่า รับข้อมูลมาเก็บในตัวแปร X และ Y ตามลาดับ ตัวอย่าง Read student name อ่านค่ามาเก็บในตัวแปรชื่อ student_name Get system_date อ่านค่ามาเก็บในตัวแปรชื่อ system_date Input number_1, number_2 อ่านค่าสองค่ามาเก็บในตัวแปร number_1 ,number_2 สาหรับการแสดงข้อมูลมีรูปแบบดังนี้ PRINT VAR1,VAR 2,……… หรือ WRITE VAR1,VAR 2,……… หมายความว่าให้แสดงข้อมูลที่ถูกเก็บในตัวที่ 1,2 ......... ตัวอย่าง WRITE DATA1 แสดงข้อมูลที่อยู่ในตัวแปร DATA1 PRINT A, B แสดงข้อมูลที่อยู่ในตัวแปร A และตัวแปร B การคานวณ การประมวลผลแบบคานวณจะขึ้นต้นด้วยคาว่า Compute หรือ Calculate แล้วตามด้วยตัวแปร ที่ต้องการเก็บค่าจากการคานวณ เครื่องหมายเท่ากับและนิพจน์การคานวณซึ่งประกอบไปด้วยเครื่องหมายการ กระทาทางคณิตศาสตร์ ตัวอย่าง Compute ARRAT = (X * Y)/2 หมายความว่าให้ตัวแปร ARRAT มีค่าเท่ากับการนาตัวแปร X คูณกับตัวแปร Y แล้วหารด้วยสอง
  • 50.
    47 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ตัวอย่าง Compute Profit = Price – Cost หมายความว่ากาไรคานวณได้จากตัวแปรที่เก็บราคาลบด้วยต้นทุน การกาหนดค่า การกาหนดค่าเริ่มต้นให้กับตัวแปรจะใช้คาว่า init และ set ถ้าหากเป็นการประกาศตัวแปร จะต้องระบุด้วยว่าเป็นตัวแปรประเภทใด และถ้าเป็นการประกาศค่าคงที่จะใช้เครื่องหมายเท่ากับในการ กาหนดค่า ตัวอย่าง INIT A,B : INTEGER ;ให้ตัวแปร A และ B เป็นตัวแปรที่เก็บเลขจานวนเต็ม INIT Y : REAL ; ให้ตัวแปร Y เป็นตัวแปรที่เก็บเลขทศนิยม SET A = 8 ; กาหนดให้ตัวแปร A มีค่าเท่ากับ 8 ตัวอย่างที่ 15 การเขียนซูโดโค้ดคานวณราคาเครื่องคอมพิวเตอร์รวมกับภาษี 7 % Compute Total init total, price, vat : real ** ประกาศตัวแปร total , price , vat Set vat = 0.07 ** ประกาศ vat เป็นค่าคงที่ 0.07 read price ** รับราคาจากการป้อนข้อมูล compute total = price + (price x 0.07) ** คานวณราคาบวก vat print price, total ** แสดงผลราคา และราคารวม End ** จบโปรแกรม การเขียนซูโดโค้ดสาหรับตัดสินใจและทดสอบทางเลือก การเขียนโปรแกรมที่ต้องมีการเลือกทิศทางการทางานนั้นในโปรแกรม จะต้องมีการเปรียบเทียบหรือ ตัดสินใจเกิดขึ้นในโปรแกรมวิธีการตัดสินใจของโปรแกรมจะต้องมีการเปรียบเทียบเงื่อนไขเกิดขึ้น โดยผลลัพธ์ ที่ได้จะเป็นจริงหรือเท็จอย่างใดอย่างหนึ่งเท่านั้น
  • 51.
    48 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ IF number > 0 THEN PRINT “POSITIVE NUMBER” ELSE PRINT “NEGATIVE NUMBER” ENDIF CASE num OF 1 : PRINT 11111 2 : PRINT 22222 3 : PRINT 33333 ENDCASE การตัดสินใจเพื่อเลือกทาระหว่างทางสองทางจะใช้คาว่า IF หรือ IF-THEN-ELSE และ ENDIF โดยจะ เปรียบเทียบเงื่อนไข ถาเงื่อนไขเป็นจริงจะทากลุ่มคาสั่ง(Statement)กลุ่มหนึ่ง ถ้าเป็นเท็จจะทากลุ่มคาสั่งอีกกลุ่ม หนึ่ง โดยมีรูปแบบดังนี้ IF ตรวจสอบเงื่อนไข THEN ;เริ่มต้น กลุ่มคาสั่ง 1 ;ถ้าเป็นจริงทากลุ่มคาสั่งนี้ Else กลุ่มคาสั่ง 2 ;ถ้าเป็นเท็จทากลุ่มคาสั่งนี้ ENDIF ;จบการทางาน ตัวอย่างที่16 ตัวอย่างนี้จะนาตัวเลขในตัวแปร number มาทดสอบถามากกว่า 0 ให้แสดงว่าเป็นเลขบวก แต่ ถ้าไม่มากกว่า 0 ให้แสดงว่าเป็นเลขลบ จากตัวอย่างหมายความว่าถ้าค่า number มีค่ามากกว่า 0 ให้คอมพิวเตอร์พิมพ์คาว่า POSITIVE NUMBER ถ้าไม่มากกว่าจะพิมพ์คาว่า NEGATIVE NUMBER สาหรับกรณีที่มีทางเลือกมากกว่าสองทางจะใช้คาว่า CASE ,OF และ ENDCASE โดยจะตรวจสอบว่า ตัวแปรที่อยู่หลัง CASE มีค่าเท่ากับค่าคงที่ตัวใด ก็จะทากลุ่มคาสั่งที่อยู่หลังค่าคงที่ตัวนั้น ตัวอย่าง เช่น จากตัวอย่างถ้าค่าในตัวแปร num เป็น 1 จะให้พิมพ์ตัวเลข 11111 ถ้าตัวแปร num มีค่าเป็น 2 จะให้ พิมพ์ตัวเลข 22222 ถ้าตัวแปร num มีค่าเป็น 3 จะให้พิมพ์ตัวเลข 33333
  • 52.
    49 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ การเขียนซูโดโค้ดแบบวนซ้า ในการทาซ้าหมายความว่าให้ระบบทางานซ้า ๆ ตามเงื่อนไขที่กาหนด โดยจะมีการเปรียบเทียบเงื่อนไข ในการทาซ้า แบ่งออกได้สามรูปแบบดังนี้ 1. การทาซ้าที่ทราบจานวนครั้งในการทาซ้า การทาซ้าแบบนี้จะมีการตั้งจานวนการทาซ้าไว้และมีการ เพิ่มค่าในแต่ละรอบ จะใช้คาว่า FOR , DO และ ENDFOR โดยมีคาว่า IN STEPOF เป็นการบอกค่าที่เพิ่มใน แต่ละรอบ ถ้าไม่มีคาว่า IN STEPOF หมายความว่าเพิ่มค่ารอบหนึ่ง โดยมีรูปแบบดังนี้ FOR กาหนดรอบการทาซ้า Statement ENDFOR 2. การทาซ้าจนระบบมีเงื่อนไขอย่างหนึ่งจึงหยุดทา จะใช้คาว่า REPEAT - UNTIL ดังรูปแบบต่อไปนี้ REPEAT Statement_1 …………… UNTIL (Condition) 3. ถ้าเงื่อนไขเป็นจริงจะทาคาสั่งภายใน จะใช้คาสั่งว่า WHILE – ENDWHILE โดยจะตรวจสอบเงื่อนไข ก่อนที่จะทาชุดคาสั่งภายใน ดังรูปแบบต่อไปนี้ WHILE (Condition) Statement_1 …………… ENDWHILE
  • 53.
    50 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ตัวอย่าง 17 จงเขียนซูโดโค้ดให้มีการพิมพ์ตัวเลขตั้งแต่ 1-10 โดยใช้ repeat-until Print number 1 to 10 init num: integer /**ประกาศตัวแปร num เป็นตัวเลข set num = 1 /**ให้ค่า num เริ่มต้นเท่ากับ 1 repeat /**การทางานวนซ้า (จนกว่า num = 10) print num /**พิมพ์ค่าของ num จากค่าเริ่มต้น 1-10 num = num + 1 /**เพิ่มค่า num ขึ้น 1 เพื่อลดการวนซ้า untii num > 10 /**เมื่อ num มากกว่า 10 จบการทางานแบบวนซ้า ตัวอย่างที่ 18 จงเขียนซูโดโค้ดให้มีการพิมพ์ตัวเลขตั้งแต่ 1-10 โดยใช้ WHILE Print number 1 to 10 init num : integer /**ประกาศตัวแปร num เป็นตัวเลข set num = 1 /**กาหนดให้ค่า num เริ่มต้นเท่ากับ 1 while (num < = 10) /**ถ้า num น้อยกว่า 10 ให้ทาคาสั่งวนซ้า print num /**พิมพ์ค่า num จากค่าเริ่มต้น 1-10 num = num + 1 /**เพิ่มค่า num ขึ้น 1 ค่า เพื่อลดการวนซ้า endwhile /**จบการทางานแบบวนซ้า ตัวอย่างที่19 จงเขียนซูโดโค้ดสาหรับบวกเลข 1+ 2 + 3 +......+ 100 แล้วพิมพ์ผลลัพธ์ออกมา วิธีทา ตัวอย่างนี้สามารถนารูปแบบของ while มาใช้ได้ โดยให้โปรแกรมกาหนดค่าเริ่มต้นให้กับตัวนับเป็น 1 และเพิ่มค่าขึ้นครั้งละหนึ่ง จนกว่ามีการตรวจสอบว่าค่าตัวนับมีค่าน้อยกว่าหรือเท่ากับ 100 มีค่าเป็นเท็จ จึงหยุดนับโดยสามารถเขียนซูโดโค้ดได้ดังนี้ Sum_number_1_100 init i, sum : integer /**ประกาศตัวแปร i และ sum เป็นจานวนเต็ม set i = 0 /**กาหนดค่าเริ่มต้นให้ i มีค่าเป็น 0 set sum = 0 while (i < = 100) /**ทาซ้าเมื่อ i น้อยกว่า หรือ เท่ากับ 100 compute sum = sum + i /**นาค่า I มาบวกกับ sum แล้วเก็บใน sum
  • 54.
    51 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ compute i = i + 1 /**เพิ่มค่าในตัวแปร i ขึ้นหนึ่งค่า endwhile print sum /**แสดงค่าผลรวมที่เก็บอยู่ในตัวแปร sum ตัวอย่างที่ 20 จงเขียนซูโดโค้ดให้มีการพิมพ์ตัวเลขตั้งแต่ 1-10 โดยใช้ for Number 1 – 10 init num : integer /**ประกาศตัวแปร num เป็นตัวเลข for num = 1 to 10 do /**ตั้งค่า num = 1 และให้วนรอบ 10 ครั้ง print num /** พิมพ์ค่าของ num จากค่าเริ่มต้น 1-10 endfor /**จบการทางานแบบวนซ้า การเขียนซูโดโค้ดเพื่อเรียกโปรแกรมย่อยและกระโดดข้าม ม สาหรับการเรียกโปรแกรมย่อยหรือโพซีเยอร์จะใช้คาว่า CALL แล้วตามด้วยชื่อโปรแกรมย่อย หรือโพซีเยอร์ มีรูปแบบดังนี้ CALL ชื่อโปรแกรมย่อย การกระโดดข้ามไปทาชุดคาสั่งใดๆจะใช้คาว่า LABEL กาหนดตาแหน่งที่จะกระโดดมา และใช้คาว่า GOTO ในตาแหน่งที่จะกระโดด ตัวอย่างเช่น START : Statement_1 ……………… AB1 : ……………… …………….. GOTO AB1 END การเขียนโปรแกรมแบบกระโดดข้ามมีในภาษายุคเก่าๆ เช่น ภาษา BASIC สาหรับการเขียนโปรแกรม โดยทั่วไปแล้วการกระโดดข้ามมักจะไม่ค่อยใช้มากนัก
  • 55.
    52 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ ในการเขียนโปรแกรมคอมพิวเตอร์นั้นมีลักษณะการเขียนโปรแกรมอยู่หลายลักษณะ ซึ่งขึ้นกับภาษา คอมพิวเตอร์ที่เลือกใช้ด้วยรูปแบบการเขียนโปรแกรมที่นิยมใช้กันมีดังนี้ การเขียนโปรแกรมแบบบนลงล่าง (Top-Down Programming) เป็นการวางแผนการเขียนโปรแกรมแบบโมดูลาร์เป็นลาดับ โดยมองปัญหาตั้งแต่ต้นจนจบการทางาน ถ้าหากโมดูลใดมีความซับซ้อนก็จะให้แบ่งโมดูลนั้นออกเป็นโมดูลย่อย และให้โมดูลหลักเรียกโมดูลย่อยต่างๆ มาใช้งานเป็นลาดับ ในการออกแบบโปรแกรมจะเขียนโครงสร้างต่างๆเป็นลักษณะสี่เหลี่ยมผืนผ้า โดยเขียน การทางานแต่ละส่วนเรียงลาดับกันไป จากนั้นจึงนาโครงสร้างที่ที่ออกแบบขึ้นมาพัฒนาเป็นโปรแกรม คอมพิวเตอร์ การเขียนโปรแกรมแบบโมดูลาร์(Modular Programming) เป็นการเขียนโปรแกรมที่แยกการทางานต่างๆ ออกเป็นโปรแกรมย่อยขนาดเล็กหลาย โปรแกรม แต่ละ โปรแกรมเรียกว่า โมดูล (module) ซึ่งสามารถทางานได้อิสระจากโมดูลอื่นๆ ทาให้ถ้าหากโปรแกรมมีความ ผิดพลาดก็สามารถแก้ไขโมดูลที่ผิดพลาดได้ง่ายขึ้น สาหรับในการเขียนโปรแกรมจะต้องมีโมดูลหลักที่ทา หน้าที่ควบคุมการทางานทั้งหมด ว่าจะเรียกโมดูลใดมาใช้งานก่อน โมดูลแต่ละโมดูลสามารถเรียกโมดูลย่อย ๆ ได้อีกและแต่ละโมดูลอาจมีการส่งการควบคุมไปยังโมดูลอื่นๆ ได้อีกด้วย การเขียนโปรแกรมในลักษณะโมดูลโปรแกรมย่อยจะมีสองประเภทคือ โปรแกรมย่อยภายใน(Internal Subroutine)ที่เป็นโปรแกรมย่อยที่ผู้เขียนโปรแกรมเขียนขึ้นเพื่อเป็นส่วนหนึ่งของโปรแกรมหลัก แต่สามารถ เรียกใช้ได้ อีกประเภทหนึ่งคือโปรแกรมย่อยภายนอก (Erteenal Subroutine) ซึ่งโปรแกรมย่อยที่เก็บไว้ใน ไลบรารี (library) ที่สามารถเรียกใช้ได้ และสามารถนาไปใช้ในงานอื่นๆ ได้อีก รูปแบบการเขียนโปรแกรมคอมพิวเตอร์
  • 56.
    53 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ รูปโปรแกรมหลักมีการเรียกโมดูลโปรแกรมย่อย จากรูปจะเห็นว่าโปรแกรมหลักหรือโมดูลหลักจะมีการเรียกโมดูลโปรแกรมย่อย เมื่อทาโมดูลโปรแกรม ย่อยจบแล้ว โปรแกรมจะกลับมาทาโปรแกรมหลักต่อไป การเรียกโมดูลโปรแกรมย่อยนี้สามารถใช้ได้หลายๆ ครั้งตามติองการ สาหรับการเขียนโปรแกรมแต่ละภาษานั้นจะมีคาสั่งสาหรับเรียกโมดูลโปรแกรมย่อยแตกต่าง กันไปและโมดูลโปรแกรมย่อยก็จะมีคาสั่งเพื่อบอกว่าโปรแกรมย่อยนั้นจบลงแล้ว โปรแกรมหลัก โมดูลโปรแกรมย่อย SUBPOR_A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CALL SUBPRO_A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RETURN โปรแกรมหลัก โมดูลโปรแกรมย่อย SUBPOR_A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CALL SUBPRO_A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CALL sub_B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . โมดูลโปรแกรมย่อย sub_B
  • 57.
    54 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ รูปโปรแกรมที่โมดูลโปรแกรมย่อยสามารถเรียกโมดูลโปรแกรมย่อยอื่นอีก การเขียนโปรแกรมเชิงวัตถุ (Object-oriented Programming) เป็นการเขียนโปรแกรมแนวใหม่ที่มองการทางานต่างๆ เป็นวัตถุ หรือออปเจ็ค โดยที่จะมีการบอกว่า ออปเจ็คนั้นคืออะไร ใช้ทาอะไร เมื่อโปรแกรมต้องการใช้ ก็สามารถนาออปเจ็คนั้นมาใช้ได้ ปรับขนาดได้ เปลี่ยนสีได้ ในการเขียนโปรแกรมจะทาการสร้างออปเจ็คต่างๆ เพื่อเรียกใช้งานในภายหลัง
  • 58.
    55 กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์ . .โดยอานาจ พรหมใจรักษ์ บรรณานุกรม สมาคมวิทยาศาสตร์แห่งประเทศไทยในพระบรมราชูปถัมภ์. คอมพิวเตอร์ . คู่มืออบรมครูวิทยาศาสตร์ คณิตศาสตร์ คอมพิวเตอร์ฯ ระดับมัธยมศึกษาตอนปลาย,2555. http://www4.csc.ku.ac.th/~b5340201660/9.html http://sudruadee.blogspot.com/2007/06/2.html