Xâu được tạo thành bởi các kí tự, trong đó có thể có kí tự trống (dấu cách).
Mỗi kí tự được gọi là 1 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 gọi là xâu rỗng
Kiểm tra bài cũCâu 1: Viết khai báo trực tiếp biến mảng 2 chiều.Câu 2: Cho mảng số nguyên C, gồm 8 dòng và 9 cột. Viết khai báo cho biến mảng 2 chiều C.Ví dụ 1:32796584TINHOCDữ liệu các phần tử trong vd 1 là dữ liệu dạng gì?Dữ liệu của các phần tử trong vd1 là dữ liệu dạng kiểu sốCác phần tử trong vd2 có phải là dữ liệu không?Ví dụ 2:Bài 12: KiỂU XÂUXâu là dãy các kí tự trong bộ mã ASCII.Xâu được tạo thành bởi các kí tự, trong đó có thể có kí tự trống (dấu cách).Mỗi kí tự được gọi là 1 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 gọi là xâu rỗng.1. Khái niệmTrong chương trình khi viết 1 xâu kí tự ta phải viết xâu kí tự đó giữa 2 dấu nháy đơn. Ví dụ: 'Tin hoc'Khi nhập từ bàn phím 1 xâu, ta gõ các kí tự thuộc xâu đó (rồi nhấn phím Enter).TINHOCATên xâu: AĐộ dài của xâu: 7 1 2 3 4 5 6 7 HTham chiếu tới phần tử thứ i của xâu ta viết A[i]. Ví dụTham chiếu đến phần tử của xâuTên biến xâu [chỉ số]Ví dụ: A[5]: = ‘H’ Xâu có 1 kí tự trống được viết như thế nào? Độ dài bao nhiêu?Xâu chỉ gồm 1 kí tự trống viết là: ‘ ’Có độ dài là 1.Xâu rỗng được viết như thế nào? Độ dài bao nhiêu?Để viết xâu rỗng ta viết 2 dâu nháy đơn liền nhau ‘’. Có độ dài là 0. TINHOC* Các ngôn ngữ lập trình đều có quy tắc, cách thức cho phép xác định:Tên kiểu xâu.Cách khai báo biến kiểu xâu.Số lượng kí tự của xâu.Các phép toán thao tác với xâu.Cách tham chiếu tới phần tử của xâu. var : string [độ dài lớn nhất của xâu] ;Ví dụ: var Hoten: string [26] ; Trong khai báo xâu có thể bỏ qua phần khai báo [độ độ dài lớn nhất của xâu]. Khi đó nó nhận giá trị ngầm định là 255;Ví dụ: var Chugiai: string;2. Khai báo Ngoài ra ta có thể sử dụng lệnh gán để nhập giá trị cho biến xâu.Tên_biến_xâu:=‘hằng_xâu’; S := ‘Ha noi’Writeln(biến xâu); Vd: Writeln(st);Nhập 1 xâu từ bàn phímViết 1 xâu ra màn hìnhReadln(biến xâu); Vd: Readln(st);Phép ghép xâu: Kí hiệu là dấu cộng (+) được sử dụng để ghép nhiều xâu thành 1. S = S1 + S2 + + Sn Có thể thực hiện phép ghép xâu đối với các hằng và biến xâu.Ví dụ: ‘Ha’ + ‘ Noi’ + ‘ - ’ + ‘Viet Nam’ Xâu kết quả: ‘Ha Noi - Viet Nam’3. Các thao tác xử lý xâuVí dụ: Ghép các xâu sau'Ca' + 'Mau' =' CaMau''Tran Van' + 'Thoi' ='Tran VanThoi'b. Các phép so sánhCác phép so sánh : =, , , ≤, ≥ trên xâu được thực hiện theo thứ tự trong bảng mã ASCII.So sánh 2 xâu theo quy tắc sau:* Xâu A = B, nếu chúng giống hệt nhau‘tin hoc’ = ‘tin hoc’‘tin hoc ’* Xâu A xâu B‘tin hoc’* Xâu A > B nếu:+ Kí tự đầu tiên khác nhau kể từ trái sang trong xâu A có mã ASCII lớn hơn xâu B+ Xâu B là đoạn đầu của xâu A‘Anh’ B:=‘may tinh’ B:=‘Ha Nam’Ví dụ: So sánh các xâu sau1. 'AB''ABC' 2.'AC''ABC'3. 'AB''AC'4. 'ABB''ABC' Ví dụ:B1:=‘May Vi Tinh’C1:=‘Day tot - Hoc’B2 :=‘May Tinh’C2:=‘Day tot - Hoc tot’A1:=‘nguyen van a’A2:= ‘Nguyen Van A’c. Các thủ tục và hàm chuẩn xử lý xâuTHỦ TỤCÝ NGHĨAVÍ DỤDelete (S, vt, n)Xóa n kí tự của biến xâu S bắt đầu từ vị trí vt.S:=‘Song Hong’.Delete(S, 1, 5) ‘Hong’Insert (S1, S2, vt)Chèn xâu S1 vào xâu S2 bắt đầu ở vị trí vt.S1:=‘Tin ’, S2:=‘Hoc’Insert(S1, S2 ,1) ‘Tin Hoc’Delete(S, 6, 4)Insert(S2, S1 ,1) ‘Song ’‘HocTin ’HÀMÝ NGHĨAVÍ DỤCopy (S, vt, n)Tạo xâu gồm n kí tự liên tiếp bắt đầu từ vị trí vt của xâu SS:= ‘Tin Hoc’Copy(S, 5, 3) ‘Học’Length (S)Cho giá trị là độ dài xâu SPos (S1, S2)Cho vị trí xuất hiện đầu tiên của xâu S1 trong xâu S2.S1:=‘cd’S2:=‘abcdef’Pos(S1, S2) ->3Upcase (ch)Cho chữ cái in hoa ứng với chữ cái trong ch.Ch:=‘d’Upcase(ch) ‘D’S:=‘Tin Hoc ’Length(S) -> 8Ví dụ: 1. Cho S = ‘Mon tin hoc’ Delete(S,4, 4); 2. Cho S = ‘Em yeu truong em’. Hãy viết thao tác để thêm tên trường em đang học vào sau chữ truong trong xâu S? 3. Cho S = ‘cai xac xinh xinh’. Cho biết giá trị của thao tác pos(‘xinh’, S)?X = Pos(‘xinh’,S) = 9Insert(‘Tran Van Thoi ’, X, 15);‘Mon hoc’?Hết Bài 12: kiểu xâu(tiếp theo)4. Một số ví dụ:1. Nhập họ tên của 2 người vào 2 biến xâu và đưa ra màn hình xâu dài hơn. Nếu bằng nhau thì đưa ra xâu nhập sau.Xác định input và output của bài toán.Input: Nhập vào 2 biến xâu.Output: Đưa ra xâu dài hơn hoặc xâu nhập sau.Thể hiện bằng pascal1. Khai báo xâu2. Nhập xâu3. Xử lý xâuVar a,b : String ;Begin Clrscr ; Write('Nhap ho ten thu 1 : '); Readln(a); Write('Nhap ho ten thu 2 : '); Readln(b); If length(a) > Length(b) then Write(a) else Write(b); Readln ;End .2. Nhập 2 xâu, kiểm tra xem ký tự đầu tiên của xâu thứ nhất có trùng với ký tự cuối cùng của xâu thứ 2 hay không. Xác định input và output của bài toán.- Input: Nhập vào 2 xâu a và b.- Output: kết luận A[1]= B[length(B)] hay không.Các bước2. Nhập vào 2 xâu a, b.1. Khai báo biến3. Xử lý xâu Xác định x: = length(b); Kí tự đầu tiên của xâu a: a[1] Kí tự cuối cùng của xâu b: b[x] Nếu a[1]=b[x] thì trung nhau. Ngược lại thì không trùngVar a,b : String ; x: byte;Begin Write('Nhap xau thu 1 : '); Readln(a); Write('Nhap xau thu 2 : '); Readln(b); x:= length(b); If a[1] = b[x]then Write(‘trung nhau’) else Write(‘khong trung’); Readln ;End .Thể hiện bằng pascal3. Nhập 1 xâu, viết ra màn hình xâu đó nhưng theo thứ tự ngược lại.Ví dụ:Xâu ban đầu: ‘ca mau’Xâu kq: ‘uam ac’Xác định input và output của bài toán.- Input: Nhập vào 1 xâu.- Output: Đưa ra xâu vừa nhập theo thứ tự ngược lại.Thứ tự ngược lại là phần tử nào được đưa ra đầu tiên? Program vd3 ; Uses crt ; Var i,k : Byte ; a : String ; Begin Clrscr ; Write('Nhap xau : ') ; Readln(a) ; k := length(a) ; For i := k downto 1 do Write(a[i]) ; Readln ; End .4 . Nhập 1 xâu, viết ra màn hình xâu đó nhưng đã được bỏ các dấu cách.Xác định input và output của bài toán.Ví dụ:Xâu ban đầu: ‘Mon tin hoc’Xâu kq: ‘Montinhoc’
Tài liệu đính kèm: