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 28 · KHMT. Thiết kế chương trình theo mô đun

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 khái niệm mô đun trong chương trình: phần có trách nhiệm riêng và giao diện (đầu vào, đầu ra) rõ ràng.
  • Giải thích được vì sao hàm nên nhận tham số, trả kết quả và hạn chế phụ thuộc trạng thái toàn cục.
  • Giải thích được lợi ích của việc tách nhập, xử lí, xuất khi kiểm thử phần tính toán không cần bàn phím.
  • Vận dụng được cách chia chương trình theo chức năng có ý nghĩa để thiết kế hai mô đun cho bài toán tính tổng số dương và báo cáo kết quả.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: HS đọc nội dung bài học, tự dự đoán kết quả chương trình rồi kiểm chứng bằng thực thi và tự đối chiếu với đáp án.
  • Giao tiếp và hợp tác: HS làm việc theo cặp đôi, trao đổi về trách nhiệm từng hàm và trình bày lập luận trước lớp.
  • Giải quyết vấn đề và sáng tạo: HS đề xuất cách sửa hàm đọc dữ liệu tương tác thành hàm nhận tham số, kiểm thử với dữ liệu mẫu [-3,4,9].

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

  • NLc Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông: HS dùng môi trường chạy Python hoặc bài tập tương tác để kiểm chứng kết quả của mô đun và phát hiện lỗi thiết kế.
  • NLd Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: HS tra cứu bài giảng và bài tập tương tác trên trang bài học NeoEdu để tự kiểm tra kiến thức.
  • NLe Hợp tác trong môi trường số: HS cùng nhóm đôi chia sẻ mã và kết quả qua màn hình hoặc phiếu điện tử, thống nhất phương án thiết kế.

3. Phẩm chất

  • Chăm chỉ: HS kiên trì đọc, dự đoán và kiểm chứng từng chương trình mẫu, không bỏ qua các ca đầu vào rỗng và không có số dương.
  • Trách nhiệm: HS hoàn thành đầy đủ phần việc của cặp đôi và phiếu học tập, tự rà soát mã trước khi nộp.
  • Trung thực: HS ghi đúng kết quả quan sát khi chạy chương trình, không sao chép kết quả của bạn khi chưa kiểm chứng.

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, bảng phụ ghi đoạn chương trình mẫu và các bài tập.
  • Môi trường chạy Python (IDE hoặc trình thông dịch trực tuyến) để thực thi chương trình mẫu.
  • Phiếu học tập số 1 (in hoặc chiếu).
  • Học liệu số NeoEdu: trang bài học có bài giảng, ví dụ và bài tập tương tác, địa chỉ neoedu.vn/learn/11/informatics/bai-28-khmt-thiet-ke-chuong-trinh-theo-mo-dun.

2. Học sinh

  • Sách giáo khoa Tin học 11 (Kết nối tri thức với cuộc sống).
  • Vở ghi, bút, giấy nháp.
  • Máy tính hoặc điện thoại có truy cập trang NeoEdu và môi trường chạy Python (nếu có).

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

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

Chương trình một khối: khó kiểm thử ở đâu?

a) Mục tiêu

HS nhận ra hạn chế của chương trình viết gộp nhập, xử lí và xuất trong một đoạn, từ đó xác định nhu cầu mô đun hóa.

b) Nội dung

GV mô tả một chương trình giả định: một đoạn mã vừa yêu cầu người dùng nhập dãy số từ bàn phím, vừa tính tổng các số dương bằng vòng lặp, vừa in kết quả ngay trong cùng đoạn. HS trả lời hai câu hỏi: (1) Muốn thử phần tính tổng với dãy [-3,4,9] thì phải làm gì? (2) Nếu muốn sửa cách nhập dữ liệu thì có ảnh hưởng gì đến phần tính không?

c) Sản phẩm

