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 27 · KHMT. Thực hành thiết kế chương trình theo phương pháp làm mịn dần

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ác tầng của phương pháp làm mịn dần khi viết chương trình: nhận dữ liệu, lọc và tích luỹ, quyết định đầu ra, kiểm tra.
  • Giải thích được vì sao cần nhánh riêng khi dãy không có phần tử thỏa điều kiện, và vì sao không chia cho 0.
  • Vận dụng được điều kiện x%2==0 để lọc số chẵn (0 được tính là số chẵn) và viết chương trình tính trung bình các số chẵn trong một dãy.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: HS tự đọc đề, dự đoán kết quả từng đoạn lệnh rồi đối chiếu với chương trình chạy thực tế để tự kiểm tra và điều chỉnh.
  • Giao tiếp và hợp tác: HS làm việc theo cặp, trao đổi lập luận về từng tầng của chương trình và thống nhất phương án trước khi báo cáo.
  • Giải quyết vấn đề và sáng tạo: HS phân rã bài toán thành các tầng nhỏ, kiểm thử với dữ liệu nhỏ và đề xuất cách sửa khi đổi yêu cầu.

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: HS sử dụng máy tính, môi trường chạy Python để nhập, chạy và kiểm tra chương trình.
  • 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 chương trình chạy thử với dữ liệu mẫu và dữ liệu rỗng để kiểm tra từng tầng, sau đó tích hợp thành chương trình hoàn chỉnh.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: HS dùng bài giảng, ví dụ và bài tập tương tác trên NeoEdu để tự ôn lại phương pháp làm mịn dần.
  • Hợp tác trong môi trường số: HS chia sẻ mã nguồn và kết quả chạy trong nhóm cặp, góp ý để chương trình chạy đúng và an toàn.

3. Phẩm chất

  • Chăm chỉ: HS kiên trì kiểm tra từng tầng của chương trình, không bỏ qua trường hợp dữ liệu rỗng.
  • Trung thực: HS ghi đúng kết quả chạy thực tế, nêu rõ khi đổi yêu cầu bài toán (loại số 0) và không sửa âm thầm.
  • Trách nhiệm: HS tự chịu trách nhiệm với đáp án và chương trình của mình, sẵn sàng giải thích lập luận trước lớp.

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 và bảng để trình bày đề bài, chạy chương trình mẫu trực tiếp.
  • Môi trường soạn thảo và chạy Python (IDLE hoặc trình tương đương).
  • Phiếu học tập số 1 và Phiếu học tập số 2 in sẵn hoặc chiếu lên màn hình.
  • 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, dùng để tham khảo và kiểm tra nhanh (neoedu.vn/learn/11/informatics/bai-27-khmt-thuc-hanh-thiet-ke-chuong-trinh-theo-phuong-phap-lam-min-dan).

2. Học sinh

  • Máy tính cá nhân hoặc máy tính dùng chung trong cặp có cài Python.
  • Vở ghi, bút, giấy nháp để viết bảng phân rã và dự đoán kết quả.
  • Tài khoản truy cập học liệu số NeoEdu (nếu có).

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

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

Xác định nhiệm vụ của bài thực hành

a) Mục tiêu

HS nhận diện đúng bài toán: tính trung bình cộng các số chẵn trong một dãy số và xác định các câu hỏi cần trả lời trước khi viết chương trình.

b) Nội dung

GV chiếu dãy a=[2,5,8,0] và đặt các câu hỏi: (1) Những số nào trong dãy là số chẵn? (2) Tổng các số chẵn bằng bao nhiêu và có bao nhiêu số chẵn? (3) Trung bình cộng bằng bao nhiêu? (4) Nếu dãy không có số chẵn thì chương trình nên làm gì?

c) Sản phẩm

