Skkn 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 4 0
Skkn 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[.]

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 skkn 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 skkn 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 tốn để giải tố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 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ở khơng thể 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 tố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 toá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 tơi 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 tố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” skkn Trong q 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 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 skkn 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 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 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 toá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 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 toá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 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 Thuật toán: Thuật tốn đếm phân phối (hay cịn 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 tốn q trình giảng dạy lớp bồi dưỡng skkn học sinh giỏi đưa toá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 nguyên 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 tố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 tố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; skkn 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: 21/02/2023, 09:33

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

Tài liệu liên quan