Giáo án tích hợp NLS Tin học 11 Khoa học máy tính Kết nối tri thức
Giáo án tích hợp NLS (năng lực số) môn Tin học 11 Định hướng Khoa học máy tính Kết nối tri thức. GA nhằm dạy học sinh biết sử dụng công nghệ số một cách hiệu quả, an toàn và hình thành tư duy số. Đây là mẫu giáo án mới năm 2026, bộ GD&ĐT khuyến khích dùng. Giáo viên tải về nhanh chóng, dễ dàng.
Click vào ảnh dưới đây để xem giáo án rõ
Một số tài liệu quan tâm khác
Phần trình bày nội dung giáo án
Ngày soạn: .../.../...
Ngày dạy: .../.../...
BÀI 23: KIỂM THỬ VÀ ĐÁNH GIÁ CHƯƠNG TRÌNH
I. MỤC TIÊU:
1. Kiến thức:
Học xong bài này, HS đạt các yêu cầu sau:
- Biết được vai trò của kiểm thử làm tăng độ tin cậy của chương trình nhưng chưa chứng minh được tính đúng của chương trình.
- Biết được các tiêu chí đánh giá hiệu quả và tính đúng của chương trình.
2. Năng lực
Năng lực chung:
- Tự chủ và tự học: biết lắng nghe, tự giác học tập và hoàn thành nhiệm vụ; tích cực tham gia các hoạt động học tập trong lớp.
- Giao tiếp và hợp tác: có thói quen trao đổi, giúp đỡ nhau trong học tập; biết cùng nhau hoàn thành nhiệm vụ học tập theo sự hướng dẫn của GV.
- Giải quyết vấn đề và sáng tạo: ứng dụng các kiến thức đã học vào thực tế, phát triển khả năng giải quyết vấn đề có tính tích hợp liên môn giữa Tin học với các môn học khác.
Năng lực riêng:
- Biết được vai trò của kiểm thử làm tăng độ tin cậy của chương trình nhưng chưa chứng minh được tính đúng của chương trình.
- Biết được các tiêu chí đánh giá hiệu quả và tính đúng của chương trình.
- Thực hiện được lập trình tính thời gian chạy của chương trình.
Năng lực số:
- 6.2.NC1a: Sử dụng được các công cụ AI tạo sinh (ChatGPT, Copilot) để sinh các bộ dữ liệu kiểm thử (Test cases) bao quát các trường hợp biên, trường hợp ngoại lệ và đề xuất giải pháp tối ưu hóa mã nguồn.
- 3.4.NC1a: Viết được chương trình kiểm thử tự động đơn giản hoặc sử dụng thư viện đo thời gian (như time trong Python) để đánh giá hiệu năng thuật toán.
- 2.3.NC1b: Phân tích và lựa chọn được các bộ dữ liệu mẫu đại diện để đánh giá tính đúng đắn của chương trình một cách khách quan.
3. Phẩm chất
- Trách nhiệm, tính cẩn thận khi làm việc nhóm, phẩm chất làm việc chăm chỉ, chuyên cần để hoàn thành một nhiệm vụ.
II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU
1. Đối với giáo viên
- SGK, tài liệu giảng dạy, giáo án PPT.
- Máy tính, máy chiếu.
- Video AI tạo bằng công cụ AI được dùng để khởi động bài học.
2. Đối với học sinh:
- SGK, SBT Tin học 11, vở ghi chép.
- Tài liệu, thiết bị có liên quan đến nội dung bài học.
- Thiết bị di động/máy tính có kết nối Internet (sử dụng theo nhóm).
III. TIẾN TRÌNH DẠY HỌC
A. HOẠT ĐỘNG KHỞI ĐỘNG
a) Mục tiêu: GV khơi gợi sự tò mò của HS đến việc đánh giá tính tối ưu, hiệu quả của chương trình.
b) Nội dung: GV tổ chức trả lời câu hỏi ở phần Mở đầu, thông qua đó làm quen với kiểm thử và đánh giá chương trình.
c) Sản phẩm: Dựa vào kiến thức của bản thân, HS thực hiện yêu cầu GV đưa ra.
d) Tổ chức thực hiện:
Bước 1: GV chuyển giao nhiệm vụ:
- GV yêu cầu xem video AI được thiết kế để phục vụ bài dạy và trả lời câu hỏi xuất hiện trong video đó.
- GV dẫn dắt, đặt vấn đề cho HS: Trong các bài trước em đã học cách thiết kế thuật toán cho một số bài toán như bài toán tìm kiếm, bài toán sắp xếp và thiết lập chương trình thực hiện thuật toán đó. Một bài toán có thể có nhiều thuật toán khác nhau và do đó có thể có nhiều chương trình khác nhau cùng giải quyết một bài toán.
- GV đặt câu hỏi yêu cầu HS trả lời:
+ Làm thế nào để biết trong các thuật toán giải cùng một bài toán thì thuật toán nào là tốt nhất?
+ Có những tiêu chí nào để đánh giá tính "tối ưu" của một thuật toán?
Bước 2: HS thực hiện nhiệm vụ học tập:
- HS xem video và suy nghĩ câu trả lời.
- GV hướng dẫn, hỗ trợ HS (nếu cần thiết).
Bước 3: Báo cáo kết quả hoạt động, thảo luận:
- GV gọi đại diện một số HS trả lời.
- HS khác nhận xét, bổ sung.
Bước 4: Đánh giá kết quả thực hiện:
- GV nhận xét, đánh giá và kết luận.
[6.1.NC1a: HS sử dụng công cụ AI hoặc sản phẩm số do GV cung cấp để tiếp nhận thông tin, trả lời câu hỏi đơn giản.
2.1.NC1a: HS thực hiện các tương tác cơ bản với học liệu số (xem video, trả lời câu hỏi trên môi trường số).
1.1.NC1a: HS tiếp cận, khai thác được thông tin từ nguồn học liệu số dưới sự hướng dẫn của GV.]
- GV nhận xét câu trả lời của HS. Trên cơ sở đó, GV dẫn dắt HS vào bài học mới: Bài 23: Kiểm thử và đánh giá chương trình.
B. HOẠT ĐỘNG HÌNH THÀNH KIẾN THỨC
Hoạt động 1: Tìm hiểu vai trò của kiểm thử chương trình
a) Mục tiêu: Giúp HS hiểu được các phương pháp kiểm thử đã học ở lớp 10 không chứng minh tính đúng của thuật toán hay chương trình, mà chỉ có thể làm tăng độ tin cậy của chương trình. Sử dụng được công cụ số để tìm hiểu kiến thức.
b) Nội dung: GV tổ chức cho HS thực hiện theo các hoạt động trong SGK và nêu được ý nghĩa của kiểm thử chương trình.
c) Sản phẩm: HS nêu được ý nghĩa của kiểm thử chương trình.
d) Tổ chức thực hiện:
| HOẠT ĐỘNG CỦA GV VÀ HS | SẢN PHẨM DỰ KIẾN | NLS |
Bước 1: GV chuyển giao nhiệm vụ: - GV đặt vấn đề theo Hoạt động 1 trang 106 SGK: Ở lớp 10, em đã học một số phương pháp kiểm thử chương trình. Em hãy thảo luận với các bạn về các phương pháp kiểm thử sau, nêu ý nghĩa của chúng trong việc đánh giá độ tin cậy và chứng minh tính đúng của chương trình: 1. Tạo các bộ dữ liệu kiểm thử (test) để kiểm tra dữ liệu đầu ra có chính xác hay không. 2. Thiết lập điểm dừng hoặc cho chương trình chạy theo từng lệnh để kiểm tra và tìm ra lỗi (bug) của chương trình. 3. Thực hiện in dữ liệu trung gian trong quá trình kiểm thử để tìm ra lỗi của chương trình (nếu có). - Trên cơ sở kiến thức vừa nêu, GV yêu cầu HS nêu ý nghĩa của kiểm thử chương trình. - GV đưa ra một đoạn code Python tính tổng đơn giản nhưng tiềm ẩn lỗi (ví dụ: chia cho 0 hoặc sai công thức với số âm). Sau đó yêu cầu HS không chạy code, hãy đọc, đoán lỗi và nhờ AI “review code”. - Dựa vào ví dụ vừa nêu ở Hoạt động 1, GV yêu cầu HS trả lời câu hỏi củng cố trang 107 SGK: + Câu 1: Giả sử em thiết lập chương trình giải bài toán nào đó. Em đã kiểm thử với 10 bộ dữ liệu và tất cả các kết quả đều đúng. Khi đó có thể kết luận chương trình đó đúng hay chưa? + Câu 2: Giả sử một chương trình kiểm thử với 10 bộ dữ liệu cho kết quả 9 lần, 1 lần sai. Chương trình đó là sai hay đúng? Bước 2: HS thực hiện nhiệm vụ học tập: - HS thảo luận nhóm, đọc SGK và trả lời câu hỏi. - HS sao chép đoạn mã mẫu vào Chatbot AI và nhập lệnh: “Hãy đóng vai một Tester (Kiểm thử viên), phân tích đoạn code sau và chỉ ra các lỗi tiềm ẩn (lỗi logic, lỗi biên) mà lập trình viên có thể đã bỏ qua.” Bước 3: Báo cáo kết quả hoạt động, thảo luận: - Đại diện nhóm HS trình bày. - HS đọc kết quả phân tích của AI và thảo luận về tầm quan trọng của việc phát hiện lỗi sớm. *Câu hỏi củng cố trang 107 SGK: + Câu 1: Chưa thể kết luận chương trình đó đúng hay sai. + Câu 2: Có thể kết luận ngay chương trình đó là sai. - Các nhóm khác nhận xét, bổ sung cho nhóm bạn. Bước 4: Đánh giá kết quả thực hiện: - GV nhận xét, đánh giá kết quả thảo luận của HS. | 1. Vai trò của kiểm thử chương trình - Kiểm thử sẽ giúp tăng độ tin cậy của chương trình nhưng chưa chứng minh được tính đúng của thuật toán và chương trình. - Một thuật toán đúng chỉ có thể được chứng minh là đúng bằng các công cụ toán học (và khoa học máy tính), còn kiểm thử bằng các bộ test sẽ không được coi là phương pháp chứng minh tính đúng của thuật toán, mà chỉ là biện pháp làm tăng độ tin cậy của chương trình. | 6.2.NC1a: Sử dụng phần mềm hỗ trợ (AI) để rà soát, kiểm tra và phát hiện lỗi (Debugging) trong giải pháp kỹ thuật. |
Hoạt động 2: Tìm hiểu cách kiểm tra tính đúng của chương trình
a) Mục tiêu: Giúp HS biết được các cách có thể sử dụng để chứng minh tính đúng của thuật toán và chương trình.
b) Nội dung: GV tổ chức cho HS thực hiện theo các hoạt động trong SGK và nêu được cách kiểm tra tính đúng của chương trình.
c) Sản phẩm: HS nêu các cách có thể sử dụng để chứng minh tính đúng của thuật toán và chương trình.
d) Tổ chức thực hiện:
| HOẠT ĐỘNG CỦA GV VÀ HS | SẢN PHẨM DỰ KIẾN | NLS |
Bước 1: GV chuyển giao nhiệm vụ: - GV đặt vấn đề theo Hoạt động 2 trang 107 SGK: Quan sát chương trình mô tả thuật toán sắp xếp chèn. Hãy thảo luận và đưa ra các lập luận để kiểm tra tính đúng của thuật toán sắp xếp chèn. - GV giới thiệu với HS chương trình thực hiện thuật toán sắp xếp chèn để sắp xếp dãy A cho trước theo thứ tự tăng dần. - GV chia lớp thành 6 nhóm và giao nhiệm vụ cho các nhóm: + Nhóm 1,4: Tìm hiểu và thực hiện Trao đổi 1. Thực hiện kiểm thử chương trình thông qua các bộ test, ghi kết quả xem đúng hay sai, yêu cầu kiểm thử càng nhiều càng tốt. + Nhóm 2,5: Tìm hiểu và thực hiện Trao đổi 2. Chứng minh thuật toán trên là đúng. + Nhóm 3,6: Tìm hiểu và thực hiện Trao đổi 3. Chứng minh tính đúng của thuật toán bằng lí luận toán học. - Sau thời gian thảo luận, GV yêu cầu các nhóm báo cáo kết quả thảo luận và nêu ý kiến xem cách nào là phương pháp đúng nhất để chứng minh tính đúng của thuật toán. - Dựa vào nội dung vừa nêu, GV yêu cầu HS trả lời câu hỏi củng cố trang 108 SGK: + Câu 1: Chương trình sau giải bài toán: Yêu cầu nhập số tự nhiên n và tính tổng 1 + 2 +…+n. 1 n = int(input("Nhập số tự nhiên n: ")) 2 S = 0 3 for i in range(n+1): 4 S = S + i 5 print(S) Chương trình trên có đúng không? + Câu 2: Chương trình sau giải bài toán đếm số các ước số thực sự của số tự nhiên n. 1 def dem(n): 2 count = 0 3 k = 2 4 while k < n: 5 if n%k ==0: 6 count = count + 1 7 k = k + 1 8 return count Chương trình trên là đúng hay sai? Bước 2: HS thực hiện nhiệm vụ học tập: - HS thảo luận nhóm, đọc SGK và trả lời câu hỏi. Bước 3: Báo cáo kết quả hoạt động, thảo luận: - Đại diện nhóm HS trình bày. *Câu hỏi củng cố trang 108 SGK: + Câu 1: Chương trình trên đúng. + Câu 2: Chương trình sai vì chưa tính số 1. - Các nhóm khác nhận xét, bổ sung cho nhóm bạn. Bước 4: Đánh giá kết quả thực hiện: - GV nhận xét, đánh giá kết quả thảo luận của HS. | 2. Kiểm tra tính đúng của chương trình - Chương trình thực hiện thuật toán sắp xếp chèn để sắp xếp dãy A cho trước theo thứ tự tăng dần như sau: 1 def InsertionSort(A,n): 2 for i in range(1,n): 3 value = A[i] 4 k = i – 1 5 #di chuyển các phần tử A[k] > value qua phải 6 while k >= 0 and A[k] > value 7 A[k+1] = A[k] 8 k = k – 1 9 A[k+1] = value - Tính đúng của thuật toán cần được chứng minh bằng lập luận toán học. Sử dụng các bộ dữ liệu kiểm thử có thể làm tăng độ tin cậy của chương trình nhưng chưa chứng minh được tính đúng của thuật toán. | 3.4.NC1a: Vận dụng kỹ năng lập trình để kiểm thử và tinh chỉnh chương trình dựa trên kết quả thực nghiệm. |
Hoạt động 3: Tìm hiểu những tiêu chí đánh giá tính hiệu quả của chương trình
a) Mục tiêu:
- Giúp HS biết và hiểu được hai tiêu chí quan trọng nhất để đánh giá hiệu quả thuật toán và chương trình là thời gian chạy T(n) và không gian bộ nhớ sử dụng S(n).
- Sử dụng được công cụ số để tìm hiểu kiến thức.
b) Nội dung: GV tổ chức cho HS thực hiện theo các hoạt động trong SGK và nêu được các tiêu chí đánh giá tính hiệu quả của chương trình.
c) Sản phẩm: HS nêu được hai tiêu chí quan trọng nhất để đánh giá hiệu quả thuật toán và chương trình.
d) Tổ chức thực hiện:
| HOẠT ĐỘNG CỦA GV VÀ HS | SẢN PHẨM DỰ KIẾN | NLS |
Bước 1: GV chuyển giao nhiệm vụ : - GV đặt về đề dựa vào nội dung Hoạt động 3 trang 108 SGK: Thảo luận về các tiêu chí đánh giá tính hiệu quả của thuật toán hay chương trình giải một bài toán. 1. Tiêu chí quan trọng nhất là thời gian chạy chương trình phải nhanh, không cần quan tâm đến không gian bộ nhớ sử dụng của chương trình. 2. Tiêu chí tiết kiệm bộ nhớ là quan trọng nhất, sau đó mới đến thời gian chạy chương trình. 3. Các tiêu chí 1 và 2 không quan trọng mà quan trọng là chương trình được viết một cách đơn giản, rõ ràng, dễ hiểu và áp dụng. - GV yêu cầu các nhóm thảo luận, nghiên cứu SGK để tìm hiểu về đánh giá hiệu quả chương trình và trả lời câu hỏi: + Hiệu quả hay tính tối ưu của chương trình được xem xét trên cơ sở nào? - GV yêu cầu các nhóm thực hiện đoạn chương trình tính thời gian chạy cụ thể của chương trình mô tả thuật toán chèn theo SGK. - GV chú ý: Thời gian chạy và không gian tính toán của thuật toán được kí hiệu là T(n) và S(n), trong đó n là kích thước đầu vào của bài toán. Nếu đầu vào là 1 dãy thì n là độ dài dãy đã cho. - Trên cơ sở kiến thức vừa nêu, GV yêu cầu HS rút ra những tiêu chí đánh giá tính hiệu quả của chương trình. - GV đặt vấn đề: Hãy viết hai đoạn code cùng giải bài toán “Tính tổng từ 1 đến n”. + Code A: Dùng vòng lặp for (Độ phức tạp O(n)). + Code B: Dùng công thức n*(n+1)/2 (Độ phức tạp O(1)). Sau đó yêu cầu các nhóm sử dụng AI để phân tích hiệu quả thuật toán. - Dựa vào nội dung vừa nêu, GV yêu cầu HS trả lời câu hỏi củng cố trang 110 SGK: + Hai tiêu chí đánh giá độ phức tạp tính toán quan trọng nhất là gì? Bước 2: HS thực hiện nhiệm vụ học tập: - HS thảo luận nhóm, đọc SGK và trả lời câu hỏi. - HS copy hai đoạn code vào Chatbot và nhập lệnh: “So sánh độ phức tạp thuật toán (Time Complexity) của 2 đoạn code này và giải thích tại sao đoạn 2 chạy nhanh hơn khi n rất lớn?” Bước 3: Báo cáo kết quả hoạt động, thảo luận: - Đại diện nhóm HS trình bày. *Câu hỏi củng cố trang 110 SGK: + Hai tiêu chí đánh giá chính độ phức tạp thuật toán là thời gian T(n) và không gian bộ nhớ S(n). - Các nhóm khác nhận xét, bổ sung cho nhóm bạn. Bước 4: Đánh giá kết quả thực hiện: - GV nhận xét, đánh giá kết quả thảo luận của HS. - GV tổng kết kiến thức và yêu cầu HS ghi chép vào vở. | 3. Đánh giá hiệu quả chương trình - Tính hiệu quả của chương trình/thuật toán được xem xét trên cơ sở đánh giá độ phức tạp tính toán. Hai loại độ phức tạp tính toán phổ biến nhất đó là: + Độ phức tạp thời gian được xác định là thời gian thực hiện chương trình/thuật toán. + Độ phức tạp không gian được xác định là tài nguyên của máy tính trong đó có phần bộ nhớ được sử dụng để thực hiện chương trình. - Ngoài ra để đánh giá hiệu quả chương trình đôi khi người ta còn quan tâm tới các tiêu chí như tính dễ hiểu, rõ ràng, ngắn gọn, dễ bảo trì, dễ cài đặt,…của chương trình. - Độ phức tạp tính toán quan trọng nhất là độ phức tạp thời gian có liên quan trực tiếp tới các câu lệnh được thực hiện trong chương trình/thuật toán. | - 3.4.NC1a: Vận dụng kỹ năng lập trình để kiểm thử và tinh chỉnh chương trình dựa trên kết quả thực nghiệm. - 6.2.NC1a: Sử dụng AI để giải thích các khái niệm trừu tượng (Độ phức tạp thuật toán) thông qua ví dụ cụ thể.
|
C. HOẠT ĐỘNG LUYỆN TẬP
a) Mục tiêu: HS củng cố kiến thức về kiểm thử và đánh giá chương trình.
b) Nội dung: HS trả lời câu hỏi trắc nghiệm và hoàn thành bài tập phần Luyện tập SGK trang 103.
c) Sản phẩm học tập: HS trả lời câu hỏi về kiểm thử và đánh giá chương trình.
d) Tổ chức thực hiện:
Bước 1: GV chuyển giao nhiệm vụ:
- GV tổ chức trò chơi trắc nghiệm nhanh trên Quizizz hoặc Kahoot để củng cố toàn bài.
- GV cung cấp mã QR hoặc đường Links cho HS làm Phiếu bài tập, trả lời nhanh một số câu hỏi trắc nghiệm tổng kết bài học.
Câu 1: Hiệu quả hay tính tối ưu của chương trình được xem xét trên cơ sở đánh giá nào?
A. Đánh giá độ phức tạp tính toán.
B. Đánh giá độ phức tạp thời gian.
C. Đánh giá độ phức tạp không gian.
D. Đánh giá độ phức tạp vị trí chương trình.
Câu 2: Vai trò của kiểm thử chương trình là gì?
A. Tăng độ tin cậy của chương trình và chứng minh được tính đúng của thuật toán và chương trình.
B. Tăng độ tin cậy của chương trình nhưng chưa chứng minh được tính đúng của thuật toán và chương trình.
C. Chứng minh được tính đúng của thuật toán và chương trình nhưng không tăng độ tin cậy của chương trình.
D. Tăng độ tin cậy của chương trình và đưa ra những lỗi sai trong chương trình.
Câu 3: Tính đúng của thuật toán cần được chứng minh bằng gì?
A. Lập luận khoa học.
B. Lập luận toán học.
C. Lập luận tin học.
D. Lập luận vật lí.
Câu 4: Để đánh giá hiệu quả chương trình, độ phức tạp tính toán nào quan trọng nhất?
A. Chương trình dễ cài đặt.
B. Chương trình dễ bảo trì.
C. Độ phức tạp không gian.
D. Độ phức tạp thời gian.
Câu 5: Độ phức tạp tính toán phổ biến gồm mấy loại?
A. 2.
B. 3.
C. 4.
D. 5.
- GV tổ chức cho HS làm bài tập phần Luyện tập trang 110 SGK:
Bài 1. Hãy xây dựng các bộ dữ liệu kiểm thử để tìm lỗi cho chương trình tính n! với n là một số nguyên dương nhập từ bàn phím.
1 n = int(input("Nhập số n: "))
2 if n > 0:
3 giaithua=1
4 for i in range(1,n+1):
5 giaithua = giaithua*i
6 print(n,"giai thừa bằng:",giaithua)
Bài 2. Xét hàm mô tả thuật toán tính tổng các số chẵn của một dãy số cho trước.
1 def tongchan(A):
2 S = 0
3 for i in range(len(A)):
4 if A[i] % 2 == 0:
5 S = S + A[i]
6 return S
Tìm hai bộ dữ liệu đầu vào có cùng kích thước của thuật toán trên nhưng có thời gian chạy khác nhau.
Bước 2: HS thực hiện nhiệm vụ học tập:
- HS suy nghĩ, hoàn thành các bài tập GV yêu cầu.
- GV quan sát và hỗ trợ, hướng dẫn.
Bước 3: Báo cáo kết quả hoạt động, thảo luận:
- HS xung phong báo cáo bài tập mình làm.
- Các HS khác nhận xét, bổ sung bài làm của bạn.
Gợi ý trả lời:
| Câu 1 | Câu 2 | Câu 3 | Câu 4 | Câu 5 |
| A | B | B | D | A |
[2.1.NC1a: HS thực hiện các tương tác được xác định rõ ràng với công nghệ số (làm bài tập online) trong lớp học].
Bài 1. Với bài này thì bộ kiểm thử chỉ là một số n tự nhiên bất kì.
Bài 2. Ví dụ với hai bộ dữ liệu đầu vào sau thì thời gian chạy chương trình này sẽ phải khác nhau.
a) Bộ n số chẵn.
b) Bộ n số lẻ.
[3.4.NC1a: Sử dụng ngôn ngữ lập trình để giải quyết bài toán]
Bước 4: Đánh giá kết quả thực hiện:
- GV chữa bài, chốt đáp án, tuyên dương các hoạt động tốt, nhanh và chính xác.
D. HOẠT ĐỘNG VẬN DỤNG
a) Mục tiêu: HS thực hiện làm bài tập Vận dụng để nắm vững kiến thức.
b) Nội dung: HS vận dụng kiến thức đã học và hiểu biết của bản thân để làm bài tập Vận dụng trang 110 SGK.
c) Sản phẩm: Câu trả lời nội dung Vận dụng.
d) Tổ chức thực hiện:
Bước 1: GV chuyển giao nhiệm vụ
- GV yêu cầu HS hoàn thành bài tập phần Vận dụng trang 110 SGK.
Bài 1. Cho dãy các số A = [3, 1, 0, 10, 13, 16, 9, 7, 11].
a) Viết chương trình mô tả thuật toán tìm kiếm phần tử C = 9 của dãy trên. Tính thời gian chính xác thực hiện công việc tìm kiếm này.
b) Giả sử dãy A ở trên đã được sắp xếp theo thứ tự tăng dần: A = [0, 1, 3, 5, 7, 9, 10, 11, 13, 16]. Viết chương trình tìm kiếm phần tử C = 9 theo thuật toán tìm kiếm nhị phân. Tính thời gian thực hiện thuật toán. So sánh với kết quả tìm kiếm ở câu a.
Bài 2. Viết ba chương trình mô phỏng các thuật toán sắp xếp chèn, sắp xếp chọn và sắp xếp nổi bọt mà em đã biết. Cho biết thời gian thực hiện các chương trình trên với bộ dữ liệu đầu vào là dãy A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 11].
Bước 2: HS thực hiện nhiệm vụ học tập
- HS tự tìm hiểu, đưa ra ý kiến.
- GV điều hành, quan sát, hỗ trợ.
Bước 3: Báo cáo kết quả hoạt động, thảo luận
- HS trình bày kết quả.
Kết quả:
Bài 1: Chương trình tính thời gian thực tế của thuật toán tìm kiếm tuần tự trên cùng một dãy có thể như sau:
1 from time import perf_counter
2 def LinearSearch(A,K):
3 for i in range(len(A)):
4 if A[i] == K:
5 return i
6 return -1
7 deft BinarySearch(A,K):
8 left = 0
9 right = len(A) – 1
10 while left <= right:
11 mid = (left + right)//2
12 if A[mid] == K:
13 return mid
14 elif A[mid] < K:
15 left = mid + 1
16 else:
17 right = mid – 1
18 return -1
19
20 A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 11]
21 K = 9
22 t1 = perf_counter()
23 LinearSearch(A,K)
24 t2 = perf_counter()
25 print("Tìm kiếm tuần tự:", round(t2-t1,50))
26 B = sorted(A)
27 t1 = perf_counter()
28 BinarySearch(B,K)
29 t2 = perf_counter()
30 print("Tìm kiếm nhị phân:", round(t2-t1,50))
Bài 2: Chương trình gộp tính thời gian thực tế cho ba thuật toán sắp xếp chèn, sắp xếp chọn, sắp xếp nổi bọt như sau:
1 from time import perf_counter
2 def InsertionSort(A):
3 n = len(A)
4 for i in range(1,n):
5 value = A[i]
6 j = i-1
7 while j >= 0 and A[j] > value:
8 A[j+1] = A[j]
9 j = j – 1
10 A[j+1] = value
11 deft SelectionSort(A):
12 n = len(A)
13 for i in range(n-1):
14 iMin = i
15 for j in range(i+1,n):
16 if A[j] < A[iMin]:
17 iMin = j
18 A[i],A[iMin] = A[iMin],A[i]
19 deft BubbleSort(A):
20 n = len(A)
21 for i in range(n-1):
22 for j in range(n-1-i):
23 if A[j] > A[j+1]:
24 A[j],A[j+1] = A[j+1],A[j]
25
26
27 A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 11]
28 A1,A2,A3 = A.copy(),A.copy(), A.copy()
29 t1 = perf_counter()
30 InsertionSort(A1)
31 t2 = perf_counter()
32 print("Sắp xếp chèn:",t2-t1)
33 t1 = perf_counter()
34 SelectionSort(A)
35 t2 = perf_counter()
36 print("sắp xếp chọn:",t2-t1)
37 t1 = perf_counter()
38 BubbleSort(A)
39 t2 = perf_counter()
40 print("sắp xếp nổi bọt:",t2-t1)
Bước 4: Đánh giá kết quả thực hiện
- GV nhận xét, đánh giá, đưa ra một vài ý mà HS còn thiếu, chốt đáp án.
- GV tổng kết tiết học.
[3.4.NC1a: Sử dụng ngôn ngữ lập trình để giải quyết bài toán]
* HƯỚNG DẪN VỀ NHÀ
- Ghi nhớ kiến thức trong bài.
- Hoàn thành các bài tập trong SBT.
- Chuẩn bị bài mới Bài 24 – Đánh giá độ phức tạp thời gian thuật toán.

Đủ kho tài liệu môn học
=> Tài liệu sẽ được gửi ngay và luôn
Cách tải:
- Bước 1: Chuyển phí vào STK: 1214136868686 - cty Fidutech - MB
- Bước 2: Nhắn tin tới Zalo Fidutech - nhấn vào đây để thông báo và nhận tài liệu
=> Giáo án tin học 11 theo định hướng khoa học máy tính kết nối tri thức
Từ khóa: Giáo án tích hợp NLS Tin học 11 Khoa học máy tính Kết, giáo án Tin học 11 Kết nối tích hợp năng lực số, giáo án tích hợp AI mới 2026 môn Khoa học máy tính 11 Kết nối tri thức