Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
178 KB
Nội dung
SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ TRƯỜNG THPT THƯỜNG XUÂN SÁNG KIẾN KINH NGHIỆM XÂY DỰNG CHUYÊN ĐỀ KIỂU XÂU ĐỂ NÂNG CAO CHẤT LƯỢNG BỒI DƯỠNG HỌC SINH GIỎI TIN HỌC Ở TRƯỜNG THPT THƯỜNG XUÂN Người thực hiện: Lê Thị Hoa Chức vụ: Giáo viên SKKN thuộc mơn: Tin học THANH HỐ NĂM 2020 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 1.4 Phương pháp nghiên cứu Nội dung sáng kiến kinh nghiệm .2 2.1 Cơ sở lí luận sáng kiến kinh nghiệm 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm 2.3 Các giải pháp sử dụng để giải vấn đề 2.4 Hiệu sáng kiến 20 Kết luận, kiến nghị 20 Mở đầu 1.1 Lí chọn đề tài Người xưa nói: “Hiền tài ngun khí quốc gia, ngun khí thịnh nước mạnh mà hưng thịnh, ngun khí suy nước yếu mà thấp hèn” [4] Vì Vậy bồi dưỡng học sinh giỏi nhiệm vụ quan trọng việc nâng cao chất lượng giáo dục, bồi dưỡng nhân tài cho quê hương, đất nước Là nhiệm vụ chuyên môn quan trọng nhà trường Bồi dưỡng học sinh giỏi cơng việc khó khăn lâu dài, địi hỏi nhiều cơng sức thầy trị Trong thực tế việc bồi dưỡng học sinh giỏi môn tin học, việc giúp học sinh giải đề thi học sinh giỏi cấp tỉnh, cấp quốc gia kiểu liệu sử dụng nhiều đề thi học sinh giỏi kiểu liệu xâu Sau thời gian phân công bồi dưỡng học sinh giỏi trường THPT Thường Xuân 2, thân nhận thấy chuyên đề kiểu xâu hay chuyển đổi số dạng toán kiểu liệu khác kiểu liệu để giải quyết, đặc biệt với dạng tốn có kiểu liệu số lớn ngồi phạm vi lưu trữ kiểu liệu số khơng chuyển kiểu xâu thuật tốn khó phức tạp, học sinh khó hiểu khơng nắm bắt được, xử lí kiểu xâu lại làm cho thuật toán đơn giản nhiều, học sinh dễ dàng vận dụng giải toán cách triệt để, để biết cách vận dụng linh hoạt thao tác xử lý kiểu liệu vào toán cụ thể khơng phải dễ chưa có tài liệu hướng dẫn Với mong muốn phần giúp học sinh dễ dàng nhận diện dạng tập biết cách vận dụng kiến thức kiểu xâu để giải dạng tập cách dễ dàng hiệu quả, tham khảo nhiều tài liệu từ nhiều nguồn khác như: qua sách, báo, đề học sinh giỏi năm gần tỉnh Thanh Hóa nói riêng nhiều tỉnh khác nước nói chung, nguồn tài liệu Internet, vốn kiến thức kinh nghiệm dạy học thân để viết tài liệu bồi dưỡng cho học sinh đội tuyển học sinh giỏi thấy có hiệu Với lí tơi chọn đề tài: “Xây dựng chuyên đề kiểu xâu để nâng cao chất lượng bồi dưỡng học sinh giỏi tin học trường THPT Thường Xuân 2” để giúp em học sinh có nguồn tài liệu tham khảo giáo viên bồi dưỡng học sinh giỏi trường THPT Thường xuân có thêm nguồn tài liệu rèn luyện cho học sinh 1.2 Mục đích nghiên cứu Nâng cao chất lượng ôn thi học sinh giỏi, từ góp phần nâng cao hiệu dạy học Tin học 11 Trường THPT Thường Xuân nói riêng mơn tin học nói chung 1.3 Đối tượng nghiên - Kiểu liệu xâu dạng xử lý xâu - Học sinh đội tuyển học sinh giỏi tin học trường THPT Thường Xuân năm học 2019-2020 1.4 Phương pháp nghiên cứu - Xây dựng sở lý thuyết - Thu thập thông tin sách, báo, Internet, kinh nghiệm giảng dạy - Sử dụng phần mềm FreePascal/Turbo Pascal để viết chương trình Nội dung sáng kiến kinh nghiệm 2.1 Cơ sở lí luận sáng kiến Kiểu xâu kiểu liệu có cấu trúc giới thiệu chương trình sách giáo khoa tin học 11_ “ 12 _Kiểu xâu” Sau học lý thuyết kiểu xâu đa số học sinh nắm bắt xâu gì? Độ dài xâu? Biết khai báo biến xâu Nhưng làm việc với xâu em cịn lúng túng với việc áp dụng hàm, thủ tục thao tác xử lý xâu để giải tốn thực tế, câu hỏi ‘23’+‘9’ = ‘239’, muốn thực phép tính ‘23’+ ‘9’ = 32 liệu có thực khơng? Muốn thực phải làm cách nào? Và nhiều câu hỏi tương tự khác Vậy làm để học sinh giải triệt để toán liên quan đến kiểu liệu xâu chuyển kiểu liệu khác kiểu xâu để vận dụng xử lý tốn mang tính thực tế có đề thi học sinh giỏi Bản thân tơi tín nhiệm, tin tưởng nhà trường phân công bồi dưỡng học sinh giỏi, nên tơi trăn trở, tìm tịi nhiều nguồn tài liệu, dành nhiều tâm huyết, thời gian nghiên cứu để công việc bồi dưỡng học sinh giỏi đạt kết tốt 2.2 Thực trạng vấn đề Trong đề thi học sinh giỏi cấp tỉnh, cấp quốc gia kiểu liệu xâu kiểu liệu có cấu trúc thường sử dụng 50 - 60% đề thi Tuy nhiên phần kiểu xâu được phân phối tiết chương trình sách giáo khoa Tin học 11 với vẻn vẹn tiết lý thuyết tiết thực hành Với lượng kiến thức cung cấp sách giáo khoa tin học 11 học sinh giải tập dạng xâu đơn giản Thế tập kiểu liệu xâu có đề thi lại khó đa dạng, với lượng kiến thức nhỏ cung cấp sách giáo khoa chưa đủ để giải tốn có đề thi Học sinh trường THPT Thường Xuân chiếm gần 80% người dân tộc thiểu số, 100% học sinh sống vùng đặc biệt khó khăn, đa số học sinh khả tư chưa cao, em học máy móc, học vẹt nên việc tự lập trình giải tốn học sinh khó Mặt khác kiến thức lập trình mẻ với học sinh, đặc biệt với chương trình tin học lớp 11 yêu cầu học sinh phải có tư tốn học tốt, hiểu rõ chất ngơn ngữ lập trình viết chương trình hồn chỉnh, bên cạch mơn tin học khơng có chương trình thi THPT quốc gia nên học sinh phụ huynh xem tin học mơn học phụ, mơn học giải trí nên chưa có ý thức đầu tư thời gian cho mơn Vì vậy, việc chọn tuyển học sinh vào đội tuyển học sinh giỏi tin học việc khó bồi dưỡng học sinh giỏi tin học để có thành tích lại khó khăn Đặc biệt giảng dạy cho học sinh nội dung kiểu liệu xâu học sinh lúng túng, dẫn đến viết chương trình cho tốn cụ thể cịn chưa Tài liệu kiểu liệu xâu Internet chủ yếu kiến thức xử lí xâu dạng đơn giản, chưa phân loại thành dạng kiến thức thường gặp kiểu liệu xâu, đề thi học sinh giỏi thường khơng có code tham khảo nên nguồn tài liệu giúp giáo viên bồi dưỡng học sinh giỏi học sinh đội tuyển nghiên cứu hạn chế 2.3 Các giải pháp sử dụng để giải vấn đề Với lí nên để giải vấn đề đặt ra, thực giải pháp sau: - Tìm hiểu kiến thức kiểu liệu xâu: Khái niệm xâu, cách khai báo, cách nhập xuất kiểu liệu xâu thao tác phép toán xử lý xâu - Xây dựng dạng thường gặp với kiểu xâu, đưa phương pháp chung để giải dạng tập sử dụng phần mềm FreePascal để viết code tham khảo cho tập vận dụng Từ giúp học sinh biết vận dụng tự phân tích, định dạng tập, tự tìm lời giải thích hợp cho tốn cụ thể, kích thích tư phân tích, tổng hợp tư linh hoạt, sáng tạo học sinh lập trình o Dạng tập kiểu xâu đơn giản o Dạng tập mã hóa giải mã xâu o Dạng tập xử lý xâu o Dạng tập xâu đối xứng o Dạng tập xử lí số nguyên kiểu liệu lớn phạm vi lưu trữ kiểu liêu số Nội dung cụ thể: Các kiến thức kiểu xâu [1] 1.1 Khái niệm: Xâu dãy kí tự nằm mã ASCII Mỗi kí tự phần tử xâu Ví dụ: S= ‘Tin Hoc’ + Tên Xâu: S + Số phần tử xâu: 7= Độ dài xâu 1.2 Khai báo Var : String[độ dài lớn xâu]; + Tên biến xâu gồm nhiều biến xâu, nhiều biến xâu biến cách dấu phẩy + Độ dài lớn xâu 255 Trong trường hợp bỏ qua khai báo độ dài lớn xâu, độ dài lớn mặc định 255 Chú ý: Trong Free Pascal sử dụng kiểu liệu ansiString có kích thước gần 2GB=230B nên thường xem độ dài xâu không giới hạn 1.3 Nhập, xuất liệu kiểu xâu - Cách nhập hay xuất kiểu liệu xâu tương tự kiểu liệu khác thủ tục Read, Readln, Write, Writeln 1.4 Các thao tác xử lí xâu 1.4.1 Phép ghép xâu Ví dụ: ‘HA’+ ‘NOI’= ‘HANOI’ 1.4.2 Phép so sánh xâu - Các phép so sánh: >, =, 1 kí tự giống nhau, chẳng hạn n kí tự “a” ghi thành na Ví dụ xâu ‘mmmbbcd’ nén thành ‘3m2bcd’ Hãy viết chương trình nén xâu theo quy tắc Dữ liệu vào: Cho tệp NEN.INP chứa xâu kí tự (khơng q 200 kí tự) Dữ liệu ra: Ghi vào tệp NEN.Out xâu nén Ví dụ: NEN.INP NEN.OUT BbbAaaaceeegmmmm 3b4ac3eg4m * Code tham khảo var f,g:text; S,st,xau:string;i,dem:byte; begin assign(f,'NEN.inp'); reset(f); Assign(g,'NEN.out'); Rewrite(g); readln(f,s); S:=S+' ';St:=''; dem:=1; for i:=2 to length(s) if s[i]=S[i-1] then inc(dem) else begin str(dem,xau); if dem >1 then st:=st+xau+S[i-1] else st:=st+s[i-1]; dem:=1; end; writeln(g,st);Close(f); Close(g); end Bài Tỉ lệ xuất Cho xâu chứa kí tự ‘A’ ‘Z’ ‘a’ ‘z’ có độ dài khơng q 255 lấy từ tệp TLXH.INP Hãy thực tính tỉ lệ phần trăm xuất ký tự có xâu (theo chữ in thường) Kết ghi vào tệp TLXH.OUT, ký tự in dòng (tỉ lệ phần trăm làm tròn đến chữ số phập phân sau dấu phẩy) Ví dụ: TLXH.INP TLXH.OUT Thihocsinhgioi c: 7.14% g: 21.43% h: 28.57% i: 14,29% n:7.14% o:7.14% s:7.14% t:7.14% * Code tham khảo: Var Dau:array['a' 'z'] of byte; S:ansistring;i,n:byte;ch:char;tl:real;f,g:text; begin Assign(f,'TLXH.inp'); reset(f); Assign(g,'TLXH.Out'); Rewrite(g); Read(f,S); Fillchar(Dau,sizeof(Dau),0); For i:=1 To length(S) Do if S[i] in ['A' 'Z'] then S[i]:=chr(ord(S[i])+32); For i:=1 To Length(S) Do inc(Dau[s[i]]); n:=length(S); For Ch:='a' To 'z' Do if dau[ch]0 then begin tl:=(dau[ch]/n)*100; Writeln(g,ch:3,':',tl:6:1,'%'); end; close(f);close(g); end 2.2 Dạng tập mã hóa, giải mã xâu Ở dạng kiến thức thường xoay quanh việc: + Mã hóa xâu kí tự cách thay chữ chữ đứng sau K vị trí vịng trịn theo bảng chữ Các kí tự ngồi chữ giữ ngun + Giải mã xâu kí tự dựa vào quy tắc mã hóa Phương pháp chung: - Xây dựng chương trình mã hóa kí tự từ thực mã hóa xâu kí tự Function Mahoa(Ch:Char):Char; Var vt:byte; Begin If upcase(ch) in ['A' 'Z'] then Begin Vt:=ord(upcase(ch))-65; Vt:=Vt+k; Mahoa:=Char(vt mod 26 +65); End Else Mahoa:=ch; End; - Giải mã xâu mã hóa theo quy tắc trên: Xây dựng chương trình giải mã kí tự từ thực giải mã xâu kí tự (Áp dụng bảng chữ cái) Function Giaima(Ch:Char):Char; Var vt:byte; Begin If upcase(ch) in ['A' 'Z'] then Begin Vt:=ord(upcase(ch))-65;Vt:=vt-k+26; Giaima:=Char(vt mod 26 +65); End Else Giaima:=ch; Bài tập vận dụng: Trong lúc ngồi học lập trình Pascal Bờm nghĩ việc muốn viết nhận kí cho thân lại khơng muốn cho đọc nhật kí mà viết Bờm nghĩ phải mã hóa thơng tin trước muốn lưu trữ lại nội dung nhật kí Bờm đưa cách mã hóa sau: thay chữ chữ đứng sau K vị trí bảng chữ viết Nếu bảng chữ có N chữ, sau chữ thức N-1 chữ thứ N, sau chữ thứ N chữ thứ nhất, ….Cách mã hóa gọi nhật kí mã hóa Các kí tự ngồi bảng chữ giữ nguyên Cho tệp văn MAHOA.INP có cấu trúc sau: - Dòng 1: Ghi số nguyên K (1y then max:=x else max:=y; end; begin assign(f,'XAU_DX.inp'); reset(f); Assign(g,'XAU_DX.Out'); Rewrite(g); readln(f,s1); s2:=''; m:=length(s1); for i:=m downto s2:=s2+s1[i]; 13 fillchar(L,sizeof(L),0); for i:=1 to m for j:=1 to m if (s1[i]=s2[j]) then L[i,j]:=L[i-1,j-1]+1 else L[i,j]:= max(L[i-1,j], L[i,j-1]); writeln(g,m-L[m,m]); fillchar(kq,sizeof(kq),false); i:=m; j:=m; while (i>0) and (j>0) if s1[i]=s2[j] then begin kq[i]:=true; dec(i); dec(j); end else if L[i,j]=L[i,j-1] then dec(j) else dec(i); For i:=1 to m if kq[i] = false then write(g,s1[i],' '); close(f);close(g); end 2.5 Dạng tập xử lí số nguyên kiểu liệu lớn [2] Phương pháp chung: Để thực phép tính 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 Dưới đâytơi xin đưa số chương trình thể phép tốn xử lý số lớn Và sử dụng chương trình để vận dụng vào toán thực tế PHÉP CỘNG HAI SỐ LỚN Function Cong(S1,S2:AnsiString): Ansistring; Var Nho, tong, So1,so2,t,i:byte;S,Xau:AnsiString; Begin While length(S1)