1. Trang chủ
  2. » Giáo Dục - Đào Tạo

SKKN 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

23 124 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 186,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong thực tế đối với việc bồi dưỡng học sinh giỏi môn tin học, việc giúphọc sinh giải được một đề thi học sinh giỏi cấp tỉnh, cấp quốc gia thì một trong cáckiểu dữ liệu được sử dụng nhi

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ

TRƯỜNG THPT THƯỜNG XUÂN 2

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 2

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 HOÁ NĂM 2020

Trang 2

MỤC LỤC

Mở đầu 1

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

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

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

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

2 Nội dung sáng kiến kinh nghiệm 2

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

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

2.3 Các giải pháp đã sử dụng để giải quyết vấn đề 3

2.4 Hiệu quả của sáng kiến 20

3 Kết luận, kiến nghị 20

Trang 3

1 Mở đầu

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

Người xưa đã từng nói: “ Hiền tài là nguyên khí của quốc gia, nguyên khí thịnh thì thế nước mạnh mà hưng thịnh, nguyên khí suy thì thế nước yếu mà thấp hèn” [4] Vì Vậy bồi dưỡng học sinh giỏi là một nhiệm vụ quan trọng trong 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à mộttrong những nhiệm vụ chuyên môn quan trọng của nhà trường Bồi dưỡng học sinhgiỏi là một công việc khó khăn và lâu dài, đòi hỏi nhiều công sức của thầy và trò

Trong thực tế đối với việc bồi dưỡng học sinh giỏi môn tin học, việc giúphọc sinh giải được một đề thi học sinh giỏi cấp tỉnh, cấp quốc gia thì một trong cáckiểu dữ liệu được sử dụng nhiều nhất trong các đề thi học sinh giỏi là kiểu dữ liệuxâu Sau thời gian được phân công bồi dưỡng học sinh giỏi tại trường THPTThường Xuân 2, bản thân tôi nhận thấy chuyên đề kiểu xâu rất hay bởi có thểchuyển đổi một số dạng bài toán ở kiểu dữ liệu khác về kiểu dữ liệu này để giảiquyết, đặc biệt với các dạng bài toán có kiểu dữ liệu số lớn ngoài phạm vi lưu trữcủa các kiểu dữ liệu số nếu không chuyển về kiểu xâu thì thuật toán rất khó vàphức tạp, học sinh khó hiểu và không nắm bắt được, nhưng khi xử lí bằng kiểu xâulại làm cho thuật toán đơn giản đi rất nhiều, học sinh dễ dàng vận dụng và giảiquyết được các bài toán một cách triệt để, thế nhưng để biết cách vận dụng linhhoạt các thao tác xử lý trên kiểu dữ liệu này vào từng bài toán cụ thể không phải là

dễ và chưa có tài liệu nào hướng dẫn Với mong muốn phần nào giúp học sinh dễdàng nhận diện được các dạng bài tập và biết cách vận dụng các kiến thức kiểu xâu

để giải quyết các dạng bài tập đó một cách dễ dàng và hiệu quả, tôi đã tham khảorất nhiều tài liệu từ nhiều nguồn khác nhau như: qua sách, báo, các đề học sinh giỏicác năm gần đây của tỉnh Thanh Hóa nói riêng và nhiều tỉnh khác trên cả nước nóichung, các nguồn tài liệu trên Internet, vốn kiến thức và kinh nghiệm dạy học củabản thân để viết tài liệu bồi dưỡng cho học sinh trong đội tuyển học sinh giỏi và

thấy có hiệu quả Với những lí do trên 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 các em học sinh có nguồn tài liệu tham khảo cũng như

các giáo viên bồi dưỡng học sinh giỏi ở trường THPT Thường xuân 2 có thêmnguồ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 quảdạy học Tin học 11 tại Trường THPT Thường Xuân 2 nói riêng và bộ môn tin họcnói chung

1.3 Đối tượng nghiên

- Kiểu dữ liệu xâu và các dạng xử lý xâu

- Học sinh trong đội tuyển học sinh giỏi tin học trường THPT Thường Xuân

2 năm học 2019-2020

Trang 4

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

- Xây dựng cơ sở lý thuyết

- Thu thập thông tin trong sách, báo, trên Internet, kinh nghiệm giảng dạy

- Sử dụng phần mềm FreePascal/Turbo Pascal để viết chương trình

2 Nội dung sáng kiến kinh nghiệm

