Các loại lỗi trong C++
Có ba loại lỗi thường xảy ra, gồm:
a. Lỗi cú pháp (Syntax Error): Còn được gọi là lỗi biên dịch – Compiler error. Lỗi này do bạn gõ sai cấu trúc ngôn ngữ (gọi nôm na là lỗi chính tả). Lỗi này bộ soạn thảo mã có thể bắt được
Ví dụ 1:
if (a==b) then a+=b;
Lỗi cú pháp vì trong C++ lệnh if phải viết là
if (a==b) a+=b;
Ví dụ 2:
class SV
{
int ma sv; //Lỗi viết sai tên biến
void nhap() {
for (i=0; i<=2; i++) // lỗi chưa khai báo biến i
cin>>i;
}
} //lỗi thiếu dấu ;
void main //lỗi thiếu dấu () sau hàm main()
{
}
- Phát hiện lỗi: ấn F9, trình biên dịch sẽ chỉ ra lỗi
b. Lỗi thực thi (Runtime error): Xảy ra bất ngờ khi chương trình đang chạy.
ví dụ:
float s=0;
for (int i=0; i<=10; i++) s=s+1/(i-3);
lỗi khi i nhận giá trị = 3 thì 1/(i-3)=1/0: lỗi chia cho 0.
hoặc
float t, x;
cout<<"x="; cin>>x;
t=sqrt(x);
cout<
nếu nhập x nhỏ hơn 0 thì sqrt(x) không tính được (không có căn bậc 2 của số âm)
- Khắc phục: phải kiểm tra các điều kiện, dự đoán trước khả năng có thể gây lỗi khi thực thi, chẳng hạn kiểm tra x lớn hơn 0 trước khi tính căn bậc 2, ...
c. Lỗi logic: Lỗi do tư duy sai dẫn đến kết quả
ví dụ sinh viên không biết viết thuật toán tìm ước số chung lớn nhất, không biết viết công thức nghiệm giải phương trinhg bậc 2...
-Phát hiện lỗi LOGIC
Để phát hiện lỗi này thì chương trình cần chạy nhiều lần với nhiều kết quả để xem nó có phù hợp hay không.
Trần Nguyên Hương