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 20 · KHMT. Thực hành bài toán tìm kiếm

Kế hoạch bài dạy theo mẫu Công văn 5512/BGDĐT-GDTrH · 2 tiết (90 phút)

I. Mục tiêu

1. Kiến thức

  • Nêu được điều kiện áp dụng tìm nhị phân: dãy đã sắp xếp tăng dần và bất biến 'nếu mục tiêu có trong dãy thì nằm trong khoảng [l,r][l, r] chưa bị loại'.
  • Giải thích được vai trò của các cập nhật l=m+1l = m+1 và r=m−1r = m-1 trong việc bỏ vị trí giữa đã kiểm tra và bảo đảm khoảng tìm kiếm thu hẹp sau mỗi bước.
  • Mô tả được cách nhận biết trường hợp không tìm thấy khi điều kiện l>rl > r xảy ra và trả về −1-1.
  • Vận dụng được chương trình tìm nhị phân để tìm vị trí của một giá trị trong dãy tăng, kiểm tra kết quả bằng dữ liệu mẫu và các ca biên (dãy rỗng, dãy một phần tử).
  • Giải thích được vì sao cập nhật l=ml = m có thể gây lặp vô hạn với một số dữ liệu và cách sửa bằng l=m+1l = m+1.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: HS chủ động đọc lại chương trình mẫu, tự truy vết từng bước trên phiếu học tập và tự kiểm tra kết quả bằng cách chạy chương trình.
  • Giao tiếp và hợp tác: HS làm việc theo cặp để đối chiếu vết thực hiện, trình bày lập luận về bất biến và thảo luận đánh giá mã của bạn bằng thuật ngữ đúng.
  • Giải quyết vấn đề và sáng tạo: HS phân tích ca dữ liệu gây lỗi ([1,2][1,2], tìm 22), đề xuất cách sửa và đánh giá phương án tương đương đúng.

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ôi trường lập trình Python và trang bài học số để chạy, quan sát kết quả và ghi nhận kết quả thực hiện.
  • Ứ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 khi làm bài kiểm tra và ghi rõ phần mã do mình viết.
  • 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áy tính để thử nghiệm các ca dữ liệu biên, phát hiện lỗi vòng lặp vô hạn và sửa chương trình.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: HS sử dụng bài tập tương tác trên trang NeoEdu để tự kiểm tra kiến thức sau giờ học.
  • Hợp tác trong môi trường số: HS chia sẻ mã và kết quả kiểm thử trong nhóm qua phiếu chung hoặc bảng trình chiếu, cùng thống nhất đáp án cuối cùng.

3. Phẩm chất

  • Chăm chỉ: HS kiên trì truy vết từng bước và kiểm thử nhiều ca dữ liệu trước khi kết luận chương trình đúng.
  • Trách nhiệm: HS hoàn thành phần mã và lập luận được giao trong nhóm, tự kiểm tra lại mã của mình trước khi nộp.
  • Trung thực: HS ghi kết quả chạy thực tế, nêu đúng lỗi phát hiện được và không sửa kết quả kiểm thử để phù hợp với đáp án.

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 chương trình mẫu tìm nhị phân và dữ liệu mẫu [1,4,7,10,13,16][1,4,7,10,13,16].
  • Phiếu học tập số 1 và số 2 (in đủ cho các nhóm).
  • Thang chấm bài 8 và bảng tiêu chí đánh giá mã và lập luận.
  • Học liệu số NeoEdu: bài giảng, ví dụ và bài tập tương tác tại neoedu.vn/learn/11/informatics/bai-20-khmt-thuc-hanh-bai-toan-tim-kiem.

2. Học sinh

  • Máy tính có cài Python hoặc IDE tương đương.
  • Vở ghi, bút, bút dạ và giấy nháp để vẽ vết các bước.
  • Tài khoản truy cập trang bài học NeoEdu (nếu có).

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

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

Đoán số trong dãy đã sắp xếp

a) Mục tiêu

Huy động kinh nghiệm HS về cách thu hẹp phạm vi tìm kiếm và dẫn dắt vào ý tưởng chia đôi khoảng tìm kiếm.

