Giúp học sinh phân dạng, tạo dữ liệu đầu vào và cài đặt chương trình tối ưu khi giải một số bài tập về xâu, nhằm nâng cao chất lượng học sinh giỏi môn tin học

27 55 0
Giúp học sinh phân dạng, tạo dữ liệu đầu vào và cài đặt chương trình tối ưu khi giải một số bài tập về xâu, nhằm nâng cao chất lượng học sinh giỏi môn tin học

Đ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 THỌ XUÂN SÁNG KIẾN KINH NGHIỆM TÊN ĐỀ TÀI GIÚP HỌC SINH PHÂN DẠNG, TẠO DỮ LIỆU ĐẦU VÀO VÀ CÀI ĐẶT CHƯƠNG TRÌNH TỐI ƯU KHI GIẢI MỘT SỐ BÀI TẬP VỀ XÂU, NHẰM NÂNG CAO CHẤT LƯỢNG HỌC SINH GIỎI MÔN TIN HỌC Người thực hiện: Lê Thị Hạnh Chức vụ: Giáo viên SKKN thuộc lĩnh vực (mơn): Tin học THANH HỐ NĂM 2020 1.1 Lí chọn đề tài Chương trình Tin học 11 THPT chủ yếu trang bị kiến thức kĩ lập trình cho học sinh Đây nội dung tương đối khó với đa số học sinh, địi hỏi em phải tư suy luận nhiều so với chương trình Tin học lớp 10 lớp 12 Bên cạnh đó, Tin học mơn khơng chọn để xét tuyển tốt nghiệp, cao đẳng, đại học nên phần lớn em quan tâm, đầu tư thời gian công sức Tuy nhiên mơn học có nội dung bổ ích thiết thực với em, rèn luyện tư logic mà cịn mang tính sáng tạo giúp cho học sinh có khả phân tích, tổng hợp, trừu tượng hóa, khái quát hóa vấn đề đặc biệt phát triển tư Muốn dạy đại trà Tin học nhà trường nhằm đảm bảo tính phổ thơng, hướng nghiệp dạy nghề cần phải tạo điều kiện cho học sinh có khiếu tin học phát triển khả lập trình giải tốn Để đáp ứng yêu cầu Giáo viên phải có kiến thức vững vàng, có cách dạy sáng tạo, phù hợp để kích thích thích thái độ học tập học sinh, cần phải cung cấp cho học sinh kiến thức thuật toán phương pháp thiết kết thuật toán Học sinh THPT nguồn lao động trẻ sử dụng sau tốt nghiệp việc tiếp cận công nghệ thông tin từ nhà trường phổ thơng giúp cho học sinh tự tin công việc Nhất học sinh có niềm đam mê CNTT muốn tiếp tục theo đuổi kiến thức vững vàng lập trình từ THPT giúp em nhiều tiếp cận với nhiều ngơn ngữ lập trình khác nhau, giải vấn đề nhanh hơn, triệt để Giữ thành tích học tập cao bạn lớp Cùng với công tác bồi dưỡng học sinh thi Đại học – Cao đẳng cơng tác bồi dưỡng học sinh giỏi công tác mũi nhọn nhà trường Do việc nâng cao chất lượng học sinh giỏi môn Tin học cần thiết cấp bách nhằm góp thêm vào thành tích chung nhà trường Trong trình dạy bồi dưỡng học sinh giỏi tơi gặp nhiều tốn Xâu Đây dạng tập khó thường xuất đề thi học sinh giỏi môn Tin học Rất nhiều học sinh gặp dạng tập bị điểm hoặc điểm khơng cao Ngun nhân nhiều kể đến là: khơng nhận diện dạng toán để áp dụng cho đúng thuật tốn phù hợp Khơng đọc liệu đầu vào số loại test khó chương trình cho kết output sai hoặc chương trình cho kết output đúng với input có liệu nhỏ với input có liệu lớn chương trình chạy thời gian quy định 1giây/1test (mặc dù kết output đúng) Với mong muốn giúp học sinh giải tốt tập Xâu hiểu biết sâu sắc cách giải tập này, tơi mạnh dạn trình bày sáng kiến kinh nghiệm: “Giúp học sinh phân dạng, tạo liệu đầu vào cài đặt chương trình tới ưu giải số tập về xâu, nhằm nâng cao chất lượng học sinh giỏi môn Tin học.” để trao đổi đồng nghiệp 1.2 Mục đích nghiên cứu Phân dạng toán xâu, đưa ý tưởng giải quyết, cài đặt chương trình tối ưu giải số tốn cụ thể, qua sai lầm học sinh thường mắc phải, giới thiệu đến em tập từ đến khó đưa vào từng dạng để xử lý 1.3 Đối tượng nghiên cứu + Học sinh giỏi lớp 11 trường THPT Thọ Xuân + Một số toán Xâu nghiên cứu nhiều cách làm, xét nhiều phương diện như: độ phức tạp, kết output, thời gian thực chương trình 1.4 Phương pháp nghiên cứu + Phương pháp nghiên cứu xây dựng sở lý thuyết: Tôi chủ động tham khảo tài liệu lấy từ nhiều nguồn học liệu mở mạng internet phân tích có hệ thống dạng tập theo nội dung đề + Phương pháp điều tra, khảo sát, thu thập thơng tin: Để có sở cho việc áp dụng phương pháp kinh nghiệm này, tổ chức điều tra, khảo sát, thu thập thông tin thực tế dạy học liên quan đến đề tài số trường địa bàn huyện nhóm đội tuyển Tin học hằng năm nhà trường + Phương pháp thống kê, xử lý số liệu: Với tốn tơi thực nhiều cách khác nhau, dùng phần mềm themis để kiểm tra output thời gian thực chương trình NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lí luận sáng kiến kinh nghiệm Nghị hội nghị Trung ương VIII khóa XI đề mục tiêu: “Đối với giáo dục phổ thơng tập trung phát triển trí tuệ, thể chất, hình thành phẩm chất, lực cơng dân, phát bồi dưỡng khiếu, định hướng nghề nghiệp cho học sinh Nâng cao chất lượng giáo dục toàn diện, chú trọng giáo dục lý tưởng truyền thống đạo đức, lối sống, ngoại ngữ, tin học, lực kỹ thực hành, vận dụng kiến thức vào thực tiễn, phát triển khả sáng tạo tự học, khuyến khích học tập suốt đời, hồn thành đào tạo giáo dục phổ thông giai đoạn sau 2015”.[1] Căn vào quan điểm, định hướng mục tiêu môn Tin học, phải cung cấp tri thức bản, làm tảng để học sinh tiếp tục sâu vào tìm hiểu xây dựng khoa học Tin học hoặc tiếp thu tri thức lĩnh vực kĩ thuật công nghệ tiên tiến, lĩnh vực công nghệ thông tin 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm 2.2.1 Về phía Phụ huynh học sinh Môn Tin học môn học không đưa vào thi tốt nghiệp hoặc xét trường Cao đẳng, Đại học Chính đa phần khơng phụ huynh đồng tình lựa chọn vào đội tuyển Tin học phải đầu tư thời gian để tìm hiểu 2.2.2 Về phía Giáo viên Tin học 11 lĩnh vực khó truyền tải, Khơng phải Giáo viên có chun mơn tốt đào tạo học sinh Giỏi, mà Giáo viên có chun mơn tốt phải đồng hành với việc có phương pháp giảng dạy lập trình tốt Có đánh giá đúng điểm mạnh, điểm yếu lập trình từng học sinh, sai lầm lập trình từng em hay mắc phải 2.2.3 Về phía học sinh Các em thường quen với việc giải tốn tìm cách giải cho đáp án theo đề Chính nhiều em thi học sinh giỏi tự tin làm tốt mà khơng kiểm tra cách giải tối ưu chưa? Đã bao quát tất trường hợp xảy chưa? Đã chạy test với liệu lớn hay chưa? Dẫn đến kết kỳ thi thấp 2.2.4 Một sớ tài liệu có Trên thực tế có số tài liệu đề cập đến tập Xâu, tài liệu đưa thuật tốn chương trình giải số tập cụ thể làm ví dụ minh họa cho kỹ thuật lập trình nghiên cứu mà chưa khái quát dạng Các chương trình mà số tài liệu đưa khó hiểu phức tạp không phù hợp lực học sinh Trường THPT Thọ Xuân 5, chưa bám sát vào cấu trúc thi học sinh giỏi Tỉnh Khi nghiên cứu tài liệu này, khơng học sinh mà giáo viên cịn lúng túng, mơ hồ, áp dụng cách máy móc mà chưa biết nên chọn cách làm nào? Cách làm tối ưu hơn? 2.3 Các sáng kiến kinh nghiệm giải pháp sử dụng để giải vấn đề Từ thực trạng trên, qua năm đứng đội tuyển từ 2016- 2019 dạy kiểu liệu Xâu giải sau: 2.3.1 Phân dạng tập về dạng cụ thể để học sinh dễ nhận diện, áp dụng thuật toán phù hợp Dạng Xử lý số nguyên lớn Phương pháp chung: Để thực phép tính hoặc xử lý với số nguyên phạm vi biểu diễn cung cấp, cách đơn giản sử dụng xâu kí tự để biểu diễn với ký tự xâu tương ứng với chữ số số nguyên lớn tính từ trái qua phải Các tập áp dụng: Bài 1: Cộng, trừ số nguyên lớn Cho hai số nguyên dương lớn có có độ dài khơng q 200 chữ số Hãy đưa tổng hiệu số nguyên * Ý tưởng: Sử dụng xâu để lưu số lớn Trước hết cho xâu bằng bằng cách chèn thêm nhiều ký tự '0' vào trước xâu ngắn Việc thực cộng số thực bằng cách cộng cặp ký tự số tương ứng từ phải sang trái xâu * Đoạn chương trình: function Add(s1,s2:string):string; var i,nho,z,x,y:longint; s:string; begin while length(s1)=s2 then sub:=sub1(s1,s2) else sub:='-'+sub1(s2,s1); end; Bài : Số nhỏ (Đề thi học sinh giỏi lớp 11 tỉnh Hà Tĩnh năm 2008-2009) Một số nguyên dương n lớn cho P (P ≤ 20) số nguyên dương A P xâu ký tự s1, s2, ,sp (độ dài xâu không vượt 255) gồm số thập phân bằng cách viết s1 liên tiếp A1 lần viết s2 liên tiếp A2 lần, , viết sp liên tiếp Ap lần Giả sử với số n cho cho trước số nguyên dương k nhỏ số chữ số N Hãy tìm cách gạch k chữ số N để nhận số có giá trị nhỏ [2] Ví dụ: Vào Kết p=3, k =11 44 a1=3, a2 = 4, a3 = s1 = 123, s2=0, s3 = 45 * Ý tưởng : Ở toán N số nguyên lớn nên ta sử dụng xâu để biểu diễn nó, giả sử số n lớn ghép lại m ký tự khác sau xóa ta cịn lại m-k chữ số n Lần lượt tìm m chữ số nhỏ xâu lại ta kết cần tìm Procedure xuly; var m:longint; sm:ansistring; code:integer; Begin j:=0; m:=length(st)-k; Repeat sm:='9'; dec(m); For i:=j+1 to length(st)-m If sm>st[i] then Begin sm:=st[i]; j:=i; End; kq:=kq+sm; Until m=0; Val(kq,m,code); Write(m); End; Bài 3: Ghép số lớn (http://vn.spoj.com/problems/NUMCON/) Vaxia viết số lớn cuộn giấy dài muốn khoe với anh trai Petia thành vừa đạt Tuy nhiên, Vaxia vừa khỏi phịng để gọi anh trai em Kachia chạy vào phòng xé rách cuộn giấy thành số mảnh Kết mảnh có hoặc vài kí số theo thứ tự viết Bây Vaxia khơng thể nhớ xác viết số Vaxia nhớ rằng số lớn Để làm hài lòng cậu em trai, Petia định truy tìm số lớn mà Vaxia viết lên cuộn giây trước bị xé Bạn giúp Petia làm việc [2] Dữ liệu vào: Ghi hoặc nhiều dòng Mỗi dịng ghi dãy kí số Số dịng khơng vượt q 100 Mỗi dịng ghi từ đến 100 kí số Bảo đảm rằng có dịng mà kí số khác Dữ liệu ra: Ghi số lớn viết cuộn giấy trước bị xé rách Ví dụ Inpu Output t 6622000 20 004 66 3 * Ý tưởng: Lưu số dạng mảng kiểu xâu, thực xếp mảng theo thứ tự tăng dần theo tiêu chí xếp phần tử s[i] đứng trước phần s[j] (s[i] ghép với s[j]) > (s[j] ghép với s[i]) Phép cộng phép ghép hai xâu Kết toán ghi xâu s[i] xếp var s: array[0 1000] of string; i,n,j: word; procedure qsort(L,H: word); var tg,k:string; begin if l>=h then exit; i:=l; j:=h; tg:=s[(l+h) div 2]; repeat while tg+s[i]s[j]+tg dec(j); if i st[i+1] ( Nếu tìm số bé )thì xóa kí tự st[i] ngắt Nếu khơng có trường hợp thỏa mãn xóa kí tự cuối xâu Cài đặt thuật toán: For i:=1 to K Begin Kt:=true; For j:=1 to length(st)- if st[j] > st[j+1] then Begin Delete(st,j,1); Kt:= false; Break; End; If kt then delete(st,length(st),1); End; Bài tốn áp dụng: Cho số nguyên dương có N chữ số Hãy xóa K số để số sau xóa số bé Dữ liệu vào: Vào từ file văn XOASO.INP gồm + Dòng số nguyên dương có N chữ số (N≤ 10 4) + Dịng thứ hai số nguyên dương K( K< N) Kết quả: Ghi file XOASO.OUT gồm số nguyên bé sau xóa K chữ số XOASO.INP XOASO.OUT 151323343121223 1123331212234 45 readln(f1,s) ; while s[1] = ' ' delete(s,1,1); while s[length(s)] = ' ' delete(s,length(s),1); while pos(' ',s) delete(s,pos(' ',s),1); while pos('( ',s) > delete (s,pos('( ',s)+1,1); while pos(' )',s) delete (s,pos(' )',s),1); for i:= to begin st := ' '+ a[i] ; while pos(st,s) delete(s,pos(st,s),1); while (pos(a[i],s) > 0) and (pos(a[i],s) < length(s)) and (s[pos(a[i],s)+1] ' ') insert(' ',s,pos(a[i],s)+1); end; Dạng 4: Tần suất xuất Phương pháp chung: Với dạng tập ta nên sử dụng thuật toán đếm phân phối Bài 1: Kí tự khác ( Đề thi HSG Tỉnh Thanh Hóa năm 2015-2016).[2] Cho xâu S gồm kí tự chữ tiếng anh chữ số (có phân biệt chữ in hoa, in thường) Yêu cầu: Hãy xác định số kí tự khác xâu S kí tự xuất lần Dữ liệu vào: Vào từ file văn BAI2.INP gồm dòng xâu kí tự S (có độ dài khơng q 255) Kết quả: Kết ghi file văn BAI2.OUT gồm: - Dịng đầu ghi số kí tự khác - Các dịng tiếp theo, dịng ghi kí tự xuất xâu S số lần xuất Các kí tự đưa theo thứ tự chữ in hoa, in thường, chữ số Các chữ cái, chữ số đưa theo thứ tự từ điển Ví dụ: BAI2.INP AzB1C9A1BC BAI2.OUT A2 B2 C2 z1 12 91 * Ý tưởng: - Với xâu có độ dài tối đa 106 ta sử dụng khai báo kiểu xâu Ansistring - Sử dụng mảng đánh dấu B['a' 'z'] of longint để đếm số lần xuất ký tự xâu s với B[ch] = d có nghĩa ký tự ch xuất d lần - Lần theo giá trị mảng B ta số lượng ký tự khác (tức số lượng phần tử có giá trị khác khơng mảng B) tìm giá trị lớn mảng B ta tìm ký tự xuất nhiều lần Cài đặt thuật toán: procedure xuly; var ch,kt:char; i,max,dem:longint; begin or ch:='a' to 'z' b[ch]:=0; for i:=1 to length(s) inc(b[s[i]]); dem:=0; max:=0; for ch:='a' to 'z' begin if b[ch]0 then inc(dem); if b[ch]>max then begin max:=b[ch]; kt:=ch; end; end; writeln(dem, ' ', max); end; Bài 2: Mã hóa xâu ( Đề thi khảo sát HSG trường THPT Thọ Xuân 5) Bình tìm hiểu kĩ thuật mật mã hóa đơn giản Với tin cần mã hóa, phương pháp mã hóa thành xâu với quy tắc sau: - Xâu mã hóa lưu lại kí tự chữ xuất Nói cách khác, kí tự xuất lớn lần trở lên, bị xóa bỏ, giữ lại kí tự - Giá trị mật mã xâu tính bằng tổng số lần xuất kí tự có tần suất xuất lớn lần Các bạn Bình giải tốn nhé! Dữ liệu vào: Vào từ tệp BAI2.INP Một dịng gồm nhiều chuỗi kí tự, có tổng độ dài khơng vượt q 106 (Các kí tự chữ in hoa hoặc chữ thường.) Dữ liệu ra: ghi dòng số giá trị mật mã xâu xâu sau mã hóa vào tệp BAI2.OUT BAI2.INP MOI CAC BAN GHE THAM THO XUAN NAM LAN NUA NHE BAI2.OUT 30 moicabnghetxul Ý tưởng: sử dụng thuật tốn đếm phân phối, tìm tần suất xuất kí tự, kí tự xuất > lần trở lên, bị xóa bỏ, giữ lại kí tự đầu tiên, tần suất > lần Lưu ý: Chuyển đổi liệu đầu vào đồng thành chữ thường, kiểm soát khoảng trắng xâu Cài đặt thuật toán: procedure xuli; var i,j,res:data; c:char; begin res:=0; fillchar(dd,sizeof(dd),0); s:=upcase(s); for i:=1 to length(s) if s[i] in ['A' 'Z'] then s[i]:=chr(ord(s[i])+32); for i:=1 to length(s) if s[i]' ' then inc(dd[s[i]]); res:=0; for c:='A' to 'z' if dd[c]>1 then inc(res,dd[c]); write(f2,res,' '); fillchar(dd,sizeof(dd),0); for i:=1 to length(s) if (s[i]' ') and (dd[s[i]]=0) then begin dd[s[i]]:=1; write(f2,s[i]); end; Dạng Xâu Palindrome Phương pháp chung: Xâu Palindrome hay gọi xâu đối xứng, có nghĩa xâu đọc ký tự xâu từ trái sang phải giống từ phải sang trái xâu gọi xâu Palinhdrome Với tập kiểm tra xâu Palindrome hay tìm kiếm xâu có tính chất Palindrome trước hết nên xây dựng hàm kiểm tra tính chất đối xứng xâu với độ phức tạp O(n), sở chúng ta giải tập khó Xâu Palindrome Cho xâu S có độ dài không vượt 10 Kiểm tra xem xâu S có phải xâu Palindrome hay khơng? * Ý tưởng: Một xâu s có tính chất đối xứng s[i] = s[ni+1] với i chạy từ đến length(s) div Dựa sở ta xây dựng hàm kiểm tra * Chương trình tham khảo Var s:ansitring function palindrome(s: string): boolean; var i, n : integer; begin n := length(s); for i := to (n div 2) if s[i] s[n+1-i] then begin palindrome := false; exit; end; palindrome := true; end; begin write('nhap s:'); readln(s); If palindrome(s) then write('xau doi xung') else write('xau khong doi xung'); end Bài tập áp dụng: Bài 1: Một xâu kí tự gọi xâu Palindrome ( đối xứng ) ta đọc từ trái sang phải hay đọc từ phải sang trái giống nhau.( Đề thi HSG Tỉnh hóa năm 2012-2013) [2] Yêu cầu: Cho trước xâu kí tự S Hãy xác định số xâu đối xứng xâu Một kí tự coi xâu đối xứng Xâu S xâu gồm số kí tự liên tiếp S Dữ liệu vào: Từ tệp văn BAI2.INP: Dòng thứ ghi số nguyên dương N (N output sai XAU.INP XAU.OUT aba aababababa Bài Chiếc nón kỳ diệu (Đề thi học sinh giỏi lớp 12 tỉnh Phú Yên năm học 2009-2010) [2] Một lần chương trình “Chiếc nón diệu kỳ”, phần chơi dành cho khán giả, thay đốn chữ khi, người dẫn chương trình tự quay “chiếc nón” cho lên hình trước mặt khán giả trường quay số ô mà kim thị qua “Chiếc nón” quay đúng số ngun vịng, nên dãy số lên hình, số cuối trùng với số Sau đó, người dẫn chương trình mời khán giả cuối trường quay (chỉ nhìn thấy hình mà khơng nhìn thấy “chiếc nón”) cho biết nón có tối thiểu ô? Yêu cầu: Hãy trả lời câu hỏi người dẫn chương trình Dữ liệu: Vào từ tập tin văn CNDK.INP gồm hai dòng: + Dòng ghi số N số lượng số lên hình, (2 ≤ N≤ 100) + Dòng ghi N số, số có giá trị khơng q 32000 Kết quả: Ghi tập tin văn CNDK.OUT số tối thiểu “chiếc nón” Lưu ý: Các số dịng cách khoảng trắng Ví dụ: CNDK.INP CNDK.OUT 13 5313525313525 * Ý tưởng: Nhận thấy ghép toàn số lên hình (trừ số cuối cùng) vào xâu S xâu S ln tồn xâu s1 dài mà ghép liên tiếp số lần xâu s1 ta xâu s Số lần xuất xâu s1 kết cần tìm Bài tốn trở thành tìm xâu dài s1 Cài đặt thuật toán: s:=''; for i:=1 to n begin read(f,x); str(x,s1); s:=s+s1; end; dem:=0; delete(s,length(s),1); for i:=1 to length(s) begin s2:=s; s1:=copy(s2,1,i); while (pos(s1,s2)0) and (length(s2)0) delete(s2,1,i); if length(s2)=0 then begin dem:=i; write(dem); break; end; end; Dạng 7: Tách từ, xếp xâu Phương pháp chung: dựa vào tính chất từ xâu ( từ phân cách bằng dấu cách ) ta sử dụng hàm pos(‘ ‘,s2) để tách từ xâu, sau sử dụng thuật tốn xếp quick sort để xếp từ xâu Cài đặt thuật toán tách từ: procedure tachtu; var x,tu:ansistring; dem:longint; begin n:=length(s); x:=s; dem:=0; while (pos(' ',x)0) and (length(x)>=0) begin i:=pos(' ',x); tu:=copy(x,1,i); inc(dem); a[dem]:=tu; delete(x,1,i); end; Bài tốn áp dụng: Bài Sắp xếp xâu (Đề thi học sinh giỏi lớp 12 tỉnh Quảng Bình năm học 2012-2013) [2] Người ta định nghĩa: Từ nhóm ký tự đứng liền Cho xâu St gồm ký tự lấy từ tập ‘a’ ‘z’ dấu cách Xâu không 20 từ, từ dài không 10 ký tự Yêu cầu: Sắp xếp từ xâu ký tự theo thứ tự không giảm độ dài từ xâu St Dữ liệu vào: Cho file văn SAPXAU.INP, có cấu trúc: - Dòng 1: Ghi xâu ký tự St (có từ) Dữ liệu ra: Ghi file văn SAPXAU.OUT, theo cấu trúc: - Dòng 1: Ghi từ xâu ký tự sau xếp Các từ ghi cách đúng dấu cách Ví dụ: SAPXAU.INP SAPXAU.OUT acb abcde acb abc abcd abcd abc abcde Bài Sắp xếp xâu (Đề thi học sinh giỏi lớp 11 tỉnh Quảng Bình năm học 2011-2012) Mỗi xâu kí tự St lấy từ tập ký tự ’a’ ’z’, ’0’ ’9’ có độ dài tối đa 1000 kí tự Cho N xâu kí tự St (0 < N ≤ 200) Yêu cầu: Thực xếp N xâu kí tự St theo thứ thự khơng giảm số lượng kí tự chữ số có xâu St Dữ liệu vào: Cho file văn SAPXEP.INP có cấu trúc sau: - Dòng 1: Ghi số nguyên N - N dòng tiếp theo: Mỗi dòng ghi xâu St Dữ liệu ra: Ghi file văn SAPXEP.OUT theo cấu trúc sau: - Ghi N dòng: Mỗi dòng ghi xâu St, xâu ghi theo thứ tự xếp SAPXEP.OU SAPXEP.INP T cb1 abc1x2y3z 1cd7hd cb1 abc1x2y3z 1cd7hd 2.3.2 Tạo test liệu đầu vào kiểu xâu Hiện khơng có phần mềm để tạo test Mà chúng ta tạo test thơng qua code đúng: đưa input vào phải cho output đúng đắn (không cần mặt thời gian) Khi chúng ta có code đúng cơng việc lại tạo file input Để tạo file input tốt file input phải quét hết trường hợp toán Để tạo file input cho kiểu liệu xâu chúng ta sử dụng: + Bằng tay: gõ trực tiếp liệu từ bàn phím vào + Dùng chương trình để sinh file input Thơng thường dùng chương trình để sinh file input có liệu đặc biệt ngẫu nhiên Đối với sinh liệu ngẫu nhiên ta chú ý hàm thủ tục : randomize; random(n); chr(n); ord(ch); + Tạo file input bai1.inp gồm dòng đầu sớ ngun dương N (N ≤ 106), dịng thứ hai xâu ký tự ngẫu nhiên độ dài N gồm chữ từ ‘a’ đến ‘z’ const fo='bai1.inp'; maxn=round(1e6); var i,n: longint; BEGIN randomize; assign(output,fo); rewrite(output); n:= random(maxn)+1;writeln(n); for i:= to n write(chr(ord('a')+ random(ord('z')-ord('a')+1))); close(output); END + Tạo file input bai1.inp gồm dòng đầu sớ ngun dương N (N ≤ 106), dịng thứ hai xâu ký tự ngẫu nhiên độ dài N gồm chữ từ latin const fo='bai1.inp'; maxn=round(1e6); var i,j,n: longint; ch: char; a: array[1 255] of char; BEGIN randomize; assign(output,fo); rewrite(output); n:= random(maxn) +1;writeln(n); i:=0; for ch:='a' to 'z' begin inc(i); a[i]:=ch; end; for ch:= 'A' to 'Z' begin inc(i); a[i]:=ch; end; for j:=1 to n write(a[random(i)+1]); close(output); END + Tạo file input bai1.inp gồm dịng đầu sớ ngun dương K (K≤ 104), K dòng xâu ký tự ngẫu nhiên độ dài N gồm chữ từ ‘a’ đến ‘z’ const fo='MANGXAU.inp'; MAXK=ROUND(10000); maxn=round(10000); var i,n,K,J: longint; BEGIN randomize; assign(output,fo); rewrite(output); n:= random(maxn)+1;K:=RANDOM(maxk)+1;writeln(K); for j:=1 to k BEGIN for i:= to n write(chr(ord('a')+ random(ord('z')-ord('a')+1))); WRITELN; END; close(output); END + Tạo file input bai1.inp gồm dịng đầu sớ ngun dương K (K≤ 104), K dòng xâu ký tự ngẫu nhiên độ dài N gồm chữ latin const fo='taoxau_inhoa_inthuong.inp'; maxk=1000; maxn=round(1000); var g,i,j,n,k: longint; ch: char; a: array[1 255] of char; BEGIN randomize; assign(output,fo); rewrite(output); n:= random(maxn)+1; k:=random(maxk)+1;writeln(k); i:=0; for ch:='a' to 'z' begin inc(i);a[i]:=ch; end; for ch:= 'A' to 'Z' begin inc(i);a[i]:=ch; end; i:=n; for j:=1 to maxk begin for g:=1 to n write(a[random(g)+1]); writeln; end; close(output); END 2.4 Hiệu sáng kiến kinh nghiệm hoạt động giáo dục, với thân, đồng nghiệp nhà trường Qua lần thi khảo sát trường liên trường chất lượng học sinh giỏi nâng lên, tập xâu em lấy điểm gần trọn vẹn mặc dù chất lượng đề có độ khó tăng dần Kết điểm thi học sinh giỏi cấp tỉnh năm 2018 - 2019 môn Tin học THPT học sinh trường có tiến rõ rệt: em tham gia thi đạt giải em với giải ba, giải khuyến khích (trong năm học trước khơng có học sinh có giải) Kết quả HSG năm 2016 -2017 STT HỌ TÊN ĐIỂM Lê Văn Thọ 7/20 Kết quả HSG năm 2017 -2018 STT HỌ TÊN ĐIỂM Lê Văn Bình 8/20 Lê Văn Trà 10/20 Kết quả HSG năm 2018 -2019 STT HỌ TÊN ĐIỂM Lê Văn Bình 15/20 Lê Văn Trà 14/20 Kết luận, kiến nghị 3.1 Kết luận Bài tập kiểu xâu nhiều đa dạng, sáng kiến kinh nghiệm chia tập thành dạng cụ thể (chỉ số dạng thường gặp) Đối với dạng tơi xây dựng nhiều cách giải sau sử dụng phần mềm themis để đo thời gian độ phức tạp để cuối giới thiệu đên đồng nghiệp cách giải tối ưu cho từng dạng Đề tài kinh nghiệm mà thân đúc rút trình thực nhiệm vụ giảng dạy đội tuyển trường THPT Thọ Xuân Tôi nhận thấy áp dụng đề tài, có nhiều chuyển biến tích cực hiệu chất lượng giảng dạy đội tuyển Đề tài gợi ý thú vị, tài liệu tham khảo cho đồng nghiệp trẻ chưa có nhiều kinh nghiệm cơng tác bồi dưỡng học sinh giỏi Vì vậy, tơi mạnh dạn trình bày đồng nghiệp để trao đổi, rút kinh nghiệm, mong nhận đóng góp để hồn thiện kinh nghiệm giảng dạy cho thân 3.2 Kiến nghị Để sáng kiến kinh nghiệm áp dụng mang lại hiệu tốt nhất, thân đề xuất với Ban chun mơn trường THPT Thọ Xn ngồi đợt thi khảo sát chất lượng đội tuyển liên trường tạo thêm đợt giao lưu học hỏi theo chuyên đề Đề xuất với Sở giáo dục tạo thêm đợt bồi dưỡng chuyên môn nghiệp vụ giảng dạy đội tuyển học sinh giỏi XÁC NHẬN CỦA THỦ TRƯỞNG Thanh Hóa, ngày 14 tháng ĐƠN VỊ năm 2020 Tơi xin cam đoan SKKN viết, khơng chép nội dung người khác Lê Thị Hạnh TÀI LIỆU THAM KHẢO [1] Nghị số 29-NQ/TW ngày 4/11/2013 Hội nghị Trung ương khóa XI đổi bản, toàn diện giáo dục đào tạo [2] Tham khảo số tài liệu internet -Nguồn: https://down.vn/s/đề-thi–học–sinh-giỏi–11-môn–tin– học - Nguồn: https://kienthuc24h.com/ [3] Tài liệu giáo khoa chuyên tin tập DANH MỤC CÁC ĐỀ TÀI SÁNG KIẾN KINH NGHIỆM ĐÃ ĐƯỢC HỘI ĐỒNG ĐÁNH GIÁ XẾP LOẠI CẤP PHÒNG GD&ĐT, CẤP SỞ GD&ĐT VÀ CÁC CẤP CAO HƠN XẾP LOẠI TỪ C TRỞ LÊN Họ tên tác giả: Lê Thị Hạnh Chức vụ đơn vị công tác: Giáo viên, Trường THPT Thọ Xuân Cấp đánh giá xếp loại TT Tên đề tài SKKN (Phòng, Sở, Tỉnh ) Kinh nghiệm giáo dục Sở GD đạo đức học sinh &ĐT thông qua tiết sinh Thanh hoạt lớp chủ nhiệm Hóa Một số kinh nghiệm Sở GD giúp học sinh phân &ĐT biệt vận dụng có Thanh hiệu vịng lặp for Hóa - do, while - thông qua việc hướng dẫn học sinh thực tiết 33, " Ôn tập cấu trúc rẽ nhánh lặp "- Tin học 11 Ban Kết đánh giá xếp loại (A, B, C) c c Năm học đánh giá xếp loại 20122013 20162017 ... giúp học sinh giải tốt tập Xâu hiểu biết sâu sắc cách giải tập này, mạnh dạn trình bày sáng kiến kinh nghiệm: ? ?Giúp học sinh phân dạng, tạo liệu đầu vào cài đặt chương trình tới ưu giải sớ tập. .. tập về xâu, nhằm nâng cao chất lượng học sinh giỏi môn Tin học. ” để trao đổi đồng nghiệp 1.2 Mục đích nghiên cứu Phân dạng tốn xâu, đưa ý tưởng giải quyết, cài đặt chương trình tối ưu giải... 2.2.1 Về phía Phụ huynh học sinh Mơn Tin học mơn học không đưa vào thi tốt nghiệp hoặc xét trường Cao đẳng, Đại học Chính đa phần khơng phụ huynh đồng tình lựa chọn vào đội tuyển Tin học phải đầu

Ngày đăng: 14/07/2020, 15:16

Từ khóa liên quan

Mục lục

  • GIÚP HỌC SINH PHÂN DẠNG, TẠO DỮ LIỆU ĐẦU VÀO VÀ CÀI ĐẶT CHƯƠNG TRÌNH TỐI ƯU KHI GIẢI MỘT SỐ BÀI TẬP VỀ XÂU, NHẰM NÂNG CAO CHẤT LƯỢNG HỌC SINH GIỎI MÔN TIN HỌC.

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

  • 1.1. Lí do chọn đề tài.

  • 1.2. Mục đích nghiên cứu.

  • 1.3. Đối tượng nghiên cứu.

  • 1.4. Phương pháp nghiên cứu.

  • 2. NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM

    • 2.1. Cơ sở lí luận của sáng kiến kinh nghiệm.

    • 2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm.

      • 2.2.1. Về phía Phụ huynh học sinh.

      • 2.2.2. Về phía Giáo viên.

      • 2.2.3. Về phía học sinh.

      • 2.2.4. Một số tài liệu hiện có.

      • 2.3. Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để giải quyết vấn đề.

        • 2.3.1. Phân dạng các bài tập này về những dạng cụ thể để học sinh có thể dễ nhận diện, áp dụng thuật toán phù hợp.

          • Dạng 1. Xử lý số nguyên lớn.

          • Dạng 2: Tìm số.

          • Dạng 3. Biến đổi xâu.

          • Dạng 6: Tìm xâu con.

          • 2.3.2. Tạo test dữ liệu đầu vào kiểu xâu.

          • Hiện nay không có phần mềm nào để tạo ra test. Mà chúng ta tạo ra test thông qua code đúng: khi đưa input vào thì phải cho ra output đúng đắn (không cần về mặt thời gian). Khi chúng ta đã có code đúng thì công việc còn lại là tạo ra được các file input. Để tạo ra được file input tốt thì các file input đó phải quét hết được các trường hợp của bài toán. Để tạo file input cho kiểu dữ liệu xâu chúng ta có thể sử dụng:

            • + Tạo ra file input bai1.inp gồm dòng đầu là số nguyên dương N (N ≤ 106), dòng thứ hai là một xâu ký tự ngẫu nhiên độ dài N gồm các chữ cái từ ‘a’ đến ‘z’.

            • Bài tập về kiểu dữ xâu rất nhiều và đa dạng, nhưng trong sáng kiến kinh nghiệm trên tôi đã chia các bài tập thành các dạng cụ thể (chỉ là một số dạng thường gặp). Đối với mỗi dạng tôi đã xây dựng nhiều cách giải sau đó sử dụng phần mềm themis để đo thời gian và độ phức tạp để cuối cùng giới thiệu đên các đồng nghiệp cách giải tối ưu cho từng dạng.

            • Đề tài này là kinh nghiệm mà bản thân tôi đúc rút trong quá trình thực hiện nhiệm vụ giảng dạy đội tuyển tại trường THPT Thọ Xuân 5. Tôi nhận thấy khi áp dụng đề tài, có nhiều chuyển biến tích cực về hiệu quả và chất lượng giảng dạy đội tuyển . Đề tài là một gợi ý thú vị, là tài liệu tham khảo cho các đồng nghiệp trẻ chưa có nhiều kinh nghiệm trong công tác bồi dưỡng học sinh giỏi. Vì vậy, tôi mạnh dạn trình bày cùng đồng nghiệp để được trao đổi, rút kinh nghiệm, mong nhận được sự đóng góp để hoàn thiện kinh nghiệm giảng dạy cho bản thân.

            • 3.2. Kiến nghị.

              • Để sáng kiến kinh nghiệm này áp dụng mang lại hiệu quả tốt nhất, bản thân tôi đề xuất với Ban chuyên môn trường THPT Thọ Xuân 5 ngoài những đợt thi khảo sát chất lượng đội tuyển liên trường tạo thêm các đợt giao lưu học hỏi theo chuyên đề. Đề xuất với Sở giáo dục tạo thêm những đợt bồi dưỡng chuyên môn nghiệp vụ giảng dạy đội tuyển học sinh giỏi.

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

Tài liệu liên quan