skkn một số biện pháp ôn tập có hiệu quả phần kiểu dữ liệu xâu nhằm nâng cao chất lượng bồi dưỡng học sinh giỏi môn tin học

19 106 0
skkn một số biện pháp ôn tập có hiệu quả phần kiểu dữ liệu xâu nhằm nâng cao chất lượng bồi dưỡ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

1 Mở Đầu 1.1 Lí chọn đề tài MơnTinhọcnói chung nộidungTinhọclậptrình nói riênglàmộtmơnhọckhámớilạ đốivớihọcsinhtrung học phổthơng(THPT) nênđasốcácemrấtbỡngỡkhitiếpcậnnội dungmơnhọcnày Trongthựctiễn,dữliệuvàocủacácbàitốnđềuliênquanđếncáckiểudữliệu khácnhau,đểxử lídữliệu theo u cầu đề bàichúngtathườngđưadữliệuđó dạng kiểu liệu chuẩn kiểu liệu có cấu trúc, kiểudữ liệu có cấu trúc hay sử dụng kiểu xâu kí tự Qua q trình giảng dạy mơn Tin học tơi nhận thấy liệu kiểu xâu thường gặp nhiều tốn để học sinh vận dụng linh hoạt thao tác xử lí kiểu liệu vào tốn cụ thể khơng phải dễ Trong đề thi chọn học sinh giỏi (HSG) trường THPT tỉnh đề thi HSG cấp tỉnh Nghệ An nhiều tỉnh khác, nhận thấy đề thi có tập liên quan đến kiểu liệu xâu kí tự Do vậy, việc giúp học sinh nắm thao tác xử lí phân dạng tốn điển hình kiểu liệu xâu kí tựđể em dễ dàng nhận biết giải tốn cách tối ưu việc làm vơ quan trọng giáo viên phụ trách bồi dưỡng đội tuyển HSG Trong trình giảng dạy lớp mũi nhọn bồi dưỡng đội tuyển thi HSG cấp tỉnh, dựa vào kinh nghiệm thân, có giải pháp ơn tập có hiệu phần kiểu liệu xâu Trong đó, tơi phân dạng tốn điển hình xâu kí tự giúp học sinh có hứng thú tiếp cận tốt giải tốn xâu kí tự đề thi HSG Chính vậy, tơi chọn đề tài:“Một số biện pháp ơn tập có hiệu phần kiểu liệu xâu nhằm nâng cao chất lượng bồi dưỡng học sinh giỏi môn Tin học”làm sáng kiến kinh nghiệm với mục đích trao đổi bạn đồng nghiệp phương pháp mà áp dụng có hiệu ngơi trường công tác hy vọng cách làm bổ sung, hoàn thiện 1.2 Mục đích nghiên cứu Việc dạy cho học sinh niềm đam mê khả tư lập trình điều thiếu việc bồi dưỡngHSG môn Tin học Tơi viết đề tài với mục đích: - Cùng trao đổi với bạn đồng nghiệp cách dạy học sinh bước đầu vào học lập trình mơn Tin học xử lí tốt tốn xâu kí tự - Giúp học sinh có thêm tài liệu để tham khảo trình học lập trình - Giúp anh chị em đồng nghiệp trường trường phổ thông địa bàn tỉnh có thêm tài liệu để ơn tậpthi giáo viên giỏi phục vụ công tác bồi dưỡng HSG 1.3 Đối tượng nghiên cứu - Nghiên cứu phương pháp giải tốn xâu kí tự, từ phát triển làm tốt tốn nâng cao tốn kì thi HSG Tin học THPT 1.4 Phương pháp nghiên cứu - Điều tra khả tiếp cận môn Tin học lập trình giáo viên THPT - Điều tra khả tiếp cận mơn Tin học lập trình học sinh THPT -Tham khảo tài liệu, nghiên cứu đề thi, toán thiên tư toán học chuyển tốn lập trình - Phương pháp thực nghiệm đối tượng học sinh THPT Nội dung sáng kiến kinh nghiệm 2.1 Cơ sở lí luận sáng kiến kinh nghiệm Trong bối cảnh toàn ngành GD&ĐT nỗ lực đổi phương pháp dạy học theo hướng phát huy tính tích cực chủ động học sinh hoạt động học tập Điều 24.2 Luật giáo dục nêu rõ: “Phương pháp giáo dục phổ thơng phải phát huy tính tích cực, tự giác, chủ động, sáng tạo học sinh, phù hợp với đặc điểm lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho học sinh” Như vậy, thấy định hướng đổi phương pháp dạy học khẳng định, khơng cịn vấn đề tranh luận Cốt lõi việc đổi phương pháp dạy học trường phổ thông giúp học sinh hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động Với số nội dung đề tài này, học sinh tự học, tự rèn luyện thông qua số tập, dạng tập cụ thể 2.2 Thực trạng vấn đề trước áp dụng sáng kiến Qua thực tế giảng dạy nhận thấy học đến chương trìnhTinhọclớp11đasốhọcsinhđềuchorằngđâylàmơnhọckhónhấttrongcácmơn học, nhiều em cịn sợ môn họcnày Khi học sinh học học 12 “Kiểu xâu” –SGK Tin học 11, học sinh có nhiều khó khăn, nhầm lẫn việc xử lí liệu em quen với tốn xử lí liệu kiểu số, tốn quen thuộc tính tổng tích dãy số thỏa mãn điều kiện đó… Khigặpcácbàitốnphảisửdụngkiểudữliệulớnnhiềuemlúnglúng.Việcgiảicác bàitốnvớikiểudữliệulớnthựcsựcầnthiếtchocácemkhilàmcácbàitốnlậptrình chương trình Tin học phổ thơng nói riêng việc giải tốn thực tế nói chung Thực tế cho thấy, đề thi HSG có tập xử lí xâu kí tự Nếu học sinh khơng hiểu rõ nhận biết tốt thường tập xâu hay gặp nhiều sai sót khơng xử lí hết test theo u cầu đề 2.3 Các giải pháp áp dụng để giải vấn đề 2.3.1 Giải pháp 1: Yêu cầu học sinh nắm kiến thức xâu kí tự, bổ sung thêm số hàm thủ tục khơng có sách giáo khoa Tin học 11 Để thực giải pháp yêu cầu học sinh ôn tập thật kỹ kiến thức kiểu liệu xâu trình bày sách giáo khoa Tin học 11 Ngoài ra, để giúp em làm tập nâng cao bổ sung thêm cho học sinh số hàm thủ tục khơng có chương trình a Khái niệm xâu: Xâu dãy kí tự mã ASCII, kí tự gọi phần tử xâu b Cách khai báo: Var : String[]; {Độ dài lớn xâu không vượt q 255} Trong mơ tả xâu bỏ qua phần khai báo độ dài Khi độ dài lớn xâu nhận giá trị ngầm định 255 c Các thao tác xử lí xâu: * Phép ghép xâu: Kí hiệu dấu cộng (+) sử dụng để ghép nhiều xâu thành xâu Có thể thực phép ghép xâu với biến xâu * Phép so sánh: Hai xâu kí tự so sánh với phép so sánh (=), khác (), nhỏ (), nhỏ (=) có thứ tự ưu tiên thực thấp phép ghép xâu Nguyên tắc so sánh thực sau: + Xâu A lớn xâu B kí tự khác chúng kể từ trái sang xâu A có mã ASCII lớn + Nếu A B xâu có độ dài khác A đoạn đầu B A nhỏ B + Hai xâu coi chúng giống hoàn toàn * Các thủ tục hàm chuẩn xử lí xâu kí tự: “+ Hàm LENGTH(st): Hàm trả giá trị độ dài thực xâu kí tự st + Hàm COPY(st,i,n): Tạo xâu gồm n kí tự liên tiếp vị trí i xâu st + Hàm CONCAT(s1,s2,…,sn): Hàm cho xâu cách ghép liên tiếp xâu s1,s2,…,sn lại với theo thứ tự + Hàm POS(t1,s2): Hàm cho ta vị trí tìm thấy xâu s1 xâu s2 + Hàm CHR(x): Hàm trả kí tự có vị trí x bảng mã ASCII + Hàm ORD(ch): Hàm trả vị trí kí tự ch bảng mã ASCII + Thủ tục DELETE(st,i,n): Xóa n kí tự xâu st kể từ vị trí i + Thủ tục INSERT(st,st1,i): Thủ tục thực việc chèn xâu kí tự st1 vào xâu st vị trí i, kí tự đứng sau i dời phía sau xâu kí tự st Kết trả cho xâu st + Thủ tục STR(value,st): Thủ tục thực việc chuyển đổi giá trị kiểu số (value) sang dạng xâu kí tự gán cho biến st + Thủ tục VAL(st,x,code): Thủ tục thực việc đổi xâu kí tự st sang dạng số gán cho biến x, phép chuyển đối thành cơng code nhận giá trị 0, ngược lại cho giá trị khác + Thủ tục STR(x,St): Thủ tục thực việc chuyển số x thành xâu kí tự tương ứng lưu biến St Các thuật tốn xử lí xâu kí tự gần giống với thuật tốn xử lí mảng, nhiên giải xâu kí tự thực cách “tự nhiên” so với mảng nhờ ưu xâu sau: Khi khai báo nhập vào xâu ta chưa ấn định số phần tử nó, thực thao tác xóa xâu hay chèn xâu ta khơng phải dịch chuyển phần tử mảng, xâu ta đọc xử lí tồn phần tử khơng thiết phải đọc hay xử lí phần tử mảng Chính tốn xử lí mảng gần xử lí xâu có tốn dùng mảng xử lí khó khăn dùng xâu hiệu nhiều” [1] Thời gian thực giải pháp buổi, thao tác xâu giáo viên cần lấy ví dụ cụ thể mơ cho học sinh hiểu rõ chất Giáo viên bổ sung thêm số tập vận dụng nhỏ, mức độ trung bình có sử dụng hàm thủ tục chuẩn xử lí xâu để học sinh củng cố kiến thức vừa học Kết sau thực giải pháp 1: Học sinh nắm thao tác xâu kí tự, vận dụng để giải tập sách giáo khoa tiền đề vững để em học buổi nâng cao sau 2.3.2 Giải pháp 2: Phân loại dạng tốn điển hình xâu kí tự 2.3.2.1.Dạng 1: Dạng toán Phương pháp chung: Đây dạng thường gặp, toán như: Đưa xâu dạng chuẩn, đếm số kí tự xuất xâu hay đếm số từ xâu Các toán dạng tương đối dễ hiểu với học sinh Bài toán 1.1 Rút gọn xâu(Đề thi HSG lớp 12 tỉnh Nghệ An năm 2009-2010) Cho xâu S gồm chữ in thường với độ dài tối đa 250 kí tự Em viết chương trình để tạo xâu SG từ xâu S cách xóa kí tự liên tiếp giống xâu S để lại kí tự đại diện đoạn Dữ liệu vào: Đọc từ file văn XAUGON.INP chứa xâu S gồm chữ in thường Kết quả: Ghi file văn XAUGON.OUT xâu SG tìm Ví dụ: XAUGON.INP XAUGON.OUT hhooocccsssiiiiinnnhhh hocsinh * Ý tưởng: Duyệt từ đầu xâu đến cuối xâu, gặp kí tự liên tiếp giống xóa 1kí tự Chương trình tham khảo: (Mơ tả chi tiết phụ lục) Bài tốn 1.2Chữ xuất hiện(Đề thi HSG tỉnh Thanh Hóa năm 2012) Cho xâu St gồm chữ Tính số lần xuất chữ xuất nhiều xâu (không phân biệt chữ in hoa in thường) Dữ liệu vào:Từ file KT_MAX.INP gồm: Xâu St (độ dài ≤ 500 kí tự) Kết quả:Ghi file KT_MAX.OUT gồm: Một dòng bội số chung nhỏ kết toán 105 Ví dụ: KT_MAX.INP AAABDA KT_MAX.OUT 100000 *Ý tưởng: Dùng mảng D để lưu số lần xuất phần tử xâu st sau ta việc duyệt từ đầu đến cuối mảng D để tìm phần tử lớn mảng max Kết toán bội chung nhỏ max 10000 Chương trình tham khảo: (Mơ tả chi tiết phụ lục) Bài tốn 1.3 Gửi thư(Nguồn http://vn.spoj.com/problems/NKLETTER) Vị Giám đốc cơng ty XYZ cần gửi văn quan trọng tới đối tác Văn xâu S chữ la tinh in thường Để bảo mật nội dung văn bản, ông Giám đốc gửi thư Bức thư thứ phần đầu Sb xâu S, thư thứ phần cuối Se S Hai thư Sb Se đảm bảo đầy đủ nội dung S, nhiên phần cuối Sb viết lặp lại phần đầu Se, song số kí tự viết lặp lại khơng biết trước Ví dụ: Với văn S= ‘truongnguyenduquannhat’ tạo hai thư: Sb= ‘truongnguyendu’ Se= ‘nguyenduquannhat’ Yêu cầu: Cho hai xâu Sb Se, xác định xâu S nội dung thư cho độ dài xâu S ngắn Dữ liệu vào từ file GUITHU.INP: - Dòng đầu chứa xâu Sb, dòng thứ hai chứa xâu Se - Mỗi xâu có độ dài không 250 Dữ liệu đưa file GUITHU.OUT:Ghi độ dài xâu S tìm Ví dụ: GUITHU.INP truongnguyendu nguyenduquannhat GUITHU.OUT 22 * Ý tưởng: - Lần lượt xét xâu d, c tương ứng tính từ cuối xâu s1 đầu xâu s2, d=c ta lưu lại độ dài xâu d Quá trình tiếp tục ta nhận độ dài xâu chung dài cần tìm (giả sử max) - Kết toán length(s1)+length(s2) - max Chương trình tham khảo: (Mơ tả chi tiết phụ lục) 2.3.2.2 Dạng 2: Xóa thay Phương pháp chung: Để giải toán dạng 2ta thực lặp lặp lại (câu lệnh lặp while) cơng việc: Tìm vị trí, xóa thay Bài toán 2.1 Giải mã (Đề thi HSG lớp 12 tỉnh Vĩnh Phúc năm 2012 – 2013) Cho xâu s mã hóa theo quy tắc nguyên âm a, e, i, o, u viết thêm chữ p đằng sau thêm nguyên âm đằng sau chữ p Đưa xâu sau giải mã Ví dụ:Từ ‘welcome’ mã hóa thành ‘wepelcopomepe’ * Ý tưởng: Sử dụng ý tưởng chung dạng tập tìm vị trí xuất hiện, xóa hai kí tự từ vị trí tìm +1 Bình thường vị trí xuất xâu x xâu s có có trường hợp Vì vậy, sử dụng mảng để duyệt trường hợp * Đoạn chương trình: x[1]:= ‘apa’; x[2]:= ‘epe’; x[3]:= ‘ipi’; x[4]:= ‘opo’; x[5]:= ‘upu’; for i:=1 to while pos(x[i], s) 0 begin vt:= pos(x[i], s); delete(s,vt+1, 2); end; Bài tốn 2.2 Xóa số(Đề HSG lớp 10tỉnh Vĩnh Phúc năm 2011 – 2012) Cho số nguyên dương gồm N chữ số, tìm số lớn sau gạch bỏ k chữ số số N chữ số cho Ví dụ: với N=3; k=1 số 991 số cịn lại sau xóa 99 Với N=4; k=2 số 1782 số cịn lại sau xóa 82 * Ý tưởng: - Đọc số vào dạng xâuS - Duyệt từ đầu xâu, xét kí tựliền kề s[i]0 xâu S cịn lại xâu gồm kí tự số theo thứ tự giảm dần, cần xóa từ cuối xâu k kí tự Chương trình tham khảo: (Mô tả chi tiết phụ lục) Bài tốn 2.3 Tìm số lớn (Đề thi HSG tỉnh Thanh Hóa 2013 - 2014) Cho dãy gồm N kí tự có mặt bàn phím có chữ số (N< 106) Yêu cầu: Hãy loại bỏ số kí tự khỏi dãy cho kí tự cuối cịn lại theo thứ tự tạo nên số lớn Dữ liệu vào: File văn chứa MAX.INP chứa N kí tự Dữ liệu ra: File văn MAX.OUT chứa chữ số tạo thành số lớn Ví dụ: MAX.INP 24t5j4r05f704y652k393 MAX.OUT 7693 * Ý tưởng: - Lọc xâu S chứa kí tự số - Áp dụng phương pháp giải toán 2.2 với k = n-4 Chương trình tham khảo: (Mơ tả chi tiết phụ lục) 2.3.2.3 Dạng 3: Các tập xâu Palindrome Phương pháp chung: Xâu Palindrome hay gọi xâu đối xứng Xâu đối xứng xâu có tính chất: Đọc từ phải sang trái thu kết giống đọc từ trái sang phải 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ở giải tập khó Bài tốn 3.1 Khóa vịng(Nguồn https://www.ddth.com/showthread.php) Người ta xâu N viên đá kích thước giống thành vịng đeo cổ (5B[j] then begin S:= b[i]; B[i]:=B[j]; B[j]:=S; S:= a[i]; a[i]:=a[j]; a[j]:=S; end; for i:= to n if B[i]=B[i+1] then write(f,A[i],' ') else writeln(f,A[i]); Bài toán 4.3Xâu hạt nhân (Nguồn từ HBCCoder – Bài tập) Xâu u gọi hạt nhân xâu v u xâu ngắn cho ghép số lần u nhận v Cho xâu S, tìm hạt nhân Dữ liệu: Cho từ file XAU_HN.INP gồm xâu S Kết quả: Ghi file XAU_HN.OUT hạt nhân xâu S Ví dụ: XAU_HN.INP Abcabcabc XAU_HN.OUT Abc * Ý tưởng: Dùng biến S để lưu trữ xâu cho, trước tiên ta dùng hàm KT để kiểm tra xâu u có thỏa mãn xâu hạt nhân hay khơng? Chương trình tham khảo: (Mơ tả chi tiết phụ lục) 2.3.2.5 Dạng 5: Tìm xâu Phương pháp chung: Để tìm xâu (tức xâu gồm kí tự liên tiếp nhau)thỏa mãn điều kiện cho trước thường sử dụng phương pháp vét cạn với liệu đầu vào nhỏ, nhiên nên sử dụng linh hoạt phương pháp khác phương pháp quy hoạch động, phương pháp chặt nhị phân trường hợp tốn có liệu lớn Bài toán 5.1 Xâu chung(Đề thi HSG tỉnh Nghệ An lớp 12 năm 2013) Xâu S gọi xâu chung xâu S1 xâu S2 xâu S dãy kí tự liên tiếp S1 dãy kí tự liên tiếp S2 Yêu cầu: Cho hai xâu kí tự S1 S2 (có khơng q 255 kí tự) Hãy tìm xâu chung S dài hai xâu S1 S2 Ví dụ: S1 = ‘Ky thi học sinh gioi Tinh mon Tin hoc’, S2 = ‘hoc sinh gioi mon Tin hoc’ S = ‘hoc sinh gioi’ Dữ liệu:Vào từ file văn xauchung.inp: Dòng ghi xâu S1 Dòng thứ hai ghi xâu S2 10 Kết quả:Ghi file văn bảnxauchung.out số độ dài xâu chung dài S (Nếu hai xâu S1, S2 kí tự chung ghi số 0) Ví dụ: xauchung.inp Ky thi hoc sinh gioi Tinh mon tin hoc hoc sinh gioi mon Tin hoc xauchung.out 14 * Ý tưởng: Trước tiên ta xây dựng thủ tục để cập nhật độ dài xâu chung lớn thời điểm: procedure capnhat; begin if kmax < k then kmax:=k; end; Quá trình tìm xâu chung lớn hoàn toàn tương tự phương pháp đoạn xâu lớn nhất: procedure xuly; begin l1:=length(s1); l2:=length(s2); k:=0; kmax:=0; for i:=1 to l1 for j:=1 to l2 if s1[i]=s2[j] then begin k:=1; while (i+k

Ngày đăng: 13/11/2020, 14:34

Từ khóa liên quan

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

Tài liệu liên quan