220 likes | 346 Views
บทที่ 11. การเขียนโปรแกรมแบบ Structured Programming และการจัดการตรวจสอบข้อผิดพลาด. การเขียนโปรแกรมแบบ StructuredProgramming. คือการเขียนโปรแกรมอย่างมีแบบแผน และมีกรรมวิธีการคิดวางแผนการเขียนที่ดี ซึ่งจะต้องมีการคิดแบบทีละขั้นตอน แนวทางในการคิดมีหลายอย่างเช่น Divide & Conquer
E N D
บทที่ 11 การเขียนโปรแกรมแบบ Structured Programming และการจัดการตรวจสอบข้อผิดพลาด
การเขียนโปรแกรมแบบ StructuredProgramming คือการเขียนโปรแกรมอย่างมีแบบแผน และมีกรรมวิธีการคิดวางแผนการเขียนที่ดี ซึ่งจะต้องมีการคิดแบบทีละขั้นตอน แนวทางในการคิดมีหลายอย่างเช่น • Divide & Conquer • Stepwise Refinement • Coupling
Divide & Conquer เป็นกรรมวิธี แตกโปรแกรมใหญ่เป็นโปรแกรมย่อย เช่น โปรแกรมการตรวจสอบอายุของผู้ใช้ สามารถแตกการทำงานเป็นส่วนๆดังนี้ • ส่วนของการรับข้อมูลอายุ • ส่วนของการตรวจสอบข้อมูลอายุ • ส่วนของการแสดงผลลัพธ์
Stewise Refinement แตกแต่ละขั้นตอนที่แตกลงไปนั้นให้เพิ่มรายละเอียดปลีกย่อยจนครบถ้วน เช่น เขียนโปรแกรมคำนวณหาค่า Root ของสมการ ax2+bx+c =0 จะมีขั้นตอนดังนี้ • รับค่า a,b,c • ตรวจสอบว่ามี Root จริงหรือไม่ • ถ้ามี Root ให้คำนวณ Root โดยใช้สูตร • root1 = (-b+sqr(b^2-4ac) • root2 = (-b-sqr(b^2-4ac) • พิมพ์ค่า a,b,c,root1,root2
Coupling การเขียนโปรแกรมย่อย Standard Subroutine Procedure ให้ใช้แบบ Sub ชื่อ Procedure ([argument]) ……………… End sub การเขียนโปรแกรมด้วย Standard Function Procedure ให้ใช้แบบ Function ชื่อ Function ([argument])[as ชนิดข้อมูล] ………….. End Function
สรุปชนิดของข้อผิดพลาดที่เกิดขึ้นในโปรแกรม Visual Basic แบ่งได้ทั้งหมด 3 ชนิดดังนี้ • Syntax Error • Runtime Error • Logical Error
Syntax Errors • เกิดจากการที่เราเขียนโค้ดไม่สอดคล้อง หรือไม่ถูกหลักเกณฑ์ไวยากรณ์ภาษาVisual Basic เช่น Private Sub Command1_Click() Dim strCurrency As String strCurrency = Format(1000.25, #,##0.00) Print strCurrency End Sub เมื่อรันซับโพรซีเยอร์นี้ VB จะตรวจพบข้อผิดพลาด พร้อมทั้งแจ้ง Message Box บอกข้อผิดพลาดดังรูป
Syntax Errors เนื่องจากไม่มีเครื่องหมาย ““
Syntax Errors • เช่น If I = 0 I = I+1 End if จะเห็นว่าขาดคำว่า Then ทำให้ Error
Runtime Error ข้อผิดพลาดชนิดนี้ เป็นข้อผิดพลาดที่ตรวจสอบยากกว่า Syntax Errors เพราะต้อง รันโปรแกรมแล้ว จึงจะรู้ว่าเกิดข้อผิดพลาด อย่างเช่น ในกรณีที่เรามีการหารด้วยตัวเลข 0 เมื่อโปรแกรมรันมาถึงบรรทัดนี้จะเกิด Error พร้อมกับแจ้งว่า มีข้อผิดพลาดที่บรรทัดนี้ เป็นต้น ตัวอย่างเช่น Private Sub Command1_Click() Dim x As Integer, y As Integer x = 100 y = x / 0 MsgBox "ค่า y เท่ากับ" & y, vbInformation, "ค่า y" End Sub
Runtime Error เมื่อรันซับโพรซีเยอร์นี้ Visual Basic จะตรวจพบข้อผิดพลาด พร้อมทั้งแจ้ง Message Box บอกข้อผิดพลาดด้วย ดังรูป
Logical Error ข้อผิดพลาดนี้ คือลักษณะผลลัพธ์ที่ไม่ถูกต้องเวลามีการคำนวณหรือประมวลนั่นเอง สาเหตุที่เกิดขึ้นอาจมาจากตัวผู้เขียนโปรแกรมโดยตรง คือ ผู้เขียนโปรแกรมมีความเข้าใจผิดพลาดแล้วเขียนโปรแกรมตามความเข้าใจที่ผิดนั้น ข้อผิดพลาดชนิดนี้เป็นข้อผิดพลาดที่ตรวจพบได้ยากที่สุดเนื่องจากโปรแกรม Visual Basic ไม่สามารถตรวจพบข้อผิดพลาดได้นั่นเอง ดังตัวอย่างเช่น
Logical Error Private Sub Command1_Click() If Len(txtSource.Text) = 0 Then MsgBox "ข้อความที่ส่งมาคือ" & txtSource.Text Else MsgBox "กรุณากรอกข้อความด้วย" End If End Sub
การตรวจสอบและแก้ไขข้อผิดพลาด (Error Object and Debug Tools) • Auto Syntax Check เป็นการกำหนดให้ Editor ตรวจสอบหาข้อผิดพลาดทางด้าน Syntax ทุกครั้ง • Require Variable Declaration เป็นการกำหนดให้ Editor ตรวจหาว่าตัวแปรใดในโปรแกรมที่ไม่ได้ Declare ไว้ • Auto List Members เป็นการกำหนดให้ Editor แสดง Property หรือ Method ที่เกี่ยวข้องกับประโยคคำสั่งที่เรากำลังพิมพ์บนจอภาพในรูปของ Dropdown ListBox ดังรูป
การตรวจสอบและแก้ไขข้อผิดพลาด (Error Object and Debug Tools)
การตรวจสอบและแก้ไขข้อผิดพลาด (Error Object and Debug Tools) 4. Auto Quick Info เป็นการกำหนดให้ Editor แสดง Pop-Up Box ซึ่งเป็น กรอบสี่เหลี่ยมเล็กใต้ประโยคคำสั่งที่เรากำลังพิมพ์บนจอภาพเพื่อแสดงถึง รูปแบบของฟังก์ชั่นนั้นๆ ดังรูป
คำสั่งสำหรับจัดการกับข้อผิดพลาดคำสั่งสำหรับจัดการกับข้อผิดพลาด 1. On Error Goto Label : คำสั่งนี้จะคอยตรวจจับ Error ที่เกิดขึ้นในขณะ Runtime เมื่อเกิด Error จะกระโดยไปทำงานที่ Label ที่กำหนด โดย Label คือข้อความทีมีเครื่องหมาย “: ” ต่อท้าย เช่น ใน ภาษา Visual Basic มีคำสั่งพิเศษสำหรับจัดการกับ Error ที่เกิดขึ้นขณะ Runtime 3 แบบ คือ
ตัวอย่างโปรแกรมรับตัวเลขเท่านั้นตัวอย่างโปรแกรมรับตัวเลขเท่านั้น Private Sub Command1_Click() Dim sum As Integer sum = InputBox(“กรุณาใส่ตัวเลขจำนวนเต็มด้วย “, “รับข้อมูล “) MsgBox sum End Sub
เมื่อ Run โปรแกรมทดลองใส่ตัวเลขและตัวอักษร การป้อนข้อมูลที่เป็นตัวเลขที่มีจำนวนมากกว่าขอบเขตของ Integer หรือมีทศนิยม การป้อนข้อมูลที่เป็นตัวอักษร
คำสั่งสำหรับจัดการกับข้อผิดพลาดคำสั่งสำหรับจัดการกับข้อผิดพลาด Private Sub Command1_Click() On Error GoTo ErrTrap Dim sum As Integer sum = InputBox(“กรุณาใส่ตัวเลขจำนวนเต็มด้วย “, “รับข้อมูล “) MsgBox sum MsgBox sum ErrTrap: Exit Sub End Sub เมื่อ Run โปรแกรมทดลองใส่ตัวอักษรจะจบจากคำสั่ง Command1_Click( ) ไม่ Error
คำสั่งสำหรับจัดการกับข้อผิดพลาดคำสั่งสำหรับจัดการกับข้อผิดพลาด 2. On Error Resume Next : คำสั่งนี้จะไม่สนใจ Error ที่เกิดขึ้น ถ้าเกิด Error จะทำงานต่อไปทันทีโดยไม่มีการฟ้อง Error ขึ้น เช่น Private Sub Command1_Click() On Error Resume Next Dim sum As Integer sum = InputBox(“กรุณาใส่ตัวเลขจำนวนเต็มด้วย“, “รับข้อมูล “) MsgBox sum MsgBox sum End Sub
คำสั่งสำหรับจัดการกับข้อผิดพลาดคำสั่งสำหรับจัดการกับข้อผิดพลาด 3. On Error Goto 0 : คำสั่งนี้สำหรับยกเลิกคำสั่ง On Error ต่างๆ ที่เคยประกาศมา