Các số chẵn là 2, 8 và 0 (số 0 cũng là số chẵn). Tổng là 10, đếm được 3 số, trung bình là 103\dfrac{10}{3}. Nếu không có số chẵn thì phải thông báo riêng, không chia cho 0. Kết luận: bài toán cần 3 việc là tích luỹ tổng, đếm số lượng và quyết định đầu ra.

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 dãy a=[2,5,8,0] lên màn hình và nêu bốn câu hỏi dẫn dắt. GV yêu cầu HS suy nghĩ 1 phút trước khi trả lời.

    Học sinh

    HS đọc đề, suy nghĩ cá nhân và ghi nhanh đáp án vào vở nháp.

  2. Giáo viên

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

    GV đi quanh lớp, quan sát và gợi ý HS chưa nhớ số 0 là số chẵn bằng cách hỏi: “0 chia 2 có dư không?”

    Học sinh

    HS xác định các số chẵn trong dãy, tính tổng và đếm. Dự kiến HS trả lời: “Các số chẵn là 2, 8, 0; tổng 10; đếm 3; trung bình 10/3.”

  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 kết quả và hỏi thêm: “Nếu dãy là [1,3,5] thì điều gì xảy ra khi tính trung bình?”

    Học sinh

    HS trả lời: “Không có số chẵn nên đếm bằng 0, nếu chia sẽ lỗi chia cho 0, phải báo không có số chẵn.”

  4. Giáo viên

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

    GV chốt: bài toán chia thành ba việc là tích luỹ tổng, đếm số lượng và quyết định đầu ra; trường hợp không có phần tử thỏa điều kiện cần nhánh riêng. GV ghi tiêu đề bài lên bảng.

    Học sinh

    HS ghi vào vở ba việc cần làm và trường hợp cần nhánh riêng.

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

Phân rã chương trình thành các tầng

a) Mục tiêu

HS hệ thống hoá phương pháp làm mịn dần: chia bài toán thành các tầng nhỏ, mỗi tầng có thể kiểm tra riêng với dữ liệu nhỏ.

b) Nội dung

HS hoàn thành Phiếu học tập số 1 theo cặp đôi: điền bảng bốn tầng (nhận dữ liệu, lọc và tích luỹ, quyết định đầu ra, kiểm tra) với đoạn lệnh và kết quả tương ứng khi chạy với dữ liệu a=[2,5,8,0]. HS có thể tham khảo phần ví dụ trên trang bài học NeoEdu.

c) Sản phẩm

Bảng phân rã đúng: Tầng 1 nhận dữ liệu a=[2,5,8,0], khởi tạo s=0, d=0. Tầng 2 duyệt for x in a, nếu x%2==0 thì s+=x và d+=1; kết quả s=10, d=3. Tầng 3 nếu d>0 thì in s/d, ngược lại in thông báo không có số chẵn. Tầng 4 kiểm tra từng tầng với dữ liệu nhỏ, ví dụ [2] cho s=2, d=1 và [1,3] cho d=0. Kiến thức rút ra: điều kiện x%2==0 nhận cả số 0; mỗi tầng kiểm tra được độc lập trước khi 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 phát Phiếu học tập số 1, nêu nhiệm vụ điền bảng bốn tầng và nhắc HS dùng dữ liệu nhỏ để kiểm tra từng tầng.

    Học sinh

    HS nhận phiếu, đọc yêu cầu và phân công ai đọc đề, ai ghi bảng trong cặp.

  2. Giáo viên

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

    GV quan sát cặp đôi và hỏi: “Tầng nào cần biến đếm? Vì sao phải khởi tạo s và d bằng 0?”

    Học sinh

    HS điền bảng. Dự kiến HS trả lời: “Cần d để đếm số phần tử chẵn; khởi tạo 0 để không cộng dồn giá trị cũ.”

  3. Giáo viên

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

    GV mời một cặp báo cáo bảng phân rã và yêu cầu cặp khác kiểm tra tầng 4 với dữ liệu [1,3].

    Học sinh

    HS trình bày: “Với [1,3], d vẫn bằng 0 nên chương trình in thông báo, không thực hiện phép chia.”

  4. Giáo viên

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

    GV chốt: mỗi tầng có đầu vào, đầu ra rõ ràng và kiểm tra được riêng; khi tích hợp, chương trình là ghép các tầng đã kiểm tra.

    Học sinh

    HS hoàn thiện Phiếu học tập số 1 và ghi kết luận vào vở.

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

