Giáo án NLS Tin học 11 KHMT kết nố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 NLS Tin học 11 (Khoa học máy tính) kết nối tri thức 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. 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 27: THỰC HÀNH THIẾT KẾ CHƯƠNG TRÌNH

THEO PHƯƠNG PHÁP LÀM MỊN DẦN

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:

  • Thực hành thiết kế chương trình theo phương pháp làm mịn dần.
  • Biết thiết kế và cài đặt chương trình theo phương pháp làm mịn dần.

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: 

  • Thực hành thiết kế chương trình theo phương pháp làm mịn dần.
  • Biết thiết kế và cài đặt chương trình theo phương pháp làm mịn dần.

Năng lực số:

  • 5.2.NC1b: Sử dụng môi trường lập trình để chia nhỏ bài toán thành các hàm, viết mã, kiểm thử và gỡ lỗi từng mô-đun.
  • 6.2.NC1b: Sử dụng AI để sinh dữ liệu kiểm thử (Test cases) hoặc gợi ý tối ưu hóa các bước làm mịn chi tiết.
  • 3.1.NC1a: Xây dựng cấu trúc chương trình rõ ràng, mạch lạc theo tư duy thiết kế từ trên xuống.
  • 1.2.NC1a: Đánh giá tính hiệu quả của giải thuật khi thay đổi phương pháp tiếp cận.

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 

…………………………………………..

…………………………………………..

…………………………………………..
 

2. HOẠT ĐỘNG THỰC HÀNH

Nhiệm vụ 1

a) Mục tiêu: Giúp HS thực hành được phương pháp làm mịn dần trong thiết kế chương trình kiểm tra hoán vị.

b) Nội dung: GV tổ chức cho HS thực hiện theo các hoạt động trong SGK và thực hành nhiệm vụ được giao.

c) Sản phẩm: Sản phẩm thực hành của HS.

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

HOẠT ĐỘNG CỦA GV VÀ HSSẢN PHẨM DỰ KIẾNNLS

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

- GV chia lớp thành các nhóm từ 2 – 4 HS.

- GV chiếu nhiệm vụ học tập:

Cho trước một dãy n số, các số được kí hiệu A[0], A[1],..., A[n-1]. Cần thiết kế chương trình kiểm tra xem dãy trên có phải là một hoán vị của dãy số 1, 2, …, n hay không. Chương trình cần thông báo kết quả là CÓ hoặc KHÔNG.

- GV mô tả nhiệm vụ và phác thảo các bước thiết kế chính theo phương pháp làm mịn dần:

+ Tìm hiểu bài toán

+ Thiết kế theo phương pháp làm mịn dần

+ Chương trình hoàn chỉnh

Bước 2: HS thực hiện nhiệm vụ học tập: 

- HS lắng nghe GV hướng dẫn, đọc theo SGK và thực hiện việc cài đặt thành chương trình hoàn chỉnh, tạo bộ test theo hướng dẫn và kiểm tra xem chương trình đã viết có đúng không.

- GV quan sát và trợ giúp HS. 

Bước 3: Báo cáo kết quả hoạt động, thảo luận: 

- HS báo cáo các bộ test theo hướng dẫn.

- HS khác nhận xét, bổ sung cho bạn. 

Bước 4: Đánh giá kết quả thực hiện: 

- Sau khi HS hoàn thành chương trình, GV nhận xét và tổng kết nội dung nhiệm vụ 1.

- GV chuyển sang hoạt động tiếp theo.

Nhiệm vụ 1. Kiểm tra hoán vị

a) Tìm hiểu bài toán

Bài toán gốc: Cho trước dãy số A gồm n phần tử, cần kiểm tra xem A có phải là một hoán vị của dãy số 1, 2,..., n hay không.

b) Thiết kế theo phương pháp làm mịn dần

Bước 1. Thiết lập ý tưởng thiết kế ban đầu

Sơ đồ khung ban đầu của lời giải như sau:

1 Sắp xếp dãy A theo thứ tự tăng dần

2 Kiểm tra A có phải là dãy 1, 2, …, n hay không

Bước 2. Sắp xếp dãy A

- Việc sắp xếp dãy A theo thứ tự tăng dần được mô tả bằng hàm sapxep(A) theo một trong các thuật toán sắp xếp mà chúng ta đã biết.

- Ví dụ bằng thuật toán sau:

1 def sapxep(A):

2     for  i in range(len(A)):

3       j = i

4       while  j > 0 and A[j] < A[j-1]:

5           A[j],A[j-1] = A[j-1],A[j]

6           j = j – 1

Bước 3. Với dãy A đã được sắp xếp, kiểm tra A có phải là dãy [1, 2, …, n]?

- Việc kiểm tra này có thể được thực hiện đơn giản như sau:

Kiểm tra lần lượt các phần tử của A với các phần tử tương ứng của dãy 1, 2, …, n. Nếu tất cả các so sánh đều bằng nhau thì trả về kết quả True, ngược lại trả về False.

Sử dụng biến kq để trả lại kết quả của việc so sánh A và dãy các số 1, 2, …, n, ta có thể viết đoạn chương trình chi tiết thực hiện công việc được mô tả trên như sau:

1      sapxep(A)

2      kq = True

3      for  i in range(len(A)):

4           if A[i] != i+1:

5              kq = False

6              break

7      return  kq