2.1 Cơ sở lí luận của sáng kiến

Kiểu xâu là kiểu dữ liệu có cấu trúc được giới thiệu trong chương trình sáchgiáo khoa tin học 11_ “ bài 12 _Kiểu xâu” Sau khi học lý thuyết kiểu xâu đa số họcsinh nắm bắt được xâu là gì? Độ dài của xâu? Biết khai báo biến xâu như thế nào.Nhưng khi làm việc với xâu thì các em còn lúng túng với việc áp dụng các hàm, thủtục và các thao tác xử lý xâu để giải quyết các bài toán thực tế, các câu hỏi vì sao

‘23’+‘9’ = ‘239’, muốn thực hiện được phép tính ‘23’+ ‘9’ = 32 liệu có thực hiện đượckhông? Muốn thực hiện được thì phải làm cách nào? Và nhiều các câu hỏi tương tựkhác Vậy làm thế nào để học sinh có thể giải quyết triệt để các bài toán liên quan đếnkiểu dữ liệu xâu hoặc chuyển các kiểu dữ liệu khác về kiểu xâu để vận dụng xử lýđược các bài toán mang tính thực tế có trong các đề thi học sinh giỏi

Bản thân tôi được sự tín nhiệm, tin tưởng của nhà trường đã phân công bồidưỡ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ềutâ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 quảtốt nhất

2.2 Thực trạng của vấn đề

Trong các đề thi học sinh giỏi cấp tỉnh, cấp quốc gia kiểu dữ liệu xâu là mộtkiểu dữ liệu có cấu trúc thường được sử dụng 50 - 60% trong các đề thi Tuy nhiênphần kiểu xâu chỉ được được phân phối 4 tiết trong chương trình sách giáo khoaTin học 11 với vẻn vẹn 2 tiết lý thuyết và 2 tiết thực hành Với lượng kiến thứcđược cung cấp trong sách giáo khoa tin học 11 học sinh chỉ mới giải quyết đượccác bài tập dạng xâu đơn giản Thế nhưng bài tập về kiểu dữ liệu xâu có trong các

đề thi lại rất khó và đa dạng, với lượng kiến thức nhỏ được cung cấp trong sáchgiáo khoa như vậy chưa đủ để giải quyết được các bài toán có trong các đề thi.Học sinh trường THPT Thường Xuân 2 chiếm gần 80% là 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ả năng tư duychưa cao, các em chỉ học máy móc, học vẹt nên việc tự lập trình giải một bài toánđối với học sinh là rất khó Mặt khác kiến thức về lập trình cũng khá mới mẻ vớihọ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ư duy

về toán học tốt, hiểu rõ bản chất của ngôn ngữ lập trình thì mới viết được mộtchương trình hoàn chỉnh, bên cạch đó môn tin học không có trong chương trình thiTHPT quốc gia nên học sinh và phụ huynh chỉ xem tin học là môn học phụ, mônhọc giải trí nên chưa có ý thức đầu tư thời gian cho bộ môn này Vì vậy, việc chọntuyển học sinh vào đội tuyển học sinh giỏi tin học là việc khó và bồi dưỡng họcsinh giỏi tin học để có thành tích lại càng khó khăn hơn Đặc biệt khi giảng dạy cho

Trang 5

học sinh về nội dung kiểu dữ liệu xâu học sinh còn lúng túng, dẫn đến viết chươngtrình cho một bài toán cụ thể còn chưa đúng.

Tài liệu về kiểu dữ liệu xâu trên Internet chủ yếu chỉ về kiến thức xử lí xâu ởdạng đơn giản, chưa phân loại thành các dạng kiến thức thường gặp về kiểu dữ liệuxâu, các đề thi học sinh giỏi thường không có code tham khảo nên nguồn tài liệugiúp giáo viên bồi dưỡng học sinh giỏi cũng như học sinh trong đội tuyển nghiêncứu còn hạn chế

2.3 Các giải pháp sử dụng để giải quyết vấn đề

Với những lí do nên trên để giải quyết vấn đề đặt ra, tôi đã thực hiện các giảipháp sau:

- Tìm hiểu các kiến thức cơ bản về kiểu dữ liệu xâu: Khái niệm xâu, cách khaibáo, cách nhập xuất kiểu dữ liệu xâu và các thao tác và phép toán xử lý trên xâu

