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 22 · KHMT. Thực hành bài toán sắp xếp

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 hai tính chất cần kiểm tra của thuật toán sắp xếp: dãy kết quả không giảm và giữ đúng mọi phần tử của dãy ban đầu.
  • Giải thích được vì sao kiểm tra tổng các phần tử không đủ để chứng minh dãy được bảo toàn, và cần so sánh tần số từng giá trị.
  • Vận dụng được các trường hợp thử (dãy rỗng, một phần tử, đã sắp, ngược, có giá trị lặp) để kiểm tra chương trình sắp xếp chọn bằng Python.
  • Giải thích được vì sao khi sắp bản ghi nhiều trường phải so sánh theo khóa nhưng di chuyển cả bản ghi.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: HS tự chạy chương trình mẫu, đối chiếu kết quả với dự đoán và tự sửa lập luận khi kết quả chưa khớp.
  • Giao tiếp và hợp tác: HS thảo luận theo nhóm để thống nhất hai tính chất và cách thử, trình bày kết quả trước lớp bằng lời lẽ rõ ràng.
  • Giải quyết vấn đề và sáng tạo: HS thiết kế bộ dữ liệu thử đa dạng và viết hàm kiểm tra đầu ra cho một bảng điểm thực tế của lớp.

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

  • NLa: 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 Python và trang bài học NeoEdu để chạy và quan sát kết quả.
  • NLb: Ứng xử phù hợp trong môi trường số: HS trích dẫn đúng nguồn chương trình mẫu, không sao chép mã của bạn mà không hiểu, khi nộp sản phẩm ghi rõ đầu vào đã 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 chương trình chạy thử để phát hiện lỗi về thứ tự hoặc thiếu phần tử và đề xuất cách kiểm tra.
  • NLd: Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: HS dùng trang bài tập tương tác NeoEdu để tự kiểm tra đáp án các câu hỏi trắc nghiệm.
  • NLe: Hợp tác trong môi trường số: HS chia sẻ bảng kết quả thử của nhóm trên bảng chung hoặc bảng phụ số hóa và góp ý cho nhóm khác.

3. Phẩm chất

  • Chăm chỉ: HS kiên trì chạy thử đủ các trường hợp biên, không bỏ qua dữ liệu khó như dãy rỗng hay dãy có giá trị lặp.
  • Trách nhiệm: HS tự kiểm tra lại sản phẩm của mình và nhóm trước khi báo cáo, chịu trách nhiệm về kết luận đưa ra.
  • Trung thực: HS ghi đúng kết quả thực tế khi chạy chương trình, kể cả khi kết quả không như dự đoán, và nêu rõ phản ví dụ khi phát hiện 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 và phần mềm Python 3 (hoặc IDLE) để trình chiếu chương trình sap(a) và chạy thử trực tiếp
  • Học liệu số NeoEdu: trang bài học neoedu.vn/learn/11/informatics/bai-22-khmt-thuc-hanh-bai-toan-sap-xep (bài giảng, ví dụ và bài tập tương tác)
  • Bảng phụ hoặc bảng số hóa để ghi bảng kết quả thử của các nhóm
  • Phiếu học tập số 1 (in hoặc chiếu lên màn hình)

2. Học sinh

  • Máy tính hoặc thiết bị có cài Python 3 (làm việc theo nhóm 4 HS, mỗi nhóm một máy)
  • Vở ghi, bút, giấy nháp
  • Phiếu học tập số 1 đã in (nếu không chiếu được)

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

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

Dự đoán kết quả của chương trình sắp xếp

a) Mục tiêu

Huy động kiến thức về sắp xếp đã học; xác định nhiệm vụ của tiết học là kiểm tra xem thuật toán sắp xếp có đúng hay không.

b) Nội dung

GV trình chiếu chương trình sap(a) và đầu vào a=[6,2,6,1], yêu cầu HS dự đoán giá trị in ra của sum(b). GV đặt câu hỏi: “Nếu dãy sau sắp chỉ tăng nhưng mất mất một số 6 thì kết quả tổng có còn đúng không? Vì sao?”

