3. ซูโดโค้ดและการเขียนผังงาน
ก่อนที่จะลงมือเขียนโปรแกรม ต้องออกแบบขั้นตอนการทำงาน หรืออัลกอริทึม (Algorithm) ก่อน ซึ่งเป็นเครื่องมือในการแสดงขั้นตอนการทำงานของระบบงานใด ๆ เพื่อให้การเขียนโปรแกรมเป็นไปได้อย่างรวดเร็วและง่ายขึ้น โดยเราจะเขียนอัลกอริทึมในลักษณะรหัสลำลองที่เรียกว่า ซูโดโค้ด (Pseudocode) หรือผังงาน (Flowchart) ก็ได้
1. ซูโดโค้ด (Pseudocode)
เป็นคำอธิบายขั้นตอนการทำงานของโปรแกรม โดยใช้ถ้อยคำผสมระหว่างภาษาอังกฤษและภาษาการเขียนโปรแกรมแบบโครงสร้าง จะช่วยให้ผู้เขียนโปรแกรมสามารถพัฒนาขั้นตอนต่าง ๆ ให้เป็นโปรแกรมได้ง่ายขึ้น ส่วนใหญ่มักใช้คำเฉพาะ (Reserve Word) ที่มีในภาษาการเขียนโปรแกรมและมักเขียนด้วยตัวอักษรตัวใหญ่ ซูโดโค้ดที่ดี จะต้องมีความชัดเจน สั้น และได้ใจความ ข้อมูลต่าง ๆ ที่ใช้จะถูกเขียนอยู่ในรูปของตัวแปร
รูปแบบ
Algorithm <ชื่อของอัลกอริทึม> 1………………………………. 2………………………………. ………………………………… END |
ตัวอย่างที่ 1 การเขียนซูโดโค้ด สำหรับให้คอมพิวเตอร์หาค่าเฉลี่ยจากข้อมูลที่รับเข้าทางแป้นพิมพ์ ถ้าใส่ค่าศูนย์แสดงว่าหยุดป้อนข้อมูล เขียนได้ดังนี้
Algorithm การหาค่าเฉลี่ย 1. เริ่มต้น 2. ตัวนับ = 0 3. ผลรวม = 0 4. รับค่าทางแป้นพิมพ์เก็บไว้ในตัวแปร (ข้อมูล) 5. ถ้า ข้อมูล มากกว่า 0 เพิ่มค่าตัวนับขึ้นหนึ่งค่า ผลรวม = ผลรวม + ค่าข้อมูล ย้อนกลับไปทำขั้นตอนที่ 3 ถ้าไม่มากกว่าไปทำขั้นตอนที่ 5 6. ค่าเฉลี่ย = ผลรวมหารด้วยตัวนับ 7. แสดงค่าเฉลี่ยทางจอภาพ (ทศนิยมสองตำแหน่ง) จบ |
Algorithm Average_Sum 1. START 2. count =0 3. sum = 0 4. INPUT (value) 5. IF value > 0 THEN count = count +1 sum = sum + value GOTO 3 ELSE GOTO 5 6. average = sum / count 7. OUTPUT (average) END |
ตัวอย่างที่ 2 การเขียนซูโดโค้ด คำนวณหาพื้นที่สามเหลี่ยม หรือเขียนเป็นภาษาอังกฤษได้ดังนี้
Algorithm การหาพื้นที่สามเหลี่ยม 1. เริ่มต้น 2. รับค่าความยาวของฐานมาเก็บในตัวแปร X 3. รับค่าความยาวของสูงมาเก็บในตัวแปร Y 4. คำนวณหาพื้นที่ ARRAY = ( X*Y ) / 2 5. แสดงผลพื้นที่ จบ |
Algorithm Average_Sum 1. START 2. READ X 3. READ Y 4. Compute ARRAY = ( X*Y ) / 2 5. Print ARRAY END |
2. การเขียนผังงาน (Flowchart)
ผังงาน หรือ โฟลวชาร์ต เป็นแผนภาพที่ใช้ออกแบบและอธิบายการทำงานของโปรแกรมโดยอาศัยรูปทรงต่าง ๆ ควบคู่ไปกับลูกศร แต่ละรูปในแผนภาพจะหมายถึงการทำงานหนึ่งขั้นตอน ส่วนลูกศรจะแทนลำดับการทำงานขั้นตอนต่าง ๆ รวมทั้งทิศทางการไหลของข้อมูลตั้งแต่เริ่มต้นจนได้ผลลัพธ์ตามต้องการ ระบบงานทุกชนิดที่ผ่านการวิเคราะห์เป็นลำดับขั้นตอนแล้ว จะสามารถเขียนเป็นผังงานได้
ประโยชน์ของผังงาน
- ช่วยอธิบายลำดับขั้นตอนการทำงานของโปรแกรม
- ทำให้ตรวจสอบข้อผิดพลาดของโปรแกรมได้ง่าย
- ทำให้ผู้อื่นสามารถศึกษาการทำงานของโปรแกรมและแก้ไขโปรแกรมได้ง่าย
การเขียนผังงานที่ดี
- เขียนตามสัญลักษณ์ที่กำหนด
- ใช้ลูกศรแสดงทิศทางการทำงานจากบนลงล่าง
- อธิบายสั้น ๆ ให้เข้าใจง่าย
- ทุกแผนภาพต้องมีทิศทางเข้าออก
- ไม่ควรโยงลูกศรไปที่ไกลมาก ๆ ถ้าต้องทำให้ใช้สัญลักษณ์การเชื่อมต่อแทน
การเขียนผังงาน สามารถแบ่งออกเป็น 2 ประเภท คือ
- ผังงานระบบ (System Flowchart) ใช้แสดงขั้นตอนการทำงานในระบบงานหนึ่ง ๆ โดยกล่าวถึงข้อมูลต่าง ๆ ที่เกี่ยวข้องทั้งหมด เช่น เอกสารเบื้องต้นคืออะไร วัสดุที่ใช้คืออะไร หน่วยความจำประเภทใด จะต้องส่งผ่านไปยังหน่วยงานใด วิธีการประมวลผลและการแสดงผลลัพธ์ โดยอาจจะกล่าวอย่างกว้าง ๆ ไม่สามารถนำมาเขียนเป็นโปรแกรมได้
- ผังงานโปรแกรม (Program Flowchart) ผังงานประเภทนี้ จะแสดงถึงขั้นตอนของคำสั่งที่ในโปรแกรม การรับข้อมูล การประมวลผล การแสดงข้อมูล บางครั้งเรียกว่าผังการเขียนโปรแกรม
สัญลักษณ์ที่ใช้ในการเขียนผังงาน
การเขียนผังงาน เป็นการอธิบายขั้นตอนวิธีการแก้ปัญหา โดยใช้รูปสัญลักษณ์มาเรียงต่อกัน สัญลักษณ์แต่ละแบบจะมีความหมายถึงกระบวนการที่แตกต่างกัน โดยจะมีคำอธิบายสั้น ๆ เพิ่มเติมในรูปสัญลักษณ์ ความหมายของสัญลักษณ์ต่าง ๆ ที่ใช้ในผังงานได้ถูกกำหนด โดยสถาบันมาตรฐานแห่งชาติอเมริกา (The American National Standard Institute : ANSI) เพื่อให้สามารถสื่อความหมายที่ตรงกัน ซึ่งมีรายละเอียดของสัญลักษณ์และความหมายที่ควรทราบ ดังนี้
ตารางแสดงสัญลักษณ์และความหมายของผังงาน
สัญลักษณ์ | ชื่อเรียก | ความหมาย |
เริ่มต้นและสิ้นสุด (terminal, start, stop) |
จุดเริ่มต้นและสิ้นสุดของผังงาน | |
การนำข้อมูลเข้าออกทั่วไป (general input/output) |
จุดที่จะนำข้อมูลเข้าจากภายนอก หรือออกสู่ภายนอก โดยไม่ระบุชนิดของอุปกรณ์ | |
การปฏิบัติงาน (process) | จุดที่มีการปฏิบัติงานอย่างใดอย่างหนึ่ง | |
การตัดสินใจ (decision) | จุดที่จะต้องเลือกปฏิบัติอย่างใดอย่างหนึ่ง | |
ทิศทาง (flow line) | ทิศทางขั้นตอนการดำเนินงาน ซึ่งจะปฏิบัติต่อเนื่องกันตามทิศทางของลูกศร | |
จุดเชื่อมต่อในหน้าเดียวกัน (on page connector) |
จุดเชื่อมต่อของผังงาน ใช้สัญลักษณ์นี้เพื่อให้ดูง่าย | |
จุดเชื่อมต่อหน้ากระดาษ (off page connector) |
จุดเชื่อมต่อของผังงาน ที่อยู่คนละหน้ากระดาษ |