ก่อนที่จะลงมือเขียนโปรแกรม ต้องออกแบบขั้นตอนการทำงาน หรืออัลกอริทึม (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)
|
จุดเชื่อมต่อของผังงาน ที่อยู่คนละหน้ากระดาษ
|
|