Hướng dẫn thực hành Nhập môn lập trình - Nguyễn Hải Minh

Tóm tắt Hướng dẫn thực hành Nhập môn lập trình - Nguyễn Hải Minh: ... (dòng thứ 8) thiếu dấu đóng ngoặc kép ” Trang 3 Hướng dẫn thực hành: Nhập môn lập trình Lớp 07DB_A/B C2065: '' : undeclared identifier ª Lỗi này là do bạn đã sử dụng một biến hay hàm con mà chưa khai báo biến/hàm đó trong phạm vi sử dụng. ª Ví dụ: Dòng 8 sử dụng biến giatri chưa được ...expected end of file found ª Ví dụ: hàm main được hiểu là hàm bên trong hàm Xuat và điều này không được phép (illegal). Từ đó dẫn đến file source code không được kết thúc hợp lệ. Trường hợp này chỉ cần thêm dấu ngoặc nhọn đóng hàm Xuat (hàm ngay phía trên hàm báo lỗi – main) lại. LNK1168: ca...không liệt kê ở trên, các bạn tự tìm hiểu). Sửa lại các lỗi đó (sau khi sửa có thể phát sinh lỗi mới, cần thống kê cho tới khi nào biên dịch không còn lỗi). Ví dụ: STT Lỗi Ý nghĩa Sửa 1 error C2628: ‘SINHVIEN’ followed by ‘void’ is illegal (did you forget a ‘;’?) void đi sau SINHVIEN...

