1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng kỹ thuật lập trình bài 9 ths nguyễn thành trung

20 100 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 1,07 MB

Nội dung

khóa $ gcc217 hello.c -o hello hello.c: In function `main': hello.c:7: error: `retun' undeclared (first use in this function) hello.c:7: error: (Each undeclared identifier is reported only once hello.c:7: error: for each function it appears in.) hello.c:7: error: syntax error before numeric constant Hiểu thông báo lỗi ▪ Một số thông báo lỗi đến từ linker Sai tên hàm #include gọi int main(void) /* Print "hello, world" to stdout and return */ { prinf("hello, world\n") return 0; } Compiler warning (not error): prinf() Linker error: khơng tìm thấy định nghĩa hàm prinf() gọi trước khai báo $ gcc217 hello.c -o hello hello.c: In function `main': hello.c:6: warning: implicit declaration of function `prinf' /tmp/cc43ebjk.o(.text+0x25): In function `main': : undefined reference to `prinf' collect2: ld returned exit status “ Việc thay đổi mã nguồn khơng hợp lý gây nhiều vấn đề để ngun khơng thay đổi gì, phải suy nghĩ trước làm Suy nghĩ trước viết ▪ Gỡ rối gặp ▫ Khi phát lỗi, sửa ngay, đừng để sau sửa, lỗi khơng xuất lại (do tình huống) ▫ Cân nhắc: việc sửa chữa có ảnh hưởng tới tình khác hay khơng ? ▪ Quan sát lỗi từ góc độ khác ▫ Viết đoạn mã nguồn gây lỗi giấy ▸ Đừng chép hết đoạn khơng có nguy gây lỗi, in toàn code giấy in => phá vỡ cấu trúc ▫ Vẽ hình minh họa cấu trúc liệu ▸ Nếu mà giải thuật làm thay đổi CTDL, vẽ lại hình trước viết lại giải thuật ▫ Đọc trước gõ vào ▸ Đừng vội vàng, khơng rõ điều thực gây lỗi sửa khơng chỗ có nguy gây lỗi khác Suy nghĩ trước viết ▪ Tạm dừng viết chương trình ▫ Khi gặp vấn đề, khó khăn, chậm tiến độ, thay đổi cơng việc => rút khỏi luồng quán tính sai lầm … ▫ Bỏ qua đoạn chương trình có lỗi ▫ Khi cảm thấy sẵn sàng chữa ▪ Giải thích logic đoạn mã nguồn: ▫ Cho bạn ▸ Tạo điều kiện để suy nghĩ lại ▫ Cho khác phản bác ▸ Extrem programming : làm việc theo cặp, pair programming, người LT, người kiểm tra, ngược lại ▫ Cho khơng thể phản bác (cây, cốc trà đá, gấu bông…) ▸ Tạo điều kiện củng cố suy luận Tìm lỗi tương tự switch (i) { case 0: … /* missing break */ case 1: … break; … } if (i = 5) … if (5 < i < 10) … int i; … scanf("%d", i); char c; … c = getchar(); while (c = getchar() != EOF) … if (i & j) … Tips: đặt chế độ cảnh báo (warnings) dịch hầu hết lỗi kiểu phát Tìm lỗi tương tự ▪ Khi gặp vấn đề, liên tưởng đến trường hợp tương tự gặp ▫ Vd1 : int n; scanf(“%d”,n); ? ▫ Vd2 : int n=1; double d=PI; printf(“%d %f \n”,d,n); ?? ▪ Không khởi tạo biến (với C) gây lỗi khó lường Tìm lỗi tương tự ▪ Làm cho lỗi xuất lại ▫ Cố gắng làm cho lỗi xuất lại cần ▫ Nếu khơng được, thử tìm ngun nhân lại khơng làm cho lỗi xuất lại {C/C++} Array as a parameter handled improperly – Tham số mảng xử lý không cách Array index out of bounds – Vượt phạm vi số mảng Call-by-value used instead of call-by reference for function parameters to be modified – Gọi theo giá trị, thay gọi theo tham chiếu cho hàm để sửa Comparison operators misused – Các toán tử so sánh bị dùng sai Compound statement not used - Lệnh phức hợp không dùng Dangling else - nhánh else khong hợp lệ Division by zero attempted - Chia cho Division using integers so quotient gets truncated – Dùng phép chia số nguyên nên phần thập phân bị cắt Files not closed properly (buffer not flushed) - File khơng đóng phù hợp ( buffer khơng bị dẹp) 10 Infinite loop - lặp vô hạn 11 Global variables used – dùng biến tổng thể {C/C++} 12 IF-ELSE not used properly – dùng if-else không chuân 13 Left side of assignment not an L-value phía trái phép gán khơng phải biến 14 Loop has no body – vòng lặp khơng có thân 15 Missing "&" or missing "const" with a call-by-reference function parameter – thiếu dấu & hay từ khóa const với lời gọi tham số hàm theo tham chiếu 16 Missing bracket for body of function or compound statement – Thiếu cặp {} cho thân hàm hay nhóm lệnh 17 Mission reference to namespace - Thiếu tham chiếu tới tên miền 18 Missing return statement in a valuereturning function – Thiếu return 19 Missing semi-colon in simple statement, function prototypes, struct definitions or class definitions – thiếu dấu ; lệnh đơn … 20 Mismatched data types in expressions – kiểu liệu không hợp 21 Operator precedence misunderstood - Hiểu sai thứ tự phép toán {C/C++} 22 Off-by-one error in a loop – Thoát khỏi lỗi vòng lặp 23 Overused (overloaded) local variable names - Trùng tên biến cục 24 Pointers not set properly or overwritten in error – Con trỏ không xác định trỏ vào vị trí khơng có 25 Return with value attempted in void function – trả giá trị hàm void 26 Undeclared variable name – không khai báo biến 27 Un-initialized variables – Không khởi tạo giá trị 28 Unmatched parentheses – thiếu } 29 Un-terminated strings - xâu không kết thúc, thiếu " 30 Using "=" when "= =" is intended or vice versa 31 Using "&" when "&&" is intended or vice versa 32 "while" used improperly instead of "if" – while dùng thay if ... in => phá vỡ cấu trúc ▫ Vẽ hình minh họa cấu trúc liệu ▸ Nếu mà giải thuật làm thay đổi CTDL, vẽ lại hình trước viết lại giải thuật ▫ Đọc trước gõ vào ▸ Đừng vội vàng, không rõ điều thực gây lỗi... trước viết ▪ Tạm dừng viết chương trình ▫ Khi gặp vấn đề, khó khăn, chậm tiến độ, thay đổi công việc => rút khỏi luồng quán tính sai lầm … ▫ Bỏ qua đoạn chương trình có lỗi ▫ Khi cảm thấy sẵn sàng... tham chiếu tới tên miền 18 Missing return statement in a valuereturning function – Thiếu return 19 Missing semi-colon in simple statement, function prototypes, struct definitions or class definitions

Ngày đăng: 19/06/2019, 10:10

TỪ KHÓA LIÊN QUAN