b) Nội dung

GV đưa ra dãy tăng dần gồm các số từ 1 đến 16 (chỉ hiện trên bảng dạng danh sách) và chọn một số bí mật. HS chơi theo lượt: mỗi lần đoán một số, GV chỉ trả lời 'lớn hơn', 'nhỏ hơn' hoặc 'đúng'. Sau đó GV đặt câu hỏi: 'Chiến lược nào giúp bạn loại được nhiều khả năng nhất sau mỗi lần đoán?'

c) Sản phẩm

HS nêu được chiến lược chọn số ở giữa khoảng còn khả năng và loại nửa khoảng sau mỗi lần so sánh. GV ghi lên bảng hai ý then chốt: dãy phải được sắp xếp tăng dần và mỗi lần so sánh loại bỏ phần không thể chứa mục tiêu.

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 luật chơi, chọn số bí mật và đặt câu hỏi gợi mở về cách đoán hiệu quả.

    Học sinh

    HS lắng nghe luật, quan sát dãy số trên bảng và chuẩn bị ý kiến của mình.

  2. Giáo viên

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

    GV điều khiển trò chơi, trả lời 'lớn hơn', 'nhỏ hơn' hoặc 'đúng' sau mỗi lượt đoán và ghi số lượt đoán của từng nhóm.

    Học sinh

    HS chơi theo nhóm 3–4 người, đoán lần lượt và ghi lại khoảng khả năng còn lại sau mỗi lượt. Dự kiến HS đoán 'số 8' trước, sau đó chọn số ở giữa khoảng còn lại.

  3. Giáo viên

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

    GV mời 2–3 nhóm nêu chiến lược đã dùng và số lượt đoán, rồi đặt câu hỏi: 'Nếu đoán số đầu dãy liên tiếp thì điều gì xảy ra?'

    Học sinh

    HS trả lời: 'Nếu đoán số đầu dãy thì mỗi lần chỉ loại được một số, tốn nhiều lượt hơn.' HS khác bổ sung: 'Chọn số giữa loại được khoảng lớn hơn.'

  4. Giáo viên

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

    GV chốt: dãy phải tăng dần, chọn vị trí giữa để so sánh và loại nửa khoảng không thể chứa mục tiêu. Đây là ý tưởng của tìm nhị phân, sẽ được hình thành chi tiết ở hoạt động tiếp theo.

    Học sinh

    HS ghi tóm tắt ý chính vào vở.

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

Bất biến và cập nhật khoảng tìm kiếm

a) Mục tiêu

Giải thích được bất biến của tìm nhị phân, vai trò của các cập nhật l=m+1l = m+1 và r=m−1r = m-1, và điều kiện dừng khi không tìm thấy.

b) Nội dung

HS làm việc theo cặp với Phiếu học tập số 1: truy vết chương trình mẫu tìm 1313 trong [1,4,7,10,13,16][1,4,7,10,13,16], ghi giá trị ll, rr, mm, a[m]a[m] và quyết định ở từng bước. HS trả lời câu hỏi: 'Vì sao sau khi so sánh a[m]<xa[m] < x ta đặt l=m+1l = m+1 mà không đặt l=ml = m?' và 'Điều gì xảy ra khi l>rl > r?'

c) Sản phẩm

