SÁNG KIẾN KINH NGHIỆM TIN 11 CHUYÊN đề Về Xâu Kí Tự - 123doc
Có thể bạn quan tâm
- Trang chủ >>
- Lớp 11 >>
- Tin học
Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (198.28 KB, 23 trang )
ĐỀ TÀI:CHUYÊN ĐỀ VỀ XÂU KÍ TỰGiáo viên:Tổ:CHUYÊN ĐỀ VỀ XÂU KÍ TỰI. TỔNG QUAN LÝ THUYẾT1. Khái niệm, tham chiếu đến phần tử xâu - Khái niệm: Xâu là dãy các kí tự thuộc bảng mã ASCII, mỗi kí tự được gọi là một phần tử của xâu.Số lượng kí tự trong một xâu được gọi là độ dài của xâu. Xâu có độ dài bằng 0 được gọi là xâu rỗng.Trong Turbo Pascal xâu rỗng được viết bởi hai dấu nháy đơn liền nhau ‘và’.VD: cho xâu s=‘THPT Yen Dung so 1’, xâu S có số kí tự 18 =>độ dài xâu s bằng 18.- Có thể xem xâu là mảng một chiều mà mỗi phần tử là một kí tự. Các kí tự của xâu được đánh sốthứ tự thường bắt đầu từ 1.- Tham chiếu đến phần tử xâu: <tên biến xâu>[chỉ số phần tử]VD; s[1]=’T’, s[4]=’T’, s[6]=’L’, s[10]=’g’Lưu ý: - Kiểu xâu khác với kiểu char2. Khai báo: Var <tên biến xâu>: string[độ dài lớn nhất của xâu];VD: var hoten:string[30];S:string; {xâu s sẽ có độ dài là 255}- Nếu khơng khai báo độ dài lớn nhất của xâu thì xâu sẽ nhận giá trị ngầm định là 255. Xâu ký tựtrong bộ nhớ chiếm số byte bằng số ký tự cực đại được khai báo cộng với byte đầu tiên chứa số kýtự hiện có của xâu.- Ngồi ra có các kiểu khai báo khác của xâu như:+ Shortstring: Chính là String+ longstring: là mảng ký tự có kiểu char. Thơng thường kiểu char có kích thước 16bit nên mảng có kích thước tối đa 16 bit = 65535 ký tự+ ansistring (chỉ có trong free pascal)có kích thước gần 2GB = 230 B3. Cách nhập/xuất: Cách đọc hay viết kiểu xâu tương tự như các kiểu dữ liệu khác, ta sử dụng cácthủ tục READ, hoặc WRITE.Ví dụ: Readln(s); Writeln(s);4. Các thao tác xử lí xâua. Phép ghép xâu (phép cộng xâu): kí hiệu là dấu cộng (+), dùng để ghép nhiều xâu thành một.VD: ‘Yen Dung’ + ‘so 1’ cho kết quả ‘Yen Dungso 1’‘Yen Dung’ + ‘ ’ + ‘so 1’ cho kết quả ‘Yen Dung so 1’b. Các phép so sánh xâu B nếu kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCIIlớn hơn.VD: ‘an’>’An binh’, kí tự ‘a’ có mã ASCII là 97, kí tự ‘A’ có mã ASCII là 65.- Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A< B.VD: ‘an’ < ’an binh’, ‘yen’ < ‘yen dung’- A=B nếu xâu A và B giống nhau hoàn toànVD: ‘hoa’=’hoa, ‘hoa’’Hoa’c. Một số thủ tục xử lý xâu:- Thủ tục Delete(s,vt,n): Xóa n kí tự của xâu s, bắt đầu từ vị trí vtVD:Giá trị SThao tácKết quả‘ydso1’Delete(s,1,4)‘1’‘thptydso1Delete(s,5,5)‘thpt’- Thủ tục Insert(s1,s2,vt): Chèn xâu s1 vào s2, bắt đầu ở vị trí vtVD:Giá trị s1Giá trị s2Thao tácKết quả‘Yendung’ ‘so1’Insert(s1,s2,1)‘Yendungso1’Insert(s2,s1,1)‘so1Yendung’ - Thủ tục str(value,s): chuyển đổi giá trị kiểu số (value) sang dạng xâu kí tự và gán cho biến s.VD: n:=195;str(n,s) sẽ cho kết quả xâu s là s=’195’- Thủ tục val(s,value,code): đổi xâu kí tự s sang dạng số và gán cho biến value, nếu biến đổi thànhcông thì code nhận giá trị bằng 0, ngược lại cho giá trị khác 0.VD: val(‘195’,value,code) lúc này code=0 và value=195d. Một số hàm:TT HàmÝ nghĩa1Copy(s,vt,n)Tạo xâu mới gồm n kí tự liên tiếp bắt đầu từ vị trí vt của xâu s2Length(s)Cho giá trị là độ dài xâu s3Pos(s1,s2)Cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s24Upcase(ch)Cho chữ cái in hoa ứng với chữ cái trong ch5Ord(ch)Cho mã của kí tự ch trong bảng mã ASCII6Chr(n)Cho kí tự có mã là n7Concat(s1,s2,..,sn)Cho xâu mới bằng cách nối đi các xâu s1,s2,..,sn lại với nhauVí dụ:TTGiá trị sBiểu thứcKết quả1‘yendungso1’Copy(s,1,7)‘yendung’2‘Hello’Length(s)53‘yendungso1’Pos(‘g’,s)7TT4567Giá trị ch‘a’‘a’Upcase(ch)Ord(ch)Chr(65)Concat(‘tin’,’hoc’)‘A’97‘A’‘tinhoc’II. PHƯƠNG PHÁP GIẢI CÁC DẠNG BÀI TẬP ĐIỂN HÌNH1. Dạng 1: Một số bài tập củng cố kiến thức, tạo hứng thú cho học sinh:Bài tập 1: Viết chương trình nhập vào một xâu ký tự từ bàn phím. Đổi xâu ký tự đó sang chữ in hoarồi in kết quả ra màn hình.Ví dụ: Input: ‘nguyen van an’Output: ‘NGUYEN VAN AN’GV nêu câu hỏi: Ứng dụng của viết chữ in hoa các em gặp trong những trường hợp nào?HS: khi đi làm giấy khai sinh, kê khai lý lịch, làm hồ sơ thi tốt nghiệp, ĐH-CĐ…GV: Làm thế nào để khi ta nhập họ tên vào máy là chữ thường thì khi hiện lên trên màn hình là chữin hoa có dấu?HS: sử dụng hàm upcase(ch)Giáo viên: Nhưng hàm upcase(ch) chỉ đổi được 1 kí tự thành ký tự in hoa, ở đây chúng ta đổi cả 1xâu kí tự? vậy chúng ta xử lý vấn đề này như thế nào?HS: đưa ra cách xử lý.Giáo viên: Chúng ta đã biết có thể coi xâu là mảng 1 chiều mà mỗi phần tử là một kí tự. Mỗi kí tựcủa xâu được đánh số thứ tự thường bắt đầu từ 1, số kí tự của xâu chính là độ dài của xâu. Vậy để cóthể chuyển 1 xâu nhập từ bàn phím thành chữ in hoa thì ta sẽ chuyển từng kí tự trong xâu thành kí tựin hoa: duyệt lần lượt từng phần tử trong xâu và gán phần tử đó bằng giá trị mới upcase(ch);Câu lệnh for i:=1 to length(s) do S[i]:=upcase(S[i]); dùng để thực hiện yêu cầu đó. GV gọi học sinh lên bảng viết chương trình. HS viết chương trình, sau đó GV nhận xét, sửa chữanếu có sai sót. Chạy chương trình để HS theo dõi kết quả thực hiện.Chương trình:Program inhoa;VarS: String;i:Byte;BeginWrite(‘Nhap xau S: ‘); Readln(S);For i:=1 to length(S) do S[i]:=Upcase(S[i]);Write(‘Xau ket qua: ‘, S);Readln;End.Bài tập 2: Nhập 1 xâu S từ bàn phím (Smax) thenbeginmax:=d; csd:=i; csc:=j;end;end;for i:=csd to csc do write(s[i]);readln;End.4. Dạng 4: Ứng dụng kiểu xâu vào giải các bài toán kiểu số nguyên:Bài tập 1: Viết chương trình nhập số tự nhiên a có n chữ số. Hãy tạo ra số mới b từ số a bằng cáchviết ngược lại các chữ số xuất hiện trong a.Ví dụ: cho a=234 thì b=432.GV: Dựa vào kiến thức kiểu xâu, em nào có thể nêu ý tưởng giải bài toán này?HS:GV: Nhận xét câu trả lời của hs, và nêu rõ: để tạo được số b từ số a, bằng cách viết ngược lại cácchữ số của a thì:+ tạo một xâu rỗng s+ cần sử dụng vòng lặp biết trước lùi (giống bài tập 2 phần a)+ dùng thủ tục val để đổi xâu kí tự s sang dạng số và gán cho biến value.GV yêu cầu hs viết chương trình, sau đó GV sẽ chạy chương trình cho học sinh quan sát trên mànhình máy chiếu. Gv giải thích và giúp học sinh sửa các lỗi ở chương trình các em viết.Chương trình:Program somoidaonguoc;Uses crt;Var a,bi,code: longint;S1,s2:string;BeginWrite(‘nhap so a’);Readln(a);Str(a,s1);S2:=’’; {tạo xâu rỗng s2}For i:=length(s1) downto 1 do s2:=s2+s1[i];Val(s2,b,code);Write(b);Readln;End. Bài tập 2: Số nhỏ nhất:Một số nguyên dương n rất lớn có thể được cho bởi P (P≤20) sốnguyên dương A và P xâu ký tự s1, s2,...,sp (độ dài các xâu không vượt quá 255) chỉ gồm các sốthập phân bằng cách viết s1 liên tiếp A1 lần rồi 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 được cho như trên và cho trước số nguyên dương k nhỏ hơn số chữ số của N.Hãy tìm cách gạch đi k chữ số của N để nhận được một số có giá trị nhỏ nhất .Ví dụ:VàoKết quảp=3, k =11a1=3, a2 = 4, a3 = 2s1 = 123, s2=0, s3 = 4544- Ý tưởng: Ở bài toán này N là số nguyên lớn nên ta sử dụng xâu để biểu diễn nó, giả sử số n lớnđược ghép lại bởi m ký tự khác nhau khi đó sau khi xóa ta cịn lại m-k chữ số trong n. Lần lượt đitìm m chữ số nhỏ nhất trong xâu còn lại ta được kết quả cần tìm.Chương trình tham khảo:{$MODE OBJFPC}Var A : array[1..20] of longint;S: array[1..20] of ansistring; {GV giới thiệu thêm kiểu ansistring (chỉ có trong free pascal mà khơngcó trong turbo pascal) có kích thước gần 2GB =230 B nên t ường được xem là vô hạn}st,kq : ansistring;k,i,p,m,j :longint;Procedure nhap;Beginst:='';Write('Nhap p '); Readln(p);Write('Nhap k ');Readln(k);For i:=1 to p do readln(a[i]);for i:=1 to p do readln(s[i]);for i:=1 to p doFor j:=1 to A[i] dost:=st+S[i];End;Procedure xuly;var m:longint; sm:ansistring; code:integer;Beginj:=0;m:=length(st)-k;Repeatsm:='9';dec(m);For i:=j+1 to length(st)-m doIf sm>st[i] thenBeginsm:=st[i];j:=i; End;kq:=kq+sm;Until m=0;Val(kq,m,code);Write(m);End;Beginnhap;xuly;ReadlnEnd.Bài tập 3: Cho số nguyên dương N, ta tạo ra số nguyên N1 bằng cách viết liên tiếp nhau các sốnguyên từ 1 đến N. Ví dụ N = 4 ta có N1 = 1234. Thực hiện việc thu gọn N1 bằng cách xóa tất cảcác chữ số ở vị trí lẻ, sau đó xóa tất cả các số ở vị trí chẵn, rồi lại xóa các chữ số ở vị trí lẻ, … chođến khi chỉ cịn lại một chữ số.Ví dụ: 1234 ->24-> 2Chương trình bài tập 3:Program taosonguyen;var s,h:string; i,n:integer;BeginWrite('Nhap n=');Readln(n);s:='';for i:=1 to n dobeginstr(i,h);s:=s+h;end;writeln(s);Repeatfor i:=1 to length(s) doif i mod 20 then s[i]:=' ';while pos(' ',s)0 do delete(s,pos(' ',s),1);for i:=1 to length(s) doif i mod 2=0 then s[i]:=' ';while pos(' ',s)0 do delete(s,pos(' ',s),1);Until length(s) ‘Ha Nam’C. ‘TIN HOC’ < ‘tin hoc’D. ‘Viet Nam’ > ‘Viet nam’18. Cho A=’abc’; B=’ABC’; khi đó A+B cho kết quả nào?A. ‘aAbBcC’B. ‘abcABC’C. ‘AaBbCc’D. ‘ABCabc’19. S1 := ‘tin hoc cho moi nguoi’ ; x :=Pos(‘o’,S1) ; cho kết quả là?A. 5B. 6C.7D.1120. So sánh hai xâu a := ‘Ha Noi’, xâu b := ‘Sai Gon’ hãy chọn kết quả. A. a < bB.a > bC. a = bD. aC. VẬN DỤNG1. Trong ngơn ngữ lập trình Pascal, đoạn chương trình sau thực hiện cơng việc gì ? (giá trị củabiến đếm)dem := 0 ;For ch := ‘a’ to ‘z’ doIf pos(ch,S) 0 then dem := + 1 ;A. Đếm số lượng ký tự là chữ cái in hoa của xâu SB. Đếm số lượng ký tự khác dấu cách của xâu SC. Đếm số lượng chữ cái thường khác nhau có trong xâu SD. Đếm số lượng ký tự là chữ cái thường trong xâu S2. Trong ngôn ngữ lập trình Pascal, để in một xâu kí tự ra màn hình theo thứ tự ngược lại củacác ký tự trong xâu (vd : abcd thi in ra là dcba), đoạn chương nào sau đây thực hiện việc gì?A. For i := 1 to length(S) div 2 do write(S[i])B. For i := length(S) downto 1 do write(S[i])C. For i := length(S) downto 1 do write(S)D. For i := 1 to length(S) do write(S[i])3. Trong ngơn ngữ lập trình Pascal, để xóa đi ký tự đầu tiên của xâu ký tự S ta viết:A. Delete(S, 1, 1);B. Delete(S, i, 1); { i là biến có giá trị bất kỳ }C. Delete(S, length(S), 1);D. Delete(S, 1, i); { i là biến có giá trị bất kỳ }4. Trong ngơn ngữ lập trình Pascal, đoạn chương trình sau thực hiện cơng việc gì?d := 0 ;For i := 1 to length(S) doif S[i] = ‘ ’ then d := d + 1 ;A. Xóa đi các dấu cách trong xâu;B. Đếm số dấu cách có trong xâu;C. Xóa đi các ký tự số;D. Đếm số ký tự có trong xâu;5. Cho đoạn chương trình sau:s1 := ‘123’; s2 := ‘abc’;insert (s2 , s1 , 1);write(s1);Kết quả in ra màn hình là:A. ‘123abc’B. ‘abc’C. ‘123’ D. ‘abc123’6. Cho đoạn chương trình sau:s := ‘ABCDEF’;delete(s, 3, 2);insert(‘XYZ’, s, 4);write(s);Kết quả in ra màn hình là:A. ‘ABXYZEF’B. ‘ABEXYZF’ C. ‘AXYZ’ D. ‘AXYZBEF’7. Cho đoạn chương trình sau:s := ‘1001010’;write(pos(‘011’, s));Kết quả in ra màn hình là: A. 0B. ‘0’8. Cho đoạn chương trình sau:s := ‘Mua xuan’;write(upcase(s[length(s)-1]));Kết quả in ra màn hình là:A. ‘X’B. ‘U’C. 3 D. ‘3’C. ‘A’ D. ‘N’9. Cho đoạn chương trình sau:s1 := ‘abc’; s2 := ‘1234’;if length(s1) > length(s2) then writeln(s1) else writeln(s2);Kết quả in ra màn hình là:A. ‘1234’B. ‘abc’ C. ‘1234abc’10. Cho đoạn chương trình sau:s:= ‘edcba’;For i:= length(s) downto 1 do write(s[i]);Kết quả in ra màn hình là:A. ‘abcd’B. ‘dcba’ C. ‘abcde’ D. ‘abc1234’ D. ‘edcba’D. VẬN DỤNG CAO1. Trong ngơn ngữ lập trình Pascal, đoạn chương trình thực hiện cơng việc nào trong các côngviệc sau:i := pos(‘ ’, S); { ‘ ’ là 2 dấu cách }while i 0 doBeginDelete(S, i, 1) ;i := pos(‘ ’, S) ;End;A. Xóa các dấu cách trong xâu S để S khơng cịn 2 dấu cách liền nhau;B. Xóa các dấu cách liền nhau cuối cùng trong xâu;C. Xóa 2 dấu cách liền nhau đầu tiên trong xâu;D. Xóa đi một trong 2 dấu cách đầu tiên trong xâu;2. Trong ngơn ngữ lập trình Pascal, đoạn chương trình sau thực hiện cơng việc gì?S1 := ‘anh’ ;S2 := ‘em’ ;i := pos(S2, S) ;While i 0 doBeginDelete(S, i, 2) ;Insert(S1, S, i) ;i := pos(S2, S) ;End ;A. Thay toàn bộ cụm từ ‘em’ trong xâu S bằng cụm từ ‘anh’ ;B. Thay toàn bộ cụm từ ‘anh’ trong xâu S bằng cụm từ ‘em’ ;C. Thay cụm từ ‘em’ đầu tiên trong xâu S bằng cụm từ ‘anh’ ;D. Thay cụm từ ‘anh’ đầu tiên trong xâu S bằng cụm từ ‘em’ ;3. Trong ngơn ngữ lập trình Pascal, đoạn chương trình sau làm cơng việc gì:i := pos(‘ ’, X) ;while i 0 doBegin Delete(X, i, 1) ;i := pos(‘ ’, X) ;End;A. Xóa tất cả các dấu cách phía bên phải trong xâu X ;B. Xóa tất cả các dấu cách phía bên trái trong xâu X ;C. Xóa tất cả các dấu cách trong xâu X ;D. Xóa tất cả các dấu cách ở hai đầu của xâu X ;4. Trong ngôn ngữ lập trình Pascal, sau khi thực hiện xong đoạn chương trình sau, biến Foundcó giá trị là gì? (S là biến xâu ký tự)Found := 0 ;x := length(S) ;For i := 1 to x Div 2 doIf S[i] S[x – i + 1] then Found := 1 ;A. Found bằng 0 nếu S là xâu đối xứng;B. Found bằng 0 nếu S là xâu không đối xứng;C. Found khơng có giá trị gì;D. Found bằng 1 nếu S là xâu đối xứng;5. Trong ngơn ngữ lập trình Pascal, đoạn chương trình sau thực hiện việc gì?If (ch >= ‘A’) and (ch 0) then Write(i:2,' :',D[i]:2,' ');End;BEGINClrscr;Doc_Dem; Writeln('Ket qua ');Hien_so_luong_ki_tu;Writeln;Writeln('Tong so tu la : ',tong_tu);Writeln('So tu " ',tunhap,'" trong File la : ',demtu);Readln;END.
Tài liệu liên quan
- Sáng kiến kinh nghiệm " Tiểu luận chuyên đề Tổ chức hoạt động nhận thức " pptx
- 13
- 522
- 0
- sáng kiến kinh nghiệm Lồng ghép chuyên đề dinh dưỡng trong môn học khám phá khoa học
- 15
- 653
- 0
- Sáng kiến kinh nghiệm tổ chức chuyên đề trong Trường Tiểu học A Khánh Bình Tây
- 15
- 663
- 0
- Sáng kiến kinh nghiệm PHÁT BIỂU CHUYÊN ĐỀ KHAI THÁC VÀ PHÁT TRIỂN BÀI TOÁN
- 3
- 183
- 0
- Sáng kiến kinh nghiệm một số vấn đề về nội dung và phương pháp dạy yếu tố hình học cho học sinh lớp ba
- 31
- 161
- 0
- Sáng kiến kinh nghiệm một số vấn đề về nội dung và phương pháp dạy yếu tố hình học cho học sinh lớp ba
- 31
- 82
- 0
- Sáng kiến kinh nghiệm: Một số vấn đề về cách mạng tư sản trong dạy học Lịch sử THCS
- 7
- 53
- 0
- Sáng kiến kinh nghiệm Một số vấn đề về phương pháp giảng dạy bài thực hành: “Xác định công suất của các dụng cụ điện” Chương I - Điện học Vật Lí 9
- 7
- 13
- 0
- SÁNG KIẾN KINH NGHIỆM TIN 11 CHUYÊN đề về xâu kí tự
- 23
- 91
- 0
- (Sáng kiến kinh nghiệm) báo cáo CHUYÊN đề sử DỤNG có HIỆU QUẢ THIẾT bị dạy học
- 3
- 26
- 0
Tài liệu bạn tìm kiếm đã sẵn sàng tải về
(183.65 KB - 23 trang) - SÁNG KIẾN KINH NGHIỆM TIN 11 CHUYÊN đề về xâu kí tự Tải bản đầy đủ ngay ×Từ khóa » độ Dài Của Xâu được Tính Dựa Vào
-
Tin Học 11 Bài 12: Kiểu Xâu - HOC247
-
Bài 12: Kiểu Xâu - Tìm đáp án, Giải Bài Tập, để Học Tốt
-
Lý Thuyết: Kiểu Xâu Trang 68 SGK Tin Học 11
-
Giải Bài Tập Tin Học 11 - Bài 12: Kiểu Xâu
-
So Sánh Xâu
-
Trong Ngôn Ngữ Lập Trình Pascal, Hai Xâu Kí Tự được Coi Là Bằng ...
-
Giải Tin Học 11: Bài 12. Kiểu Xâu - Chi Tiết, Hay Nhất - Toploigiai
-
Chuyên đề Xâu Kí Tự - Tài Liệu Text - 123doc
-
Bài 12. Kiểu Xâu - Tin Học 11 - Nguyễn Thị Tố Châu
-
Buổi 1,2,3 XÂU KÍ TỰ
-
Bài 12. Kiểu Xâu Bai 12 Doc - Nslide
-
Một Số Bài Toán Quy Hoạch động điển Hình - VNOI
-
Viết Phương Trình Nhập Vào Một Xâu Từ Bàn Phím đưa Ra Màn Hình ...