HS nêu được ít nhất hai khó khăn: phải nhập tay mỗi lần kiểm thử, khó chạy tự động nhiều ca; sửa phần nhập có thể làm sai phần tính vì hai phần lẫn vào nhau. Từ đó HS nhận ra cần tách phần tính thành một hàm nhận dãy và trả kết quả.

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 đoạn mô tả chương trình gộp nhập, tính và xuất. GV nêu hai câu hỏi và yêu cầu HS suy nghĩ 1 phút.

    Học sinh

    HS lắng nghe, đọc đoạn mô tả trên bảng, chuẩn bị ý kiến cá nhân.

  2. Giáo viên

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

    GV quan sát, gợi ý nếu HS chưa rõ: Nếu muốn thử nhiều dãy khác nhau thì sao?

    Học sinh

    HS suy nghĩ, ghi nhanh 1 đến 2 ý vào nháp. Dự kiến: Phải nhập lại từ bàn phím nhiều lần; khó thử đúng phần tính khi không có đầu vào cố định.

  3. Giáo viên

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

    GV mời 2 HS trình bày, ghi ý chính lên bảng.

    Học sinh

    HS trình bày: Phải nhập tay, chậm và dễ sai; sửa phần nhập có thể làm hỏng phần tính.

  4. Giáo viên

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

    GV nhận xét và dẫn vào bài: Để kiểm thử dễ dàng, ta cần tách chương trình thành các mô đun có trách nhiệm và giao diện rõ ràng.

    Học sinh

    HS ghi tên bài Bài 28: Thiết kế chương trình theo mô đun vào vở.

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

Mô đun hóa: trách nhiệm, giao diện và tham số

a) Mục tiêu

HS giải thích được khái niệm mô đun, giao diện hàm, lợi ích của việc nhận tham số và trả kết quả, và việc tách nhập, xử lí, xuất.

b) Nội dung

HS làm việc theo cặp đôi, đọc mục Hiểu cách hoạt động trong sách hoặc trên trang NeoEdu, sau đó hoàn thành Phiếu học tập số 1 gồm năm câu: (1) Mô đun là gì? (2) Giao diện của hàm gồm những gì? (3) Vì sao hàm nên nhận tham số và trả kết quả, hạn chế biến toàn cục? (4) Tách nhập, xử lí, xuất giúp ích gì khi kiểm thử? (5) Vì sao không nên chia chương trình quá nhỏ?

c) Sản phẩm

Đáp án mong đợi: (1) Mô đun là phần chương trình có trách nhiệm riêng, có giao diện rõ ràng. (2) Giao diện gồm đầu vào (tham số), đầu ra (giá trị trả về) và điều kiện sử dụng. (3) Nhận tham số và trả kết quả giúp hàm độc lập, dễ dùng lại và kiểm thử, không phụ thuộc trạng thái bên ngoài. (4) Có thể truyền dữ liệu trực tiếp vào phần xử lí mà không cần bàn phím, nên kiểm thử thuận tiện. (5) Chia quá nhỏ làm chương trình rối, khó theo dõi; nên chia theo chức năng có ý nghĩa.

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

  1. Giáo viên

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

    GV phát Phiếu học tập số 1, nêu yêu cầu: đọc mục Hiểu cách hoạt động, trao đổi trong cặp đôi và điền đáp án vào phiếu trong 8 phút.

    Học sinh

    HS nhận phiếu, đọc tài liệu, xác định từ khóa: trách nhiệm, giao diện, tham số, kết quả, toàn cục.

  2. Giáo viên

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

    GV đi quanh lớp, hỏi: Nếu hàm tự đọc bàn phím thì có kiểm thử được bằng dữ liệu cố định không?

    Học sinh

    HS thảo luận và điền phiếu. Dự kiến: Không kiểm thử được một cách tự động, vì cần nhập tay mỗi lần.

  3. Giáo viên

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

    GV mời 2 cặp trình bày câu 2 và câu 4, các cặp khác bổ sung.

    Học sinh

    HS trình bày: Giao diện gồm tham số vào, giá trị ra; tách nhập khỏi xử lí giúp truyền dữ liệu trực tiếp để thử.

  4. Giáo viên

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

    GV chốt: mô đun có trách nhiệm và giao diện rõ; hàm nhận tham số, trả kết quả; tách nhập, xử lí, xuất; chia theo chức năng có ý nghĩa, không chia quá nhỏ. GV ghi Ghi nhớ lên bảng: Mô đun hóa tách chương trình thành phần có trách nhiệm và giao diện rõ.

    Học sinh

    HS hoàn thiện phiếu, ghi Ghi nhớ vào vở.

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

Đọc và kiểm chứng chương trình mẫu

a) Mục tiêu

HS phân tích trách nhiệm của từng hàm trong chương trình mẫu, dự đoán và kiểm chứng kết quả với dữ liệu cố định [-3,4,9].

b) Nội dung

GV trình chiếu chương trình mẫu gồm hàm tong_duong(a) tính tổng các số dương trong dãy a và hàm bao_cao(a) gọi tong_duong(a), rồi in kết quả bao_cao([-3,4,9]). HS (1) dự đoán kết quả trước khi chạy; (2) chạy chương trình trên máy hoặc trên NeoEdu; (3) trả lời: hàm nào có trách nhiệm gì, phần tính có đọc bàn phím không, có sửa dãy a không?