- Xây dựng các dạng thường gặp với kiểu xâu, đưa ra phương pháp chung đểgiải quyết từng dạng bài tập đó và sử dụng phần mềm FreePascal để viết code thamkhảo cho các bài 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 bài tập, tự mình tìm ra lời giải thích hợp cho từng bài toán cụ thể, kíchthích tư duy phân tích, tổng hợp cũng như tư duy linh hoạt, sáng tạo của học sinhtrong lập trình

o Dạng bài tập kiểu xâu đơn giản

o Dạng bài tập mã hóa và giải mã xâu

o Dạng bài tập xử lý các xâu con

o Dạng bài tập xâu đối xứng

o Dạng bài tập xử lí số nguyên kiểu dữ liệu lớn ngoài phạm vi lưutrữ của các kiểu dữ liêu số

Nội dung cụ thể:

1 Các kiến thức cơ bản về kiểu xâu [1]

1.1 Khái niệm:

Xâu là một dãy kí tự nằm trong bộ mã ASCII Mỗi kí tự là một phần tử của

xâu Ví dụ: S= ‘Tin Hoc’

+ Tên Xâu: S

+ Số phần tử của xâu: 7= Độ dài xâu

1.2 Khai báo Var <Tên biến xâu>: String[độ dài lớn nhất của xâu];

+ Tên biến xâu gồm một hoặc nhiều biến xâu, nếu nhiều biến xâu mỗi biến cách

một dấu phẩy

+ Độ dài lớn nhất của xâu là 255 Trong trường hợp bỏ qua khai báo độ dài lớn nhất của xâu, thì độ dài lớn nhất mặc định là 255

Chú ý: Trong Free Pascal còn sử dụng kiểu dữ liệu ansiString có kích thước gần

2GB=230B nên thường xem là độ dài của xâu là không giới hạn

1.3 Nhập, xuất dữ liệu kiểu xâu

Trang 6

- Cách nhập hay xuất kiểu dữ liệu xâu cũng tương tự như các kiểu dữ liệu khác bằng các thủ tục Read, Readln, Write, Writeln.

a Thủ tục Delete(S,vt,N) xóa trong xâu S từ vị trí vt, N kí tự

b Thủ tục Insert(S1,S2,vt) chèn xâu S1 vào xâu S2 từ vị trí vt

c Hàm Copy(S,vt,N) sao chép trong xâu S từ vị trí Vt, N kí

tự d Hàm Length(S) cho độ dài của xâu S

e Hàm Upcase(ch) trả về kết quả là chữ cái in hoa nếu ch là chữ thường và giữ nguyên ch trong trường hợp ngược lại

f Ord(ch) Trả về giá trị là mã ASCII của ch

g Chr (ord(ch)+32) trả về kết quả là chữ cái in thường (nếu ch là chữ in hoa)

h Pos(S1,S2) trả về vị trí đầu tiên xuất hiện xâu S1 trong xâu S2

i Val(So,Xau,code) chuyển dữ liệu số từ biến so thành xâu kí tự lưu vào biến xau

Nếu chuyển đổi thành công thì biến code = 0, ngược lại biến code <> 0

k Str(Xau,So) chuyển dữ liệu kiểu xâu ở biến xau thành kiểu số và lưu vào biến so.

2 Các dạng kiến thức thường gặp với kiểu xâu

2.1 Dạng bài tập kiểu xâu đơn giản

Phương pháp chung: Đây là dạng cơ bản thường gặp, việc biến đổi xâu được thực

hiện trên mỗi ký tự trong xâu nên cần nắm rõ các hàm, thủ tục trên kiểu dữ liệu xâu

đã giới thiệu ở mục 1.4 ở trên để vân dụng một cách linh hoạt vào từng bài tập cụthể trong thực tế

Bài tập vận dụng:

Bài 1 Nén xâu (Đề HSG tỉnh Hà Tĩnh năm 2013-2014) [3]

Một xâu kí tự có thể “nén” theo cách sau: Một xâu con gồm n>1 kí tự giốngnhau, chẳng hạn n kí tự “a” sẽ được ghi thành na Ví dụ xâu ‘mmmbbcd’ sẽ đượcnén thành ‘3m2bcd’ Hãy viết chương trình nén xâu theo quy tắc trên

Dữ liệu vào: Cho trong tệp NEN.INP chứa một xâu kí tự (không quá 200 kí tự)

Dữ liệu ra: Ghi vào tệp NEN.Out xâu đã nén.

Ví dụ:

