เมื่อจบหัวข้อนี้ ผู้เรียนควรจะ
√ แก้ปัญหาและเขียนผังงานในการแก้ปัญหาทางคณิตศาสตร์ สถิติและปัญหาในชีวิตประจําวันได้
อธิบายลักษณะของอัลกอริทึม และวิธีการเขียนอัลกอริทึม
เขียนอัลกอริทึมด้วยผังงาน/รหัสเทียมเพื่อแก้ปัญหาโจทย์ที่มีกระบวนการทำงานแบบเรียงลำดับ
เขียนอัลกอริทึมด้วยผังงาน/รหัสเทียมเพื่อแก้ปัญหาโจทย์ที่มีกระบวนการทำงานแบบมีเงื่อนไข
เขียนอัลกอริทึมด้วยผังงาน/รหัสเทียมเพื่อแก้ปัญหาโจทย์ที่มีกระบวนการทำงานแบบทำซ้ำ
อัลกอริทึม คือ ขั้นตอนการแก้ไขปัญหา ที่ระบุลำดับขั้นตอนการทำงานเพื่อให้ได้ผลลัพธ์ที่ต้องการ
อัลกอริทึมต้องประกอบไปด้วยขั้นตอนที่ชัดเจนและสามารถทำงานได้ตามกำหนด โดยใช้เงื่อนไข (selection) และการทำซ้ำ (iteration) เพื่อให้ได้ผลลัพธ์ที่ถูกต้องตามที่คาดหวัง การออกแบบและวิเคราะห์อัลกอริทึมมีความสำคัญในการพิจารณาประสิทธิภาพ ความเร็ว และประสิทธิผลของการทำงานของโปรแกรมหรือระบบที่นำมาใช้งาน
การเขียนอัลกอริทึมที่ใช้ในการแก้ปัญหา เพื่อให้เข้าใจได้ง่าย นิยมเขียนเป็นลำดับขั้นตอนอยู่ใน 2 รูปแบบ ได้แก่
รหัสเทียม/ซูโดโค้ด (Pseudocode) เป็นคำสั่งที่เขียนอยู่ในรูปแบบประโยคภาษาไทยหรือภาษาอังกฤษที่เข้าใจง่าย
ผังงาน/โฟลว์ชาร์ต (Flowchart) เป็นการใช้สัญลักษณ์รูปภาพเพื่อสื่อความหมายของคำสั่ง
เมื่อเขียนรหัสเทียมหรือผังงานเพื่อเป็นระบุอัลกอรึทึมแล้ว ควรทดสอบความถูกต้องของการทำงาน ก่อนนำไปเขียนโปรแกรม
การเขียนรหัสเทียมไม่มีหลักการตายตัว นิยมเขียนด้วยประโยคสั้นกระชับ สื่อความหมายให้เข้าใจได้ง่าย
แนวทางการเขียนรหัสเทียม
มีจุดเริ่มต้น จุดสิ้นสุด และลำดับขั้นตอนที่ชัดเจน
ควรใช้ย่อหน้าหรือตัวเลขลำดับ ในการจัดระเบียบลำดับขั้นตอนให้อ่านง่าย
นิยมเขียนด้วยภาษาอังกฤษ หรืออาจใช้ภาษาไทยก็ได้
ตั้งชื่อค่าที่ใช้ในอัลกอริทึมด้วยชื่อที่สั้นแต่สื่อความหมาย
ในกรณีที่เป็นการคำนวณ เขียนแทนด้วยสมการทางคณิตศาสตร์
อัลกอริทึมการหาพื้นที่สี่เหลี่ยมผืนผ้า
รับค่าตัวเลข 2 จำนวนเป็นค่าความกว้างและความสูง
นำความกว้างและความสูงมาคูณกัน
แสดงค่าผลลัพธ์การคูณ
เริ่มต้น
รับค่า ความกว้างและความสูง
พื้นที่ = ความกว้าง x ความสูง
แสดงค่า พื้นที่
จบ
ฺBegin
input width and height
area = width x height
display area
End
สัญลักษณ์ที่ใช้มีความหมายเฉพาะ ใช้ลูกศรในการกำหนดทิศทางและลำดับขั้นตอน มีจุดเริ่มต้นและจุดสิ้นสุด
สัญลักษณ์รูปภาพที่ใช้ในผังงาน
แนวทางการเขียนผังงาน
ใช้สัญลักษณ์ตามที่กำหนดไว้
ใช้ลูกศรแสดงทิศทางการทำงานจากบนลงล่าง หรือจากซ้ายไปขวา
คำอธิบายในภาพสัญลักษณ์ควรสั้นกะทัดรัด และเข้าใจง่าย
ทุกภาพสัญลักษณ์ต้องมีลูกศรแสดงทิศทางเข้า - ออก
ควรใช้สัญลักษณ์จุดเชื่อมต่อในการทำซ้ำ หรือจุดที่มีลูกศรมารวมกันหลายตัว
โครงสร้างของผังงาน
แบบเรียงลำดับ (Sequence) ทำตามลำดับขั้นตอนจากบนลงล่าง
แบบมีเงื่อนไข (Decision) ใช้สัญลักษณ์การตัดสินใจ และระบุเงื่อนไขไว้ภาย และมีลูกศรแสดงทิศทางสองเส้น ระบุว่าถ้าเงื่อนไขเป็นจริงจะทำอะไร ถ้าไม่ใช่จะทำอะไร
แบบทำซ้ำ (Repetition) มีการตัดสินใจว่าจะวนทำซ้ำหรือไม่ ใช้สัญลักษณ์การตัดสินใจ และระบุเงื่อนไขไว้คล้ายกับแบบมีเงื่อนไข แต่ในกรณีที่เงื่อนไขเป็นจริง ขั้นตอนสุดท้ายจะมีลูกศรแสดงทิศทางวนกับไปที่สัญลักษณ์การตัดสินใจ
ผังงานและรหัสเทียมของการหาพื้นที่สี่เหลี่ยมผืนผ้า
เปรียบเทียบกับรหัสเทียมภาษาอังกฤษ จะเห็นว่ามีคล้ายคลึงกันมาก
Begin
input width and height
area = width x height
display area
End
ผังงานและรหัสเทียมตรวจสอบตัวเลขว่าเป็นเลขคู่หรือเลขคี่
ผังงานและรหัสเทียมของนับจำนวนตัวเลขที่รับจากผู้ใช้
รับตัวเลขจากผู้ใช้ไปเรื่อยๆ จนกว่าผู้ใช้จะใส่เลขศูนย์ แล้วแสดงจำนวนครั้งที่รับตัวเลขจากผู้ใช้ (ไม่รวมเลขศูนย์)
โปรแกรม Flowgorithm เป็นเครื่องมือที่ช่วยให้การเขียนผังงานสะดวกมากขึ้น และมีความสามารถที่น่าสนใจหลายอย่าง ตัวอย่างเช่น
ออกแบบให้ใช้งานง่าย ไม่ซับซ้อน
ทดสอบขั้นตอนการทำงาน โดยการรันผังงานที่สร้าง แล้วแสดงผลในหน้าต่างผลลัพธ์
ตรวจสอบการทำงานทีละขั้นตอนอย่างละเอียด และหาข้อผิดพลาด (debug) ได้ง่าย
แปลงเป็นรหัสเทียม หรือภาษาโปรแกรมได้หลายภาษา
มองเห็นค่าในตัวแปรที่เปลี่ยนแปลงไปในระหว่างการทำงาน
เขียนผังงานตามโจทย์ด้านล่างนี้ และทดลองรันในโปรแกรม Flowgorithm
แปลงอุณหภูมิจากฟาเรนไฮน์เป็นเซลเซียส
แปลงค่าเงิน โดยมี 2 รูปแบบให้ผู้ใช้เลือกคือ 1) Thai Baht -> US dollar 2) US dollar -> Thai Baht
แสดงเกรดจากคะแนนของนักศึกษา ตามเกณฑ์ที่ระบุในรายวิชานี้
รับเลข num และ x แล้วพิมพ์เฉพาะเลขที่หารด้วย x ลงตัวที่อยู่ระหว่าง 1-num
แสดงแม่สูตรคูณของตัวเลขจำนวนเต็มบวกที่ผู้ใช้ใส่เข้ามา
รับเลขจำนวนเต็ม จนกว่าผู้ใช้จะใส่ค่า 0 และแสดงผลบวกของเลขจำนวนเต็มทั้งหมด
เกมเดาตัวเลข โดยใช้คำสั่ง random(100) + 1สุ่มค่าระหว่าง 1-100 แล้วรับค่าจากผู้ใช่ไปเรื่อยๆ จนกว่าจะเดาตัวเลขถูก ถ้าไม่ถูกให้แจ้งผู้ใช้ว่าค่าสูงหรือต่ำกว่าเลขสุ่ม
โจทย์ที่พบในชีวิตประจำวัน
คำนวณค่าไฟฟ้าจากจำนวนหน่วยที่ใช้
เขียนผังงานคำนวณ โดยอ้างอิงจากวิธีการคำนวณจาก https://www.tpe-trading.com/electric-bill/
ปรับแก้ผังงานข้อก่อนหน้า โดยเพิ่มค่าบริการ 24.62บาทก่อนคำนวณ Vat 7% แล้วตรวจสอบความถูกต้อง โดยเปรียบเทียบค่าไฟฟ้าที่ผังงานคำนวณกับและค่าไฟฟ้าจากเว็บการไฟฟ้าส่วนภูมิภาค (เลือกประเภทผู้ใช้ไฟฟ้าประเภทที่ 1.1.2)
คำนวณค่าลงทะเบียนเรียนของนักศึกษาภาคปกติ คณะวิทยาศาสตร์ มศก (ไม่รวมภาคฤดูร้อน) โดยระบุจำนวนหน่วยกิตที่ลง
อัตราค่าลงทะเบียนตามประกาศ http://ita.su.ac.th/wp-content/uploads/2023/02/o6/2/5/1.pdf
ระบุข้อมูลที่ใช้ทดสอบทั้ง input และ output 10 กรณี (test cases) ให้ครอบคลุมทุกเงื่อนไขที่เป็นไปได้