(SKKN HAY NHẤT) sử dụng thuật toán đếm phân phối để giải một số bài toán tin học ở trường THPT lê lợi thọ xuân, thanh hóa

22 7 0
(SKKN HAY NHẤT) sử dụng thuật toán đếm phân phối để giải một số bài toán tin học ở trường THPT lê lợi thọ xuân, thanh hóa

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ TRƯỜNG THPT LÊ LỢI SÁNG KIẾN KINH NGHIỆM TÊN ĐỀ TÀI: SỬ DỤNG THUẬT TOÁN ĐẾM PHÂN PHỐI ĐỂ GIẢI MỘT SỐ BÀI TOÁN TIN HỌC Ở TRƯỜNG THPT LÊ LỢI, THỌ XUÂN, THANH HÓA Người thực hiện: Lê Thị Huyên Chức vụ: Giáo viên SKKN thuộc lĩnh vực (môn): Tin học THANH HÓA NĂM 2021 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com MỤC LỤC MỞ ĐẦU 1.1 Lý chọn đề tài .1 1.2 Mục đích nghiên cứu 1.3 Đối tượng nghiên cứu .2 1.4 Phương pháp nghiên cứu 2 NỘI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lý luận 2.2 Thực trạng vấn đề … 2.3 Các giải pháp giải vấn đề 2.4 Hiệu SKKN … 15 KẾT LUẬN, KIẾN NGHỊ … .16 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 1.MỞ ĐẦU 1.1 Lí chọn đề tài Bồi dưỡng học sinh giỏi nhiệm vụ quan trọng giáo viên Do đó, việc nghiên cứu, tìm tịi, tích lũy kiến thức cơng việc thường nhật giáo viên nhằm nâng cao trình độ chun mơn nghiệp vụ, tích lũy kinh nghiệm cho thân Chúng ta biết rằng, để có kết cao kì thi tuyển chọn học sinh giỏi mơn Tin học nói chung học sinh phải có vốn kiến thức thuật toán để giải toán khó, sau học sinh sử dụng ngơn ngữ lập trình để lập trình dựa vào thụật tốn tìm giải tốn theo yêu cầu Chương trình giảng dạy sách giáo khoa mơn Tin học hành trường THPT có lượng kiến thức hạn chế đơn giản, không đủ sở tảng để học sinh dựa vào vốn kiến thức tham gia kì thi học sinh giỏi cấp tỉnh hay cao Câu hỏi đặt là: Làm để học sinh đạt kết cao kì thi học sinh giỏi mơn Tin học trường THPT? Xuất phát từ việc trực tiếp bồi dưỡng học sinh giỏi nhiều năm, thân nhận thấy việc nắm vững thuật toán áp dụng cách linh hoạt tập định khơng đơn giản Để nhận dạng tốn thực với thuật tốn khơng phải dễ Ngồi để cài đặt thuật tốn hiệu địi hỏi người lập trình cần nắm vững phương pháp thiết kế thuật tốn Đa số học sinh cảm thấy khó khăn giải tốn tin có liên quan đến thuật tốn nâng cao, lúng túng q trình phân tích, tổ chức liệu, tìm thuật tốn hiệu Vì vậy, để giúp học sinh tháo gỡ khó khăn, vướng mắc q trình học tập, ôn luyện thi học sinh giỏi, thân không ngừng học hỏi trước hết thực đổi phương pháp giảng dạy Tin học làm cho học sinh tìm kết sáng tạo, lời giải hay toán, giúp thân nắm vững tư thuật toán, khả lập trình Xuất phát từ lí trên, tơi xin trình bày sáng kiến nhỏ cơng tác bồi dưỡng học sinh giỏi với đề tài: “ Sử dụng thuật toán đếm phân phối để giải số toán tin học trường THPT Lê Lợi, Thọ Xuân, Thanh Hóa” LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trong trình triển khai đề tài, thân tơi tự thấy có kết định, muốn chia sẻ với bạn đồng nghiệp Hi vọng nhận nhiều ý kiến bổ ích để đề tài tơi ngày hồn thiện 1.2 Mục đích nghiên cứu: Áp dụng đề tài tơi hướng tới mục đích sau: - Giúp học sinh hiểu vận dụng tốt thuật toán đếm phân phối để giải toán nâng cao - Nâng cao chất lượng bồi dưỡng học sinh giỏi - Giúp học sinh thêm yêu thích môn Tin học 1.3 Đối tượng nghiên cứu: - Học sinh khối 11 trường THPT Lê Lợi - Nghiên cứu khái qt chương trình mơn Tin học 11 nói chung thuật tốn đếm phân phối nói riêng - Một số chuyên đề nâng cao bồi dưỡng học sinh giỏi - Nghiên cứu hoạt động dạy học học sinh giáo viên trường THPT 1.4 Phương pháp nghiên cứu: - Phương pháp điều tra khảo sát thực tế - Phương pháp thu thập thông tin - Phương pháp thống kê, xử lí số liệu, so sánh - Phương pháp thực nghiệm NỘI DUNG 2.1 Cơ sở lí luận Trong ngơn ngữ lập trình, tốn có liên quan đến đếm đối tượng thường dễ xây dựng thuật tốn cho Tuy nhiên, gặp tốn thường u cầu với liệu lớn, không xây dựng thuật tốn tối ưu khó đưa lời giải tốt Để tiếp cận xử lý toán đếm cách nhanh hiệu ta sử dụng thuật toán Đếm phân phối LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tư tưởng thuật toán Đếm phân phối xây dựng dựa suy nghĩ thực tế để đếm số lượng bò vùng xác định người ta phải tìm cách lùa chúng vào chuồng (để chúng khỏi chạy rông) cho dễ đếm Đương nhiên bò loại phải lùa vào chuồng để dễ phân biệt lùa vào chuồng tốt Tương tự vậy, muốn giải toán đếm đối tượng ta dùng cấu trúc liệu hợp lý (sử dụng cấu trúc mảng) với ý nghĩa giống “chuồng” để lưu đối tượng, phần tử mảng tương ứng với chuồng Trên sở ta dễ dàng thực mục đích thực thao tác đếm 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm - Môn Tin học lớp 11 môn khoa học tự nhiên không dễ học sinh Hơn nữa, mơn khơng thi tốt nghiệp đại học nên chưa học sinh, phụ huynh quan tâm mức Dẫn đến việc tuyển chọn đội tuyển học sinh giỏi gặp nhiều khó khăn - Khi chưa áp dụng sáng kiến học sinh gặp tốn đếm em thường gặp khó khăn tốn có miền liệu lớn Các em lúng túng q trình phân tích tốn, tổ chức liệu, tìm thuật tốn hiệu để lập trình giải tốn 2.3 Các giải pháp giải vấn đề Trong ngôn ngữ lập trình, tốn có liên quan đến đếm đối tượng dễ xây dựng thuật toán cho Tuy nhiên, gặp tốn thường yêu cầu với liệu lớn, không xây dựng thuật tốn tối ưu khó đưa lời giải tốt để tiếp cận xử lý toán đếm Thuật toán: Thuật toán đếm phân phối (hay gọi lùa bò vào chuồng) Tư tưởng thuật toán xây dựng dựa suy nghĩ thực tế là: đếm số lượng lớn bị cánh đồng rộng người ta phải tìm cách lùa chúng vào chuồng (để chúng khỏi chạy rông) cho dễ đếm Đương nhiên bò loại phải lùa vào chuồng để dễ phân biệt lùa vào chuồng tốt Tương tự vậy, muốn giải tốn đếm đối tượng ta dùng cấu trúc liệu hợp lý (sử dụng cấu trúc mảng) với ý nghĩa giống “chuồng” để lưu đối tượng, phần tử mảng tương ứng với chuồng Trên sở ta dễ dàng thực mục đích thực thao tác đếm Để hiểu rõ thuật toán trình giảng dạy lớp bồi dưỡng LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com học sinh giỏi tơi đưa tốn sau: Bài toán mở đầu: Giả sử cánh đồng rộng thả nhiều bò (N con, N lớn), bị đeo thẻ có số hiệu ngun dương (là số tháng tuổi nó) Tất nhiên, hai bị tháng tuổi đeo thẻ có số hiệu Làm để đếm loại bò có nhiều nhất? Bài tốn phát biểu lại sau: + Nhập từ bàn phím số nguyên dương N (0 < N < 5x108) phần tử mảng chiều A(N) có giá trị nguyên dương (0 < A[i] < 100) + Giá trị xuất nhiều A xuất lần? + Ví dụ: A(20) = {1,2,3,6,4,5,6,0,5,6,7,1,6,0,5,6,8,9,1,9} A(20) có số phần tử giá trị nhiều Số lượng phần tử Để giải toán người ta dùng thuật toán “đếm phân phối ” sau: Xây dựng thuật toán: + Bước 1: Đóng dãy chuồng bị đánh số chuồng số tự nhiên liên tiếp từ đến max (max số tháng tuổi bò già nhất), ban đầu chuồng chưa có bị + Bước 2: Lùa bị vào chuồng có số hiệu số thẻ + Bước 3: Duyệt dãy chuồng bị tìm chuồng có nhiều bị Áp dụng thuật toán vào tập: Bước 1: Giả sử bị thứ i có tháng tuổi A[i] (1 < i < n) Coi mảng B(n) dãy chuồng bị, B[x] số lượng bị (có x tháng tuổi) chuồng có số hiệu x, ban đầu phần tử mảng B(n) Bước 2: Con bị có tháng tuổi A[i] phải vào chuồng bị có số hiệu A[i] Thêm bị vào chuồng A[i] tương ứng với lệnh Inc(B[A[i]]) Bước 3: Duyệt mảng B, tìm số phần tử lớn Chương trình: Const sl= Roud(5e8)’; Var N: longint ; A,B: array[1 sl] of byte; LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com slmax, i, csln: longint; BEGIN Write('Nhap vao so nguyen duong N = '); Readln(N); For i := to N Begin Write('A[',i,'] = '); Readln(A[i]); End; {Khởi tạo dãy chuồng bị ban đầu chưa có bị} Fillchar (B, sizeof (B) ,0) ; {Thực lùa bò vào chuồng} For i := to N inc (B [A[i] ] ); slmax := 0; {Duyet day chuong tim chuong co nhieu bo nhat} For i := to max if B[i] > slmax then Begin slmax := B[i]; csln := i; End; Write('So ',csln, ' co tan suat xuat hien nhieu nhat la: ',slmax); Readln; END Xuất phát từ toán mở đầu, sau học sinh hiểu rõ thuật toán “đếm phân phối” biết cài đặt thành chương trình tơi tiếp tục đưa tốn với mức độ khó dần Giúp học sinh củng cố lại thuật toán biết cách vận dụng linh hoạt vào giải toán cụ thể Bài toán 2: Nhập vào số nguyên dương N (2

Ngày đăng: 29/11/2022, 11:59

Tài liệu cùng người dùng

Tài liệu liên quan