- Kết quả của toàn bộ bước này có thể viết dưới dạng hàm kt_hoanvi(A), trong đó A là dãy số ban đầu. Hàm sẽ trả về True nếu A là hoán vị của [1, 2, …, n] ngược lại trả về False.

1 def kt_hoanvi(A):

2     sapxep(A)

3     kq = True

4     for  i in range(len(A)):

5         if  A[i] != i+1:

6            kq = False

7            break

8      return  kq

c) Chương trình hoàn chỉnh

1 def sapxep(A):

2     for  i in range(len(A)):

3       j = i

4       while  j > 0 and A[j] < A[j-1]:

5            A[j],A[j-1] = A[j-1],A[j]

6            j = j – 1

7

8 def kt_hoanvi(A):

9     sapxep(A)

10    kq = True

11    for  i in range(len(A)):

12        if  A[i] != i+1:

13           kq = False

14           break

15     return  kq

16

17 #Chương trình chính

18 A = [2,1,9,10,8,6,5,2,3,1]

19 if kt_hoanvi(A):

20    print("CÓ")

21 else:

22    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.

- 3.4.NC1a: Viết chương trình Python kiểm tra hoán vị.

Nhiệm vụ 2

a) Mục tiêu: Giúp HS thực hành được phương pháp làm mịn dần trong thiết kế chương trình đếm số lần lặp.

b) Nội dung: GV tổ chức cho HS thực hiện theo các hoạt động trong SGK và thực hành nhiệm vụ được giao.

c) Sản phẩm: Sản phẩm thực hành của HS.

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

…………………………………………..

…………………………………………..

…………………………………………..
 

3. HOẠT ĐỘNG LUYỆN TẬP

a) Mục tiêu: HS củng cố cách xác định độ phức tạp của thuật toán.

b) Nội dung: HS vận dụng các kiến thức đã học để hoàn thành bài tập phần Luyện tập trang 126 SGK.

c) Sản phẩm học tập: Câu trả lời nội dung Luyện tập.

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

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

- GV tổ chức cho HS làm Bài 1, 2 phần Luyện tập trang 126 SGK:

Bài 1: Thiết kế thuật toán cho Nhiệm vụ 1 với ý tưởng khác như sau: Dây A là một hoán vị của dãy các số từ 1 đến n khi và chỉ khi dãy A có độ dài n và mọi số i từ 1 đến n đều nằm trong A.

Bài 2: Trong Nhiệm vụ 2, nếu dãy A đã được sắp xếp theo thứ tự tăng dần thì có thể cải tiến thuật toán tốt hơn được không?

Bước 2: HS thực hiện nhiệm vụ học tập: 

- HS suy nghĩ, hoàn thành các bài tập GV yêu cầu.

- GV quan sát và hỗ trợ, hướng dẫn.

Bước 3: Báo cáo kết quả hoạt động, thảo luận: 

- HS thực hiện các thao tác.

Bài 1. Thiết kế lại Nhiệm vụ 1 theo ý tưởng khác. Các bước thực hiện như sau: 

Bước 1. Thiết lập ý tưởng ban đầu theo cách mới

Thuật toán có thể như sau:

1. Gọi n là độ dài của dãy A.

2. Với mỗi số i chạy từ 1 đến n, kiểm tra xem i có nằm trong A hay không?

Nếu i không nằm trong A thì lập tức thông báo KHÔNG

3. Kết thúc vòng lặp thông báo CÓ

Bước 2. Công việc tại dòng 1 ở trên được thể hiện bằng lệnh:

n = len(A)

Bước 3. Chi tiết công việc tại dòng 2 ở trên.

Dòng 2 là một lệnh duyệt với chỉ số i chạy từ 1 đến n, kiểm tra nếu i không thuộc A thì lập tức dừng chương trình và thông báo "KHÔNG".

for i in range(1, n+1):

if i not in A:

return “KHÔNG”

Bước 4. Dòng 3 chính là lệnh.

return "CÓ"

Tổng hợp lại ta có chương trình hoàn chỉnh

1        def hoanvi(A):

2                 n = len(A)

3                 for i in range(1,n+1):

4                           if i not in A:

5                                    return "KHÔNG"

6                 return "CÓ"

[3.4.NC1a: Viết chương trình Python kiểm tra hoán vị.]

Bài 2. Trường hợp nếu dãy A đã được sắp xếp tăng dần thì Nhiệm vụ 2 có thể cải tiến tốt hơn. Sau đây là một phương án làm tốt hơn bài toán này.

…………………………………………..

…………………………………………..

…………………………………………..
 

[5.2.NC1b: HS tư duy tối ưu hóa thuật toán dựa trên đặc điểm cấu trúc dữ liệu (dãy đã được sắp xếp).]

Bước 4: Đánh giá kết quả thực hiện: 

- GV chữa bài, chốt đáp án, tuyên dương các hoạt động tốt, nhanh và chính xác.

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 126 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:

…………………………………………..

…………………………………………..

…………………………………………..
 

=> Giáo án Khoa học máy tính 11 kết nố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

Thông tin tải tài liệu:

Phía trên chỉ là 1 phần, tài liệu khi tải sẽ có đầy đủ. Xem và tải: 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 cả năm - Tại đây

Tài liệu khác

Tài liệu của bạn

Tài liệu mới cập nhật

Tài liệu môn khác

Chat hỗ trợ
Chat ngay