การตรวจสอบโปรแกรมต้องมีขึ้นระหว่างการออกแบบโปรแกรม การเขียนโปรแกรม การตรวจทานโปรแกรม เพื่อให้แน่ใจว่าสามารถแก้ปัญหาได้ตรงตามความต้องการตามวัตถุประสงค์ที่ได้ตั้งไว้ เครื่องมือที่ใช้ในการออกแบบถูกต้องตามตรรกะในการประมวลผล รวมทั้งคำสั่งโปรแกรมที่เขียนขึ้นสามารถแปลได้โดยปราศจากข้อผิดพลาดต่างๆ และสามารถทำงานได้อย่างถูกต้องสมบูรณ์
ตัวอย่างการตรวจสอบข้อผิดพลาด
เขียนโปรแกรมทายเลขคู่ เลขคี่ โดยผู้ใช้จะต้องตอบคำถามว่า 2 เป็นเลขคู่ใช่หรือไม่ ซึ่งมีเงื่อนไขดังนี้
โปรแกรมคำถามว่า “2 เป็นเลขคู่ใช่หรือไม่”
ถ้าผู้เล่นตอบ “ใช่” ตัวละครจะแสดงคำว่า “ถูกต้อง”
ถ้าผู้เล่นตอบ “ไม่ใช่” ตัวละครจะแสดงคำว่า “ผิด”
แต่โปรแกรมที่เขียนขึ้นมามีข้อผิดพลาด คือ เมื่อผู้ใช้ตอบ “ใช่” โปรแกรมจะแสดงข้อความทั้ง “ถูกต้อง” และ “ผิด”
การตรวจสอบข้อผิดพลาดของโปรแกรม
เมื่อพบว่ามีข้อผิดพลาดเกิดขึ้น สามารถหาข้อผิดพลาดโดยพิจารณาคำสั่งจากผังงาน (Flowchart) ที่ได้ออกแบบไว้ ดังนี้
จากการตรวจสอบ พบข้อผิดพลาดคือ เมื่อโปรแกรมรับคำตอบจากผู้ใช้แล้ว โดยถ้าคำตอบคือ “ใช่” จะแสดงคำว่า “ถูกต้อง” ถ้าคำตอบคือ “ไม่ใช่” จะแสดงคำว่า “ผิด” ซึ่งการตรวจสอบเงื่อนไขในลักษณะนี้ ต้องใช้คำสั่ง ถ้า…แล้ว…มิฉะนั้น แต่ในโปรแกรมใช้คำสั่ง ถ้า อย่างเดียว
การแก้ไขข้อผิดพลาดของโปรแกรม
หลังจากตรวจสอบข้อผิดพลาดของโปรแกรมแล้ว สามารถแก้ไขข้อผิดพลาดของโปรแกรมได้ ดังนี้
8.5 ชนิดของข้อผิดพลาด (Type of Errors)
สำหรับข้อผิดพลาดที่เกิดขึ้นจากการเขียนโปรแกรม สามารถแบ่งออกเป็น 3 ชนิดด้วยกัน คือ
1. ข้อผิดพลาดที่เกิดจากไวยากรณ์ (Syntax Errors)
2. ข้อผิดพลาดที่เกิดจากตรรกะโปรแกรม (Logic Errors)
3.
ข้อผิดพลาดในขณะที่รันโปรแกรม (Runtime Errors)
1. ข้อผิดพลาดที่เกิดจากไวยากรณ์ (Syntax Errors)
ข้อผิดพลาดที่เกิดจากไวยากรณ์ (Syntax Errors) ข้อผิดพลาดชนิดนี้ เกิดจากการใช้ไวยากรณ์หรือรูปแบบภาษาที่ผิด เช่น สะกดคำสั่งผิด แทนที่จะต้องพิมพ์คำสั่ง clrscr ก็พิมพ์เป็น clrser เป็นต้น ซึ่งเมื่อผ่านการแปลแล้ว ตัวแปลภาษาก็จะไม่รู้จักคำสั่งดังกล่าว อย่างไรก็ตาม ข้อผิดพลาดจากไวยากรณ์นั้น คอมไพเลอร์สามารถตรวจสอบพบ และแจ้งข้อผิดพลาดที่เกิดขึ้นให้ทราบได้
ตัวอย่างที่ 16 ข้อผิดพลาดที่เกิดจากไวยากรณ์ (Syntax Errors)
Program Syntax_Error; Uses WinCrt Var Num := Integer; Begin Clrser; Num=10; Writte(‘Number = ’); Write(Num); ReadLn; End |
2. ข้อผิดพลาดที่เกิดจากตรรกะโปรแกรม (Logic Errors)
ข้อผิดพลาดที่เกิดจากตรรกะโปรแกรม (Logic Errors) ข้อผิดพลาดชนิดนี้ เกิดจากตัวผู้เขียนโปรแกรมเอง เช่นการใช้ตรรกะในการสร้างเงื่อนไขผิดพลาด หรือการสร้างสูตรคำนวณที่ผิด ส่งผลให้ผลลัพธ์ผิดพลาดไม่ตรงกับความเป็นจริง เช่น การหาค่าเฉลี่ยของตัวเลขสองจำนวน ถ้าเราสร้างสูตรคือ Average = Num1 + Num2 / 2 ผลลัพธ์ที่ได้จะผิด เพราะถ้าเราดูที่ลำดับความสำคัญของเครื่องหมาย นิพจน์นี้จะทำการหารก่อน แล้วค่อยบวกทีหลังถ้าเราจะแก้ไขให้ถูกต้องจะต้องแก้ไขเป็น Average = (Num1 + Num2) / 2 ซึ่งข้อผิดพลาดแบบนี้คอมไพเลอร์จะตรวจสอบไม่พบ ดังนั้นผู้เขียนโปรแกรมจึงต้องมีการตรวจสอบเงื่อนไขหรือสูตรให้ถูกต้องก่อนทุกครั้ง
ตัวอย่างที่ 17 ข้อผิดพลาดที่เกิดจากตรรกะโปรแกรม (Logic Errors)
Program Logical_Error; Uses WinCrt; Var Num1,Num2:Integer; Average:Real; Begin Clrscr; Num1:=10; Num2:=20; Average:=Num1+Num2/2; Write('Average Of ( ',Num1,' And ',Num2,' ) = ',Average:1:2); ReadLn; End. |
3. ข้อผิดพลาดในขณะที่รันโปรแกรม (Runtime Errors)
ข้อผิดพลาดในขณะที่รันโปรแกรม (Runtime Errors) ข้อผิดพลาดแบบ Run-time errors เป็นข้อผิดพลาดที่จะพบได้ในตอนที่เครื่องกำลังทำงานตามโปรแกรมนั้น ๆ โปรแกรมที่มีข้อผิดพลาดชนิด Run-time errors อาจจะคอมไพล์ผ่านได้ (ถ้าไม่มี Syntax errors) แต่จะไม่สามารถรันได้ ยกตัวอย่างเช่น x := 10 และ y:=0 จากนั้นมีการสั่งให้คำนวณค่าของ x หารด้วย y เมื่อเราคอมไพล์ โปรแกรมจะคอมไพล์ผ่าน แต่ไม่สามารถรันผลลัพธ์ได้ เพราะเกิดจากการหารด้วยศูนย์
ตัวอย่างที่ 18 ข้อผิดพลาดในขณะที่รันโปรแกรม (Runtime Errors)
Program Runtime_Error; Uses WinCrt; Var X,Y:Integer; Z:Real; Begin Clrscr; X:=10; Y:=0; Z:=X/Y; Write(X,'/',Y,'=',Z:1:2); ReadLn; End. |