Giáo án Tin Học 10 (Cánh Diều) - Chủ đề F, Bài 16: Kiểm thử và gỡ lỗi chương trình

docx 9 trang phuong 20/11/2023 1220
Bạn đang xem tài liệu "Giáo án Tin Học 10 (Cánh Diều) - Chủ đề F, Bài 16: Kiểm thử và gỡ lỗi chương trình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Giáo án Tin Học 10 (Cánh Diều) - Chủ đề F, Bài 16: Kiểm thử và gỡ lỗi chương trình

Giáo án Tin Học 10 (Cánh Diều) - Chủ đề F, Bài 16: Kiểm thử và gỡ lỗi chương trình
Tên bài dạy
CHỦ ĐỀ F: GIẢI QUYẾT VẤN ĐỀ VỚI SỰ TRỢ GIÚP CỦA MÁY TÍNH
LẬP TRÌNH CƠ BẢN
BÀI 16
KIỂM THỬ VÀ GỠ LỖI CHƯƠNG TRÌNH 
Môn học: Tin Học; Lớp: 10
Thời gian thực hiện: 2 tiết
I. MỤC TIÊU
1. Kiến thức:
Biết và khắc phục được một số lỗi thường gặp khi viết chương trình 
Biết cách sử dụng công cụ gỡ lỗi trong Python để truy vết tìm lỗi nhằm sửa lỗi trong chương trình 
2. Năng lực: 
- Năng lực chung:
+ Giải quyết được những nhiệm vụ học tập một cách độc lập, theo nhóm và thể hiện sự sáng tạo.
+ Góp phần phát triển năng lực giao tiếp và hợp tác qua hoạt động nhóm và trao đổi công việc với giáo viên.
- Năng lực riêng:
+ HS được phát triển tư duy và khả năng giải quyết được vấn đề, năng lực giao tiếp, hợp tác, sáng tạo, tự chủ và tự học.
3. Phẩm chất: Nghiêm túc, tập trung, tích cực chủ động.
II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU
1. Giáo viên 
- Chuẩn bị Bài giảng, máy chiếu, máy chiếu vật thể. 
2. Học sinh 
- Sách giáo khoa, vở ghi 
- Kiến thức đã học 
III. TIẾN TRÌNH DẠY HỌC
1. HOẠT ĐỘNG KHỞI ĐỘNG (MỞ ĐẦU)
- Mục tiêu: Tạo hứng thú học tập cho học sinh
- Nội dung: Hs dựa vào hiểu biết để trả lời câu hỏi
- Sản phẩm: Từ yêu cầu Hs vận dụng kiến thức để trả lời câu hỏi GV đưa ra 
- Tổ chức thực hiện: GV giới thiệu và dẫn dắt vào bài
HS: trả lời câu hỏi
2. HÌNH THÀNH KIẾN THỨC MỚI
Hoạt động 1: Tìm hiểu lỗi trong chương trình và kiểm thử
- Mục Tiêu: 	+ Biết phát hiện lỗi, sửa lỗi trong chương trình
- Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV
- Sản phẩm: Hs hoàn thành tìm hiều kiến thức
- Tổ chức thực hiện: 
Sản phẩm dự kiến
Hoạt động của giáo viên và học sinh
1. LỖI TRONG CHƯƠNG TRÌNH VÀ KIỂM THỬ
Gỡ lỗi: là quá trình xác định lỗi và sửa lỗi.
Khi lập trình thường gặp các lỗi sau:
- Lỗi cú pháp: là lỗi câu lệnh viết không theo đúng quy định của ngôn ngữ.
Lỗi ngoại lệ: (Exceptions Error) còn gọi là lỗi Runtime, là lỗi xảy ra khi chương trình đang chạy, một lệnh nào đó không thể thực hiện được
Lỗi ngữ nghĩa (lỗi logic): là lỗi mặc dù các câu lệnh viết đúng quy định của ngôn ngữ nhưng sai thao tác xử lí nào đó. Đây là loại lỗi rất khó phát hiện
Ví dụ:
 Xét chương trình ở Hình 1a, chương trình này thực hiện yêu cầu nhập vào hai số nguyên p, q và danh sách a gồm các số nguyên, sau đó đưa ra max{│ai│, i = p, p + 1, , q}. Biết rằng các phần tử của danh sách a được đánh chỉ số bắt đầu từ 0 và 0 ≤ p ≤ q < len(a)
Hình 1a
Hình 1b
Hình 1c
Giải thích
Với đầu vào p = 1, q = 4 (Hình 1b), dãy con được xét là 7 1 5 -6, nên 7 là đáp án đúng, là số có giá trị tuyệt đối lớn nhất trong dãy con đó
Với đầu vào p = 2, q = 4 (Hình 1c), dãy con được xét là 1 5 -6, đáp án đúng phải là 6
Việc đọc kĩ lại chương trình để tìm lỗi chỉ thích hợp với các chương trình ngắn, đơn giản
Môi trường lập trình của những ngôn ngữ lập trình bậc cao có công cụ hỗ trợ cho người dùng tìm lỗi
Các lỗi ngữ nghĩa chỉ có thể phát hiện thông qua quan sát kết quả thực hiện chương trình với các bộ dữ liệu vào (các bộ test) khác nhau
Để kiểm tra tính đúng đắn của chương trình so với yêu cầu của đề bài, trước hết cần chuẩn bị các bộ dữ liệu vào. Dữ liệu kiểm thử phải phù hợp với các ràng buộc đã cho và chia thành 3 nhóm
Kiểm thử những trường hợp thường gặp trong thực tế
Kiểm thử những trường hợp đặc biệt (ví dụ, khi danh sách chỉ bao gồm một phần tử)
Kiểm thử những trường hợp các tham số nhận giá trị lớn nhất có thể
*‌ ‌Bước‌ ‌1:‌ ‌Chuyển‌ ‌giao‌ ‌nhiệm‌ ‌vụ:‌ ‌
GV: Nêu đặt câu hỏi
? Trong những phần trước, các bài tập và bài thực hành không quá phức tạp. Đã lần nào em soạn chương trình và thực hiện ngay từ lần chạy đầu tiên chưa?
HS: Thảo luận, trả lời
*‌ ‌Bước‌ ‌2:‌ ‌Thực‌ ‌hiện‌ ‌nhiệm‌ ‌vụ:‌ ‌ ‌
 ‌+‌ ‌HS:‌ ‌Suy‌ ‌nghĩ,‌ ‌tham‌ ‌khảo‌ ‌sgk‌ ‌trả‌ ‌lời‌ ‌câu‌ ‌hỏi‌ ‌