c) Sản phẩm

Kết quả in ra là 13 (vì chỉ cộng 4 và 9, bỏ qua -3). Hàm tong_duong nhận dãy, duyệt các phần tử, cộng các số dương và trả về tổng; không đọc bàn phím, không sửa dãy nguồn. Hàm bao_cao nhận dãy và trả kết quả của tong_duong, là lớp giao diện đơn giản. Kết quả này có thể kiểm chứng lặp lại vì đầu vào cố định.

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 chương trình mẫu và nêu ba câu hỏi: dự đoán kết quả, chạy kiểm chứng, nêu trách nhiệm từng hàm.

    Học sinh

    HS đọc mã, dự đoán kết quả và ghi vào nháp.

  2. Giáo viên

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

    GV hướng dẫn HS chạy chương trình, nhắc: Thử thay đổi dữ liệu thành [] hoặc [-4,-1] xem kết quả thế nào.

    Học sinh

    HS chạy chương trình. Dự kiến: [] cho kết quả 0; [-4,-1] cho kết quả 0.

  3. Giáo viên

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

    GV mời 1 HS trình bày trách nhiệm từng hàm, 1 HS nêu kết quả các ca thử.

    Học sinh

    HS trả lời: tong_duong tính tổng số dương và trả kết quả; bao_cao gọi hàm tính và trả số; phần tính không sửa nguồn.

  4. Giáo viên

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

    GV nhận xét: chương trình mẫu tách hai trách nhiệm, giao diện rõ, kiểm thử được bằng dữ liệu mẫu. GV nhấn mạnh: tránh để hàm tự nhập dữ liệu khi cần kiểm thử.

    Học sinh

    HS ghi kết luận: kết quả với [-3,4,9] là 13; chương trình chia thành hai mô đun có trách nhiệm rõ ràng.

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

Đoán kết quả và nhận diện giao diện mô đun

a) Mục tiêu

HS vận dụng kiến thức về hàm nhận tham số, trả kết quả và tách xử lí khỏi nhập để làm bài tập trắc nghiệm, đúng sai và sắp xếp.

b) Nội dung

HS làm các bài tập sau, có thể dùng bài tập tương tác trên NeoEdu: Bài 1: Đoán kết quả của print(f([1,-2,5])) với f(a) = sum(x for x in a if x>0). Bài 2: Đoán kết quả của print(f([])) với cùng hàm f. Bài 3: Đoán kết quả của print(f([-4,-1])) với cùng hàm f. Bài 4: Giao diện hàm nên rõ điều gì? A. Đầu vào, đầu ra và điều kiện; B. Chỉ màu mã; C. Chỉ tên người viết; D. Mọi mật khẩu. Bài 5: Đúng hay sai: tách xử lí khỏi nhập giúp kiểm thử thuận tiện. Bài 6: Sắp xếp các bước theo phương pháp giải: Cài và thử từng phần; Chia chức năng theo trách nhiệm; Tích hợp kiểm tra luồng; Định nghĩa giao diện.

c) Sản phẩm

Đáp án: Bài 1: 6 (1 + 5 = 6). Bài 2: 0 (tổng rỗng bằng 0). Bài 3: 0 (không có số dương). Bài 4: A (đầu vào, đầu ra và điều kiện, để dùng và kiểm thử độc lập). Bài 5: Đúng (có thể truyền dữ liệu trực tiếp). Bài 6: Chia chức năng theo trách nhiệm → Định nghĩa giao diện → Cài và thử từng phần → Tích hợp kiểm tra luồng.

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 sáu bài tập, yêu cầu HS làm cá nhân trong 4 phút rồi đối chiếu với bạn cùng bàn trong 3 phút.

    Học sinh

    HS làm bài cá nhân, sau đó đối chiếu với bạn cùng bàn.

  2. Giáo viên

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

    GV đi quanh lớp, kiểm tra nhanh; nhắc HS dùng NeoEdu để tự kiểm tra bài 1 đến 3 nếu chưa chắc.

    Học sinh

    HS thực hiện, một số HS chạy thử đoạn mã để kiểm chứng.

  3. Giáo viên

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

    GV mời 3 HS đọc đáp án bài 1 đến 3, 1 HS trả lời bài 4 đến 6 và giải thích.

    Học sinh

    HS trình bày. Dự kiến: bài 1 là 6, bài 2 là 0, bài 3 là 0; bài 4 chọn A vì giao diện cần đầu vào, đầu ra, điều kiện; bài 5 đúng; bài 6 sắp xếp đúng thứ tự.

  4. Giáo viên

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

    GV chốt đáp án, nhấn mạnh: tổng rỗng và dãy không có số dương đều cho 0; giao diện phải nêu rõ đầu vào, đầu ra và điều kiện.

    Học sinh

    HS sửa lỗi sai (nếu có) và ghi đáp án vào vở.

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

