Bài giảng kiểu xâu
Trang 1Bài giảng: kiểu dữ liệu xâu
Giảng viên hướng dẫn: Trần Doãn Vinh Sinh viên thực hiện: Lê Văn Đảm
Lớp: K56A_CNTT
Trang 2Một số khái niệm:
Xâu là một dãy kí tự trong 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 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
Tham chiếu tới phần tử trong xâu được xác định thông qua chỉ số của phần tử trong xâu
Chỉ số phần tử trong xâu thường được đánh số là 1
Trong ngôn ngữ Pacal, tham chiếu tới phần tử thường
được viết :
<Tên biến xâu>[chỉ số]
Trang 31.Khai báo kiểu dữ liệu xâu
Để khai báo kiểu dữ liệu xâu, Pascal dùng tên riêng
STRING Độ dài tối đa của xâu được viết trong [ ] sau từ khóa STRING Khai báo như sau :
VAR <Tên biến > : STRING [độ dài lớn nhất của
xâu];
Ví dụ: Var hoten : string [25];
Ta cũng có thể khai báo
var hoten : string [];
Khi đó độ dài lớn nhất của xâu được ngầm định là 255
Chú ý: Hằng xâu kí tự được đặt trong cặp nháy đơn‘ ’
Trang 42 Các thao tác xử lí xâu
Tham chiếu tới phần tử của xâu được xác định bởi tên xâu và chỉ số đặt trong []
Các kí tự được đánh số bắt đầu từ 1.Có thể xem xâu
là mảng một chiều mà mỗi phần tử là một kí tự
Với dữ liệu kiểu xâu có thế thực hiện phép toán ghép xâu và phép toán quan hệ
Phép ghép xâu (kí hiệu là +): ‘lớp’ + ’k56a’ cho xâu kết quả là: ‘lớp k56a’
Các phép so sánh =, <>, <, >, <=, >= Pascal tự động
so sánh lần lượt từ kí tự từ trái sang phải.Ví dụ : ‘AB’ <
‘AC’, ‘ABC’ > ‘ABB’, ‘ABC’ <’ABCD’
Trang 5Một số thủ tục chuẩn dùng để xử lí xâu :
ở vị trí vt.
vào biến X, nếu không đổi được thì vị trí gây lỗi ghi trong m, nếu đổi thành công thì m = 0
Trang 6Một số hàm chuẩn :
Copy(St,vt,n) sao chép từ xâu St n kí tự từ vị trí vt
Length(s): cho giá trị là độ dài xâu s.
Pos (s1, s2): cho vị trí xuất hiện đầu tiên của xâu s1 trong
xâu s2
Upcase(ch): cho chữ cái viết hoa ứng với chữ cái trong ch
Pos(S1,S2): tìm vị trí xuất hiện đầu tiên của S1 trong S2
Length(St): cho độ dài xâu St
Upcase(ch): cho chữ cái viết hoa tương ứng với chữ
thường trong ch
CHR(X): cho kí tự có mã X trong bảng mã ASCII
Ord(ch): cho mã của kí tự ch trong bảng mã
Trang 73.Ví dụ
Ví dụ 1:
Viết chương trình nhập tên của hai người từ bàn phím, đưa ra màn hình tên dài hơn, nếu bằng nhau thì đưa ra xâu nhập sau
Trang 8Ví dụ 1
Program vidu1;
User crt;
Var
Xau1, Xau2 : string;
Begin
Clrscr;
Write(‘nhap ho ten thu nhat ’);
Readln(Xau1);
Write(‘nhap ho ten thu hai ’);
Readln(Xau2);
If length(Xau1) > length(Xau2) then write (Xau1) Else write(Xau2);
readln
End
Trang 9Ví dụ 2
Nhập 1 xâu, viết ra màn hình xâu đó theo thứ tự ngược lại của các ký tự trong xâu đó
Trang 10Ví dụ 2
Program VD3 ;
Uses crt ;
Var
x : String ;
k : Byte ;
Begin
Clrscr ;
Write('Nhap xau : ') ;
Readln(x) ;
For k := length(x) downto 1 do Write(x[i]) ;
Readln ;
Trang 11Ví dụ 3:
Viết chương trình nhập xâu từ bàn phím đưa ra màn hình xâu thu được sau khi đã
loại bỏ các dấu cách.
Trang 12Ví dụ 3:
Progam VD3;
User crt;
Var
x : string;
i, : byte;
Begin
Write (‘nhap xau ’); readln (x);
For i:=1 to length(x) do
If x[i]= ‘ ’ then delete(x,i,1);
Writeln(‘ xau khi da loai bo dau cach la: ’,x); readln