+‌ ‌GV:‌ ‌quan‌ ‌sát‌ ‌và‌ ‌trợ‌ ‌giúp‌ ‌các‌ ‌cặp.‌ ‌ ‌
*‌ ‌Bước‌ ‌3:‌ ‌Báo‌ ‌cáo,‌ ‌thảo‌ ‌luận:‌ ‌ ‌
+‌ ‌HS:‌ ‌Lắng‌ ‌nghe,‌ ‌ghi‌ ‌chú,‌ ‌một‌ ‌HS‌ ‌phát‌ ‌
biểu‌ ‌lại‌ ‌các‌ ‌tính‌ ‌chất.‌ ‌ ‌
+‌ ‌Các‌ ‌nhóm‌ ‌nhận‌ ‌xét,‌ ‌bổ‌ ‌sung‌ ‌cho‌ ‌
nhau.‌ ‌ ‌
*‌ ‌Bước‌ ‌4:‌ ‌Kết‌ ‌luận,‌ ‌nhận‌ ‌định:‌ ‌‌GV‌ ‌
chính‌ ‌xác‌ ‌hóa‌ ‌và‌ ‌gọi‌ ‌1‌ ‌học‌ ‌sinh‌ ‌nhắc‌ ‌lại‌ ‌kiến‌ ‌thức‌ ‌
Hoạt động 2: Tìm hiểu Truy vết với cách bổ sung câu lệnh theo dõi kết quả trung gian
a) Mục tiêu: Nắm được cách truy vết bằng cách bổ sung câu lệnh
b) Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV.
c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức
d) Tổ chức thực hiện:
Sản phẩm dự kiến
Hoạt động của giáo viên và học sinh
2. TRUY VẾT VỚI CÁCH BỔ SUNG CÂU LỆNH THEO DÕI KẾT QUẢ TRUNG GIAN
Cách tìm lỗi ngữ nghĩa:
+ Bổ sung vào chương trình những câu lệnh đưa ra các kết quả trung gian nhằm truy vết các xử lí của chương trình. => dự đoán và khoanh vùng được phần chương trình chứa các câu lệnh đưa đến kết quả sai và sửa lại
Chú ý: Sau khi sửa xong chương trình cần xóa đi các câu lệnh đã thêm vào để truy vết hoặc biến chúng thành chú thích
Xét lại ví dụ 1: thêm câu lệnh để truy vết
Câu lệnh mới thêm vào: print(“i = ”,i,”max = ”,max)
Kết quả đúng
Kết quả sai
=> Ta thấy lỗi ở việc xác định miền tìm max và cần phải sửa lại câu lệnh for i in range(p,q): thành for i in range(p,q+1):
Ta thấy cách truy vết này phải can thiệp vào chương trình nguồn, thêm các câu lệnh mới và sau đó phải xóa các câu lệnh truy vết không còn cần thiết.
Nhược điểm: Bất tiện vì câu lệnh mới đưa vào có thể có lỗi hoặc đưa nhầm vào vị trí không thích hợp
*‌ ‌Bước‌ ‌1:‌ ‌Chuyển‌ ‌giao‌ ‌nhiệm‌ ‌vụ:‌ ‌
GV: Tại sao rất khó phát hiện lỗi nếu chỉ dùng biện pháp đọc kĩ lại chương trình?
HS: Thảo luận, trả lời
HS: Lấy các ví dụ trong thực tế.
*‌ ‌Bước‌ ‌2:‌ ‌Thực‌ ‌hiện‌ ‌nhiệm‌ ‌vụ:‌ ‌ ‌
‌+‌ ‌HS:‌ ‌Suy‌ ‌nghĩ,‌ ‌tham‌ ‌khảo‌ ‌sgk‌ ‌trả‌ ‌lời‌ ‌câu‌ ‌hỏi‌ ‌
+‌ ‌GV:‌ ‌quan‌ ‌sát‌ ‌và‌ ‌trợ‌ ‌giúp‌ ‌các‌ ‌cặp.‌ ‌ ‌
*‌ ‌Bước‌ ‌3:‌ ‌Báo‌ ‌cáo,‌ ‌thảo‌ ‌luận:‌ ‌ ‌
+‌ ‌HS:‌ ‌Lắng‌ ‌nghe,‌ ‌ghi‌ ‌chú,‌ ‌một‌ ‌HS‌ ‌phát‌ ‌
biểu‌ ‌lại‌ ‌các‌ ‌tính‌ ‌chất.‌ ‌ ‌
+‌ ‌Các‌ ‌nhóm‌ ‌nhận‌ ‌xét,‌ ‌bổ‌ ‌sung‌ ‌cho‌ ‌
nhau.‌ ‌ ‌
*‌ ‌Bước‌ ‌4:‌ ‌Kết‌ ‌luận,‌ ‌nhận‌ ‌định:‌ ‌‌GV‌ ‌
chính‌ ‌xác‌ ‌hóa‌ ‌và‌ ‌gọi‌ ‌1‌ ‌học‌ ‌sinh‌ ‌nhắc‌ ‌lại‌ ‌kiến‌ ‌thức‌ 
Hoạt động 3: Tìm hiểu Truy vết với công cụ gỡ lỗi của ngôn ngữ lập trình 
a) Mục tiêu: Nắm được cách truy vết bằng công cụ gỡ lối của ngôn ngữ lập trình
b) Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV.
c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức
d) Tổ chức thực hiện:
Sản phẩm dự kiến
Hoạt động của giáo viên và học sinh
3. TRUY VẾT VỚI CÔNG CỤ GỠ LỖI CỦA NGÔN NGỮ LẬP TRÌNH 
Để kích hoạt chế độ gỡ lỗi (Debug), ta thực hiện lần lượt các thao tác sau:
Mở file chương trình cần gỡ lỗi
Chọn Debug => chọn Debugger (Hình 3) => xuất hiện cửa sổ Debug Control (Hình 4)
Chọn Run Module (Hoặc F5)
Chọn Step (hoặc Over)
Kết luận
Để tìm và sửa lỗi ngữ nghĩa cần dùng biện pháp truy vết
Muốn truy vết để tìm lỗi:
+ Có thể đưa thêm các câu lệnh xuất ra kết quả trung gian của quá trình tính toán
+ Có thể sử dụng công cụ gỡ lỗi của môi trường lập trình 
Truy vết để tìm lỗi là một quá trình khá khó khăn và phức tạp, đôi khi mất khá nhiều thời gian
Python còn trang bị một thư viện riêng cung cấp các dịch vụ gỡ lỗi, đó là thư viện PDB
*‌ ‌Bước‌ ‌1:‌ ‌Chuyển‌ ‌giao‌ ‌nhiệm‌ ‌vụ:‌ ‌
GV: Đọc SGK và cho biết các bước gỡ lối chương trình?
HS: Thảo luận, trả lời
HS: Lấy các ví dụ trong thực tế.
*‌ ‌Bước‌ ‌2:‌ ‌Thực‌ ‌hiện‌ ‌nhiệm‌ ‌vụ:‌ ‌ ‌
‌+‌ ‌HS:‌ ‌Suy‌ ‌nghĩ,‌ ‌tham‌ ‌khảo‌ ‌sgk‌ ‌trả‌ ‌lời‌ ‌câu‌ ‌hỏi‌ ‌
+‌ ‌GV:‌ ‌quan‌ ‌sát‌ ‌và‌ ‌trợ‌ ‌giúp‌ ‌các‌ ‌cặp.‌ ‌ ‌
*‌ ‌Bước‌ ‌3:‌ ‌Báo‌ ‌cáo,‌ ‌thảo‌ ‌luận:‌ ‌ ‌
+‌ ‌HS:‌ ‌Lắng‌ ‌nghe,‌ ‌ghi‌ ‌chú,‌ ‌một‌ ‌HS‌ ‌phát‌ ‌
biểu‌ ‌lại‌ ‌các‌ ‌tính‌ ‌chất.‌ ‌ ‌
+‌ ‌Các‌ ‌nhóm‌ ‌nhận‌ ‌xét,‌ ‌bổ‌ ‌sung‌ ‌cho‌ ‌
nhau.‌ ‌ ‌
*‌ ‌Bước‌ ‌4:‌ ‌Kết‌ ‌luận,‌ ‌nhận‌ ‌định:‌ ‌‌GV‌ ‌
chính‌ ‌xác‌ ‌hóa‌ ‌và‌ ‌gọi‌ ‌1‌ ‌học‌ ‌sinh‌ ‌nhắc‌ ‌lại‌ ‌kiến‌ ‌thức‌ 
Hoạt động 4: Thực hành gỡ lỗi cho chương trình 
a) Mục tiêu: Nắm được cách gỡ lỗi cho chương trình
b) Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV.
c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức
d) Tổ chức thực hiện:
Sản phẩm dự kiến
Hoạt động của giáo viên và học sinh
4. THỰC HÀNH GỠ LỖI CHO CHƯƠNG TRÌNH 
Bài toán: Cho a là danh sách các số nguyên. Em hãy tạo danh sách b có các phần tử ở vị trí lẻ bằng phần tử ở vị trí tương ứng của a, các phần tử ở vị trí chẵn bằng phần tử ở vị trí tương ứng của a cộng thêm 1, tức là:
So sánh số lượng các phần tử từ giá trị chẵn ở a với số lượng các phần tử giá trị chẵn ở b, đưa ra thông báo. 
Gọi p là số lượng các phần tử giá trị chẵn ở a, q là số lượng các phần tử giá trị chẵn ở b và đưa ra thông báo “a ít hơn” nếu p q và “Bằng nhau” trong trường hợp còn lại
Nhiệm vụ: Áp dụng truy vết để xác định lỗi và đề xuất cách sửa một số ít nhất các câu lệnh để có chương trình đúng
Hướng dẫn:
Phương pháp dùng công cụ Gỡ lỗi (Debug)
+ Chuẩn bị danh sách số nguyên, ví dụ [5, 3, 2, 2, 1, 2]
+ Chọn Debugger, chọn Step, quan sát giá trị hai danh sách a và b. Sau một vài lần thực hiện câu lệnh trong vòng lặp:
for i in range(0,n,2):
 b[i] = b[i] + 1
Ta thấy: a và b đồng thời thay đổi giá trị, mặc dù trong vòng lặp chỉ chứa câu lệnh thay đổi giá trị của danh sách b.
Ví dụ:
Sau khi i = 2 ta có kết quả như Hình 7
 Chương trình chưa tạo ra bản sao của danh sách a mà chỉ tạo một tên mới cho cùng một danh sách a
 Câu lệnh sai trong chương trình là b = a
 sửa là: b = [] + a
Hướng dẫn:
Phương pháp bổ sung vào chương trình các câu lệnh truy vết
+ Thêm câu lệnh print(a) và print(b) để xuất ra giá trị các danh sách a và b sau mỗi vòng lặp
Dễ dàng nhận thấy a và b cùng đồng thời thay đổi
 Kết luận: Câu lệnh sai trong chương trình là b = a
 sửa là: b = [] + a
*‌ ‌Bước‌ ‌1:‌ ‌Chuyển‌ ‌giao‌ ‌nhiệm‌ ‌vụ:‌ ‌
GV: ?
HS: Thảo luận, trả lời
HS: Lấy các ví dụ trong thực tế.
*‌ ‌Bước‌ ‌2:‌ ‌Thực‌ ‌hiện‌ ‌nhiệm‌ ‌vụ:‌ ‌ ‌
‌+‌ ‌HS:‌ ‌Suy‌ ‌nghĩ,‌ ‌tham‌ ‌khảo‌ ‌sgk‌ ‌trả‌ ‌lời‌ ‌câu‌ ‌hỏi‌ ‌
+‌ ‌GV:‌ ‌quan‌ ‌sát‌ ‌và‌ ‌trợ‌ ‌giúp‌ ‌các‌ ‌cặp.‌ ‌ ‌
*‌ ‌Bước‌ ‌3:‌ ‌Báo‌ ‌cáo,‌ ‌thảo‌ ‌luận:‌ ‌ ‌
+‌ ‌HS:‌ ‌Lắng‌ ‌nghe,‌ ‌ghi‌ ‌chú,‌ ‌một‌ ‌HS‌ ‌phát‌ ‌
biểu‌ ‌lại‌ ‌các‌ ‌tính‌ ‌chất.‌ ‌ ‌
+‌ ‌Các‌ ‌nhóm‌ ‌nhận‌ ‌xét,‌ ‌bổ‌ ‌sung‌ ‌cho‌ ‌
nhau.‌ ‌ ‌
*‌ ‌Bước‌ ‌4:‌ ‌Kết‌ ‌luận,‌ ‌nhận‌ ‌định:‌ ‌‌GV‌ ‌
chính‌ ‌xác‌ ‌hóa‌ ‌và‌ ‌gọi‌ ‌1‌ ‌học‌ ‌sinh‌ ‌nhắc‌ ‌lại‌ ‌kiến‌ ‌thức‌ 
3. HOẠT ĐỘNG LUYỆN TẬP
a. Mục tiêu: Củng cố, luyện tập kiến thức vừa học.
b. Nội dung: HS đọc SGK làm các bài tập.
c. Sản phẩm: Bài làm của học sinh, kĩ năng giải quyết nhiệm vụ học tập.
d. Tổ chức thực hiện: 
Gv Cho HS nhắc lại KT:
Hs: Nhắc lại các vấn đề đã học
Bài 1. Em hãy soạn thảo và thực hiện từng bước chương trình ở hình sau
4. HOẠT ĐỘNG VẬN DỤNG
a. Mục tiêu: Vận dụng các kiến thức vừa học quyết các vấn đề học tập và thực tiễn.
b. Nội dung:.
c. Sản phẩm: HS vận dụng các kiến thức vào giải quyết các nhiệm vụ đặt ra.
d. Tổ chức thực hiện:
Gv đưa câu hỏi về nhà: 
Câu 1: Em hãy nêu một vài lỗi thuộc nhóm lỗi cú pháp và một vài lỗi thuộc nhóm lỗi ngữ nghĩa
Câu 2: Tại sao phải tạo nhiều bộ dữ liệu vào khác nhau để kiểm thử chương trình?
Câu 3: Có bao nhiêu nhóm dữ liệu khác nhau cần tạo ra để kiểm thử chương trình?
Câu 4: Có thể xem giá trị các biến sau khi thực hiện một câu lệnh ở đâu?
5. Hướng dẫn học sinh tự học:
- Hướng dẫn học bài cũ: 
- Hướng dẫn chuẩn bị bài mới:

File đính kèm:

  • docxgiao_an_tin_hoc_10_canh_dieu_chu_de_f_bai_16_kiem_thu_va_go.docx