Trong học kỳ I, bài số 4 – Bài toán và thuật toán là một bài khó dạy và học sinh khó có thể hiểu được các thuật toán mà sách giáo khoa (SGK) đã đưa ra.Với thời lượng là 6 tiết (5 tiết lý thuyết + 1 tiết bài tập), giáo viên rất khó để truyền tải được toàn bộ các thuật toán ở trong SGK. Vậy thì có thể bỏ bớt một vài thuật toán hay không? Tất nhiên là có thể, bởi vì bản thân người viết sách cũng không yêu cầu phải truyền đạt hết tất cả những gì có trong sách. Tuy nhiên, theo nhận định của cá nhân tôi thì những thuật toán mà người viết sách đưa ra là rất hay và có áp dụng vào học lập trình ở tin học 11, vấn đề còn lại là làm thế nào để học sinh có thể hiểu được các thuật toán này? Có lẽ là quý thầy cô sẽ có cùng ý kiến với tôi là: Hãy minh họa thuật toán với các ví dụ trực quan sinh động và thực tế hơn.
I: ĐẶT VẤN ĐÊ Kính thưa quý thầy cô giáo! Nếu quý thầy cô đã và dạy bộ môn Tin học 10 thì hẳn thầy cô se có nhận xét rằng: Trong học kỳ I, bài số – Bài toán và thuật toán là một bài khó dạy và học sinh khó có thể hiểu được các thuật toán mà sách giáo khoa (SGK) đã đưa Với thời lượng là tiết (5 tiết lý thuyết + tiết bài tập), giáo viên rất khó để truyền tải được toàn bộ các thuật toán ở SGK Vậy thì có thể bỏ bớt một vài thuật toán hay không? Tất nhiên là có thể, bởi vì bản thân người viết sách cũng không yêu cầu phải truyền đạt hết tất cả những gì có sách Tuy nhiên, theo nhận định của cá nhân thì những thuật toán mà người viết sách đưa là rất hay và có áp dụng vào học lập trình ở tin học 11, vấn đề còn lại là làm thế nào để học sinh có thể hiểu được các thuật toán này? Có le là quý thầy cô se có cùng ý kiến với là: Hãy minh họa tḥt toán với các ví dụ trực quan sinh đợng và thực tế Xuất phát từ thực tế giảng dạy và từ nội dung chương trình Tin học phổ thông Toàn bộ chương trình Tin học 11 đều nghiên cứu về lập trình là kiến thức có liên quan mật thiết với các thuật toán Đó cũng là lý để viết đề tài “Một số phương pháp giảng dạy thuật toán” Tôi rất mong được góp ý của quý thầy cô để đề tài ngày càng được hoàn thiện Xin chân thành cảm ơn! Trang Phần 2: NHỮNG BIỆN PHÁP GIẢI QUYẾT VẤN ĐÊ I CƠ SỞ LÝ LUẬN CỦA VẤN ĐÊ: Như ta đã biết Tin học là một bộ môn mới được đưa vào giảng dạy thức nhà trường phổ thông năm học 2006-2007 Đối với các em học sinh, có thể nói là một “hành trang” để giúp các em vững bước tới tương lai, SGK tin hoc 10 có câu “Nếu không có hiểu biết nhất định về tin học thì khó có thể hòa nhập vào cuộc sống hiện đại” Tuy nhiên, với các em học sinh nói chung và các em học sinh ở vùng miền núi nói riêng, việc tiếp cận với bộ môn Tin học còn nhiều hạn chế Một mặt dễ hiểu đó là vì hầu hết các em chưa có điều kiện tiếp xúc với máy tính nhiều, cũng lĩnh vực cơng nghệ thơng tin vấn còn khá mới mẻ! Mặt khác ở địa bàn huyện KBang hầu hết các học sinh tốt nghiệp THCS đều được vào thẳng lớp 10 – THPT mà không qua một khâu tuyển chọn đầu vào nào Vì vậy khả tư của các em các lớp bản còn nhiều hạn chế Do đó việc truyền tải các thuật toán SGK cho các em là một việc không dễ Xuất phát từ thực tiễn vậy, đã đưa một số phương pháp giúp cho việc truyền tải kiến thức tới các em một cách dễ dàng hơn: - Sử dụng phương pháp thuyết trình kết hợp vấn đáp - Đưa các ví dụ sát với thực tế gọi học sinh lên bảng đứng làm mẫu cần biểu diễn thuật toán xếp hay lấy học sinh ngồi bàn đầu để biểu diễn thuật toán tìm Max - Sử dụng các tấm bìa cứng có ghi nội dung để mô ý tưởng của thuật toán - … Sự tác động qua lại này se giúp cho tiết học sinh động và quan trọng là học sinh se hiểu các thuật toán một cách dễ dàng Trang II CÁC BIỆN PHÁP ĐÃ TIẾN HÀNH ĐỂ GIẢI QUYẾT VẤN ĐÊ: BÀI TOÁN THỨ NHẤT: TÌM GIÁ TRỊ LỚN NHẤT CỦA MỘT DÃY SỐ NGUYÊN a Xác định bài toán: - Input: Số nguyên dương N và dãy N số nguyên a1, a2, , aN - Output: Giá trị lớn nhất Max của dãy số b Ý tưởng thuật toán: - Theo ý tưởng của sách giáo khoa: + Khởi tạo giá trị Max=a1 + Lần lượt với i từ tới N, so sánh số hạng a i với Max, nếu Maxa2 nên ta giữ nguyên vị trí của Max Ma x - So sánh Max với a3 ta thấy Max>a3 nên ta giữ nguyên vị trí của Max Ma x - So sánh Max với a4 thấy Maxa5 nên ta giữ nguyên vị trí của Max Ma x - So sánh Max với a6 ta thấy Max>a6 nên ta giữ nguyên vị trí của Max Ma x Trang Sau so sánh với a6 thì đã hết dãy Cuối cùng ta thu được Max=a (Max=7) d Một số câu hỏi vấn đáp: - GV: Đầu tiên Max nhận giá trị của phần tử thứ mấy dãy? HS: Max đầu tiên nhận giá trị a1 - GV: Chúng ta so sánh Max lần lượt với các phần tử nào? HS: Chúng ta so sánh Max hiện tại lần lượt với các phần tử từ thứ cho đến hết dãy - GV: Nếu gặp trường hợp MaxN, ngược lại thì chưa hết dãy e Mô tả liệt kê: B1: Nhập N và dãy a1, a2, …, aN và khoá K B2: i1 B3: Nếu = K thì thông báo số i, kết thúc B4: i i+1 B5: Nếu i > N thì thông báo dãy A không có số hạng nào có giá trị bằng khoá, kết thúc B6: Quay lại B3 f Sơ đồ khối mô tả thuật toán: Nhập N, a1, a2, …, aN, khoá K i1 = K Đ thơng báo sớ i kết thúc S i i+1 S i>N Đ Khơng tìm thấy khoá K Trang 16 BÀI TOÁN THỨ TƯ: THUẬT TOÁN TÌM KIẾM NHỊ PHÂN a Xác định bài toán: - Input: Dãy A là dãy tăng gồm N số hạng a1, a2, …, aN và khóa K - Ouput: Chỉ số i mà ai=K thông báo không tìm thấy khóa K b Ý tưởng thuật toán: Sử dụng tính chất dãy A là dãy tăng, ta chia đôi dãy thành hai dãy con, phạm vi tìm kiếm se được thu hẹp sau lần so sánh khóa với số hạng được chọn Ta chọn số hạng aGiua để so sánh với k, đó: N + 1 Giua = Khi đó, xảy một ba trường hợp sau: - Nếu aGiua = k đưa Giua, kết thúc - Nếu aGiua > k phạm vi tìm kiếm thu hẹp lại dãy đầu so với dãy ban đầu - Nếu aGiua < k phạm vi tìm kiếm thu hẹp lại dãy sau so với dãy ban đầu Quá trình se được lặp lại một số lần cho đến tìm thấy khóa k dãy A phạm vi tìm kiếm bằng rỗng c) Liên hệ thực tế: Giáo viên đưa một bài toán với học sinh sau: Em hãy chọn một số nguyên dương phạm vi từ đến 100 (giữ kín số này) Em hãy trả lời các câu hỏi sau, thầy se đoán số mà em đã chọn (Giả sử học sinh chọn số 45, khóa tìm kiếm K=45) Câu hỏi 1: Số đó có lớn 50 không? Học sinh trả lời không Câu hỏi 2: Số đó có lớn 25 không? Học sinh trả lời có Câu hỏi 3: Số đó có lớn 37 không? Học sinh trả lời có Câu hỏi 4: Số đó có lớn 43 không? Học sinh trả lời có Trang 17 Câu hỏi 5: Số đó có lớn 46 không? Học sinh trả lời không Câu hỏi 6: Số đó có lớn 44 không? Học sinh trả lời có Câu hỏi 7: Số đó có lớn 45 không? Học sinh trả lời không Vậy số mà em lựa chọn số 45 Tại thầy có thể đoán sau lần kiểm tra giá trị Khóa với số cần tìm? Là vì sau câu hỏi thầy đã thu hẹp phạm vi tìm kiếm các số còn một nữa Sau câu hỏi thứ nhất phạm vi các số còn 50 số, sau câu hỏi thứ phạm vi các số còn 25 số đến câu hỏi số phạm vi các số còn nhất số Do vậy cần so sánh với số tương ứng câu hỏi thầy đã đưa được số các em đã lựa chọn mà không cần kiểm tra hết 100 số Đó là ý tưởng của thuật toán tìm kiếm nhị phân d Sử dụng các bìa giấy cứng có ghi nội dung để mơ phong ý tưởng thuật toán: 10 tấm bìa ghi Dãy A: (Mợt mặt ghi kí hiệu a i, mặt ghi giá trị của ai) Mặt trước: a1 a2 10 14 17 19 22 a3 a4 a5 a6 a7 a8 a9 a10 Mặt sau: K=1 K=1 02 tấm bìa ghi Khóa K: 10 bìa ghi nội dung dãy A gắn úp mặt giá trị vào bảng cho HS phía khơng thấy giá trị a i,còn bìa ghi nội dung khóa K giáo viên cầm tay Gọi một học sinh lên bảng và đưa cho học sinh đó tấm bìa khóa K, yêu cầu học sinh tìm một tấm bìa úp bảng có giá trị bằng K theo ý tưởng tìm kiếm nhị phân - Với dãy A gồm N=10 phần tử và K=17: 1 + 10 = ; lật tấm bìa a5 lên thấy Lần duyệt 1: Dau=1; Cuoi=10; Giua = a5=8 Vậy a5 khác K nên chuyển sang lần duyệt Trang 18 Lần duyệt 2: Vì a5Cuoi - GV: Khi gặp trường hợp aGiua = K thì đưa thông báo gì? Và gặp trường hợp Dau>Cuoi thì đưa thông báo gì? HS: Khi gặp trường hợp aGiua = K thì đưa thông báo số Giua, còn gặp trường hợp Dau>Cuoi thì đưa thông báo “trong dãy không có số hạng nào bằng khóa” Trang 20 - GV: Nếu aGiua > K thì tìm phạm vi tìm kiếm là đoạn nào? Và aGiua < K thì tìm kiếm đoạn nào? HS: Nếu aGiua > K thì tìm từ Dau tới Giua-1, ngược lại thì tìm từ Giua+1 tới Cuoi f Mô tả liệt kê: B1: Nhập N và dãy a1, a2, …, aN và khoá K B2: Dau 1, Cuoi N Dau + Cuoi B3: Giua B4: Nếu aGiua=K thì thông báo số Giua, kết thúc B5: Nếu aGiua > K thì đặt CuoiGiua-1, chuyển đến B7 B6: Dau Giua + B7: Nếu Dau > Cuoi thì thông báo dãy A không có số hạng bằng K, kết thúc B8: Quay lại B3 Nhập dãytoán: a1, a2, …, g Sơ đồ khối mô tảN,thuật aN , khoaù K Dau 1, Cuoi N Giua aGiua=K T F aGiua>K T thông báo số Giua, kết thúc CuoiGiua-1 F DauGiua+1 F Dau > Cuoi T thông báo dãy A số hạng K, Trang 21 III- HIỆU QUẢ CỦA SKKN: - Học sinh sôi nổi, hứng thú học nhờ được vận dụng kiến thức thực tế của mình vào bài học - Học sinh tiếp cận kiến thức một cách nhẹ nhành thơng qua các ví dụ gần gũi, khơng bị áp đặt - Học sinh ham thích mơn học chủ động tiếp thu kiến thức Trang 22 Phần III: KẾT LUẬN I Ý NGHĨA CỦA SÁNG KIẾN KINH NGHIỆM: Tin học nói chung đóng vai trò hết sức quan trọng xã hội hiện đại, tin học đã làm thay đổi nhận thức của người và ứng dụng hầu hết các hoạt động của xã hội loài người Qua bài số 4: Bài toán và thuật toán, bước đầu giúp các em hiểu được một số thuật toán đơn giản, là tiền đề để các em tiếp tục học lập trinh chương trình lớp 11 Với việc đưa các phương án trên, quá trình giảng dạy Tin học 10, bản thân thấy rằng các tiết học về bài toán và thuật toán không còn nhàm chán, khô cứng nữa mà trở nên sôi nổi và học sinh cũng có thể hiểu các thuật toán một cách dễ dàng Đề tài này đời từ kinh nghiệm của bản thân quá trình giảng dạy Rất mong góp ý chân thành của quý thầy cô để sáng kiến ngày càng hoàn thiện và có thể trợ giúp cho một cách hiệu quả công việc giảng dạy Xin chân thành cảm ơn! II NHỮNG KIẾN NGHỊ, ĐÊ NGHỊ SAU KHI THỰC HIỆN ĐÊ TÀI: Sau thực đề tài, tơi xin có vài ý kiến sau: - Nên áp dụng rộng rãi đề tài này việc giảng dạy môn Tin học - Đề nghị cấp tạo điều kiện nữa về sở vật chất giúp giáo viên có phương tiện giảng dạy tốt, các em học sinh có điều kiện tiếp xúc với máy tính nhiều KBang, ngày 10 tháng 03 năm 2013 Tác giả Bùi Hải Đức Trang 23 TÀI LIỆU THAM KHẢO Sách giáo khoa Tin học 10, Hồ Sĩ Đàm (Chủ biên), Hồ Cẩm Hà,… , NXB Giáo dục, 2006 Sách giáo viên Tin học 10, Hồ Sĩ Đàm (Chủ biên), Hồ Cẩm Hà,… , NXB Giáo dục, 2006 Sách giáo khoa Tin học 11, Hồ Sĩ Đàm (Chủ biên), Hồ Cẩm Hà,… , NXB Giáo dục, 2007 Sách giáo viên Tin học 11, Hồ Sĩ Đàm (Chủ biên), Hồ Cẩm Hà,… , NXB Giáo dục, 2007 Trang 24 MỤC LỤC Phần 1: ĐẶT VẤN ĐÊ Trang Phần 2: NHỮNG BIỆN PHÁP GIẢI QUYẾT VẤN ĐÊ Trang I Cơ sở lý luận của vấn đề Trang II Các bước đã tiến hành để giải quyết vấn đề Trang Bài toán thứ nhất: Tìm giá trị lớn nhất của dãy số nguyên Trang Bài toán thứ hai: Sắp xếp dãy số thành dãy không giảm Trang Bài toán thứ ba: Thuật toán tìm kiếm tuần tự Trang Bài toán thứ tư: Thuật toán tìm kiếm nhị phân Trang III Hiệu quả của sáng kiến kinh nghiệm: Trang 22 Phần 3: KẾT LUẬN Trang 23 TÀI LIỆU THAM KHẢO Trang 24 Trang 25 ... mơ việc thực thuật tốn: Lúc đầu em đứng ngẫu nhiên sau: 1 Trang Lần duyệt thứ (tính từ phải sang trái): 1 Bạn số cao bạn số nên đổi chỗ 1 Bạn số cao bạn số nên đổi chỗ 1 Bạn số... bìa a5 lên thấy Lần duyệt 1: Dau=1; Cuoi=10; Giua = a5=8 Vậy a5 khác K nên chuyển sang lần duyệt Trang 18 Lần duyệt 2: Vì a5