Vết thực hiện đúng: lần 1: l=0l=0, r=5r=5, m=2m=2, a[2]=7<13a[2]=7 < 13, cập nhật l=3l=3; lần 2: l=3l=3, r=5r=5, m=4m=4, a[4]=13a[4]=13, trả về 44. Kết luận HS ghi: bất biến là mục tiêu (nếu có) nằm trong [l,r][l, r]; l=m+1l = m+1 bỏ vị trí mm đã kiểm tra và phần bên trái; khi l>rl > r khoảng rỗng, không còn phần tử nào để kiểm tra nên trả về −1-1.

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, phát Phiếu học tập số 1 và nêu nhiệm vụ truy vết với dữ liệu [1,4,7,10,13,16][1,4,7,10,13,16], x=13x = 13.

    Học sinh

    HS đọc chương trình, nhận phiếu và xác định các biến cần theo dõi: ll, rr, mm, a[m]a[m].

  2. Giáo viên

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

    GV đi quanh lớp, nhắc cặp HS ghi giá trị sau mỗi vòng lặp và hỏi: 'Khoảng [l,r][l, r] còn chứa 13 không sau lần so sánh đầu?'

    Học sinh

    HS ghi vết theo từng vòng lặp. Dự kiến HS trả lời: 'Có, vì 13 lớn hơn 7 nên 13 nằm ở bên phải vị trí m=2m=2.' Cặp HS thảo luận vì sao không cần giữ lại vị trí mm.

  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 vết và câu trả lời về l=m+1l = m+1, sau đó hỏi cả lớp: 'Nếu dãy không chứa 5 thì điều kiện dừng là gì?'

    Học sinh

    HS trình bày: 'Sau khi l=m+1l = m+1 thì vị trí mm đã bị loại, khoảng thu hẹp dần.' Dự kiến HS trả lời: 'Điều kiện dừng là l>rl > r, khi đó khoảng rỗng và trả về −1-1.'

  4. Giáo viên

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

    GV chốt: bất biến là mục tiêu nằm trong [l,r][l, r] nếu có; cập nhật l=m+1l = m+1 hoặc r=m−1r = m-1 loại bỏ vị trí đã kiểm tra; điều kiện lặp là l≤rl \le r; khi l>rl > r thì không tìm thấy và trả về −1-1.

    Học sinh

    HS ghi vào vở bất biến, hai cập nhật và điều kiện dừng; đối chiếu với vết của nhóm mình.

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

Truy vết ca không thấy và ca biên

a) Mục tiêu

Vận dụng vết thực hiện để dự đoán kết quả với dãy rỗng, dãy một phần tử, trường hợp không có giá trị và trường hợp dễ gây lặp vô hạn.

b) Nội dung

HS làm việc nhóm 4 với Phiếu học tập số 2: dự đoán và kiểm chứng kết quả của tim([], 3), tim([2], 2), tim([1,4,7,10], 6) và tim([1,2], 2) khi thay l=m+1l = m+1 bằng l=ml = m. HS cũng dùng máy tính chạy các ca này và so sánh với dự đoán. GV đặt câu hỏi: 'Với [1,2][1,2] và x=2x = 2, giá trị ll có thay đổi sau một vòng lặp không?'

c) Sản phẩm

Kết quả: tim([],3) cho −1-1 vì r=−1r=-1 nên không vào vòng lặp; tim([2],2) cho 00 vì l=r=0l=r=0 và a[0]=2a[0]=2; tim([1,4,7,10],6) cho −1-1 vì khoảng thu hẹp đến r<lr < l mà không gặp 66; với [1,2][1,2], x=2x=2, ban đầu l=0l=0, r=1r=1, m=0m=0, a[0]=1<2a[0]=1<2; nếu cập nhật l=ml=m thì ll vẫn bằng 00, khoảng không thu hẹp và vòng lặp có thể lặp mãi. Với l=m+1l=m+1 thì l=1l=1, m=1m=1, trả về 11.

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, yêu cầu nhóm dự đoán trước khi chạy máy và ghi dự đoán vào phiếu.

    Học sinh

    HS đọc các ca thử, dự đoán kết quả và ghi giá trị ll, rr, mm cho từng ca vào phiếu.

  2. Giáo viên

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

    GV hướng dẫn nhóm nhập từng ca vào máy tính, chạy chương trình và đối chiếu với dự đoán. GV nhắc: khi thử l=ml = m cần dừng chương trình nếu chạy quá lâu.

    Học sinh

    HS chạy các ca, ghi kết quả thực tế và so sánh với dự đoán. Dự kiến HS nhận ra ca [1,2][1,2] với l=ml=m không kết thúc và phải dừng bằng tổ hợp phím.

  3. Giáo viên

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

    GV mời một nhóm trình bày kết quả ca [1,2][1,2] với l=ml=m, đồng thời hỏi: 'Vì sao ca này không xảy ra với l=m+1l=m+1?'

    Học sinh

    HS trình bày: 'Với l=ml=m, ll giữ nguyên là 00 nên vòng lặp không tiến.' HS khác đáp: 'Với l=m+1l=m+1, ll tăng thành 11 nên khoảng luôn thu hẹp.'

  4. Giáo viên

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

    GV chốt: dãy rỗng và ca không có giá trị đều trả về −1-1 khi l>rl > r; cập nhật phải làm khoảng thu hẹp thật sự, vì vậy dùng l=m+1l = m+1 và r=m−1r = m-1; ca biên cần được kiểm tra trước khi nộp chương trình.

    Học sinh

    HS ghi bảng kết quả các ca và lí do vào vở, đánh dấu ca gây lỗi.

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