c) Sản phẩm

HS dự đoán kết quả in ra là 15 (vì 1 + 2 + 6 + 6 = 15). HS nhận ra: dãy tăng chưa đủ, còn phải giữ đủ các phần tử của dãy ban đầu. Nhiệm vụ tiết học được xác định là kiểm tra hai tính chất của thuật toán sắp xếp.

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

  1. Giáo viên

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

    GV trình chiếu đoạn mã và đầu vào a=[6,2,6,1], yêu cầu HS dự đoán kết quả của lệnh print(sum(b)) mà không chạy chương trình.

    Học sinh

    HS suy nghĩ cá nhân và ghi dự đoán ra giấy nháp.

  2. Giáo viên

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

    GV cho HS chạy chương trình trên máy, quan sát kết quả và so sánh với dự đoán.

    Học sinh

    HS chạy chương trình, nhận kết quả 15 và so sánh với dự đoán của mình.

  3. Giáo viên

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

    GV mời 2 HS nêu dự đoán và lí do. GV hỏi: “Tổng đúng có chứng minh được dãy đã được sắp và giữ đủ phần tử không?”

    Học sinh

    HS trả lời dự kiến: “Tổng đúng là 15 nhưng chưa chắc dãy đã đúng, vì có thể thiếu hoặc thừa phần tử.”

  4. Giáo viên

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

    GV chốt: kiểm tra thuật toán sắp xếp cần xét hai tính chất: dãy theo thứ tự và giữ đúng mọi phần tử. GV nêu mục tiêu tiết học.

    Học sinh

    HS ghi tên bài và hai tính chất cần kiểm tra vào vở.

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

Hai tính chất cần kiểm tra của thuật toán sắp xếp

a) Mục tiêu

Nêu được hai tính chất của thuật toán sắp xếp và giải thích được vì sao tổng các phần tử không đủ để kết luận dãy được bảo toàn.

b) Nội dung

HS làm việc nhóm 4 với Phiếu học tập số 1, phần A. Nhóm thảo luận các câu hỏi: (1) Dãy sau sắp cần thỏa mãn điều kiện gì về thứ tự? (2) Làm sao để biết dãy sau sắp không mất và không thừa phần tử nào? (3) Hai dãy [1,3] và [2,2] có cùng tổng nhưng có giống nhau không? Nhóm ghi kết luận vào phiếu.

c) Sản phẩm

Hai tính chất cần kiểm tra:

  • Thứ tự: mỗi phần tử đứng sau không nhỏ hơn phần tử đứng trước (dãy không giảm).
  • Bảo toàn phần tử: dãy sau sắp có cùng độ dài và cùng số lần xuất hiện của từng giá trị với dãy ban đầu.
    Kiến thức rút ra: tổng bằng nhau chưa đủ, vì [1,3] và [2,2] đều có tổng 4 nhưng khác nhau; phải so tần số từng giá trị. Với bản ghi nhiều trường, so sánh theo khóa nhưng di chuyển cả bản ghi để không ghép sai dữ liệu.

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

  1. Giáo viên

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

    GV chia lớp thành các nhóm 4 HS, phát Phiếu học tập số 1 (phần A) và nêu rõ 3 câu hỏi thảo luận.

    Học sinh

    HS nhận phiếu, phân công người đọc, người ghi, người báo cáo trong nhóm.

  2. Giáo viên

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

    GV đi quanh lớp, gợi ý nhóm dùng ví dụ [1,3] và [2,2] để kiểm tra lập luận; nhắc nhóm chưa nắm được thì thử bằng tay trên giấy nháp.

    Học sinh

    Nhóm thảo luận, thử ví dụ bằng tay và thống nhất câu trả lời vào phiếu.

  3. Giáo viên

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

    GV mời 1–2 nhóm trình bày. GV hỏi thêm: “Nếu chỉ kiểm tra tổng bằng nhau thì có đủ không?”

    Học sinh

    HS trả lời dự kiến: “Tổng bằng nhau nhưng [1,3] và [2,2] khác nhau, nên phải kiểm tra từng phần tử hoặc tần số.” Nhóm khác bổ sung: “Dãy đã tăng và có cùng số lượng từng giá trị thì đảm bảo đúng.”

  4. Giáo viên

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

    GV chốt hai tính chất, nhấn mạnh kiểm tra tần số thay vì chỉ kiểm tra tổng. GV nêu thêm: khi sắp bản ghi, so sánh theo khóa nhưng di chuyển cả bản ghi.

    Học sinh

    HS ghi kết luận chính vào vở và sửa phiếu nếu cần.

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

