Giáo án Tin học 11 · Chung, Khoa học máy tính và Tin học ứng dụng
Tin họcLớp 11Phần 6. KHMT · Chủ đề 6. Kĩ thuật lập trình · Chọn định hướng, không bắt buộc THUD

Giáo án Bài 31 · KHMT. Thực hành thiết lập thư viện chương trình

Kế hoạch bài dạy theo mẫu Công văn 5512/BGDĐT-GDTrH · 1 tiết (45 phút)

I. Mục tiêu

1. Kiến thức

  • Nêu được cấu trúc hợp đồng của hàm tong(a) và dem_duong(a): tên hàm, tham số là danh sách số, giá trị trả về và quy ước khi danh sách rỗng.
  • Giải thích được vì sao tong([]) bằng 0 và dem_duong([-2,0]) bằng 0 theo ý nghĩa đã công bố của từng hàm.
  • Vận dụng được cách kiểm tra thư viện theo miền đầu vào (thường, rỗng, âm, bằng 0) và kiểm tra bằng chương trình main.py thật trước khi bàn giao.
  • Nêu được quy trình bàn giao thư viện gồm ghi giao diện, cài đặt và thử, tích hợp main, bàn giao cùng kết quả kiểm tra.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: HS tự viết mã hai hàm theo hợp đồng trước khi đối chiếu với mẫu, tự kiểm tra kết quả ba bộ dữ liệu và tự đánh giá sản phẩm theo tiêu chí.
  • Giao tiếp và hợp tác: HS làm việc cặp đôi, trao đổi về hợp đồng hàm, thống nhất kết quả đối chiếu tay và trình bày trước lớp.
  • Giải quyết vấn đề và sáng tạo: HS phân tích nguyên nhân khi main báo lỗi, đề xuất các bước kiểm tra phù hợp và không kết luận sai thuật toán khi chưa chạy kiểm thử.

b) Năng lực đặc thù

  • Sử dụng và quản lí các phương tiện công nghệ thông tin và truyền thông: sử dụng môi trường Python để tạo tệp thongke_mau.py và main.py, chạy chương trình và đọc kết quả in ra.
  • Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông: chạy main.py với ba bộ dữ liệu, so sánh kết quả với dự đoán và xác định nguyên nhân khi có sai lệch.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: sử dụng trang bài học số NeoEdu để luyện tập tương tác và tự kiểm tra kiến thức.
  • Hợp tác trong môi trường số: cùng nhóm chia sẻ tệp mã, thống nhất phương án và phối hợp kiểm tra sản phẩm của nhau.

3. Phẩm chất

  • Chăm chỉ: HS hoàn thành đầy đủ mã hai hàm, chạy đủ ba bộ dữ liệu và ghi kết quả đối chiếu tay vào phiếu.
  • Trách nhiệm: HS kiểm tra cấu trúc tệp và ghi rõ giới hạn của thư viện trước khi bàn giao, không bỏ qua bước kiểm tra tích hợp.
  • Trung thực: HS báo cáo đúng kết quả chạy thực tế, không tự sửa kết quả cho khớp dự đoán và không tải mô đun lạ để thay thế khi gặp lỗi.

II. Thiết bị dạy học và học liệu

1. Giáo viên

  • Máy tính, máy chiếu, phần mềm soạn thảo và trình thông dịch Python để chạy thử mã.
  • Slide nêu nhiệm vụ, mô tả hợp đồng hai hàm và ba bộ dữ liệu [], [-2,0], [3,5,-1].
  • Tệp mẫu thongke_mau.py và main.py (chỉ dùng để đối chiếu sau khi HS tự viết).
  • Phiếu học tập số 1 và số 2 (in hoặc chiếu).
  • Học liệu số NeoEdu: bài giảng, ví dụ và bài tập tương tác của bài 31 tại neoedu.vn/learn/11/informatics/bai-31-khmt-thuc-hanh-thiet-lap-thu-vien-chuong-trinh

2. Học sinh

  • Máy tính có cài Python (hoặc truy cập môi trường lập trình trực tuyến do GV hướng dẫn), tài khoản NeoEdu.
  • Vở ghi, bút, giấy nháp để dự đoán kết quả.
  • Phiếu học tập số 1 và số 2 (GV phát hoặc HS tải về).

III. Tiến trình dạy học

Hoạt động 1: Mở đầu · 5 phút

Dự đoán kết quả ba bộ dữ liệu