Chạy chương trình mẫu và giải thích kết quả

a) Mục tiêu

HS chạy chương trình mẫu, đối chiếu kết quả với tính toán bằng tay và giải thích được vì sao kết quả là số thập phân xấp xỉ.

b) Nội dung

HS nhập chương trình mẫu: a=[2,5,8,0]; s=0; d=0; for x in a: if x%2==0: s+=x; d+=1; if d>0: print(s/d) else: print("Khong co so chan"). Sau đó HS đổi a thành [1,3] và chạy lại. HS trả lời Câu hỏi: kết quả in ra là gì và vì sao không phải số 3.33 đúng tuyệt đối?

c) Sản phẩm

Với a=[2,5,8,0], chương trình in 3.3333333333333335, là xấp xỉ của 103\dfrac{10}{3} do máy tính biểu diễn số thập phân hữu hạn. Với a=[1,3], chương trình in thông báo Khong co so chan và không báo lỗi chia cho 0. Kết luận: kiểm tra kết quả bằng tính toán tay, và luôn xét trường hợp đếm bằng 0.

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 chương trình mẫu và yêu cầu HS nhập, chạy, sau đó đổi dữ liệu thành [1,3].

    Học sinh

    HS nhập mã vào máy tính, chạy lần 1 với a=[2,5,8,0] rồi chạy lần 2 với a=[1,3].

  2. Giáo viên

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

    GV kiểm tra nhanh máy các nhóm, nhắc HS so sánh kết quả với 103\dfrac{10}{3} đã tính ở phần khởi động.

    Học sinh

    HS ghi lại kết quả. Dự kiến HS nhận xét: “Kết quả 3.3333333333333335 gần đúng với 10/3; khi d=0 chương trình in thông báo.”

  3. Giáo viên

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

    GV hỏi: “Nếu bỏ nhánh if d>0 mà vẫn chạy với [1,3] thì chuyện gì xảy ra?”

    Học sinh

    HS trả lời: “Chương trình báo lỗi ZeroDivisionError vì chia cho 0.”

  4. Giáo viên

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

    GV chốt: chương trình đúng khi kết quả khớp với tính toán tay, và nhánh xử lí trường hợp rỗng là bắt buộc để tránh lỗi chia cho 0.

    Học sinh

    HS ghi kết luận vào vở: kiểm tra bằng tay, kiểm tra bằng dữ liệu biên.

Hoạt động 3.1: Luyện tập · 6 phút

Đọc hiểu đoạn lệnh và kiểm tra khái niệm

a) Mục tiêu

HS dự đoán kết quả một số đoạn lệnh đơn giản và phân biệt các khái niệm về số chẵn, tổng và đếm.

b) Nội dung

HS làm bài tập 1 đến 6 trên giấy, sau đó đối chiếu với máy tính: (1) print(sum(x for x in a if x%2==0)) với a=[2,5,8,0]; (2) print(sum(1 for x in a if x%2==0)) với a=[2,5,8,0]; (3) a=[4,6], print(sum(a)/len(a)); (4) Không có số chẵn khi tính trung bình nên làm gì? A. Thông báo riêng, không chia 0; B. Trả 0 rồi gọi là trung bình; C. Chia cho 1 tùy ý; D. Xóa dữ liệu; (5) 0 có được tính là số chẵn không? (6) Sắp xếp các bước giải: Tính trung bình hoặc thông báo; Xác định điều kiện chẵn; Kiểm tra có phần tử; Tách tổng và đếm.

c) Sản phẩm

