1 / 15

Lập trình với xâu ký tự

Lập trình với xâu ký tự. HỌC VIỆN QUÂN Y Bộ môn Toán – Tin học. Người trình bày: Hoàng Anh. Nội dung. Khái niệm về dữ liệu kiểu xâu ký tự Lập trình với dữ liệu xâu ký tự Một số ví dụ lập trình với dữ liệu xâu ký tự. I. Khái niệm về dữ liệu kiểu xâu ký tự. Khai báo xâu ký tự:

tameka
Download Presentation

Lập trình với xâu ký tự

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lập trình với xâu ký tự HỌC VIỆN QUÂN Y Bộ môn Toán – Tin học Người trình bày: Hoàng Anh

  2. Nội dung • Khái niệm về dữ liệu kiểu xâu ký tự • Lập trình với dữ liệu xâu ký tự • Một số ví dụ lập trình với dữ liệu xâu ký tự

  3. I. Khái niệm về dữ liệu kiểu xâu ký tự • Khai báo xâu ký tự: • Xâu ký tự được khai báo bằng từ khoá STRING[n] vói n là một số nguyên chỉ độ dài cực đại của xâu. • Ví dụ: Var • x1: String[20]; • st: String[80]; • Độ dài thực của xâu ký tự: • Là số ký tự mà xâu ký tự thực chứa. Độ dài thực luôn nhỏ hơn hoặc bằng độ dài cực đại. • Trong bộ nhớ, xâu ký tự chiếm một số byte bằng độ dài cực đại cộng thêm 1 byte đầu tiên để chứa độ dài thực. Khi gán giá trị trị cho xâu ký tự, độ dài thực của xâu được lưu trữ trong byte đầu tiên này • Ví dụ x1 := ‘Ho va Ten’; Độ dài thực = 9 Độ dài cực đại = 20 • Độ dài thực của xâu st được truy cập bằng hàm Length(st)

  4. x1 9 H o v a T e n Chỉ số 0 1 2 3 4 5 6 7 8 9 Cấu trúc dữ liệu xâu ký tự I. Khái niệm về dữ liệu kiểu xâu ký tự • Xâu ký tự và mảng ký tự: • Xâu ký tự có thể được hiểu như một mảng ký tự có chỉ số chạy từ 0 đến độ dài cực đại. Phần tử thứ 0 chứa độ dài thực của xâu. • Điểm khác biệt giữa xâu ký tự và mảng ký tự là mảng ký tự có độ dài cố định còn độ dài của xâu ký tự có thể thay đổi được • Các phần tử của xâu ký tự có thể truy cập được thông qua tên của xâu và chỉ số đặt trong cặp ngoặc vuông như khi truy cập vào các phần tử của mảng. Chỉ số này có thể chạy từ 1 đến độ dài cực đại của xâu.

  5. II. Lập trình với xâu ký tự • Phép nối xâu • st := ‘Ho va ’ + ‘Ten’ ; cho kết quả st = ‘Ho va Ten’ • st := st + ‘Khong ro’ cho kết quả st = ‘Ho va TenKhong ro’ • Phép so sánh hai xâu ký tự • Nguyên tắc: • So sánh từng ký tự tương ứng trong hai xâu theo thứ tự từ trái qua phải theo giá trị của bảng mã ASCII cho đến khi xuất hiện ký tự khác nhau. • Hai xâu ký tự bằng nhau nếu chúng giống nhau cả về nội dung và độ dài • Xâu chứa ký tự có mã ASCII nhỏ hơn mã ASCII của ký tự tương ứng trong xâu so sánh với nó được coi là nhỏ hơn • Nếu hai xâu có độ dài khác nhau song có tất cả các ký tự giống nhau đến độ dài xâu ngắn hơn thì xâu có độ dài ngắn được coi là nhỏ hơn • Ví dụ: ‘Ho va Ten’ = ‘Ho va Ten’ ‘abcdeg’ < abg’ • ‘Ho va’ < ‘Ho va Ten’

  6. II. Lập trình với xâu ký tự • Đọc xâu • Sử dụng các thủ tục Read(st) và Readln(st) để đọc các xâu ký tự với độ dài thực là số ký tự gõ vào cho đến khi người dùng gõ phím Enter • Nếu ta gõ Enter luôn mà không gõ ký tự nào sẽ được một xâu rỗng: st = ‘’ • Viết xâu ra màn hình • Sử dụng các thủ tục Write(st) và Writeln(st) • Các hàm và thủ tục chuẩn xử lý xâu ký tự • Length( st ) • Cho độ dài thực của xâu st • Ví dụ Với st = ‘Ho va Ten’ Length(st) cho giá trị bằng 9 • Delete( st, m, n ) • Xoá đi n ký tự kể từ vị trí thứ m trong xâu st . Nếu n+m>length(st) thì chỉ những ký tự nằm trong xâu bị xoá • Ví dụ: Với st = ‘1234567’. • Delete(st. 3. 2) sẽ làm cho st trở thành ‘12567’

  7. II. Lập trình với xâu ký tự • Insert ( st1, st, n ) • Chèn xâu ký tự xt1 vào xâu st tại vị trí thứ n • Ví dụ: Với st = ‘Ho va Ten’ st1 = ’12’ • Insert(st1, st, 3) sẽ làm cho st trở thành ‘Ho12va Ten’ • Str( Value, st) • Biến đổi Value (số nguyên hay số thực) thành dãy ký tự biểu diễn số đó, Cách biểi diến được quy định bởi kiểu cách của Value. • Ví dụ: Với I = 512 • Str(I:5, st) sẽ cho st = ‘ 512’ (5 ký tự) • Val(st, Var1, Code) • Biến đổi xâu ký tự st (biểu diễn 1 số nguyên hay số thực thành một số nguyên (hay số thực) và để kết quả trong Var1. Code là một số nguyên dùng để phát hiện lỗi. Nếu biến đổi thành công, Code = 0. Nếu có lỗi, Code sẽ chứa giá trị bằng vị trí của ký tự gây lỗi trong xâu st. • Ví dụ: với st = ‘512.25’ • Val(st, X1, KQ) sẽ cho kết quả là X1 = 512.25 và KQ = 0

  8. II. Lập trình với xâu ký tự • Copy( st, m, n) • Trả về n ký tự trong xâu st kể từ vị trí thứ m • Ví dụ: Với st=‘1234567890’ • Copy ( st, 6, 3) sẽ cho giá trị ‘678’ • Concat ( st1, st2, ..., stn ) • Nối tất cả các xâu st1, st2, ..., stn thành một xâu theo thứ tự được viết. Nếu tổng chiều dài của các xâu thành viên > 255 thì máy tính báo lỗi • Ví dụ: Với st1 = ‘Ho va Ten’ st2 = ‘1234’ • Concat ( st1, ‘ la ’, st2 ) cho giá trị “Ho va Ten la 1234’ • Post(st1, st) • Cho vị trí đầu tiên của xâu st1 trong xâu st • Ví dụ: st = ‘1234562345’ • Post(‘3’, st) sẽ cho giá trị bằng 3 • Post(‘A’, st) sẽ cho giá trị bằng 0 (vì không thấy)

  9. III. Ví dụ lập trình với xâu ký tự Lập chương trình đếm số từ trong một xâu ký tự nhập vào từ bàn phím. Có bao nhiêu từ bắt đầu bằng chữ “A” ......................... Read(st); Dem := 0; i := 1; Repeat (* Bỏ qua các dấu cách ở đầu xâu *) While ((st[I] = ‘ ‘) AND( i < Length(st)) do i:= i + 1; if ( i <= Length(st)) then Dem := Dem + 1; (* Tăng biến đếm *) (* Nhảy qua các ký tự trong từ *) While ( ( st[ I ] <> ‘ ‘ ) AND ( i < Length( st ) ) do i:= i + 1; Until ( i > Length(st)); So_Tu := Dem; ........................... (Học viên tự sửa chương trình để đếm số từ bắt đầu bằng chữ cái A)

  10. III. Ví dụ lập trình với xâu ký tự Lập chương trình đọc vào một số nguyên. Nếu dữ liệu không hợp lệ thì yêu cầu người dùng nhập lại Var ch : Char; so: Integer; Begin clrscr; So := 0; Repeat ch := Readkey; Write(ch); if (ch >= '0') AND (ch <= '9') then So := So *10 + ORD(ch) - ORD('0') else if (ORD(ch)<>13) then Begin clrscr; Writeln('Ban da go mot ky tu khong hop le. Hay nhap lai'); so := 0; End; Until (ORD(ch) = 13); Writeln('So nguyen ban da nhap la ', so); End.

  11. III. Ví dụ lập trình với xâu ký tự Viết chương trình đọc một xâu ký tự từ bàn phím và chỉ ra xem nó có phải là xâu đối xứng không. Program test_st; uses crt; Var st:String[100]; l, h, i: Integer; BEGIN Write('st = '); readln(st); l := Length(st); h := l DIV 2; i := 1; While (i<=h) and (st[i]=st[l-i+1]) do i := i+1; if i <= h then Writeln(st, ' khong doi xung') else Writeln(st, ' doi xung'); readln; END.

  12. III. Ví dụ lập trình với xâu ký tự Đọc vào 1 xâu ký tự, In ra tất cả các xâu con có độ dài lớn hơn 1 program substring1; Var st, Tu: String; i, j, n: Integer; BEGIN write('st='); readln(st); n:=length(st); for i:=1 to n do for j:=n-i+1 downto 2 do begin tu:=copy(st, i, j); writeln(tu); end; readln; END.

  13. III. Ví dụ lập trình với xâu ký tự Đọc vào 1 xâu, đổi chữ hoa thành chữ thường và ngược lại, các ký tự khác giữ nguyên. A:65 B:66 ... Z:90 a:97 b:98 .... z:122 a cách A 32 ký tự b cách B 32 ký tự program RevertCase; Var st: String; i,n: integer; ch: char; BEGIN write('st='); readln(st); n:=length(st); for i:=1 to n do begin ch:=st[i]; case ch of 'A'..'Z': write(chr(ord(ch)+ord('a')-ord('A'))); 'a'..'z': write(chr(ord(ch)-ord('a')+ord('A'))); else write(ch); end; end; readln; END.

  14. III. Ví dụ lập trình với xâu ký tự Đọc vào 1 xâu ký tự, đếm số lần xuất hiện của một từ cho trước trong xâu Program CountWords; Var st, tu: String; i,dem, vt: integer; BEGIN write('st='); readln(st); write('tu='); readln(tu); st:=' '+ st + ' '; tu:=' '+ tu + ' '; dem:=0; vt:= pos(tu,st); while vt>0 do begin dem:=dem+1; delete(st, vt, length(tu)-1); writeln(st); vt:=pos(tu,st); end; writeln('so lan xuat hien la: ', dem, ' lan'); readln; END.

  15. III. Ví dụ lập trình với xâu ký tự Viết chương trình chuyển cụm dấu cách thành một dấu cách trong xâu ký tự đọc vào. Program convert; Uses crt; Var st: String[100]; i: Integer; BEGIN Write('Xau ky tu ban dau: '); Readln(st); i := pos(' ', st); While i > 0 do Begin Delete(st, i, 1); i := pos(' ', st); End; Write('Xau ket qua: ', st); Readln; END.

More Related