Củng cố khái niệm và đọc hiểu chương trình

a) Mục tiêu

Củng cố điều kiện áp dụng, cập nhật khoảng tìm kiếm, điều kiện không thấy và thứ tự các bước giải bài toán tìm nhị phân.

b) Nội dung

HS làm các bài tập 2 đến 7 của bài học theo nhóm đôi, ghi đáp án vào phiếu và giải thích ngắn gọn. Bài 2: tim([],3). Bài 3: tim([2],2). Bài 4: tim([1,4,7,10],6). Bài 5: cập nhật khi a[m]<xa[m] < x trong dãy tăng. Bài 6: điều kiện kết thúc khi không tìm thấy. Bài 7: sắp xếp các bước phương pháp giải.

c) Sản phẩm

Đáp án: bài 2: −1-1 (không chạy vòng lặp vì r=−1r=-1); bài 3: 00 (l=r=0l=r=0 và so sánh bằng); bài 4: −1-1 (khoảng thu hẹp đến r<lr < l, không có 66); bài 5: A, l=m+1l = m+1 (bỏ nửa trái và vị trí giữa); bài 6: Đúng, l>rl > r là khoảng không còn phần tử; bài 7: Đặt khoảng toàn dãy → Chọn giữa và so sánh → Thu hẹp bỏ phần không thể chứa → Dừng khi thấy hoặc khoảng rỗ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 danh sách bài 2 đến 7 và yêu cầu HS làm theo cặp, ghi đáp án và một câu giải thích cho mỗi bài.

    Học sinh

    HS đọc đề, làm bài theo cặp và ghi đáp án vào phiếu hoặc vở.

  2. Giáo viên

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

    GV quan sát, hỗ trợ các cặp còn lúng túng với bài 2 và bài 4 bằng cách gợi ý vẽ lại vết ll, rr.

    Học sinh

    HS thực hiện bài tập; dự kiến một số cặp nhầm bài 4 là tìm thấy, GV hướng dẫn họ kiểm tra lại khoảng cuối cùng.

  3. Giáo viên

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

    GV gọi ngẫu nhiên 3 cặp trình bày đáp án bài 3, bài 4 và bài 7; các cặp khác nhận xét.

    Học sinh

    HS trình bày đáp án và lí do. Dự kiến HS nêu: 'Bài 3 cho 00 vì l=r=0l=r=0 và a[0]=2a[0]=2 bằng xx.'

  4. Giáo viên

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

    GV chốt đáp án đúng và nhấn mạnh: trường hợp không tìm thấy luôn kết thúc khi l>rl > r; thứ tự các bước giải phải bắt đầu từ khoảng toàn dãy.

    Học sinh

    HS sửa đáp án sai (nếu có) và ghi lại bảng tóm tắt vào vở.

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

Viết, kiểm thử và phân tích lỗi chương trình

a) Mục tiêu

Viết và kiểm thử được chương trình tìm nhị phân hoàn chỉnh; phân tích được lỗi khi dùng l=ml = m và đề xuất cách sửa.

b) Nội dung

Bài 1 và Bài 8: HS viết hàm tim(a, x) tìm 1313 trong [1,4,7,10,13,16][1,4,7,10,13,16] với quy ước chỉ số từ 00, trả về −1-1 nếu không thấy, rồi chạy kiểm thử theo dữ liệu mẫu. Bài 9: HS trả lời 'Nếu dùng l=ml = m thay l=m+1l = m+1, có rủi ro gì? Cho ca.' và viết ca [1,2][1,2], tìm 22, cùng vết ll, rr, mm.