BbbAaaaceeegmmmm 3b4ac3eg4m

Trang 7

* Code tham khảo

var f,g:text; S,st,xau:string;i,dem:byte;

for i:=2 to length(s) do

if s[i]=S[i-1] then inc(dem)

Bài 2 Tỉ lệ xuất hiện

Cho một xâu chỉ chứa các kí tự ‘A’ ‘Z’ hoặc ‘a’ ‘z’ có độ dài không quá 255 lấy ra từtệp TLXH.INP Hãy thực hiện tính tỉ lệ phần trăm xuất hiện của mỗi ký tự có trong xâu đó (theo các chữ cái in thường) Kết quả ghi vào tệp TLXH.OUT, mỗi ký tự in trên 1 dòng (tỉ lệ phần trăm được làm tròn đến một chữ số phập phân sau dấu phẩy).

* Code tham khảo:

Var Dau:array['a' 'z'] of byte;

Trang 8

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]]);

2.2 Dạng bài tập mã hóa, giải mã xâu

Ở dạng này kiến thức thường xoay quanh việc:

+ Mã hóa một xâu kí tự bằng cách thay mỗi chữ cái bằng chữ cái đứng sau K vị trívòng tròn theo bảng chữ cái Các kí tự ngoài chữ cái thì giữ nguyên

+ Giải mã một xâu kí tự dựa vào quy tắc mã hóa ở trên

- Giải mã xâu đã được mã hóa theo quy tắc trên: Xây dựng chương trình con giải

mã một kí tự từ đó thực hiện giải mã cả xâu kí tự (Áp dụng trong bảng chữ cái)Function Giaima(Ch:Char):Char;

Trang 9

Bài tập vận dụng:

Trong lúc ngồi học lập trình Pascal Bờm nghĩ ra một việc muốn viết nhận kícho bản thân nhưng lại không muốn cho bất kì ai đọc được nhật kí mà mình viết.Bờm nghĩ mình phải mã hóa các thông tin trước khi muốn lưu trữ lại nội dung nhật

kí Bờm đưa ra cách mã hóa như sau: thay mỗi chữ cái bằng chữ cái đứng sau K vịtrí trong bảng chữ cái khi viết Nếu bảng chữ cái có N chữ, thì sau chữ cái thức N-1

là chữ cái thứ N, sau chữ cái thứ N là chữ thứ nhất, ….Cách mã hóa như vậy đượcgọi là nhật kí mã hóa Các kí tự ngoài bảng chữ cái vẫn được giữ nguyên

Cho tệp văn bản MAHOA.INP có cấu trúc như sau:

- Dòng 1: Ghi số nguyên K (1<k<26);

- Dòng 2: Xâu S1

- Dòng 3: Xâu S2

Các xâu S1, S2 không quá 255 kí tự Hãy lập trình đọc dữ liệu từ tệp trên, thực hiện

mã hóa xâu S1 theo quy tắc nhật kí mã hóa và giải mã xâu S2 (Xâu S2 là xâu được

mã hóa theo quy tắc Nhật kí mã hóa) Kết quả ghi vào tệp MAHOA.OUT

* Code tham khảo

Var S1,S2,S,SG:AnsiString; f,g:Text;i,k:byte;

Trang 10

2.3 Dạng bài tập xử lí xâu con

Phương pháp chung: Liên quan đến các dạng bài toán cần lấy ra một xâu con

trong xâu đã cho để xử lí Sử dụng hai vòng for lồng nhau để sao chép xâu con từxâu chính như sau:

For i:=1 to length(S) Do

For j:=1 to length(S)-i+1 Do

Xaucon:=Copy(S,j,i);

Bài tập vận dụng:

Bài 1 Tìm mật khẩu (Đề thi HSG tỉnh Thanh Hóa năm 2014 -2015) [3]

Việc bảo vệ máy tính của mình để hạn chế người khác thâm nhập vào là mộtvấn đề đặt ra cho mọi người sử dụng máy tính Để tăng tính an toàn trong lưu trữLan đã quyết định đặt mật khẩu truy cập máy tính của mình vào một xâu T với mộtquy ước sao cho khi cần cô ta có thể lấy lại được mật khẩu từ xâu T như sau:

Là một người yêu thích số học cô ta thường chọn mật khẩu P là một sốnguyên tố và đem giấu vào trong một xâu ký tự T sao cho P chính là số nguyên tố