Thử các trường hợp biên và bản ghi nhiều trường

a) Mục tiêu

Thực hiện được việc thử chương trình sắp xếp với các trường hợp biên, có giá trị lặp và với bản ghi nhiều trường.

b) Nội dung

HS làm việc theo 2 trạm trên máy tính. Trạm 1 (trường hợp biên): chạy sap với các đầu vào [], [7], [9,4,1], [6,2,6,1], dãy đã sắp và dãy ngược; ghi kết quả vào Phiếu học tập số 1, phần B. Trạm 2 (bản ghi): với danh sách (tên, điểm) như [(An,7),(Binh,9),(Cuong,7)], sắp theo điểm và kiểm tra tên có đi cùng điểm không. Các trạm có thể dùng trang NeoEdu để đối chiếu ví dụ.

c) Sản phẩm

Bảng kết quả thử:

  • [] → [] (dãy rỗng vẫn rỗng)
  • [7] → [7] (một phần tử giữ nguyên)
  • [9,4,1] → [1,4,9]
  • [6,2,6,1] → [1,2,6,6], tổng 15, nguồn không đổi
    Bản ghi: danh sách sắp theo điểm, mỗi tên đi cùng điểm của mình; không có trường hợp tên bị ghép với điểm của người khác.

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

  1. Giáo viên

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

    GV giới thiệu hai trạm, hướng dẫn nhóm chia công việc: mỗi nhóm đảm nhiệm một trạm rồi đổi chỗ sau 5 phút.

    Học sinh

    HS nhận nhiệm vụ trạm, mở chương trình Python và nạp đoạn mã sap(a).

  2. Giáo viên

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

    GV nhắc HS ghi đầy đủ đầu vào và đầu ra vào phiếu, không chỉ ghi kết quả đúng; yêu cầu HS kiểm tra kết quả dãy rỗng và một phần tử.

    Học sinh

    HS chạy thử từng đầu vào, ghi kết quả và đối chiếu với kỳ vọng. Một số HS hỏi: “Dãy rỗng có làm chương trình lỗi không?” — chương trình trả về [] nên không lỗi.

  3. Giáo viên

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

    GV mời đại diện trạm 1 và trạm 2 báo cáo, hỏi: “Bản ghi (tên, điểm) bị ghép sai thì lỗi nằm ở đâu?”

    Học sinh

    HS trả lời dự kiến: “Nếu chỉ di chuyển điểm mà không di chuyển tên, tên sẽ ghép sai với điểm.” HS nhóm khác bổ sung trường hợp dãy ngược và dãy có giá trị lặp.

  4. Giáo viên

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

    GV chốt: thử đủ các trường hợp biên và có giá trị lặp là cách kiểm tra hiệu quả; với bản ghi, phải di chuyển cả bản ghi.

    Học sinh

    HS hoàn thiện bảng kết quả trong phiếu và ghi lại 2–3 trường hợp biên quan trọng nhất.

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

Luyện tập đọc kết quả và kiểm tra chương trình

a) Mục tiêu

Vận dụng hai tính chất và các trường hợp thử để đọc đúng kết quả chương trình và đánh giá một chương trình sắp xếp.

b) Nội dung

