Tải bản đầy đủ (.pdf) (10 trang)

Cq nmlt hdth tuan03

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.01 MB, 10 trang )

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/

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 q
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/

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/
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/
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 tồ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/
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/
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 nghiem là 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 nghiem là 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/
Bước 7. Thốt khỏi q 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)/a do bị lỗi chia cho 0.

2.3.2 Debug tại dịng lệnh định trước
Thay vì phải debug tồ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/

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 q 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: Thốt khỏi chế độ Debug
 Ctrl+F5: Chạy chương trình.

Trang 9


ptsan/

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 ngun dương thì
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 ngun
dương thì 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ì
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




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×