Đáp án: (1) 10 (2+8+0). (2) 3 (đếm được ba số 2, 8, 0). (3) 5.0 (10/2). (4) A, vì trung bình của tập rỗng không xác định nên phải thông báo riêng. (5) Đúng, vì 0%2==0. (6) Xác định điều kiện chẵn → Tách tổng và đếm → Kiểm tra có phần tử → Tính trung bình hoặc thông báo.

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 câu hỏi và nhắc HS làm trước khi chạy máy để tự dự đoán.

    Học sinh

    HS đọc đề, làm bài trên giấy nháp trong 3 phút.

  2. Giáo viên

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

    GV cho HS nhập đoạn lệnh (1), (2), (3) vào máy để kiểm tra dự đoán; nhắc HS giải thích nếu dự đoán sai.

    Học sinh

    HS chạy chương trình và so sánh. Dự kiến HS hỏi: “Vì sao (2) in ra 3 chứ không phải 10?” GV trả lời: sum của các giá trị 1 đếm số phần tử.

  3. Giáo viên

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

    GV mời HS đọc đáp án của câu 4, 5, 6 và yêu cầu nêu lí do.

    Học sinh

    HS trả lời: câu 4 là A; câu 5 là đúng vì 0%2==0; câu 6 theo thứ tự như đáp án.

  4. Giáo viên

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

    GV chốt: sum(1 for ...) dùng để đếm; sum(...) dùng để tính tổng; trung bình chỉ tính khi có ít nhất một phần tử.

    Học sinh

    HS sửa đáp án sai (nếu có) và ghi lại đáp án đúng.

Hoạt động 3.2: Luyện tập · 8 phút

Viết chương trình hoàn chỉnh và đổi yêu cầu

a) Mục tiêu

HS viết chương trình trung bình các số chẵn hoàn chỉnh, kiểm tra theo dữ liệu mẫu và sửa điều kiện khi yêu cầu thay đổi.

b) Nội dung

HS làm bài tập 7 và 8 theo Phiếu học tập số 2: (7) Viết chương trình trung bình các số chẵn của dãy a=[2,5,8,0], kiểm tra theo dữ liệu mẫu và nêu nhánh khi danh sách không có số chẵn. (8) Nếu loại bỏ số 0 theo yêu cầu mới thì sửa điều kiện và kết quả mẫu như thế nào?

c) Sản phẩm

Bài 7: chương trình đúng là khối lệnh ở hoạt động khám phá; kết quả in 3.3333333333333335; có nhánh else in thông báo khi d=0. Chấp nhận phương án tương đương đúng có lập luận. Bài 8: điều kiện mới là x%2==0 and x!=0; dãy a=[2,5,8,0] còn các số 2, 8, tổng 10, đếm 2, trung bình 5.0. Đây là thay đổi yêu cầu được nêu rõ, không sửa âm thầm.

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ố 2 và nêu tiêu chí chấm: phân rã tổng, đếm, quyết định (0,25); lọc chẵn gồm 0 (0,25); tổng 10, đếm 3, trung bình 103\dfrac{10}{3} (0,3); nhánh không có số chẵn (0,2).

    Học sinh

    HS đọc yêu cầu và làm việc cá nhân rồi kiểm tra chéo 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, nhắc HS dùng điều kiện and x!=0 để loại số 0 và kiểm tra kết quả với dữ liệu mẫu.

    Học sinh

    HS viết và chạy chương trình. Dự kiến HS trả lời câu 8: “Điều kiện là x%2==0 and x!=0, kết quả 5.0.”

  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 chương trình và kết quả, yêu cầu HS khác nhận xét về nhánh rỗng.

    Học sinh

    HS trình bày mã và kết quả; các bạn nhận xét về việc có nhánh else hay không.

  4. Giáo viên

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

    GV chốt: một chương trình đúng cần đủ 4 tầng; khi đổi yêu cầu, phải nêu rõ thay đổi và kiểm tra lại kết quả mẫu.

    Học sinh

    HS ghi lại chương trình đúng vào vở và ghi chú giả định đã dùng.

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

Tính trung bình có điều kiện cho điểm số lớp học

a) Mục tiêu

HS vận dụng phương pháp làm mịn dần vào bài toán thực tế: tính trung bình các điểm đạt yêu cầu trong danh sách điểm.

b) Nội dung