a) Mục tiêu

Nêu được nhiệm vụ hoàn thiện hai tệp thongke_mau.py và main.py, đồng thời dự đoán kết quả của ba bộ dữ liệu.

b) Nội dung

HS đọc nhiệm vụ trên slide: hoàn thiện thư viện gồm hai hàm tong(a) và dem_duong(a) và chương trình main.py xử lí ba bộ dữ liệu [], [-2,0], [3,5,-1]. HS dự đoán kết quả của từng bộ và ghi vào giấy nháp.
Câu hỏi GV đặt ra: "Tổng của một danh sách rỗng là bao nhiêu? Vì sao?"; "Trong danh sách [-2,0] có bao nhiêu số lớn hơn 0?"; "Nếu chỉ kiểm tra từng biểu thức riêng lẻ thì có đủ để bàn giao không?"

c) Sản phẩm

Dự đoán dự kiến của HS: [] cho 0 0; [-2,0] cho -2 0; [3,5,-1] cho 7 2. Kiến thức HS nêu được: tổng của danh sách rỗng được quy ước bằng 0; đếm dương chỉ tính các số lớn hơn 0; cần kiểm tra bằng chương trình thật trước khi bàn giao.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chiếu nhiệm vụ và ba bộ dữ liệu, nêu yêu cầu dự đoán kết quả trước khi chạy chương trình.

    Học sinh

    HS đọc nhiệm vụ, ghi dự đoán kết quả của từng bộ ra giấy nháp.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV mời HS làm việc cá nhân khoảng 2 phút, sau đó tổ chức trao đổi nhanh theo cặp đôi.

    Học sinh

    HS so sánh dự đoán với bạn bên cạnh và giải thích lí do. Dự kiến HS trả lời: "Danh sách rỗng không có phần tử nào nên tổng là 0"; "Trong [-2,0] chỉ có 0 và -2, không có số dương nên đếm được 0".

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 đến 3 cặp đọc dự đoán và lí do, ghi nhanh lên bảng.

    Học sinh

    Đại diện cặp trình bày dự đoán cho ba bộ dữ liệu và giải thích ngắn gọn.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV nhận xét và nêu rằng các dự đoán sẽ được kiểm tra lại ở hoạt động sau bằng chương trình thật. GV dẫn vào nội dung: xây dựng hợp đồng và cài đặt hai hàm.

    Học sinh

    HS ghi nhận nhiệm vụ của tiết học và giữ lại dự đoán để đối chiếu.

Hoạt động 2.1: Hình thành kiến thức mới · 12 phút

Ghi hợp đồng và cài đặt hai hàm

a) Mục tiêu

Giải thích được hợp đồng của hàm tong(a) và dem_duong(a) và cài đặt được hai hàm này trong tệp thongke_mau.py đúng với ý nghĩa đã công bố.

b) Nội dung

HS làm việc theo nhóm 2 người, ghi hợp đồng cho hai hàm vào Phiếu học tập số 1, sau đó tự viết mã cho từng hàm theo mô tả:

  • tong(a): cộng mọi phần tử của danh sách a; danh sách rỗng cho kết quả 0.
  • dem_duong(a): đếm các phần tử lớn hơn 0 trong danh sách a; số 0 không được tính.
    Câu hỏi GV đặt ra: "Biến tổng cần được khởi tạo bằng giá trị nào để danh sách rỗng cho kết quả 0?"; "Vì sao phần tử 0 không được tính vào số lượng dương?"; "Nếu đổi tên hàm hoặc đổi ý nghĩa trường hợp 0 thì điều gì xảy ra với những chương trình đã dùng thư viện này?"

c) Sản phẩm