Làm các bài tập 1–8 trong bài học. Bài 1–5 làm nhanh trên trang NeoEdu theo cá nhân. Bài 6–8 làm theo nhóm: sắp xếp các bước giải, viết và kiểm tra chương trình sắp xếp chọn với đầu vào [6,2,6,1], nêu kết quả với [], [7], [9,4,1]; đưa phản ví dụ cho việc chỉ kiểm tra tổng.

c) Sản phẩm

Đáp án:

  1. Dãy rỗng: in 0.
  2. sap([7])[0] in 7.
  3. sap([9,4,1])[-1] in 9 (dãy sau sắp là 1,4,9).
  4. Đáp án A: Không; cần bảo toàn đa tập phần tử, dãy tăng nhưng thiếu số lặp là sai.
  5. Đúng: phải di chuyển cả tên và điểm cùng nhau.
  6. Thứ tự đúng: Chuẩn bị bộ ca đa dạng → Chạy sắp xếp trên bản sao → Kiểm tra thứ tự → Kiểm tra số lượng và phần tử nguồn.
  7. Mã đúng (chọn vị trí nhỏ nhất rồi đổi chỗ); kết quả [6,2,6,1] → [1,2,6,6], tổng 15, nguồn không đổi; [] → []; [7] → [7]; [9,4,1] → [1,4,9]. Thang chấm: mã chọn đúng 0,4 điểm; dãy 1,2,6,6 và tổng 15 là 0,25 điểm; giữ nguồn và tần số 0,2 điểm; ca rỗng và một phần tử 0,15 điểm.
  8. Phản ví dụ: [1,3] và [2,2] đều có tổng 4 nhưng khác phần tử. Thang chấm: đưa đúng phản ví dụ 0,4 điểm; giải thích khác phần tử 0,3 điểm; nêu cách kiểm tra tần số hoặc độ dài 0,3 đ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 chiếu danh sách bài 1–8, phân công bài 1–5 làm cá nhân trên NeoEdu; bài 6–8 làm theo nhóm, mỗi nhóm có một máy.

    Học sinh

    HS mở trang bài tập NeoEdu, nhận nhiệm vụ cá nhân và nhóm.

  2. Giáo viên

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

    GV theo dõi, nhắc HS đọc kỹ đoạn mã khi tính kết quả và kiểm tra lại bằng cách chạy thử với bài 7.

    Học sinh

    HS làm bài 1–5 và lập luận bài 6–8; nhóm chạy thử mã sắp xếp chọn và ghi kết quả.

  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 đáp án bài 3 và bài 8, hỏi thêm: “Vì sao bài 4 đáp án là A?”

    Học sinh

    HS trả lời dự kiến: bài 3 in 9 vì dãy sau sắp là 1,4,9 và phần tử cuối là 9; bài 8 chọn [1,3] và [2,2] làm phản ví dụ; bài 4 chọn A vì dãy tăng mà thiếu số lặp là sai.

  4. Giáo viên

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

    GV chốt đáp án, nhấn mạnh: đọc đúng kết quả đòi hỏi chạy thử hoặc lập luận chính xác; kiểm tra chương trình cần cả thứ tự và số lượng phần tử.

    Học sinh

    HS đối chiếu đáp án và sửa lỗi trong vở.

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

Đánh giá sản phẩm sắp xếp bảng điểm của lớp

a) Mục tiêu

Vận dụng hai tính chất kiểm tra để đánh giá một sản phẩm sắp xếp dữ liệu thực tế và giải thích kết quả.

b) Nội dung

Nhóm nhận một danh sách điểm kiểm tra của lớp dạng (tên, điểm), sắp theo điểm tăng dần bằng sap đã cho (áp dụng cho bản ghi). Nhóm viết hai hàm kiểm tra: hàm kiểm tra dãy không giảm và hàm đếm tần số giá trị của dãy ban đầu và dãy sau sắp. Nhóm báo cáo: sản phẩm có đạt không, nếu không thì phản ví dụ là gì. Về nhà: HS dùng bảng điểm thật của lớp mình (không ghi họ tên đầy đủ) để kiểm tra chương trình và viết báo cáo ngắn.

