KIỂU XÂU

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