Bảng hợp đồng HS điền được:

  • tong(a): đầu vào là danh sách số a; đầu ra là tổng các phần tử; khi a rỗng thì trả về 0.
  • dem_duong(a): đầu vào là danh sách số a; đầu ra là số phần tử lớn hơn 0; khi a rỗng thì trả về 0; số 0 không được tính.
    Mã tệp thongke_mau.py gồm hai hàm, khởi tạo s=0 và d=0, duyệt bằng vòng lặp for và cộng dồn đúng điều kiện.
    Kiến thức HS rút ra: hợp đồng hàm phải nêu rõ quy ước với trường hợp rỗng; không tự ý đổi tên hàm hoặc ý nghĩa đã công bố.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chiếu mô tả hai hàm, phát Phiếu học tập số 1 và yêu cầu nhóm tự viết mã trước khi xem mô hình mẫu.

    Học sinh

    HS nhận phiếu, đọc mô tả hợp đồng và chuẩn bị máy tính để soạn mã.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV đi quanh lớp, hỗ trợ nhóm gặp khó khăn về cú pháp và vòng lặp; gợi ý bằng câu hỏi thay vì đưa đáp án.

    Học sinh

    HS viết hàm tong với s=0 và cộng dồn; viết hàm dem_duong với d=0 và tăng d khi x>0. Dự kiến HS hỏi: "Nếu không khởi tạo s thì có lỗi không?"; HS tự chạy thử và sửa lỗi thụt đầu dòng.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 nhóm trình bày hợp đồng và đoạn mã, cả lớp nhận xét về quy ước trường hợp rỗng và số 0.

    Học sinh

    Đại diện nhóm đọc hợp đồng: tong trả về 0 khi rỗng; dem_duong không tính 0. Các nhóm khác góp ý, bổ sung.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chiếu mô hình mẫu thongke_mau.py để HS đối chiếu, chốt hợp đồng hai hàm và nhấn mạnh: thay đổi nội bộ không được âm thầm đổi tên hàm hoặc ý nghĩa đã công bố.

    Học sinh

    HS so sánh mã của nhóm với mẫu, sửa những chỗ chưa khớp và ghi nhận quy ước trong vở.

Hoạt động 2.2: Hình thành kiến thức mới · 8 phút

Kiểm tra đầu vào và chạy main.py

a) Mục tiêu

Vận dụng được cách kiểm tra theo miền đầu vào và giải thích được kết quả in ra của main.py với ba bộ dữ liệu.

b) Nội dung

HS tạo tệp main.py với lệnh import thongke_mau và vòng lặp for duyệt ba bộ [], [-2,0], [3,5,-1], in ra tổng và số đếm dương của mỗi bộ. Sau khi chạy, HS đối chiếu kết quả với dự đoán ở phần mở đầu và điền Phiếu học tập số 2.
Câu hỏi GV đặt ra: "Vì sao dòng ứng với [-2,0] in ra số dương bằng 0?"; "Kết quả [3,5,-1] có khớp với đối chiếu tay không? Nếu không khớp thì kiểm tra ở đâu?"

c) Sản phẩm

Kết quả chạy main.py phải là ba dòng:
0 0
-2 0
7 2
Giải thích: [] không có phần tử nên tổng là 0 và số dương là 0; [-2,0] có tổng -2 và không có số dương; [3,5,-1] có tổng 3+5+(-1)=7 và có hai số dương là 3 và 5.
Kiến thức HS rút ra: cần kiểm tra thư viện bằng chương trình thật, nhập từ main, không chỉ thử từng biểu thức riêng lẻ.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV hướng dẫn tạo main.py và phát Phiếu học tập số 2 để HS điền kết quả đối chiếu tay.

    Học sinh

    HS tạo tệp main.py cùng thư mục với thongke_mau.py, viết lệnh import và vòng lặp for.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV nhắc HS kiểm tra tên tệp và đặt cùng thư mục nếu chương trình báo lỗi import; theo dõi các nhóm chạy chương trình.

    Học sinh

    HS chạy main.py, so sánh ba dòng kết quả với bảng đối chiếu tay đã điền trên phiếu. Dự kiến HS nhận xét: "Kết quả khớp với dự đoán".

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời một nhóm đọc kết quả và giải thích từng dòng; hỏi thêm nếu có nhóm nào sai lệch.

    Học sinh

    Đại diện nhóm đọc ba dòng kết quả và giải thích ngắn gọn về tổng và số đếm dương của từng bộ.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt: bàn giao phải có kết quả chạy từ chương trình thật và kiểm tra cả các trường hợp rỗng, âm, bằng 0 theo miền bài.

    Học sinh

    HS ghi kết quả kiểm tra vào vở và đối chiếu lại nếu còn sai.

Hoạt động 3: Luyện tập · 10 phút

Trắc nghiệm và đúng sai về hợp đồng, bàn giao

a) Mục tiêu

Vận dụng được kiến thức về hợp đồng hàm, kiểm tra đầu vào và điều kiện bàn giao thông qua các câu hỏi tương tác.

b) Nội dung

