1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

Đ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

Cấu trúc

  • Người thực hiện: Lê Thị Huyên

  • Xuất phát từ những lí do trên, tôi xin trình bày một sáng kiến nhỏ trong 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 một số bài toán tin học ở trường THPT Lê Lợi, Thọ Xuân, Thanh Hóa”.

  • Trong quá trình triển khai đề tài, bản thân tôi tự thấy đã có những kết quả nhất định, muốn được chia sẻ với các bạn đồng nghiệp. Hi vọng sẽ nhận được nhiều ý kiến bổ ích để đề tài của tôi ngày một hoàn thiện hơn.

Nội dung

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 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 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ở 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 toá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 toá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ọ Xn, Thanh Hóa” Trong q trình triển khai đề tài, thân 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 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 quát 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ố chun đề 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 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 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 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 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 Để hiểu rõ thuật toán trình giảng dạy lớp bồi dưỡng 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; 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: 09/06/2021, 13:28

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w