SKKN KIỂU dữ LIỆU xâu từ bài TOÁN cơ bản đến các bài TOÁN bồi DƯỠNG học SINH GIỎI

19 74 0
SKKN KIỂU dữ LIỆU xâu từ bài TOÁN cơ bản đến các bài TOÁN bồi DƯỠNG học SINH GIỎI

Đ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

“KIỂU DỮ LIỆU XÂU TỪ BÀI TOÁN CƠ BẢN ĐẾN CÁC BÀI TOÁN BỒI DƯỠNG HỌC SINH GIỎI” PHẦN I: ĐẶT VẤN ĐỀ Lí chọn đề tài - Với quan tâm Đảng Nhà nước công tác Giáo dục - Đào tạo (GD-ĐT), với nỗ lực giáo viên học sinh, thời gian qua đạt số thành tích đáng kể cơng tác dạy học Tuy nhiên, đánh giá cách tổng thể, khách quan, chất lượng, hiệu GDĐT chưa đáp ứng yêu cầu ngày cao xã hội Nhìn chung trình độ kiến thức học sinh, khả tư khoa học, khả thực hành chưa thích ứng với thực tiễn xã hội, khả vận dụng kiến thức vào sản xuất, đời sống hạn chế, lĩnh vực cơng nghệ thông tin ứng dụng công nghệ thông tin việc dạy giáo viên việc học học sinh Trang - Tin học môn đưa vào học đại trà cấp THPT tồn quốc, phần nội dung chương trình lớp 10 12 với phần kiến thức chung máy tính khoa học máy tính, soạn thảo văn Microsoft Word, Microsoft Access hay kiến thức mạng máy tính em tiếp cận phần chương trình học cấp THCS, chương trình học nghề, qua sách báo, chương trình truyền hình nên em bước nắm khơng gặp nhiều khó khăn trình học Chương trình học lớp 11 khái niệm lập trình viết chương trình cho máy thực hiện, yêu cầu tư trừu tượng cao, cơng việc có tính chất q trình ứng dụng nhiều khoa học thực tiễn Tuy nhiên để nắm bắt kiến thức với học sinh điều dễ dàng - Đặc biệt môn Tin học môn lựa chọn thi tốt nghiệp hay thi Đại học nên em học sinh thường “ngại” học thụ động việc học chương trình tin học lớp 11 Trong kỳ thi học sinh giỏi toàn tỉnh nay, em học sinh học giỏi chọn vào đội tuyển mơn theo khối có thi Đại học em phụ huynh khơng muốn tham gia bận học để thi Đại học Vì để học sinh học tốt chương trình Tin học lớp 11 thi đạt thành tích cao kỳ thi học sinh giỏi yếu tố tự học đánh giá cao Vì để giúp học sinh chủ động học tích cực học tơi mạnh dạn đưa đề tài “Kiểu liệu xâu từ toán đến toán bồi dưỡng học sinh giỏi” Mục đích nghiên cứu Thực tế học tập giảng dạy Tin học Trường THPT Triệu Sơn 1, qua trao đổi, bàn bạc với đồng nghiệp ngồi nhà trường tơi nhận thấy vấn đề việc tìm phương pháp dạy, phương pháp động viên để học sinh ham học, yêu thích mơn học điều khó Sở dĩ học sinh cảm thấy khó khăn việc học em không thấy chất thực tế vấn đề, hay, ứng dụng kiến thức sống Đối tượng nghiên cứu Một thực trạng chung học sinh nước, học sinh tỉnh mà điều kiện sở vật chất nhiều khó khăn trường THPT Triệu sơn I ví dụ khả lập trình học sinh với khả tư duy, tìm tòi, phát vấn đề chưa tốt, việc phải tiếp cận với cơng việc hồn tồn Trang với em Do giảng dạy tơi ln cho học sinh có nhìn thấu đáo từ nhiều góc độ khác để hiểu chất vấn đề Kinh nghiệm thể đề tài “Kiểu liệu xâu từ toán đến toán bồi dưỡng học sinh giỏi” tơi đúc kết q trình giảng dạy, nghiên cứu tài liệu trao đổi đồng nghiệp năm học 2016 – 2017, 2017 - 2018 tiếp tục nghiên cứu bổ sung thực năm học 2018 - 2019 Phương pháp nghiên cứu Đề tài rút từ kiến thức học Đại học kinh nghiệm dạy học trường THPT Triệu Sơn thân có tham gia đóng góp ý kiến đồng nghiệp nhà trường với tài liệu mà sưu tầm từ sách báo thông tin, diễn đàn mạng Internet Các giải pháp, kiến thức trao đổi đồng nghiệp áp dụng trình dạy học trường THPT Triệu Sơn Những điểm Sáng kiến kinh nghiệm Thông qua kiển thức thể đề tài “Kiểu liệu xâu từ toán đến toán bồi dưỡng học sinh giỏi” hệ thống lại cho em kiến thức kiểu xâu, tập vận dụng, phát triển tổng quát vận dụng làm toán chuyên xâu kiểu liệu xâu PHẦN II GIẢI QUYẾT VẤN ĐỀ Cơ sở lí luận Trong sách giáo khoa Tin học 11 nội dung chương trình giảm tải theo yêu cầu Bộ giáo dục nặng với học sinh nên dẫn tới việc chán nản em Hơn nữa, môn học học sinh chưa thấy ứng dụng thực tế không thi tốt nghiệp hay thi Đại học nên em có tâm lí khơng muốn học mà muốn đối phó cho qua năm học Nên kết thúc năm học, kỳ thi học sinh giỏi học sinh ưu tú trường THPT tỉnh làm có chất lượng khơng đồng chưa cao Thực trang vấn đề Từ tiếp cận với Tin học việc học lập trình em xử lý thông qua số, tập việc cộng, trừ, nhân chia, tập xử lí ký tự, xâu em hồn tồn chưa biết Vì nói kiểu xâu em mơ hồ khơng hiểu gì? Khơng có kiểu liệu xâu có giải cơng việc khơng? Vì em học sinh hiểu liệu kiểu xâu, em học sinh giỏi Trang em tham gia kỳ thi học sinh giỏi cấp tỉnh môn Tin học đạt kết cao nghiên cứu đề tài “Kiểu liệu xâu từ toán đến toán bồi dưỡng học sinh giỏi” Nội dung đề tài Trong SGK Tin học 11 “Kiểu xâu” trình bày kiến thức bản: + Xâu dãy ký tự mã ASCII, kí tự gọi phần tử xâu Số lượng kí tự xâu gọi độ dài xâu Xâu có độ dài gọi xâu rỗng + Có thể xem xâu mảng chiều mà phần tử kí tự Các kí tự xâu đánh số thứ tự, thường + Các thao tác xử lí xâu: Ghép xâu, So sánh xâu, Xóa xâu, chèn xâu, copy xâu, lấy độ dài xâu, tìm vị trí xuất xâu, chuyển sang kí tự in hoa DẠNG BÀI TẬP CÁC BÀI TỐN PHÁT TRIỂN CƠ BẢN Bài tốn 1: Ví dụ (Trang 71 SGK Tin học 11) Chương trình sau nhập xâu vào từ bàn phím đưa xâu theo thứ tự ngược lại Để giải toán sau học xong kiến thức kiểu xâu vài em làm được, giáo viên cho em học sinh nêu ý tưởng hướng dẫn gần em làm cách đơn giản Ý tưởng: Cho vòng lặp chạy từ cuối đầu viết kí tự lên hình: For i:=length(s) downto write(s[i]); { Xâu s xâu nhập vào} Tuy nhiên có số học sinh có ý tưởng “ em tạo xâu s1 xâu ngược lại xâu s” sau ghi s1 Lúc giáo viên cần nhận xét khẳng định cách làm để làm cách làm dài sau cho học sinh tập Bài toán 2: Bài 1(Trang 73 phần Bài tập thực hành SGK Tin học 11) Nhập vào từ bàn phím xâu Kiểm tra xem xâu có phải xâu đối xứng khơng Xâu đối xứng có tính chất: đọc từ phải sang trái thu Trang kết giống đọc từ trái sang phải (còn gọi xâu palindrome) Ở tốn phần hướng dẫn tác giả hướng dẫn theo cách làm đọc từ trái sang phải (For i:=length(s) downto p:=p+s[i]) để xâu p kiểm tra xem xâu p có với xâu ban đầu hay không để kết luận xâu s đối xứng hay không đối xứng Từ làm tác giả giáo viên phân tích cho học sinh biết cách ghép trước hay ghép sau; đọc từ phải sang trái hay từ trái sang phải để học sinh biết làm có liên quan sau đặt câu hỏi: - Có cách để kiểm tra nhanh khơng? - Thầy đọc xâu có kiểm tra hay không? { HD: dx:=1; For i:=1 to (length(s) div 2) if s[i]s[length(s)-i+1] then begin dx:=0; break; end; if dx=1 then write(‘Xau s doi xung’) else write(‘Xau s khong doi xung’); } Trong phần hướng dẫn học sinh giỏi đặc biệt việc bồi dưỡng học sinh giỏi tham dự kỳ thi học sinh giỏi cấp tỉnh, giáo viên nâng cấp lên việc kiểm tra cho nhiều xâu Bài toán (Bài 2: (5 điểm) Xâu đối xứng - Đề thi HSG tỉnh Thanh Hóa năm học: 2009-2010) Xâu đối xứng xâu đọc giống ta đọc từ trái qua phải từ phải qua trái Ví dụ: xâu RADAR xâu đối xứng Kiểm tra xem xâu có phải xâu đối xứng hay khơng, đối xứng thơng báo 1, khơng đối xứng thơng báo Dữ liệu: Vào từ file văn BAI2.INP, gồm: - Dòng ghi số nguyên N - N dòng dòng ghi xâu cần kiểm tra Kết quả: Ghi file văn BAI2.OUT: gồm N dòng, dòng ghi xâu tương ứng không đối xứng ghi xâu tương ứng đối xứng Giới hạn: < N < 30000; Các xâu có độ dài khơng 255 kí tự Ví dụ: BAI2.INP BAI2.OUT Trang AFHFA ACDDB ACRTT Với toán giáo viên cần hướng dẫn học sinh đọc vào dòng Nếu đối xứng ghi số khơng đối xứng ghi hồn thành (Các học sinh viết thành hàm thủ tục để bố cục chương trình gọn, nhiên chất tốn khơng có thay đổi) program xaudoixung; const fi='bai2.in5'; fo='bai2.ou5'; nmax=10000; var n,i:integer; s:array[1 nmax] of string; a:array[1 nmax] of byte; f1,f2:text; procedure doc; begin assign(f1,fi); reset(f1); readln(f1,n); for i:=1 to n readln(f1,s[i]); close(f1); end; function doixung(s:string): boolean; var b:string; j:integer; begin doixung:=false; b:=''; for j:=length(s) downto b:=b+s[j]; if s=b then doixung:=true; end; procedure ghi; begin assign(f2,fo); rewrite(f2); for i:=1 to n writeln(f2,a[i]); close(f2); end; BEGIN doc; Trang for i:=1 to n if doixung(s[i]) then a[i]:=1 else a[i]:=0; ghi; end Với toán xét ta có trước xâu s, nhiệm vụ học sinh cần xét đối xứng hay không Để nâng cao khả làm cho học sinh giáo viên đưa yêu cầu cao học sinh phải tự tạo xâu kiểm tra xem có đối xứng hay khơng Bài tốn Bài 2: ( 7,0 điểm ) Xâu Palindrome – Đề thi học sinh giỏi tỉnh Thanh Hóa năm học 2012 – 2013 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 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 (N0 then writeln(j,’ xuat hien ’,sl[j],’ lan’); Với việc hướng dẫn cho học sinh làm tập cách đầy đủ em hiểu chất công việc cần xử lý em làm nhiều đề thi học sinh giỏi Bài tốn ( Bài 2: (5 điểm) Kí tự khác – Đề thi học sinh giỏi tỉnh Thanh Hóa năm học 2016 – 2017) 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 Trang - 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 Bài toán thực cách dễ dàng sau học sinh làm ví dụ phải thay cách viết lệnh ghi kết mà Fillchar(sl,sizeof(sl),0); For i:=1 to length(s) inc(sl(s[i])); For j:=’A’ to ‘Z’ if sl[j]>0 then writeln(f1,j,’ ’,sl[j]); For j:=’a’ to ‘z’ if sl[j]>0 then writeln(f1,j,’ ’,sl[j]); For j:=’0’ to ‘9’ if sl[j]>0 then writeln(f1,j,’ ’,sl[j]); Bài toán ( Bài 3: (4.0 điểm) Chữ xuất thi học sinh giỏi tỉnh Thanh Hóa năm học 2011 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 BAI3.INP gồm: Xâu St (độ dài 500 ký tự) Kết quả: Ghi file BAI3.OUT gồm: Một dòng bội số chung nhỏ kết toán vµ 105 VÝ dơ: BAI3.INP BAI3.OU T AAABDA 100000 Trong tốn cách làm hồn tồn tương tự tốn em cần tìm giá trị lớn số lần nhiều kí tự Sau tìm giá trị lớn Max cần tìm giá trị bội chung nhỏ giá trị Max Trang 10000 { Kết tích Max với 10000 chia cho ước chung lớn max 10000: KQ=Max*10000 div UCLN(Max,10000) DẠNG BÀI TẬP CÁC BÀI TOÁN CƠ BẢN VÀ CÁCH GIẢI ƯU VIỆT TỪ KIỂU DỮ LIỆU XÂU Bài toán ( Bài Đề thi giáo viên giỏi tỉnh Thanh Hóa năm học 2013 – 2014) Một xâu kí tự dãy số phương viết dài vô tận 149162536 Cho số nguyên N (10 then begin write(f1,i); break; end; End; DẠNG BÀI TẬP XỬ LÍ CÁC SỐ LỚN Việc xử lí số có giá trị lớn lưu phần tử vào mảng, nhiên hiệu xử lí số xâu Bài toán 10 ( Bài 1: (4 điểm) Tính tổng hai số - Đề thi giáo viên giỏi cấp trường Trường THPT Triệu Sơn năm học 2018 – 2019) Cho số nguyên dương M, N(M, N nhỏ 255 chữ số), tính tổng số M, N Dữ liệu vào: Từ tệp văn Bai1.inp gồm dòng: - Dòng đầu ghi số nguyên dương M; - Dòng thứ ghi số nguyên dương N Dữ liệu ra: Ghi lên tệp văn Bai1.out số, tổng M, N Bai1.inp 111111111111111 33 Bai1.out 111111111111144 Với toán thí sinh muốn làm bắt buộc phải xử lí theo kiểu xâu kí tự PROGRAM CONG; var s1,s,m,n:ansistring; f1,f2: text; i,a,b,u,nho,tong: longint; BEGIN assign(f1,'bai1.inp'); reset(f1); assign(f2,'bai1.out'); rewrite(f2); readln(f1,m); readln(f1,n); while length(m)length(n) Trang 12 if length(m) > length(n) then n:='0'+n else m:='0'+m; nho:=0; s:=''; for i:= length(m) downto begin val(m[i],a,u); val(n[i],b,u); tong:=a+b+nho; nho:=tong div 10; tong:=tong mod 10; str(tong,s1); s:=s1+s; end; if nho>0 then s:='1'+s; write(f2,s); close(f1); close(f2); END Bài toán 11 (Bài (3 điểm): Giai thừa Đề thi học sinh giỏi Tỉnh Thanh Hóa năm học 2018 – 2019) Cho trước số tự nhiên N Yêu cầu: Tìm số tự nhiên K nhỏ cho K! có N chữ số Dữ liệu vào: Đọc từ tệp BAI4.INP gồm dòng chứa số tự nhiên N (1≤ N≤ 104) Dữ liệu ra: Ghi tệp BAI4.OUT kết tìm Nếu khơng có số K thoả mãn u cầu đề ghi -1 Ví dụ: BAI4.INP BAI4.OUT Để làm học sinh học bình thường lớp em tính giai thừa bình thường với kiểu số lớn longint; int64; qword kiểu số thực Tuy nhiên, thi học sinh giỏi cấp tỉnh đặt phân loại để lấy giải cao nên em phải xử lý số lớn phải dùng kiểu xâu cách hợp lý const fi='bai4.inp'; fo='bai4.out'; var n,i:longint; s,st:ansistring; function nhan(s1,s2:ansistring):ansistring; Trang 13 var c:array[1 1000000] of longint; st,s:ansistring; i,j,l1,l2,x,y,code:longint; begin s:=''; l1:=length(s1); l2:=length(s2); for i:=1 to length(s1)+length(s2) c[i]:=0; for i:=1 to length(s1) for j:=1 to length(s2) begin val(s1[i],x,code); val(s2[j],y,code); c[i+j]:=c[i+j]+x*y; end; for i:=l1+l2 downto begin c[i-1]:=c[i-1]+c[i] div 10; c[i]:=c[i] mod 10; end; for i:=2 to length(s1)+length(s2) begin str(c[i],st); s:=s+st; end; nhan:=s; end; begin assign(input,fi); reset(input); assign(output,fo); rewrite(output); Trang 14 read(n); i:=1; s:='1'; while length(s)

Ngày đăng: 21/11/2019, 08:53

Từ khóa liên quan

Mục lục

  • “KIỂU DỮ LIỆU XÂU TỪ BÀI TOÁN CƠ BẢN ĐẾN CÁC BÀI TOÁN BỒI DƯỠNG HỌC SINH GIỎI”

  • PHẦN I: ĐẶT VẤN ĐỀ

  • - Tin học là một môn mới được đưa vào học đại trà ở cấp THPT trên toàn quốc, phần nội dung chương trình lớp 10 và 12 với các phần kiến thức cơ bản chung về máy tính và khoa học máy tính, soạn thảo văn bản Microsoft Word, Microsoft Access hay các kiến thức về mạng máy tính đã được các em tiếp cận 1 phần ở các chương trình học cấp THCS, các chương trình học nghề, hoặc qua sách báo, các chương trình trên truyền hình nên các em có thể từng bước nắm được bài và không gặp nhiều khó khăn trong quá trình học. Chương trình học lớp 11 về khái niệm lập trình và viết các chương trình cho máy thực hiện, yêu cầu tư duy trừu tượng cao, công việc có tính chất quá trình được ứng dụng nhiều trong khoa học cũng như trong thực tiễn. Tuy nhiên để nắm bắt được các kiến thức cơ bản này với học sinh không phải là điều dễ dàng.

  • - Đặc biệt môn Tin học không phải là môn lựa chọn thi tốt nghiệp hay thi Đại học nên các em học sinh thường “ngại” học và thụ động trong việc học chương trình tin học lớp 11. Trong kỳ thi học sinh giỏi toàn tỉnh hiện nay, các em học sinh học giỏi và được chọn vào đội tuyển các môn theo khối có thi Đại học của mình thì các em và phụ huynh cũng không muốn tham gia vì còn bận học để thi Đại học. Vì vậy để học sinh học tốt chương trình Tin học lớp 11 và thi đạt thành tích cao trong kỳ thi học sinh giỏi thì yếu tố tự học được đánh giá rất cao. Vì vậy để giúp học sinh chủ động học và tích cực học tôi mạnh dạn đưa ra đề tài “Kiểu dữ liệu xâu từ bài toán cơ bản đến các bài toán bồi dưỡng học sinh giỏi”

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

Tài liệu liên quan