Giáo án NLS Tin học 11 KHMT kết nối Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình
Giáo án NLS Tin học 11 (Khoa học máy tính) kết nối tri thức Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình. Với năng lực số được tích hợp, tiết học sẽ giúp học sinh làm quen và ứng dụng công nghệ, tin học. KHBD này là file word, tải về dễ dàng. Là mẫu giáo án mới nhất năm 2026 để giáo viên dạy tốt môn Tin học 11.
Xem: => 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
Ngày soạn: .../.../...
Ngày dạy: .../.../...
BÀI 26: PHƯƠNG PHÁP LÀM MỊN DẦN TRONG THIẾT KẾ 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 và giải thích được phương pháp làm mịn dần trong lập trình.
- Vận dụng được phương pháp làm mịn dần để thiết kế 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 và giải thích được phương pháp làm mịn dần trong lập trình.
- Vận dụng được phương pháp làm mịn dần để thiết kế chương trình.
Năng lực số:
- 6.2.NC1b: Sử dụng công cụ AI để hỗ trợ chuyển đổi các bước thiết kế chi tiết thành mã nguồn hoặc tối ưu hóa thuật toán.
- 5.2.NC1b: Sử dụng phần mềm vẽ sơ đồ (Mindmap/Flowchart) để mô hình hóa quá trình phân rã bài toán; sử dụng IDE để lập trình và gỡ lỗi.
- 1.2.NC1a: Phân tích bài toán gốc để xác định các module con cần tách biệt.
- 2.1.NC1a: Phối hợp nhóm trên môi trường số để cùng thiết kế giải thuật.
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 GV
- SGK, tài liệu giảng dạy, giáo án PPT.
- Phòng thực hành máy tính kết nối Internet.
- 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 HS
- SGK, SBT Tin học 11, vở ghi chép.
III. TIẾN TRÌNH DẠY HỌC
1. HOẠT ĐỘNG KHỞI ĐỘNG
a) Mục tiêu: GV khơi gợi HS suy nghĩ về các bước cần thực hiện giải một bài toán hoặc thuật toán cụ thể.
b) Nội dung: GV tổ chức trả lời câu hỏi ở phần Mở đầu, HS thực hiện nhiệm vụ được giao.
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: Em đã biết thiết kế một số thuật toán và chương trình: tìm kiếm tuần tự, tìm kiếm nhị phân, sắp xếp chèn, sắp xếp nổi bọt.
- GV đặt câu hỏi trong Khởi động tr.118 SGK, yêu cầu HS thảo luận nhóm 3 - 4 HS suy nghĩ và trả lời:
+ Tất cả các thiết kế chương trình đó có điểm nào chung?
+ Theo em, để thiết kế một thuật toán đúng giải một bài toán cho trước cần trải qua các bước như thế nào? Nêu quan điểm của riêng em và trao đổi với các bạ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.
- HS lắng nghe, suy nghĩ câu trả lời.
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.
Gợi ý:
+ Các thuật toán và chương trình trên đều là các thuật toán cơ bản trong lập trình và giải quyết các vấn đề thông thường. Điểm chung của các bài toán đó là có tính đơn giản và độ phức tạp thấp.
+ Để thiết kế một thuật toán đúng giải một bài toán cho trước cần trải qua các bước:
1. Xác định bài toán
2. Tìm cấu trúc dữ liệu biểu diễn thuật toán
3. Tìm thuật toán
4. Lập trình
5. Kiểm thử chương trình
6. Tối ưu chương trình
- 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: Các thuật toán và chương trình được tìm hiểu ở bài trước đều có độ phức tạp thấp, dễ dàng thiết kế. Vậy nếu gặp một bài toán có độ phức tạp cao hơn thì chúng ta cần phải làm như thế nào? Và bài học ngày hôm nay chúng ta sẽ giúp chúng ta giải quyết vấn đề nêu trên, chúng ta cùng vào - Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình.
2. HOẠT ĐỘNG HÌNH THÀNH KIẾN THỨC
Hoạt động 1: Tìm hiểu về phương pháp thiết kế làm mịn dần
a) Mục tiêu: Thông qua một ví dụ cụ thể của một thuật toán đã biết, HS sẽ làm quen với các bước phân tích thực hiện thuật toán này theo phương pháp làm mịn dần.
b) Nội dung: GV đặt vấn đề, HS hoạt động nhóm tìm hiểu thông tin mục 1 trang 118 - 120 SGK và thực hiện nhiệm vụ được giao.
c) Sản phẩm: Phương pháp thiết kế làm mịn dần.
d) Tổ chức thực hiện:
…………………………………………..
…………………………………………..
…………………………………………..
Hoạt động 2: Tìm hiểu về thiết kế chương trình bằng phương pháp làm mịn dần
a) Mục tiêu: Giúp HS biết và thực hiện được thiết kế một thuật toán đơn giản bằng phương pháp làm mịn dần.
b) Nội dung: GV nêu nhiệm vụ, HS hoạt động nhóm đọc hiểu thông tin mục 2 trang 120 - 122 SGK và thực hiện nhiệm vụ được giao.
c) Sản phẩm: Thiết kế chương trình bằng phương pháp làm mịn dần.
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ổ chức cho HS tiếp tục hoạt động nhóm thực hiện Hoạt động 2 SGK tr.120: Thực hiện thiết kế thuật toán và chương trình bằng phương pháp làm mịn dần theo các bài toán sau. Trao đổi, thảo luận với bạn bè để thiết lập được lời giải tốt hơn. Bài toán. Cho trước dãy số A: A[0], A[1], …, A[n-1]. Cặp phần tử A[i], A[j] được gọi là nghịch đảo nếu i < j nhưng A[i] > A[j]. Cần viết chương trình đếm số các cặp nghịch đảo của dãy A. Ví dụ dãy 3, 4, 2, 1 sẽ có 5 cặp nghịch đảo là (3,2), (3,1), (4,2), (4,1), (2,1). - GV yêu cầu mỗi nhóm thiết kế thuật toán cho bài toán trên theo hướng dẫn của SGK, ghi lại các bước thiết kế cụ thể và nộp bài thiết kế cùng chương trình. - GV yêu cầu HS trả lời câu hỏi Củng cố tr.122 SGK: 1. Với bài toán ở Hoạt động 1, có thể tách các dòng lệnh từ 4 đến 9 thành một hàm con độc lập được không? 2. Trong thiết kế bài toán tìm các cặp phần tử nghịch đảo, các bước sau đã thực hiện những thay đổi quan trọng nào so với bước trước đó? 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à thực hiện nhiệm vụ được giao. - GV quan sát, hướng dẫn (nếu cần). Bước 3: Báo cáo kết quả hoạt động, thảo luận: - GV mời 1 - 2 nhóm trình bày kết quả thảo luận. - HS xung phong trả lời câu hỏi củng cố: 1. Các dòng lệnh từ dòng 4 đến 9 có thể tách thành hàm con có dạng Chen(A,j,value) như sau: 1 def chen(A,j,value): 2 while j >= 0 and A[j] > value: 3 A[j+1] = A[j] 4 j = j - 1 5 A[j+1] = value Khi đó thuật toán sắp xếp chèn có thể viết lại như sau: 1 def InsertionSort(A): 2 n = len(A) 3 for i in range(1,n): 4 value = A[i] 5 j = i-1 6 chen(A,j,value) 2. Bước 2 đã chi tiết hóa yêu cầu tại dòng 2 của lược đồ ban đầu được vạch ra tại bước 1. - Bước 3 đã chi tiết hóa phần mô tả tại dòng 4, 5 của chương trình đã nêu trong bước 2. - 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 và chốt kiến thức. | 2. Thiết kế chương trình bằng phương pháp làm mịn dần a) Tìm hiểu bài toán Bài toán gốc là cho trước dãy số A có n phần tử, cần đếm số các cặp phần tử nghịch đảo của A. b) Thiết kế chương trình giải bài toán Bước 1. Thiết lập ý tưởng thiết kế ban đầu - Phần khung chính của chương trình sẽ là: <Đếm số lượng các cặp số nghịch đảo (A[i], A[j]) của dãy A, trả về giá trị này> - Công việc cần thực hiện: + Tìm tất cả các cặp chỉ số (i,j) có thể tạo cặp nghịch đảo A[i], A[j]. + Kiểm tra xem cặp này có là nghịch đảo không, nếu có thì tăng biến đếm lên 1 đơn vị. - Lược đồ thuật toán ban đầu có thể được mô tả như sau: 1 count = 0 2 Tìm tất cả các cặp chỉ số (i,j) có thể tạo ra cặp phần tử nghịch đảo 3 Kiểm tra nếu cặp A[i], A[j] là nghịch đảo thì tăng count lên 1 đơn vị. 4 return count Bước 2. Tìm tất cả các cặp chỉ số (i,j) - Thiết lập hai vòng lặp theo i, j để tìm. - Chú ý để tiết kiệm thời gian chúng ta sẽ chỉ tìm các chỉ số i chạy từ 0 đến n – 2, chỉ số j tính từ i + 1 đến n – 1. - Kết quả bước làm mịn này là đoạn chương trình sau: for i in range(n – 1): for j in range(i+1,n): Như vậy tới bước này, thuật toán gốc có thể được mô tả như sau: 1 count = 0 2 for i in range(n-1): 3 for j in range(i+1, n): 4 if <cặp (i,j) là nghịch đảo>: 5 tăng count lên 1 đơn vị 6 return count Bước 3. Kiểm tra tính nghịch đảo của cặp (i,j) - Cặp (i,j) sẽ là nghịch đảo khi và chỉ khi i < j và A[i] > A[j], tuy nhiên tại bước 2 đã thiết lập được tất cả các cặp (i,j) với điều kiện i < j do đó việc kiểm tra nghịch đảo chỉ còn một điều kiện là A[i] > A[j]. - Kết quả làm mịn của bước 3 như sau: if A[i] > A[j]: count = count + 1 - Thao tác chi tiết cần thực hiện để giải bài toán đã gần hoàn thành như sau: 1 count = 0 2 for i in range(n-1): 3 for j in range(1,n): 4 if A[i] > A[j]: 5 count = count + 1 6 return count c) Chương trình hoàn chỉnh 1 def Nghichdao(A): 2 n = len(A) 3 count = 0 4 for i in range(n-1): 5 for j in range(1,n): 6 if A[i] > A[j]: 7 count = count + 1 8 return count ⇨ Kết luận: Phương pháp làm mịn dần trong thiết kế chương trình phải tuân thủ các quy trình và nguyên tắc sau: - Chia việc thiết kế thành từng bước và thực hiện lần lượt các bước. - Mỗi bước lớn có thể được chia thành nhiều bước nhỏ hơn để giải quyết độc lập. - Tiếp cận bài toán từ tổng quan đến chi tiết, mỗi bước tiếp theo sẽ phải là thiết kế chi tiết hơn bước trước đó. Quá trình như vậy sẽ tiếp tục cho đến khi viết xong toàn bộ các câu lệnh của chương trình giải bài toán đã cho. | - 5.2.NC1b: HS vận dụng phương pháp "Làm mịn dần" để giải quyết bài toán đếm cặp nghịch đảo. - 3.1.NC1a: HS thực hiện chuyển đổi các bước thiết kế từ mã giả sang mã nguồn Python hoàn chỉnh. |
3. HOẠT ĐỘNG LUYỆN TẬP
a) Mục tiêu: HS củng cố kiến thức về phương pháp làm mịn dần trong thiết kế 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 122.
c) Sản phẩm học tập: HS trả lời câu hỏi về phương pháp làm mịn dần trong thiết kế chương trình.
d) Tổ chức thực hiện:
…………………………………………..
…………………………………………..
…………………………………………..
4. 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 122 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ạt động cặp đôi hoàn thành bài tập phần Vận dụng trang 122 SGK.
Bài 1. Sử dụng phương pháp làm mịn dần để giải bài toán sau: Cho trước số tự nhiên không âm n, viết chương trình kiểm tra xem số n có phải là số nguyên tố hay không. Chương trình cần thông báo "CÓ" nếu n là số nguyên tố, ngược lại thông báo "KHÔNG".
Bài 2. Với thuật toán sắp xếp chèn, chứng minh rằng nếu thay toàn bộ phần
<Chèn A[i] vào vị trí đúng của dãy con A[e], A[1], ..., A[i − 1]>
bằng các lệnh sau thì chương trình vẫn đúng:
1 j = i
2 while j > 0 and A[j] < A[j-1]:
3 Đổi chỗ A[j] và A[j-1]
4 j = j – 1
Bước 2: HS thực hiện nhiệm vụ học tập
- HS vận dụng kiến thức đã học để làm bài tập phần Vận dụng.
- 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: Các bước thực hiện bài toán này theo phương pháp làm mịn dần như sau:
a) Tìm hiểu bài toán.
Input: n số tự nhiên cho trước. Output: "CÓ" nếu n là nguyên tố, ngược lại thông báo "KHÔNG".
b) Các bước thiết kế chi tiết.
Bước 1. Thiết lập ý tưởng ban đầu
Số tự nhiên là số nguyên tố nếu nó lớn hơn 1 và chỉ có ước số là 1 và chính nó. Chúng ta sẽ thiết lập hàm prime(n), hàm này trả về True nếu n là nguyên tố, ngược lại trả về False. Lược đồ chương trình như sau, bao gồm ba mức.
1. Nếu n ≤ 1 thì trả về False
2. Nếu n > 1 thì đi tìm các ước số thực sự của n bắt đầu từ 2. Nếu có ước như vậy thì trả vé False
3. Trả về True.
Bước 2. Chi tiết hoá yêu cầu mức 1.
if n <= 1:
return False
Bước 3. Chi tiết hoá mức 2.
for k in range(2, n):
if n % k == 0:
return False
Bước 4. Chi tiết hóa mức 3.
return True.
c) Chương trình hoàn chỉnh
1 def prime(n):
2 if n <= 1:
3 return False
4 else:
5 for k in range(2,n):
6 if n%k == 0:
7 return False
8 return True
9 n = 5
10 if prime(n):
11 print("CÓ")
12 else:
13 print("KHÔNG")
[5.2.NC1b: HS vận dụng phương pháp làm mịn dần để giải quyết bài toán.]
Bài 2: Chứng minh mệnh đề này rất dễ dàng. Đây chính là phương án 2 của thuật toán sắp xếp.
[1.2.NC1a: HS thực hiện đánh giá sự tương đương của các giải pháp số.]
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.
* 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 27 – Thực hành thiết kế chương trình theo phương pháp làm mịn dần.
=> Giáo án Khoa học máy tính 11 kết nối Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình