<Jaturapad>

การศึกษาในศตวรรษที่ 21

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)

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

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

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

    การเขียนผังงานที่ดี

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

การเขียนผังงาน สามารถแบ่งออกเป็น 2 ประเภท คือ

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

    สัญลักษณ์ที่ใช้ในการเขียนผังงาน

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

ตารางแสดงสัญลักษณ์และความหมายของผังงาน

สัญลักษณ์ ชื่อเรียก ความหมาย
เริ่มต้นและสิ้นสุด
(terminal, start, stop)
จุดเริ่มต้นและสิ้นสุดของผังงาน
การนำข้อมูลเข้าออกทั่วไป
(general input/output)
จุดที่จะนำข้อมูลเข้าจากภายนอก หรือออกสู่ภายนอก โดยไม่ระบุชนิดของอุปกรณ์
การปฏิบัติงาน (process) จุดที่มีการปฏิบัติงานอย่างใดอย่างหนึ่ง
การตัดสินใจ (decision) จุดที่จะต้องเลือกปฏิบัติอย่างใดอย่างหนึ่ง
ทิศทาง (flow line) ทิศทางขั้นตอนการดำเนินงาน ซึ่งจะปฏิบัติต่อเนื่องกันตามทิศทางของลูกศร
จุดเชื่อมต่อในหน้าเดียวกัน
(on page connector)
จุดเชื่อมต่อของผังงาน ใช้สัญลักษณ์นี้เพื่อให้ดูง่าย
จุดเชื่อมต่อหน้ากระดาษ
(off page connector)
จุดเชื่อมต่อของผังงาน ที่อยู่คนละหน้ากระดาษ