HS làm việc theo cặp đôi, trả lời các câu hỏi sau và kiểm tra đáp án trên trang bài tập tương tác NeoEdu:

  1. Hàm tong(a) có cộng mọi phần tử của a; hãy cho biết tong([]) bằng bao nhiêu.
  2. Tính tong([-2,0]).
  3. Tính dem_duong([3,5,-1]).
  4. Đúng hay sai: đổi hàm đếm dương thành đếm không âm mà không báo vẫn giữ đúng hợp đồng.
  5. Để chương trình chạy, bàn giao cần gì? A. Cả mô đun và main ở vị trí import được; B. Chỉ ảnh chụp mã của mô đun; C. Chỉ main mà thiếu mã phụ thuộc; D. Chỉ tệp đầu ra đã lưu.
  6. Sắp xếp các bước bàn giao: ghi giao diện, cài đặt và thử, tích hợp main, bàn giao cùng kết quả kiểm tra.

c) Sản phẩm

Đáp án:

  1. tong([]) = 0, vì không cộng phần tử nào và tổng khởi tạo bằng 0.
  2. tong([-2,0]) = -2, vì -2+0=-2.
  3. dem_duong([3,5,-1]) = 2, vì chỉ 3 và 5 là số dương.
  4. Sai, vì ý nghĩa trường hợp 0 đã thay đổi; hợp đồng bị phá vỡ.
  5. Đáp án A, vì phải có mã phụ thuộc đi kèm.
  6. Thứ tự đúng: ghi giao diện → cài đặt và thử → tích hợp main → bàn giao cùng kết quả kiểm tra. Không được bỏ bước kiểm tra tích hợp.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV nêu yêu cầu làm việc theo cặp đôi, phát đường dẫn bài tập tương tác NeoEdu và nhắc thời gian 10 phút.

    Học sinh

    HS mở trang bài học số hoặc phiếu, nhận câu hỏi và chuẩn bị trả lời.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV theo dõi, nhắc HS dùng kết quả đã chạy ở hoạt động trước để trả lời câu 1 đến 3.

    Học sinh

    HS làm từng câu, thảo luận với bạn, dùng kết quả main.py để kiểm chứng. Dự kiến HS chọn câu 4 là "Sai" và giải thích: "Số 0 bị tính vào, nên đếm sai ý nghĩa đã công bố".

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV gọi ngẫu nhiên 3 cặp trình bày đáp án câu 4, 5 và 6; yêu cầu giải thích lí do.

    Học sinh

    Đại diện cặp trình bày đáp án và lí giải. Dự kiến HS chọn A ở câu 5 và nêu: "Thiếu mã phụ thuộc thì main không chạy được".

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV công bố đáp án đầy đủ và chốt: giữ nguyên hợp đồng khi thay đổi nội bộ; bàn giao phải đủ mã phụ thuộc và kết quả kiểm tra.

    Học sinh

    HS đối chiếu đáp án, sửa lỗi sai và ghi nhận ý chính vào vở.

Hoạt động 4: Vận dụng · 10 phút

Bàn giao thư viện và xử lí lỗi ModuleNotFoundError

a) Mục tiêu

Bàn giao được gói thư viện gồm mã, kết quả kiểm tra và giới hạn; nêu được các bước kiểm tra khi main báo ModuleNotFoundError mà không kết luận sai thuật toán.

b) Nội dung

HS hoàn thiện gói bàn giao gồm tệp thongke_mau.py, tệp main.py, ba dòng kết quả kiểm tra và ghi chú giới hạn (chỉ xét các số theo miền bài).
Tình huống: GV đưa ra thông báo lỗi ModuleNotFoundError khi chạy main.py. HS đề xuất các bước kiểm tra.
Câu hỏi GV đặt ra: "Những điều cần kiểm tra đầu tiên khi gặp lỗi này là gì?"; "Vì sao lúc này chưa thể kết luận thuật toán sai?"

c) Sản phẩm