có giá trị lớn nhất trong số các số nguyên tố được tạo từ các xâu con của T (xâu concủa một xâu ký tự T là một chuỗi liên tiếp các ký tự trong T)

Ví dụ: xâu T= “Test1234#password5426” chứa mật khẩu là 23 vì T chứa cácxâu con ứng với các số nguyên tố 2, 3, 23 và 5

Yêu cầu: cho một xâu ký tự T có chiều dài không quá 500 ký tự Tìm mật khẩu P

đã dấu trong xâu T biết P có giá trị nhỏ hơn 105 Dữ liệu cho đảm bảo luôn có P

Dữ liệu vào: vào từ file văn bản MATKHAU.INP gồm 1 dòng duy nhất là xâu T

Dữ liệu ra: ghi ra file văn bản MATKHAU.OUT là số P tìm được.

Ví dụ:

MATKHAU.INP MATKHAU.OUT Test1234#password5426 23

* Code tham khảo

Var S,Xaucon:AnsiString;

Trang 11

i,j,N,k,max:Word; KT:Boolean;f,g:text;

Function NTO (a:Longint):Boolean; Begin

KT:=true;

If a<2 Then KT:=Flase

Else for i:=2 to trunc(sqrt(a)

Do If a mod i=0 then KT:=False;

Begin Kt:=False; Break; end;

If KT=true Then Val(Xaucon,N);

If Nto(N) and (N>max)then Max:=N;

End;

Write(g,Max);close(f); close(g);

end

Bài 2 Mật khẩu (Đề thi HSG tỉnh Thanh Hóa năm 2015 – 2016) [3]

Một xâu ký tự được gọi là mật khẩu "an toàn" nếu thỏa mãn các điều kiện:

Độ dài của xâu đó ≥ 6, chứa ít nhất một chữ cái in ('A' 'Z'), chứa ít nhất một chữcái thường ('a' 'z') và chứa ít nhất một chữ số ('0' '9')

Ví dụ: 'a1B2C3', 'tinHoc6' là hai mật khẩu "an toàn", còn 'a1B2C', 'a1b2c3','A1B2C3' và 'tinhoc' đều không phải là mật khẩu "an toàn"

Cho xâu S mà mỗi ký tự trong S thuộc một trong ba loại ký tự sau: Chữ cái

in ('A' 'Z'), chữ cái thường ('a' 'z'), chữ số ('0' '9') Tìm xem có bao nhiêu cặp chỉ

số (i,j) thỏa mãn điều kiện: 1≤i<j≤length(S) và xâu con gồm các ký tự liên tiếp từ iđến j của S là mật khẩu "an toàn"

Dữ liệu vào: Trong file văn bản MKAT.INP gồm duy nhất một dòng chứa xâu S có

độ dài không quá 5000 ký tự

Dữ liệu ra: ghi ra file văn bản MKAT.OUT một số nguyên là cặp chỉ số (i,j) tính được.

Ví dụ:

Trang 12

KT:=False; Kt1:=false; Kt2:=False; KT3:=False;

For i:=1 to length(St) Do

begin

if St[i] in['A' 'Z'] then Kt1:=true;

if St[i] in['a' 'z'] then KT2:=True;

If St[i] in['0' '9'] then KT3:=true;

Bài 3 Xâu con (Đề thi HSGThanh Hóa năm 2016 -2017) [3]

Một xâu kí tự gọi là xâu nhị phân nếu nó chỉ chứa hai kí tự ‘0’ hoặc ‘1’

Xâu v gọi là xâu con của xâu S nếu xâu v khác rỗng và được tạo bởi các kí tự liên tiếp trong xâu S (thứ tự giữ nguyên) Hai xâu con u và v của xâu S là khác nhau

nếu nó có độ dài khác nhau hoặc được tạo từ các kí tự ở vị trí khác nhau trong xâu

S Ví dụ: xâu “010” có các xâu con là “0”, “1”, “0”, “01”, “10”, “010”.

Yêu cầu: Cho trước một xâu nhị phân S và số nguyên dương k, hãy đếm xem có bao nhiêu xâu con của xâu S chứa đúng k kí tự ‘1’.

Dữ liệu vào: Vào từ file văn bản XAUCON_NP.INP gồm:

- Dòng 1 chứa một số nguyên k (0 ≤ k ≤ 106)

- Dòng 2 chứa xâu nhị phân S có độ dài không quá 106

Ngày đăng: 10/07/2020, 12:11

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w