Sử dụng phương pháp mảng đánh dấu để nâng cao hiệu quả giải các bài toán tính tần suất các phần tử

13 3 0
Sử dụng phương pháp mảng đánh dấu để nâng cao hiệu quả giải các bài toán tính tần suất các phần tử

Đ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

Mục tiêu nghiên cứu sáng kiến kinh nghiệm là để có được phương pháp dạy học phù hợp với kiểu bài, với tư duy của học sinh, giáo viên phải có một quá trình tìm tòi, suy ngẫm về đổi mới phương pháp và thử nghiệm trên lớp mới có thể định hình được phương pháp tối ưu cho đối tượng học sinh mình giảng dạy. Từ một bài học đơn giản đến phức tạp, giáo viên cần có phương pháp dẫn dắt hữu hiệu, phù hợp với đối tượng thì học sinh mới tiếp thu và vận dụng. Tránh tình trạng áp đặt suy nghĩ là kiến thức làm cho học sinh không thấy được sự đa dạng trong cách giải, sự hạn chế của thuật toán và gây nhàm chán, nặng nề cho học sinh.

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc SỬ DỤNG PHƯƠNG PHÁP MẢNG ĐÁNH DẤU ĐỂ NÂNG CAO HIỆU QUẢ GIẢI CÁC BÀI TỐN TÍNH TẦN SUẤT CÁC PHẦN TỬ Quảng Bình, tháng 11 năm 2015 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc SỬ DỤNG PHƯƠNG PHÁP MẢNG ĐÁNH DẤU ĐỂ NÂNG CAO HIỆU QUẢ GIẢI CÁC BÀI TỐN TÍNH TẦN SUẤT CÁC PHẦN TỬ Họ tên: Vương Công Quang Chức vụ: Giáo viên Đơn vị công tác: trường THCS Phú Thủy Quảng Bình, tháng 11 năm 2015 MỤC LỤC MỤC LỤC MỞ ĐẦU 1 Lý chọn đề tài Phạm vi nghiên cứu NỘI DUNG Thực trạng nội dung cần nghiên cứu: 2 Các giải pháp thực 2.1 Hướng dẫn học sinh nắm lại kiến thức mảng chiều 2.2 Nêu ý tưởng, hướng dẫn giải toán 2.3 Áp dụng số tốn tìm số lần xuất phần tử 2.4 Hiệu đề tài: KẾT LUẬN Ý nghĩa đề tài, giải pháp: Kiến nghị MỞ ĐẦU Lý chọn đề tài Ngày nay, với phát triển nhảy vọt cơng nghệ thơng tin đặc biệt ứng dụng vào lĩnh vực xã hội Chính xác định tầm quan trọng nên mơn Tin học đưa vào giảng dạy tất lớp cấp học, đặc biệt việc dạy học lập trình trọng áp dụng cho học sinh khối trở lên Đây môn học mẻ rèn luyện cho học sinh tính tư duy, làm việc logic, có tính sáng tạo giúp giải nhiều công việc xuất phát từ thực tiễn sống Mặc dù vậy, qua thực tế chung học sinh học mơn Tin học cảm thấy khó khăn nắm bắt kiến thức khó khăn việc tư thuật tốn, giải vấn đề, cách giải số toán cịn rập khn chưa mang tính sáng tạo Nguyên nhân vấn đề môn học lập trình cịn mẻ với em học sinh; thuật ngữ, câu lệnh mang tính kỹ thuật, từ khóa lập trình, giao diện phần mềm tiếng Anh nên việc tiếp xúc làm quen với học sinh cịn khó khăn bỡ ngỡ Đa số em chưa có kinh nghiệm việc thể thuật tốn, tìm hiểu chương trình nên việc viết chương trình cịn đơn giản khơng hiểu chương trình người khác viết khả nâng cao hiểu biết cách giải toán học hỏi thuật tốn cịn hạn chế Vì q trình giảng dạy mơn nói chung Tin học nói riêng thân ln suy nghĩ làm để nâng cao chất lượng học, giúp em nắm kiến thức bản, tư cách giải tốn, cách viết hồn thiện chương trình đọc tìm hiểu chương trình người khác viết để học hỏi thêm, qua khơng ngừng tích lũy kinh nghiệm cho thân Cho nên trình giảng dạy trọng đến việc tập hướng dẫn làm tập với nhiều cách giải khác cho tìm cách giải tối ưu mang lại hiệu cao với thời gian chạy chương trình ngắn khơng q phức tạp khó hiểu Để giải thực trạng nhằm nâng cao hiệu giảng dạy, thân tơi tìm tịi đúc rút giải pháp để áp dụng giảng dạy đơn vị, là: “Sử dụng phương pháp mảng đánh dấu để nâng cao hiệu giải tốn tính tần suất phần tử” tin học Trước đây, giải tốn tìm tần suất xuất phần tử dãy cho trước, học sinh thường sử dụng mảng chiều sử dụng vòng lặp lồng để kiểm tra, tính tốn số phần tử thuật toán dài thời gian thực chương trình lâu liệu lớn, mang lại hiệu không cao Điểm giải pháp sử dụng mảng chiều đánh dấu sẵn giá trị phần tử dãy ban đầu sau lọc đếm số lần xuất phần tử dãy Giải pháp ngắn gọn dễ hiểu, thời gian thực nhanh đáp ứng yêu cầu mặt tối ưu lập trình Phạm vi nghiên cứu Giải pháp “Sử dụng phương pháp mảng đánh dấu để nâng cao hiệu giải tốn tính tần suất phần tử” nghiên cứu đơn vị công tác hai năm học 2013 – 2014 năm học 2014 – 2015 áp dụng giảng dạy với ba lớp 8A, 8B, 8C năm học 2014 – 2015 Qua áp dụng giải pháp này, học sinh hiểu nhiều cách tiếp cận tốn, hình thành cách giải dạng tốn tính tần suất nhờ học sinh tự tin tìm hiểu đam mê khám phá học hỏi hơn, nhờ góp phần nâng cao chất lượng giảng dạy mơn Tin học nói riêng Tin học nói chung NỘI DUNG Thực trạng nội dung cần nghiên cứu: Năm học 2013-2014 thân giao phần hành giảng dạy hai lớp 8A 8B Qua trực tiếp giảng dạy khảo sát phần làm việc với dãy số cho thấy đa số học sinh cịn lúng túng biểu diễn thuật tốn, số em viết chương trình giải kết chưa xác, thời gian chạy chương trình dài so với yêu cầu Đề khảo sát tiết thực hành sau: Đề ra: Em nhập vào dãy N số nguyên, đếm số lần xuất phần tử dãy vừa nhập (00 then begin inc(x); End b[x]:=dem; end; for m:=1 to n writeln(st[m], ‘:’, b[m]); end; end Bài toán : Tìm số lần xuất phần tử Cho tập hợp S có N phần tử nguyên dương {s1, s2,…, sN} (1 ≤ N ≤ 32000; < si ≤ 32000; ≤ i ≤ N) Yêu cầu: Hãy liệt kê phần tử S có số lần xuất lớn lần Dữ liệu vào: Cho file văn TS.INP có cấu trúc sau: - Dòng 1: Ghi số nguyên dương N - Dòng 2: Ghi N số nguyên dương giá trị phần tử tập hợp S, số ghi cách dấu cách Dữ liệu ra: Ghi file văn TS.OUT nhiều dòng, dòng thứ i ghi số si di, hai số cách dấu cách Trong si phần tử xuất S lớn lần di tương ứng số lần si xuất Ví dụ: TS.INP TS.OUT 2 5 Ý tưởng Chương trình thực áp dụng mảng đánh dấu Sử dụng mảng số nguyên có 32001 phần tử có giá trị từ đến 32000 Đánh dấu (gán) giá trị ban đầu cho phần tử Sau duyệt dãy số, số tương ứng với số phần tử cộng vào thêm vào giá trị Thuật tốn áp dụng câu lệnh lặp nên thời gian thực nhanh tức thời O(n) Ý tưởng Chương trình thực bình thường Sử dụng mảng số nguyên, mảng đầu chứa dãy số nhập vào, mảng thứ chứa tần suất xuất số Dùng vịng lặp để duyệt bẫy số trùng đếm Vì dùng vịng lặp lồng mảng nên chương trình tốn nhiều nhớ thực lâu, thời gian thực O(n2) Chương trình: program dem_so_trung_nhau; const fi='TS.INP'; fo='TS.INP'; Var a : array[0 32000] of word; f:text; n,d:word; i,x:word; Begin Fillchar(A,sizeof(A),0); assign(f,fi); reset(f); readln(f,n); For i:=1 to n Begin read(f,x); a[x]:=a[x]+1; End; close(f); assign(f,fo); rewrite(f); For i:=0 to 32000 if a[i]>1 then writeln(f,i,' ',a[i]); close(f); Readln; End Chương trình: program bai_tap_dem_so_trung_nhau; const fi='ts.inp'; fo='ts.out'; Var a,b:array[1 100] of integer; n,m,x,i,j,k,dem:integer; kt:boolean; f: text; BEGIN assign(f,fi); reset(f); readln(f,n); for i:=1 to n readln(f,a[i]); close(f); assign(f,fo);rewrite(f); x:=0; for i:=1 to n begin kt:=true; for j:=1 to i-1 if a[i]=a[j] then kt:=false; if kt=true then begin dem:=1; for k:=1 to n if a[i]=a[k] then inc(dem); if dem >0 then begin inc(x); b[x]:=dem; end; for m:=1 to x writeln(f,b[m]); end; close(f); end 2.4 Hiệu đề tài: Với biện pháp đây, áp dụng cho 03 lớp học kỳ II năm học 2014 – 2015 sau: Đề bài: Em nhập vào dãy số nguyên có N phần tử (0

Ngày đăng: 03/10/2021, 13:33

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

Tài liệu liên quan