pdf8 trang | Chia sẻ: havih72 | Lượt xem: 212 | Lượt tải: 1download
Nội dung tài liệu Hướng dẫn thực hành Nhập môn lập trình - Nguyễn Hải Minh, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Hướng dẫn thực hành: Nhập mơn lập trình Lớp 07DB_A/B 
Người soạn: Nguyễn Hải Minh 
Email: nhminh@fit.hcmuns.edu.vn
CHỦ ĐỀ: CÁC LỖI THƯỜNG GẶP KHI BIÊN DỊCH 
CHƯƠNG TRÌNH TRÊN VC++ 6.0 
---oOo--- 
I. GIỚI THIỆU 
Khi biên dịch chương trình (F7), chú ý cửa sổ Build ở dưới, các thơng tin về lỗi (errors) và 
cảnh báo (warnings) nếu cĩ sẽ được liệt kê chi tiết ở đây: 
Ví dụ trong hình: dịng màu vàng là lỗi, màu xanh là cảnh báo. Con số phía trước mỗi 
lỗi/cảnh báo cho biết số thứ tự dịng code xuất hiện lỗi/cảnh báo (ở đây là dịng thứ 9). Dựa 
vào những ký hiệu cũng như thơng tin về lỗi/cảnh báo này, bạn cĩ thể tìm ra nhanh chĩng lỗi 
của mình nằm ở đâu và cách sửa như thế nào. 
Các bước cần làm khi biên dịch chương trình cĩ lỗi: 
1) Xem cĩ bao nhiêu lỗi, bấm F4 để nhảy đến dịng chứa lỗi đầu tiên 
2) Đọc xem thơng báo lỗi là gì, sửa lỗi đĩ 
3) Biên dịch lại project (F7) rồi quay lại bước 1 
Trang 1 
Hướng dẫn thực hành: Nhập mơn lập trình Lớp 07DB_A/B 
II. MỘT SỐ LỖI THƯỜNG GẶP 
C2143: Syntax error : missing before 
ª Lỗi cú pháp (syntax error), thường là thiếu dấu đĩng ngoặc, chấm phẩy 
Ví dụ: (9) missing ‘;’ before ‘return’ => Thiếu dấu ‘;’ trước câu lệnh return ở dịng 9. Rà sốt 
lại trước dịng 9, phát hiện thiếu dấu ‘;’ sau câu lệnh printf(“Hello World!”) 
C1010: unexpected end of file while looking for precompiled header directive 
ª Lỗi này xuất hiện khi bạn khơng tạo Empty project mà tạo một project cĩ sẵn (Hello World) 
với 2 file được tạo sẵn là StdAfx.h và StdAfx.cpp. Với loại project này, bạn phải #include 
StdAfx.h ngay đầu file .cpp chứa hàm main của bạn. Nếu khơng trình biên dịch sẽ báo lỗi như 
trên. Cách giải quyết: 
¾ Cách 1: Thêm dịng #include “StdAfx.h” vào ngay đầu file .cpp chứa code chương 
trình của bạn 
Trang 2 
Hướng dẫn thực hành: Nhập mơn lập trình Lớp 07DB_A/B 
¾ Cách 2: Vào Project Ỉ Settings Ỉ chuyển sang tab C/C++, chọn Precompiled 
Headers trong Category, check vào ơ Not Using Precompile Header 
C2001: newline in constant 
ª Lỗi này thường gặp khi một chuỗi hay ký tự khai báo mà quên đĩng ngoặc kép ’ hay ” 
ª Ví dụ: chuỗi đưa vào lệnh printf (dịng thứ 8) thiếu dấu đĩng ngoặc kép ” 
Trang 3 
Hướng dẫn thực hành: Nhập mơn lập trình Lớp 07DB_A/B 
C2065: '' : undeclared identifier 
ª Lỗi này là do bạn đã sử dụng một biến hay hàm con mà chưa khai báo biến/hàm đĩ trong 
phạm vi sử dụng. 
ª Ví dụ: 
Dịng 8 sử dụng biến giatri chưa được khai báo 
Dịng 9 sử dụng hàm abs chưa được khai báo 
Dịng 10 sử dụng hàm Xuat chưa được khai báo 
ª Cách giải quyết: thêm vào các khai báo thích hợp (khai báo hàm abs được đặt trong math.h) 
Trang 4 
Hướng dẫn thực hành: Nhập mơn lập trình Lớp 07DB_A/B 
C2447: missing function header (old-style formal list?) 
ª Lỗi này thường gặp khi sử dụng dấu ; trước dấu { trong thân hàm. 
ª Ví dụ: 
void Function(int a, int b); 
{ 
 a = a + b; 
} 
C2556: '' : overloaded functions only differs only by return type 
C2371: '' : redefinition; different basic types 
ª Hai lỗi này thường gặp khi cĩ sự khơng khớp nhau giữa kiểu của hàm trong khai báo hàm 
và trong định nghĩa hàm 
ª Ví dụ: 
Khai báo hàm: int Function(int a, int b); 
Cài đặt: void Function(int a, int b) 
 { 
 a = b * 2.3; 
 return a; 
 } 
Trang 5 
Hướng dẫn thực hành: Nhập mơn lập trình Lớp 07DB_A/B 
C2601: '' : local function definitions are illegal 
ª Lỗi này xảy ra khi bạn định nghĩa một hàm bên trong thân một hàm khác, thường gặp khi 
bạn quên đĩng dấu ngoặc nhọn } để kết thúc một hàm bên trên. Lỗi này thường đi kèm với lỗi 
C1004: unexpected end of file found 
ª Ví dụ: hàm main được hiểu là hàm bên trong hàm Xuat và điều này khơng được phép 
(illegal). Từ đĩ dẫn đến file source code khơng được kết thúc hợp lệ. Trường hợp này chỉ cần 
thêm dấu ngoặc nhọn đĩng hàm Xuat (hàm ngay phía trên hàm báo lỗi – main) lại. 
LNK1168: cannot open Debug\.exe for writing 
ª Lỗi này xảy ra khi bạn đang mở file thực thi trong khi biên dịch lại project của mình. Lúc 
này, trình kết nối (link editor) cố gắng ghi thơng tin lên một file .exe đang được sử dụng nhưng 
khơng được. File .exe là file thực thi và nĩ sẽ được gán thuộc tính chống ghi cho đến khi 
chương trình mà nĩ thực thi kết thúc. 
ª Cách giải quyết: Nhìn xuống thanh trạng thái ở dưới cùng của màn hình và tìm xem chương 
trình của bạn cĩ đang chạy hay khơng, nếu cĩ tắt nĩ đi rồi biên dịch lại. 
Trang 6 
Hướng dẫn thực hành: Nhập mơn lập trình Lớp 07DB_A/B 
LNK2001: unresolved external symbol _main 
ª Lỗi này xảy ra khi project của bạn khơng cĩ hàm main() 
ª Cách giải quyết: viết hàm main() cho project. (C luơn tìm kiếm hàm main() và chỉ thực thi 
hàm main() mà thơi) 
Ư Đối với các lỗi khơng liệt kê trên đây, các bạn cĩ thể vào MSDN để tra cứu cách sửa. Cách 
tra: gõ số hiệu lỗi (ví dụ C2556) vào ơ Search rồi Enter 
III. BÀI TẬP ÁP DỤNG 
1. Thống kê tổng số lỗi và chi tiết các lỗi khi biên dịch project MyErrors, cho biết ý 
nghĩa và cách sửa từng lỗi. (Lưu ý: cĩ một số lỗi khơng liệt kê ở trên, các bạn tự tìm 
hiểu). Sửa lại các lỗi đĩ (sau khi sửa cĩ thể phát sinh lỗi mới, cần thống kê cho tới khi 
nào biên dịch khơng cịn lỗi). Ví dụ: 
STT Lỗi Ý nghĩa Sửa 
1 error C2628: 
‘SINHVIEN’ followed by 
‘void’ is illegal (did you 
forget a ‘;’?) 
void đi sau SINHVIEN là 
khơng hợp lệ, cĩ thể bạn 
đã quên dấu ‘;’ sau 
SINHVIEN 
Thêm dấu ‘;’ vào cuối khai báo 
struct như sau: 
struct SINHVIEN 
{ 
 char ten[20]; 
 char mssv[7]; 
 float diem; 
}; 
2   
2. Sau khi chương trình đã hết lỗi, chạy thử chương trình với thơng số như sau và ghi lại 
kết quả chạy của 2 hàm TimSVTrungTen và TimSVTrungDiem 
¾ Số lượng sinh viên: 4 
¾ Sinh viên 1: Nguyen Van An – 07DB999 – 10 
¾ Sinh viên 2: Nguyen Thanh Son – 07DB998 – 5 
¾ Sinh viên 3: Nguyen Van An – 07DB997 – 4.5 
¾ Sinh viên 4: Nguyen Van An – 07DB996 – 5 
3. Hãy debug chương trình và liệt kê các tham số quan sát trong từng bước Debug của 
hàm TimSVTrungTen và TimSVTrungDiem 
Trang 7 
Hướng dẫn thực hành: Nhập mơn lập trình Lớp 07DB_A/B 
Cụ thể: 
Debug hàm TimSVTrungTen 
flag 0 0 0  
i 0 0 0  
j 1 2 3  
sv_array[i].ten 0x0012ff1c ”a”    
sv_array[j].ten 0x0012ff3c “a”    
Tương tự cho hàm TimSVTrungDiem 
4. Từ bảng liệt kê ở câu 3, hãy cho biết hàm TimSVTrungTen và TimSVTrungDiem 
làm gì? (tham số đầu vào là gì? Kết quả đầu ra là gì? Các biến flag, i, j cĩ nghĩa gì?) 
5. Câu 2 cho kết quả đúng hay sai? Nếu sai, hãy cho biết lỗi sai nằm ở đâu? Đề xuất cách 
sửa nếu cĩ thể. 
6. Theo bạn, chương trình cịn cĩ thể tiềm ẩn những lỗi nào nữa hay khơng? Nếu cĩ hãy 
nêu ra cụ thể lý do và cách sửa. 
# Nộp bài: Bài làm bằng file Word, đặt tên file là MSSV.doc (Ví dụ: 07DB333.doc); ghi 
rõ họ tên, MSSV, lớp, ca học vào đầu bài làm (Ví dụ ca học: sáng thú 5, PM2), lần lượt trả 
lời từng câu hỏi. Nộp bài lên Moodle (chung 1 link duy nhất cho các ca) 
# Thời hạn: 1 tuần [từ ngày 22/02/2008 đến 23h55’ ngày 29/02/2008] 
# Điểm cộng: khơng bắt buộc nộp, bài nộp sẽ tính là bài tập cộng điểm (phải làm ít nhất 5 
câu) 
# Điểm trừ: các bài làm giống nhau (>70%) sẽ được trừ 1 điểm vào bài thi cuối kỳ. 
Trang 8 

File đính kèm:

  • pdfhuong_dan_thuc_hanh_nhap_mon_lap_trinh_nguyen_hai_minh.pdf