ข้อผิดพลาดของโปรแกรม หรือที่มักเรียกกันว่า Error นั้น แบ่งออกเป็น 2 ประเภท ได้แก่ ——————————————————————————————————————————— 1. ข้อผิดพลาดจากการเขียนโปรแกรม
(Compile Error) ตัวอย่าง เขียนโปรแกรมแสดงข้อความ Hello World บนจอภาพ แต่เขียนคำสั่งผิดจากฟังก์ชัน printf เป็นคำที่ผิดคือ print จึงทำให้เกิดข้อผิดพลาดแบบ Compile Error ขึ้น ดังรูปที่ 1 รูปที่ 1 ตัวอย่างการเขียนฟังก์ชัน printf ผิดพลาด ——————————————————————————————————————————— 2. ข้อผิดพลาดจากการทำงานของโปรแกรม (Runtime Error)
รูปที่ 2 ตัวอย่างการเขียนโปรแกรมเพื่อทดสอบ กรณี Divide By Zero แต่เมื่อสั่งให้โปรแกรมนั้นทำงานจะพบว่า โปรแกรมทำงานถึงบรรทัดที่มีข้อผิดพลาด แต่จะไม่สามารถแสดงผลลัพธ์ใด ๆ ออกมาได้ เนื่องจากเกิดข้อผิดพลาดลักษณะ Runtime Error ขึ้น ในกรณีนี้คือ การหารด้วยศูนย์ (Divide By Zero) ดังรูปที่ 3 รูปที่ 3 ตัวอย่างผลลัพธ์ข้อผิดพลาด กรณี Divide By Zero ดังนั้นเวลาที่ผู้เขียนโปรแกรมได้เขียนคำสั่งใด ๆ ลงไปก็ควรระมัดระวังการเกิดข้อผิดพลาดลักษณะนี้ เพราะตัวแปลภาษาซีเอง จะไม่สามารถตรวจสอบข้อผิดพลาดลักษณะนี้ได้ จึงจำเป็นที่จะต้องใช้ทักษะของผู้เขียนโปรแกรมเองในการตรวจสอบหาข้อผิดพลาดเอง (แหล่งข้อมูล... คู่มือการเขียนโปรแกรมภาษา C ฉบับผู้เริ่มต้น / ประภาพร ช่างไม้) ———————————————————————————————————————————
8.5 ชนิดของข้อผิดพลาด (Type of Errors) สำหรับข้อผิดพลาดที่เกิดขึ้นจากการเขียนโปรแกรม สามารถแบ่งออกเป็น 3 ชนิดด้วยกัน คือ 1. ข้อผิดพลาดที่เกิดจากไวยากรณ์ (Syntax Errors) ข้อผิดพลาดที่เกิดจากไวยากรณ์ (Syntax Errors) ข้อผิดพลาดชนิดนี้ เกิดจากการใช้ไวยากรณ์หรือรูปแบบภาษาที่ผิด เช่น สะกดคำสั่งผิด แทนที่จะต้องพิมพ์คำสั่ง clrscr ก็พิมพ์เป็น clrser เป็นต้น ซึ่งเมื่อผ่านการแปลแล้ว ตัวแปลภาษาก็จะไม่รู้จักคำสั่งดังกล่าว อย่างไรก็ตาม ข้อผิดพลาดจากไวยากรณ์นั้น คอมไพเลอร์สามารถตรวจสอบพบ และแจ้งข้อผิดพลาดที่เกิดขึ้นให้ทราบได้ ตัวอย่างที่ 16 ข้อผิดพลาดที่เกิดจากไวยากรณ์ (Syntax Errors)
2. ข้อผิดพลาดที่เกิดจากตรรกะโปรแกรม (Logic Errors) ข้อผิดพลาดที่เกิดจากตรรกะโปรแกรม (Logic Errors) ข้อผิดพลาดชนิดนี้ เกิดจากตัวผู้เขียนโปรแกรมเอง เช่นการใช้ตรรกะในการสร้างเงื่อนไขผิดพลาด หรือการสร้างสูตรคำนวณที่ผิด ส่งผลให้ผลลัพธ์ผิดพลาดไม่ตรงกับความเป็นจริง เช่น การหาค่าเฉลี่ยของตัวเลขสองจำนวน ถ้าเราสร้างสูตรคือ Average = Num1 + Num2 / 2 ผลลัพธ์ที่ได้จะผิด เพราะถ้าเราดูที่ลำดับความสำคัญของเครื่องหมาย นิพจน์นี้จะทำการหารก่อน แล้วค่อยบวกทีหลังถ้าเราจะแก้ไขให้ถูกต้องจะต้องแก้ไขเป็น Average = (Num1 + Num2) / 2 ซึ่งข้อผิดพลาดแบบนี้คอมไพเลอร์จะตรวจสอบไม่พบ ดังนั้นผู้เขียนโปรแกรมจึงต้องมีการตรวจสอบเงื่อนไขหรือสูตรให้ถูกต้องก่อนทุกครั้ง ตัวอย่างที่ 17 ข้อผิดพลาดที่เกิดจากตรรกะโปรแกรม (Logic Errors)
3. ข้อผิดพลาดในขณะที่รันโปรแกรม (Runtime Errors) ข้อผิดพลาดในขณะที่รันโปรแกรม (Runtime Errors) ข้อผิดพลาดแบบ Run-time errors เป็นข้อผิดพลาดที่จะพบได้ในตอนที่เครื่องกำลังทำงานตามโปรแกรมนั้น ๆ โปรแกรมที่มีข้อผิดพลาดชนิด Run-time errors อาจจะคอมไพล์ผ่านได้ (ถ้าไม่มี Syntax errors) แต่จะไม่สามารถรันได้ ยกตัวอย่างเช่น x := 10 และ y:=0 จากนั้นมีการสั่งให้คำนวณค่าของ x หารด้วย y เมื่อเราคอมไพล์ โปรแกรมจะคอมไพล์ผ่าน แต่ไม่สามารถรันผลลัพธ์ได้ เพราะเกิดจากการหารด้วยศูนย์ ตัวอย่างที่ 18 ข้อผิดพลาดในขณะที่รันโปรแกรม (Runtime Errors)
|