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
ptsan/[email protected]n
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
ptsan/[email protected]n
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
ptsan/[email protected]n
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
ptsan/[email protected]n
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
ptsan/[email protected]n
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
ptsan/[email protected]n
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
ptsan/[email protected]n
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
ptsan/[email protected]n
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
ptsan/[email protected]n
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
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:
giao_trinh_nhap_mon_lap_trinh_huong_dan_thuc_hanh_tuan_3_pha.pdf

