Giáo trình Nhập môn lập trình - Hướng dẫn thực hành tuần 3 - Phạm Minh Tuấn

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM  
KHOA CÔNG NGHỆ THÔNG TIN  
BỘ MÔN CÔNG NGHỆ PHẦN MỀM  
HỆCHÍNH QUI  
MÔN: NHẬP MÔN LẬP TRÌNH  
GVLT: ThS. PHẠM MINH TUẤN  
HDTH TUẦN 03  
PHẠM TÚ SAN  
TRẦN NGỌC HIỆU  
TP.HCM, tháng 11 năm 2012  
1 Mục tiêu  
- Cách sửa lỗi và debug chương trinh C++  
- Làm quen với cấu trúc lặp  
2 Cách sửa lỗi và debug chương trình C++  
Khi viết một chương trình C++ ta thường gặp hai loại lỗi đó là lỗi cú pháp (syntax  
error) và lỗi logic (logic error).  
- Lỗi cú pháp là lỗi xảy ra khi viết sai cú pháp, định dạng của ngôn ngữ lập trình.  
- Lỗi logic là lỗi xảy ra khi các đoạn mã viết không đúng logic gây ra lỗi trong quá  
trình thực thi các đoạn mã đó khi chạy chương trình.  
2.1 Lỗi cú pháp  
Các ví dụ về lỗi cú pháp trong ngôn ngữ lập trình C/C++  
Hình 1: Lỗi thiếu dấu „;‟  
Trang 2  
Hình 2: Lỗi viết sai tên biến”nghiem” thay cho “ngiem”  
Hình 3: Lỗi thiếu dấu „}‟  
Và còn nhiều lỗi khác…  
2.2 Lỗi logic  
Một chương trình được biên dịch thành công không chắc chạy đúng theo logic và dẫn  
đến chương trình bị dừng đột ngột hoặc cho kết quả sai yêu cầu.  
Ví dụ chương trình giải phương trình bậc nhất như trên, sau khi đã sửa hết lỗi cú  
pháp.  
Trang 3  
Bấm Ctrl+Shift+B để dịch chương trình, trình biên dịch thông báo dịch thành công  
và không có lỗi:  
Nhưng khi chạy chương trình với a = 2, b = 1 thì cho kết quả sai???  
Hoặc tệ hơn, chương trình bị dừng đột ngột khi nhập a = 0, b =1???  
Trang 4  
Giải pháp là dò từng dòng lênh trong chương trình để tìm ra lý do gây ra lỗi sai này.  
Phương pháp này gọi là DEBUG chương trình.  
2.3 Các thao tác để debug chương trình  
2.3.1 Debug toàn bộ chương trình  
Bước 1. Bấm Ctrl+Shift+B để dịch chương trình  
Bước 2. Nếu chương trinh dịch thành công, không báo lỗi, bấm F10 để bắt đầu  
debug chương trình. Mũi tên màu vàng xuất hiện trước dòng code theo dõi.  
Bước 3. Bấm tiếp F10 để nhảy sang dòng lệnh tiếp theo (bỏ qua dòng khai báo  
biến). Lưu ý, lúc này ở cửa sổ Local hoặc Watch bên dưới sẽ xuất hiện các biến sử  
dụng trong chương trình và giá trị của nó.  
Trang 5  
Bước 4. Bấm tiếp F10, lệnh printf được thực hiện xong và nhảy tiếp sang lệnh scanf  
– yêu cầu người dùng nhập dữ liệu vào.  
Bước 5. Sau khi nhập a,b xong quay lại của số chương trình bấm F10 để nhảy sang  
dòng lệnh tiếp theo, lúc này giá trị a,b ở cửa sổ Local đã được cập nhật lại.  
Trang 6  
Bước 6. Bấm tiếp F10 để tiếp tục thực hiện lênh tính nghiem = (-b)/a. Lúc  
này ở cửa số Local, biến nghiem được cập nhật lại thành 0. Đây chính là lỗi  
logic.  
Lý do là bởi vì biến nghiemlà kiểu số nguyên (int) nên khi gán  
nghiem = (-b)/a = -1/2 = -0.5 sẽ được làm tròn thành 0.  
Cách khắc phục là khai báo biến nghiemlà kiểu float, ép kiểu biến nguyên a,b  
thành float và thay đổi cách xuất nghiệm trong lệnh printf.  
Trang 7  
Bước 7. Thoát khỏi quá trình debug bằng cách dịch lại chương trình. Chạy lại với a  
= 2, b = 1 cho ra kết quả đúng. Lỗi chương trình kết quả sai khi nhập a = 0, b = 1  
là do dòng lệnh nghiem = (-b)/ado bị lỗi chia cho 0.  
2.3.2 Debug tại dòng lệnh định trước  
Thay vì phải debug toàn bộ chương trình ta sẽ debug từ một dòng lệnh nào đó trở đi  
(nghi ngờ bị lỗi logic ở đoạn mã phía sau) bằng cách đặt Breakpoint tại dòng lệnh muốn  
kiểm tra.  
Mặt khác, ta cũng có thể theo dõi giá trị các biến trong chương trình mà ta quan tâm  
bằng cửa sổ Watch (khác cửa sổ Local)  
Bước 1. Biên dịch chương trình Ctrl+Shift+B  
Bước 2. Đặt Breakpoint (F9) tại dòng lệnh cần theo dõi. Lưu ý dấu chấm tròn màu  
đỏ sẽ xuất hiện ngay dòng lệnh đó (muốn gỡ bỏ Breakpoint chỉ việc bấm F9 lại  
một lần nữa)  
Trang 8  
Bước 3. Quá trình debug tương tự như trên.  
2.3.3 Một số phím tắt trong debug chương trình (VS  
2005/2008/2010/2012)  
Ctrl+Shift+B: Biên dịch (build) chương trình.  
F4: Phân tích lỗi nếu quá trình biên dịch có lỗi (View->Other Windows->Error  
List).  
F9: Đặt breakpoint (chỉ có hiệu lực nếu chạy Debug).  
F5: Chạy Debug, dừng tại dòng đặt Breakpoint (nếu không có breakpoint,  
chương trình sẽ chạy cho đến hết và tự động đóng).  
F10: Chạy Debug từng dòng code.  
Ctrl+F10: Đặt con trỏ chuột đến 1 dòng code rồi bấm Ctr+F10, chương  
trình sẽ chạy thẳng đến dòng code đó trong chế độ debug.  
F11: Chạy Debug vào hàm con (nếu có).  
Ctrl+Shift+B: Thoát khỏi chế độ Debug  
Ctrl+F5: Chạy chương trình.  
Trang 9  
3 Bài tập trên lớp  
Áp dụng kĩ thuật debug trên để kiểm tra và sửa lỗi chương trình (nếu có) các bài tập  
sau:  
1. Giải phương trình ax2 + bx + c = 0  
2. Nhập vào số nguyên dương n. Tính và xuất kết quả:  
a. S(n) = 1 +1/2 + 1/3 +1/4 + … + 1/n  
b. S(n) = 1! + 2! + … + n!  
3. Tìm và xuất các số có 3 chữ số thỏa điều kiện: Chữ số hàng chục = chữ số hàng  
trăm + chữ số hàng đơn vị. Xuất số lượng những số tìm được.  
4 Bài tập về nhà  
Các bài tập làm chung trong một solution. Tên solution là MSSV của bạn.  
Mỗi bài là một project. Tên project lần lượt là Bai01, Bai02, …  
Nộp bài: nén thư mục chứa solution thành file có tên dạng <MSSV>.rar hoặc  
<MSSV>.zip.  
Mọi trường hợp làm sai qui định 0 điểm bài tập này.  
1. Nhập vào số nguyên dương n (nếu người dùng nhập n không nguyên dương thì  
yêu cầu nhập lại). Tính giá trị các biểu thức sau:  
a. S(n) = 1/2 + 1/4 + … + 1/(2n)  
b. S(n) = 1/(1 *2) + 1/(2*3) + … + 1/(n*(n+1))  
c. S(n) = 1/2 + 2/3 + 3/4 + … + n/(n+1)  
2. Nhập vào số nguyên dương n và số thực x (nếu người dùng nhập n không nguyên  
dương thì yêu cầu nhập lại). Tính giá trị các biểu thức sau:  
a. S(x,n) = x + x2 + x3 + … + xn  
b. S(x,n) = x + x3 + … + x2n+1  
c. S(x,n) = x + x2/(1 + 2) + x3/(1 + 2 + 3) + … + xn/(1 + 2 + … + n)  
3. Nhập vào số nguyên dương n (nếu người dùng nhập n không nguyên dương thì  
yêu cầu nhập lại). Hãy cho biết n có phải số nguyên tố hay ko?  
4. Nhập vào số nguyên dương n (nếu người dùng nhập n không nguyên dương thì  
yêu cầu nhập lại). Hãy cho biết n có phải số chính phương hay ko?  
Thởi hạn nộp bài: 23h55 Ngày 14/11/2012  
Trang 10  
pdf 10 trang baolam 44120 Free
Bạn đang xem tài liệu "Giáo trình Nhập môn lập trình - Hướng dẫn thực hành tuần 3 - Phạm Minh Tuấn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_nhap_mon_lap_trinh_huong_dan_thuc_hanh_tuan_3_pha.pdf