1. Một số khái niệm:
- Xâu là một dãy
kí tự trong bảng mã ASCII. Một hằng xâu trong Pascal đặt trong cặp dấu ‘ ‘. Ví
dụ: ‘hoc sinh’; ‘lop 12 a7’; ‘12sd’,...
- 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.
- Xâu được coi như
mảng 1 chiều.
- 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.
<Tên
biến xâu>[chỉ số] Ví dụ: S:=’bao loc’; S[2]=’a’; S[7]=’c’;
2. Cách khai báo
biến xâu:
var <tên biến xâu> : string [độ dài lớn nhất của xâu] ;
VD: Var Ten :
String[10] ; Ho_dem : String[25]
;
Que : String ;
Chú ý :
- Nếu không khai
báo độ dài tối đa cho biến xâu kí tự thì độ dài ngầm định của xâu là 255 .
3. Các thao tác xử lí xâu.
a. Phép ghép xâu:
Kí hiệu là dấu cộng (+)
VD:
‘Ha’ + ‘ Noi’ + ‘ – ’ + ‘Viet Nam’
cho kết quả là ‘Ha Noi – Viet Nam’
b. Phép so sánh: <, <=, >, >=, = , <>.
- Xâu A 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ó mã ASCII 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 B thì A là nhỏ hơn B.
- Hai xâu được coi
là bằng nhau nếu chúng hoàn toàn giống nhau.
VD: ‘Di hoc’< ‘di hoc’; ‘hom nay’ < ‘hom qua’; ‘di hoc’=
‘di hoc’; ‘nang qua’ < ‘nang qua troi oi’
c. Một số thủ tục và hàm chuẩn dùng để 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í vt.
VD: S:=’Bao Loc oi’;
Delete(S,4,5); S=’Baooi’
- Thủ tục insert
(S1,S2,vt) chèn sâu S1 vào xâu S2 bắt đầu từ vị trí vt của S2.
VD: S1:=’Bao oi’;
S2:=’Loc’; insert(S2,S1,4); S1=’BaoLoc oi’;
- Hàm 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 S.
VD: S:=’Bao Loc oi’;
Copy(S,5,4)= ‘Bao ‘;
- Hàm pos (S1,S2) cho vị trí xuất hiện
đầu tiên của S1 trong S2 .
VD: S1:=’Bao Loc
oi’; S2:=’Loc’; Pos(s1,s2)=0; Pos(s2,s1)=5;
- Hàm length (S) cho độ dài xâu S.
VD: Length(‘Bao Loc’)=7
- Hàm upcase (ch) cho chữ cái viết hoa
tương ứng với chữ thường trong ch.
VD: Upcase(‘A’)=’A’; Upcase(‘a’)=’A’; Upcase(‘An’)
lỗi.
- Hàm chr (X) cho kí tự có mã X trong
bảng mã ASCII.
VD: Chr(65)=’A’; chr(97)=’a’
- Hàm ord (ch) cho mã của kí tự ch trong bảng mã ASCII.
VD: Ord(‘A’)=65; Ord(‘a’)=97
4. Ví dụ
Hãy biến đổi một xâu nhập từ bàn phím thành xâu các chữ cái in hoa?
Ý tưởng: Duyệt
từ đầu đên cuối xâu, nếu S[i] là chữ cái thì biến đổi S[i] thành chữ cái in hoa
là: S[i]:=upcase(S[i]);
Giải quyết bài toán:
Var
S:string; i:byte;
BEGIN
Write(‘
nhap vao mot xau:’); Readln(S);
For i:=1
to length(s) do
If ( ‘A’
<=upcase(S[i])) and (upcase(S[i]<=’Z’) then
S[i]:=upcase(S[i]);
Write(‘
Xau sau khi bien doi thanh in hoa:’,S);
Readln;
END.
Không có nhận xét nào:
Đăng nhận xét