c) Sản phẩm

Bảng kiểm tra sản phẩm gồm: (1) dãy điểm sau sắp không giảm; (2) số lượng bản ghi không đổi; (3) mỗi tên đi cùng đúng điểm của mình; (4) số lần xuất hiện của từng điểm không đổi. Kết luận: sản phẩm đạt khi cả 4 mục đều đúng; nếu sai ở mục nào thì nêu rõ bản ghi hoặc giá trị gây lỗi.

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 danh sách bản ghi mẫu (ví dụ: An 7, Bình 9, Cường 7, Dung 5) và yêu cầu nhóm lập bảng kiểm tra 4 mục.

    Học sinh

    Nhóm nhận dữ liệu, thảo luận cách viết hàm kiểm tra và phân công người viết.

  2. Giáo viên

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

    GV hướng dẫn nhóm viết vòng lặp kiểm tra thứ tự và đếm số lần xuất hiện bằng vòng for đơn giản; nhắc HS kiểm tra cả trường hợp dãy rỗng.

    Học sinh

    Nhóm chạy chương trình, ghi kết quả từng mục vào bảng kiểm tra; nếu sai thì tìm phản ví dụ.

  3. Giáo viên

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

    GV mời 1–2 nhóm báo cáo kết quả, hỏi: “Nếu mục 3 sai thì lỗi thuộc loại nào?”

    Học sinh

    HS trả lời dự kiến: “Lỗi do chỉ di chuyển điểm mà không di chuyển tên, cần di chuyển cả bản ghi.”

  4. Giáo viên

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

    GV tổng kết: một sản phẩm sắp xếp được coi là đúng khi đạt cả tính đúng thứ tự và tính bảo toàn bản ghi; nhắc HS trung thực khi ghi kết quả kiểm tra.

    Học sinh

    HS ghi kết luận và bảng kiểm tra vào vở, nhận nhiệm vụ về nhà.

Phiếu học tập

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

Phần A. Hai tính chất cần kiểm tra

  • Câu 1: Dãy sau sắp cần thỏa mãn điều kiện gì về thứ tự?
  • Câu 2: Làm sao biết dãy sau sắp không mất và không thừa phần tử nào?
  • Câu 3: Dãy [1,3] và [2,2] có cùng tổng không? Chúng có giống nhau không? Vì sao?

Phần B. Bảng kết quả thử (ghi đầy đủ đầu vào và đầu ra)

  • Đầu vào [] → Đầu ra: ……
  • Đầu vào [7] → Đầu ra: ……
  • Đầu vào [9,4,1] → Đầu ra: ……
  • Đầu vào [6,2,6,1] → Đầu ra: ……, tổng: ……
  • Dãy đã sắp và dãy ngược (nhóm tự chọn): ……

Phần C. Bản ghi (tên, điểm)

  • Danh sách trước sắp: ……
  • Danh sách sau sắp theo điểm: ……
  • Nhận xét: tên có đi cùng đúng điểm không? ……

Hướng dẫn về nhà

  • Lấy một danh sách điểm kiểm tra của lớp (chỉ ghi tên viết tắt và điểm), sắp theo điểm tăng dần bằng chương trình sắp xếp chọn đã học.
  • Viết hai hàm kiểm tra: một hàm kiểm tra dãy điểm sau sắp không giảm, một hàm kiểm tra số lượng và số lần xuất hiện của từng điểm giữa dãy ban đầu và dãy sau sắp.
  • Chạy thử với các trường hợp biên: danh sách rỗng, một bản ghi, danh sách đã sắp, danh sách ngược và có điểm trùng; ghi kết quả vào vở.
  • Viết báo cáo ngắn (khoảng 10 dòng) nêu sản phẩm đạt hay chưa đạt, phản ví dụ nếu có và cách sửa lỗi; nộp qua trang NeoEdu hoặc theo hướng dẫn của GV.
  • Ôn lại các bài tập 1–8 trong bài học trên trang NeoEdu và tự kiểm tra đáp á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.