HS nhận tình huống: danh sách điểm kiểm tra diem=[7,4,9,10,3] của một tổ. Yêu cầu HS viết các tầng để tính trung bình các điểm lớn hơn hoặc bằng 5; nếu không có điểm nào đạt thì thông báo “Khong co diem dat”. HS nộp chương trình và kết quả qua nhóm lớp (hoặc làm về nhà nếu hết giờ).

c) Sản phẩm

Các điểm đạt là 7, 9, 10; tổng 26, đếm 3; trung bình 263≈8,67\dfrac{26}{3}\approx 8{,}67. Với dãy [3,4] chương trình in thông báo không có điểm đạt. Kiến thức rút ra: thay đổi điều kiện lọc, giữ nguyên cấu trúc bốn tầng và luôn có nhánh xử lí trường hợp đếm bằng 0.

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 tình huống danh sách điểm và nêu yêu cầu: viết bốn tầng trước, sau đó viết chương trình hoàn chỉnh.

    Học sinh

    HS đọc tình huống, xác định điều kiện lọc và viết dàn ý bốn tầng vào vở.

  2. Giáo viên

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

    GV hướng dẫn nhóm bàn kiểm tra với dữ liệu nhỏ [3,4] trước khi chạy dữ liệu chính.

    Học sinh

    HS viết chương trình và chạy thử. Dự kiến HS trả lời: “Điều kiện là x>=5; kết quả khoảng 8,67.”

  3. Giáo viên

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

    GV chọn 1 nhóm trình bày và hỏi: “Nếu đổi thành điểm lớn hơn 8 thì phải sửa ở tầng nào?”

    Học sinh

    HS trả lời: “Chỉ sửa tầng lọc, các tầng tích luỹ và quyết định giữ nguyên.”

  4. Giáo viên

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

    GV chốt: phương pháp làm mịn dần giúp thay đổi yêu cầu một cách an toàn, chỉ sửa đúng tầng liên quan; nhắc HS nộp sản phẩm đúng hạn.

    Học sinh

    HS ghi nhận kết luận và hoàn thiện sản phẩm để nộp.

Phiếu học tập

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

Phân rã chương trình tính trung bình các số chẵn của dãy a=[2,5,8,0] theo bốn tầng.

  • Tầng 1 (nhận dữ liệu): ghi đoạn lệnh khởi tạo và dữ liệu đầu vào.
  • Tầng 2 (lọc và tích luỹ): ghi điều kiện lọc, lệnh cộng tổng và lệnh đếm; ghi kết quả s và d.
  • Tầng 3 (quyết định đầu ra): ghi điều kiện if d>0 và kết quả in ra trong mỗi nhánh.
  • Tầng 4 (kiểm tra): ghi kết quả với dữ liệu nhỏ [2] và [1,3].
    Câu hỏi: Vì sao cần khởi tạo s=0 và d=0? Trường hợp nào cần nhánh riêng?

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

Bài 7: Viết chương trình hoàn chỉnh tính trung bình các số chẵn của a=[2,5,8,0]. Kiểm tra theo dữ liệu mẫu. Nêu nhánh khi danh sách không có số chẵn.
Bài 8: Nếu loại số 0 theo yêu cầu mới, hãy sửa điều kiện lọc và ghi lại kết quả: danh sách số được giữ, tổng, số lượng và trung bình.
Lưu ý: ghi rõ thay đổi yêu cầu, không sửa âm thầm.

Hướng dẫn về nhà

  • Hoàn thành bài vận dụng về điểm số lớp học: viết chương trình hoàn chỉnh theo bốn tầng, kiểm tra với ít nhất hai bộ dữ liệu (một bộ có điểm đạt, một bộ không có điểm đạt).
  • Ôn lại bảng phân rã bốn tầng và tự giải thích bằng lời vì sao phải khởi tạo biến tổng và biến đếm bằng 0.
  • Tự luyện thêm trên trang bài học NeoEdu (neoedu.vn/learn/11/informatics/bai-27-khmt-thuc-hanh-thiet-ke-chuong-trinh-theo-phuong-phap-lam-min-dan) phần bài tập tương tác và ghi lại các câu còn sai để hỏi GV trong tiết sau.

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.