c) Sản phẩm

Bài 1: kết quả 1313 nằm ở vị trí 44 (quy ước đếm từ 00). Bài 8: chương trình hoàn chỉnh có điều kiện lặp l≤rl \le r, cập nhật l=m+1l = m+1 hoặc r=m−1r = m-1, trả về −1-1 khi không thấy; khi chạy với dữ liệu mẫu in ra 44. Thang chấm gợi ý: điều kiện dãy tăng và phạm vi tìm kiếm 0,20,2 điểm; so sánh giữa và thu hẹp đúng 0,40,4 điểm; tìm 1313 cho kết quả 44 là 0,250,25 điểm; dừng khi khoảng rỗng 0,150,15 điểm. Bài 9: với [1,2][1,2], x=2x=2: l=0l=0, r=1r=1, m=0m=0, l=ml=m giữ l=0l=0, không tiến, có thể lặp mãi; sửa bằng l=m+1l=m+1 là 0,30,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 đề bài 1, 8, 9 và nhắc HS: bài 8 chấm theo lập luận và kết quả kiểm thử, không so khớp từng kí tự mã; nếu chưa kịp, hoàn thiện ở nhà.

    Học sinh

    HS đọc đề, mở máy tính và tạo tệp Python mới để viết hàm.

  2. Giáo viên

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

    GV đi kiểm tra các máy, hỗ trợ HS gặp lỗi cú pháp hoặc chỉ số, nhắc HS ghi vết bài 9 trên giấy nháp.

    Học sinh

    HS viết và chạy chương trình, thử ca mẫu và ghi kết quả. Dự kiến HS viết điều kiện lặp đúng là l≤rl \le r, và một số HS quên cập nhật r=m−1r = m-1.

  3. Giáo viên

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

    GV mời 2 HS đọc to đoạn mã và kết quả chạy; hỏi cả lớp: 'Vì sao l=ml = m có thể gây lặp vô hạn?'

    Học sinh

    HS trình bày mã và kết quả 44. Dự kiến HS trả lời: 'Vì ll không thay đổi nên khoảng không thu hẹp, vòng lặp không kết thúc.'

  4. Giáo viên

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

    GV chấm nhanh theo thang điểm và chốt: mã đúng cần có đủ điều kiện lặp, hai cập nhật và trường hợp trả về −1-1; l=ml = m là lỗi vòng lặp vô hạn.

    Học sinh

    HS tự đối chiếu mã của mình với thang chấm và sửa các phần chưa đạt.

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

Kiểm tra mã sản phẩm trong danh mục đã sắp xếp

a) Mục tiêu

Vận dụng tìm nhị phân vào bài toán thực tế tra cứu mã sản phẩm; đánh giá sản phẩm, kiểm tra điều kiện áp dụng và giải thích kết quả.

b) Nội dung

Tình huống: một cửa hàng lưu danh sách mã sản phẩm dạng số đã sắp xếp tăng dần, ví dụ [101,105,118,124,130,147][101, 105, 118, 124, 130, 147]. HS nhận một đoạn mã tra cứu có lỗi (dùng l=ml = m) và danh sách mã chưa sắp xếp như [130,101,147][130, 101, 147]. HS phải: (1) sửa lỗi l=ml = m thành l=m+1l = m+1; (2) kiểm tra xem dãy có đủ điều kiện áp dụng tìm nhị phân không; (3) thử tìm mã 124124 và mã 9999, giải thích kết quả. Nhiệm vụ về nhà: viết hàm tra cứu mã sản phẩm trên danh sách của lớp hoặc cửa hàng đã sắp xếp, kèm 3 ca kiểm thử.

c) Sản phẩm