Thiết kế hai mô đun cho bài toán dãy số đo

a) Mục tiêu

HS vận dụng việc thiết kế hai mô đun (tính tổng số dương và báo cáo) để viết phác thảo chương trình và kiểm tra theo dữ liệu mẫu, gắn với tình huống thu thập số liệu thực tế, ví dụ dãy số đo có cả giá trị âm và dương.

b) Nội dung

HS làm việc theo cặp đôi, viết phác thảo hai hàm: một hàm tính tổng số dương nhận dãy và trả số, một hàm báo cáo gọi hàm tính. HS kiểm thử với dữ liệu mẫu [-3,4,9] và hai ca [] và [-4,-1]. Sau đó nêu lí do thiết kế và kiểm tra điều kiện áp dụng: hàm có tương thích khi dữ liệu có thể rỗng không?

c) Sản phẩm

Phác thảo gồm hai hàm: tong_duong(a) cộng các số dương và trả tổng; bao_cao(a) trả về tong_duong(a). Kết quả kiểm thử: [-3,4,9] cho 13; [] cho 0; [-4,-1] cho 0. Lập luận: hai trách nhiệm, giao diện rõ, không sửa dữ liệu nguồn, không phụ thuộc đầu vào tương tác. Theo thang chấm tham khảo: hai trách nhiệm và giao diện 0,3 điểm; hàm tổng dương đúng 0,35 điểm; kiểm thử mẫu cho 13 0,2 điểm; không đổi nguồn và không phụ thuộc đầu vào 0,15 điểm.

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 nhiệm vụ: thiết kế hai mô đun, viết phác thảo và kiểm thử ba ca đã cho; nhắc HS ghi rõ đầu vào, đầu ra của mỗi hàm.

    Học sinh

    HS nhận nhiệm vụ, chia vai trong cặp đôi: một người viết, một người kiểm tra.

  2. Giáo viên

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

    GV đi quanh lớp, hỏi: Hàm báo cáo có cần biết cách tính tổng không? Nếu đổi cách tính thì cần sửa ở đâu?

    Học sinh

    HS viết phác thảo và kiểm thử. Dự kiến: Hàm báo cáo chỉ gọi hàm tính, nếu đổi cách tính chỉ sửa hàm tong_duong.

  3. Giáo viên

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

    GV mời 2 cặp trình bày phác thảo và kết quả ba ca thử, các cặp khác nhận xét.

    Học sinh

    HS trình bày: hai hàm, kết quả 13, 0, 0; giải thích vì sao không sửa dữ liệu nguồn.

  4. Giáo viên

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

    GV nhận xét và chốt: thiết kế mô đun giúp thử từng phần riêng; kiểm thử với dữ liệu cố định cho kết quả lặp lại được.

    Học sinh

    HS tự đánh giá phác thảo của nhóm theo thang chấm trên và ghi chú chỉnh sửa.

Phiếu học tập

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

Mô đun hóa chương trình

  • Câu 1: Mô đun là gì?
  • Câu 2: Giao diện của hàm gồm những gì?
  • Câu 3: Vì sao hàm nên nhận tham số và trả kết quả, hạn chế biến toàn cục?
  • Câu 4: Tách nhập, xử lí, xuất giúp ích gì khi kiểm thử?
  • Câu 5: Vì sao không nên chia chương trình quá nhỏ? Nên chia theo tiêu chí nào?
    Ghi chú: điền câu trả lời ngắn gọn vào từng câu, trao đổi với bạn cùng bàn trước khi ghi.

Hướng dẫn về nhà

  • Hoàn thiện chương trình hoàn chỉnh gồm hai mô đun tong_duong và bao_cao cho dãy mẫu, kiểm thử với [-3,4,9] (kết quả 13) và tự viết thêm hai ca thử khác, ghi kết quả vào vở.
  • Trả lời bằng lời văn ngắn: Nếu hàm tự đọc dữ liệu từ bàn phím mỗi lần gọi thì khó kiểm thử ở điểm nào? Nêu cách sửa: hàm xử lí nhận dãy a và trả số; phần nhập được gọi riêng.
  • Truy cập trang bài học trên NeoEdu, làm bài tập tương tác của Bài 28 và ghi lại những câu sai để xem lại phần Hiểu cách hoạt động trong sách giáo khoa.

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.