Chương IV: Kiểu Dữ liệu Có Cấu Trúc
§12. KIỂU DỮ LIỆU XÂU
I. Khai báo kiểu dữ liệu xâu:
-Xâu là dãy các kí tự trong bảng mã ASCII. đặt
trong hai dấu phẩy ‘và‘.
- Độ dài của xâu là số lượng kí tự trong một xâu.
- Xâu rỗng là xâu có độ dài 0 biểu diễn ‘’
- Kí tự trống ‘ ‘ gõ phím Space
Ví dụ: Xâu kí tự ‘Nhom 7’ độ dài: 6
- Để khai báo biến kiểu dữ liệu xâu, TP dùng riêng
STRING tiếp theo là Biến kiểu xâu có thể khai báo
như sau:
VAR <Tên biến> : STRING [ Độ dài lớn nhất của
xâu] ;
- Độ dài lớn nhất của xâu :(có giá trị từ 1 255) được
ghi trong cặp ngoặc [ và ].
Ví dụ: Name là biến kiểu xâu tối đa 8 kí tự
- Trong mô tả xâu có thể bỏ qua phần khai báo độ
dài, chẳng hạn:
Var Chugiai : String;
Khi đó, độ dài lớn nhất của xâu sẽ nhận giá
trị ngầm định là 255.
Var Name : string [8];
II. Các thao tác xử lí xâu
Tham chiếu đến phần tử của xâu được xác định
bởi tên xâu và chỉ số đặt trong cặp ngoặc vuông.
Tên biến [ i ] ; i : thứ tự của kí tự đó.
Ví dụ: Name[1] có nội dung là ‘N’.
Name[5] có nội dung là ‘ ‘
Name[7] có nội dung là ‘’
Name[9] không xác định vì kiểu xâu
tối đa 8 kí tự
Các kí tự của xâu đượ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ự.
A. Biểu thức trong đó các toán hạng là các biến xâu,
biến kí tự, hằng xâu gọi là biểu thức xâu. Với các dữ
liệu kiểu xâu có thể thực hiện phép toán ghép xâu và
các phép toán quan hệ.
1. Phép ghép xâu, kí hiệu là +
Ví dụ 1:
Phép ghép xâu: “+”
‘Ha’ + ‘ Noi’ + ‘ - ‘ + ‘Viet Nam’
Cho xâu kết quả: Ha Noi – Viet Nam
Ðược sử dụng để ghép nhiều xâu thành một xâu.
Có thể thực hiện phép ghép xâu đối với các hằng và
các biến xâu.
2. Các phép so sánh =,<>,<, >,<=,>=
Thực hiện việc so sánh hai xâu và có thứ tự ưu
tiên thực hiện thấp hơn phép ghép xâu.
Xâu A được coi là lớn hơn xâu B nếu như kí tự
đầu tiên khác nhau giữa chúng kể từ trái sang trong
xâu A có chỉ số trong bàng mã ASCII là lớn hơn.
Nếu A và B là các xâu có độ dài khác nhau và A là
đoạn đầu của biến thì A nhỏ hơn B.
Ví dụ 2:
‘My Computer’ < ‘My Computer is halt’
Hai xâu được coi là bằng nhau nếu như chúng giống
nhau hoàn toàn.
Ví dụ 3:
‘TIN HOC’ = ‘TIN HOC’
B. Để xử lí các xâu, có thể sử dụng các thủ tục
và hàm chuẩn dưới đây:
1. Thủ tục chuẩn Delete (St, vt, n)
Thực hiện việc xóa n kí tự của xâu St bắt đầu từ
vị trí vt.
Giá trị của St Thao tác Kết quả
‘abcdef’ Delete(St,5,2) ‘abcd’
‘Song Hong’ Delete(St,1,5) ‘Hong’
Ví dụ 4:
Giá trị của St Thao tác Kết quả
‘abcdef’ Delete(St,5,2) ‘abcd’
‘Song Hong’ Delete(St,1,5) ‘Hong’
Ví dụ 4:
2. Thủ tục Insert (S1, S2, vt)
Ví dụ 5:
Giá trị S1 Giá trị S2 Thao tác Kết quả
‘PC’ ‘IBM486’ Insert(S1,S2,4) ‘IBM PC 486’
‘N’ ‘Hinh.2’ Insert(S1,S2,6) ‘Hinh. N2’
Chèn xâu S1 vào xâu S2, bắt đầu ở vị trí vt.
3. Hàm Copy (S, vt, N)
Ví dụ 6:
Giá trị S Biểu thức Kết quả
‘Bai hoc thu 9’ Copy(S,9,5) ‘thu 9’
4. Hàm Length (S)
Ví dụ 7:
Giá trị S Biểu thức Kết quả
‘500 ki tu’ Length (S) 9
Tạo xâu gồm N kí tự liên tiếp bắt đầu từ vị trí vt
của xâu S.
Cho giá trị là độ dài của xâu S.
5. Hàm Pos (S1,S2)
Ví dụ 8:
Giá trị S2 Thao tác Kết quả
‘abcdef’ Pos(‘cd’,S2) 3
‘sbcdef’’ Pos(‘k’,S2) 0
6. Hàm UpCase (ch)
Ví dụ 9:
Giá trị Ch Biểu thức Kết quả
‘d’
‘E’
UpCase (ch)
UpCase (ch)
‘D’
‘E’
Cho vị trí xuất hiện đầu tiên của xâu S1 trong xâu S2
Cho chữ cái viết hoa ứng với chữ cái trong ch.
III. Một số ví dụ:
Ví dụ 1:
Chương trình dưới đây nhập họ tên của hai người
vào hai 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.
1. Xác định bài toán:
Input: nhập họ tên của hai người vào hai biến xâu
Output:đư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.
Var a,b : String;
Begin
Write (‘ Nhap xau ho ten thu nhat : ‘);
Readln(a);
k := length (a);
b := ‘’;
For i := 1 To k Do
If a[i] <> ‘’ Then b := b+a[i];
Writeln(‘ Ket qua : ‘,b);
Readln;
End.
2. Chương trình :
Ví dụ 2:
Chương trình dưới đây nhập vào hai xâu từ bàn
phím và 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ứ hai hay
không
1. Xác định bài toán:
Input: nhập vào hai xâu từ bàn phím
Output: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ứ hai hay
không
2. Chương trình :
Var x, y : Byte;
a, b : String;
Begin
Write ( ‘Nhap xau thu nhat : ‘);
Readln (a);
Write ( ‘Nhap xau thu hai : ‘);
Readln (b);
{ xác định độ dài của xâu b để biết vị trí của kí tự cuối cùng}
x := length (b);
If a[1] = b[x] Then
Write (‘ Trung nhau’)
Else Write (‘Khac nhau’);
Readln;
End.
Không có nhận xét nào:
Đăng nhận xét