Sản phẩm HS nộp: đoạn mã đã sửa với cập nhật l=m+1l = m+1 và r=m−1r = m-1; kết luận: dãy chưa sắp xếp [130,101,147][130, 101, 147] không đủ điều kiện áp dụng, cần sắp xếp trước; tra cứu 124124 trên dãy đã sắp xếp cho chỉ số 33; tra cứu 9999 cho kết quả −1-1 vì không có mã. Ghi chú: kết quả đúng theo quy ước đếm từ 00.

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 bày tình huống cửa hàng, phát đoạn mã có lỗi và yêu cầu nhóm thực hiện ba nhiệm vụ.

    Học sinh

    HS đọc tình huống, xác định điều kiện áp dụng và ghi kế hoạch thực hiện.

  2. Giáo viên

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

    GV hướng dẫn nhóm sửa lỗi trước, sau đó kiểm tra dãy chưa sắp xếp và thử hai giá trị tra cứu.

    Học sinh

    HS sửa mã, chạy thử với 124124 và 9999 trên dãy đã sắp xếp, ghi kết quả. Dự kiến HS nhận ra dãy [130,101,147][130, 101, 147] không tăng dần nên kết quả không đáng tin cậy.

  3. Giáo viên

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

    GV mời một nhóm trình bày đoạn mã đã sửa và kết luận về điều kiện áp dụng; hỏi lớp: 'Nếu dãy chưa sắp xếp thì điều gì có thể xảy ra?'

    Học sinh

    HS trình bày kết quả. Dự kiến HS trả lời: 'Vì tìm nhị phân dựa vào thứ tự tăng dần nên có thể không tìm thấy mã dù mã có trong danh sách.'

  4. Giáo viên

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

    GV đánh giá nhanh các sản phẩm, chốt: tìm nhị phân chỉ áp dụng đúng khi dãy đã sắp xếp tăng dần; mã lỗi l=ml = m cần sửa; giao nhiệm vụ về nhà.

    Học sinh

    HS ghi kết luận và nhiệm vụ về nhà vào vở.

Phiếu học tập

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

Truy vết chương trình tìm nhị phân với dữ liệu [1,4,7,10,13,16][1,4,7,10,13,16], x=13x = 13.

  • Bảng ghi vết cần điền: vòng lặp thứ, ll, rr, mm, a[m]a[m], so sánh, cập nhật.
  • Câu 1: Kết quả trả về là bao nhiêu? Vị trí của 1313 tính từ 00 là gì?
  • Câu 2: Vì sao sau khi a[m]<xa[m] < x ta đặt l=m+1l = m+1?
  • Câu 3: Điều kiện nào cho biết khoảng tìm kiếm đã rỗng và chương trình phải trả về −1-1?
  • Câu 4: Nêu bất biến của tìm nhị phân bằng một câu.

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

Dự đoán và kiểm chứng các ca biên.

  • Ca 1: tim([], 3). Dự đoán: ______. Kết quả chạy: ______.
  • Ca 2: tim([2], 2). Dự đoán: ______. Kết quả chạy: ______.
  • Ca 3: tim([1,4,7,10], 6). Dự đoán: ______. Kết quả chạy: ______.
  • Ca 4: tim([1,2], 2) với l=ml = m thay cho l=m+1l = m+1. Ghi ll, rr, mm qua từng vòng lặp: ______.
  • Câu hỏi: Ca 4 có kết thúc không? Vì sao?
  • Câu hỏi: Cách sửa đúng là gì và kết quả sau khi sửa là bao nhiêu?

Hướng dẫn về nhà

  • Hoàn thiện bài 8 (viết hàm tim(a, x) hoàn chỉnh) nếu chưa kịp trên lớp; chạy kiểm thử với dữ liệu [1,4,7,10,13,16][1,4,7,10,13,16] và ghi kết quả.
  • Viết hàm tra cứu mã sản phẩm trên một danh sách mã số đã sắp xếp tăng dần (do em tự chọn, tối thiểu 6 phần tử), trả về chỉ số hoặc −1-1.
  • Kiểm thử hàm vừa viết với 3 ca: mã có trong danh sách, mã đầu danh sách, mã không có trong danh sách; ghi kết quả và giải thích ngắn gọn.
  • Làm bài tập tương tác về tìm nhị phân trên trang neoedu.vn/learn/11/informatics/bai-20-khmt-thuc-hanh-bai-toan-tim-kiem để tự kiểm tra kiến thức.

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.