Gói bàn giao hoàn chỉnh gồm: hai tệp mã, ba dòng kết quả 0 0; -2 0; 7 2 và ghi chú giới hạn.
Các bước kiểm tra khi có ModuleNotFoundError: kiểm tra tên tệp và đuôi .py, kiểm tra thư mục chứa hai tệp, kiểm tra môi trường Python và vị trí tìm mô đun.
Kết luận HS rút ra: thuật toán chưa được chạy nên chưa kết luận sai; không tải mô đun lạ trùng tên để thay thế.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV nêu tình huống lỗi ModuleNotFoundError và yêu cầu nhóm lập danh sách các kiểm tra cần thực hiện trước khi sửa mã.

    Học sinh

    HS nhận tình huống, thảo luận nhóm và ghi các bước kiểm tra vào phiếu.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV hướng dẫn HS kiểm tra thư mục và tên tệp, nhắc không đổi thuật toán khi chưa xác định được nguyên nhân.

    Học sinh

    HS rà soát tên tệp, thư mục và môi trường Python. Dự kiến HS nêu: "Kiểm tra xem tệp có đúng là thongke_mau.py chứ không phải thongke_mau.py.txt".

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 nhóm trình bày danh sách kiểm tra và nêu vì sao chưa kết luận thuật toán sai.

    Học sinh

    Đại diện nhóm trình bày các bước kiểm tra và giải thích: "Thuật toán chưa được chạy được nên chưa thể kết luận".

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt quy trình bàn giao: ghi giao diện, cài đặt và thử, tích hợp main, bàn giao cùng kết quả kiểm tra và giới hạn. Nhấn mạnh trách nhiệm trung thực khi báo cáo kết quả.

    Học sinh

    HS ghi quy trình bàn giao và các bước xử lí lỗi vào vở, hoàn thiện gói bàn giao của nhóm.

Phiếu học tập

Phiếu học tập số 1

Nhiệm vụ: Ghi hợp đồng và viết mã cho hai hàm trong tệp thongke_mau.py.

  • Bảng hợp đồng hàm tong(a):
    • Tên hàm:
    • Đầu vào (a):
    • Đầu ra:
    • Quy ước khi a rỗng:
  • Bảng hợp đồng hàm dem_duong(a):
    • Tên hàm:
    • Đầu vào (a):
    • Đầu ra:
    • Quy ước khi a rỗng:
    • Số 0 có được tính không? Vì sao?
  • Viết mã hàm tong: khởi tạo biến tổng bằng giá trị nào? Vì sao?
  • Viết mã hàm dem_duong: điều kiện đếm là gì?
  • Đối chiếu với mô hình mẫu: nhóm có điểm nào khác? Sửa lại như thế nào?

Phiếu học tập số 2

Nhiệm vụ: Chạy main.py với ba bộ dữ liệu và đối chiếu tay.

  • Bảng đối chiếu:
    • Bộ [] : dự đoán ..... ; kết quả chạy ..... ; khớp? (Có/Không)
    • Bộ [-2,0] : dự đoán ..... ; kết quả chạy ..... ; khớp? (Có/Không)
    • Bộ [3,5,-1] : dự đoán ..... ; kết quả chạy ..... ; khớp? (Có/Không)
  • Giải thích kết quả dòng thứ hai (bộ [-2,0]): vì sao số dương bằng 0?
  • Nếu có dòng không khớp, nhóm kiểm tra ở đâu trước: tên tệp, mã hàm, hay dữ liệu đầu vào?

Hướng dẫn về nhà

  • Hoàn thiện gói bàn giao gồm tệp thongke_mau.py, main.py, ba dòng kết quả và ghi chú giới hạn; tự kiểm tra theo thang chấm: mô đun đầy đủ và đúng hợp đồng (0,35 điểm), main xử lí ba bộ (0,25 điểm), ba dòng kết quả 0 0; -2 0; 7 2 (0,3 điểm), cấu trúc tệp và ghi chú giới hạn (0,1 điểm).
  • Thử thêm một bộ dữ liệu khác (ví dụ danh sách chỉ có số âm hoặc chỉ có số 0) và tự dự đoán kết quả trước khi chạy; ghi lại kết quả đối chiếu và giải thích vì sao khớp hoặc không khớp.
  • Viết ngắn gọn (3 đến 5 dòng) các bước kiểm tra cần làm khi main báo ModuleNotFoundError, nhấn mạnh không tải mô đun lạ trùng tên để thay thế và chưa kết luận thuật toán khi chưa chạy kiểm thử.
  • Truy cập bài 31 trên trang NeoEdu để làm thêm bài tập tương tác và xem lại ví dụ về bàn giao thư viện.

Giáo án do NeoEdu soạn với sự hỗ trợ của AI, dựa trên nội dung bài học trên Học liệu. Thầy cô nên đọc lại và điều chỉnh cho phù hợp với học sinh của mình; bản Word để sửa trực tiếp.