You are on page 1of 6

DỮ LIỆU KIỂU XÂU KÝ TỰ (STRING)

I. KHAI BÁO KIỂU STRING


TYPE TenKieu = STRING[skt];
VAR Tenbien : TenKieu;
hoặc khai báo biến trực tiếp:
VAR Tenbien : STRING[skt];
Vanban: ANSISTRING;
Trong đó skt là số ký tự tối đa có thể chứa trong chuổi (skt  [0..255]).
Nếu không có khai báo [skt] thì số ký tự mặc định trong chuổi kiểu
STRING tối đa là 255kí tự, còn kiểu ANSISTRING thì không giới hạn số
lượng kí tự.
Ví dụ:
Type Hoten = String[30];
St = String[80];
Var Name : Hoten;
Line : St;
S : String; {S có tối đa là 255 ký tự}
S1: ansistring; {S1 không giới hạn số ký tự}
II. TRUY XUẤT DỮ LIỆU KIỂU STRING
- Có thể sử dụng các thủ tục xuất nhập Write(st), Read(st) để xuất
nhập các xâu kí tự. Write(st[i]), Read(st[i]) để xuất nhập từng kí tự của
xâu.
Ví dụ st := ’hoc sinh gioi’ write(st[3]) cho kết quả kí tự ‘c’
III. CÁC PHÉP TOÁN TRÊN XÂU KÝ TỰ
3.1. Phép nối xâu: +
Ví dụ st := ‘Truong THCS ’; St1 := ‘Thanh Co’;
St + st1 có kết quả là ‘Truong THCS Thanh Co’
3.2. Các phép toán quan hệ: =, <>, <, <=, >, >=.
Chú ý: Các phép toán quan hệ được so sánh theo thứ tự từ điển.
Ví dụ ABC>AB cho kết quả là true;
MN > ABCD cho kết quả là true;
Z>a cho kết quả là false
IV. CÁC THỦ TỤC VÀ HÀM VẾ XÂU KÝ TỰ
4.1. Hàm lấy chiều dài của xây ký tự
LENGTH(St) ;
Ví dụ st := ’hoc sinh gioi’
LENGTH(St) ; kết quả là 13
4.2. Hàm COPY(St, Pos, Num);
Lấy ra một xâu con từ trong xâu St có độ dài Num ký tự bắt đầu từ vị trí
Pos .
Ví dụ st := ’hoc sinh gioi’ COPY(St, 5, 4); kết quả là ’sinh’
4.3. Hàm POS(St1, St);
Kiểm tra xâu con St1 có nằm trong xâu St hay không? Nếu xâu St1 nằm
trong xâu St thì hàm trả về vị trí đầu tiên của xâu con St1 trong xâu St,
ngược lại hàm trả về giá trị 0.
Ví dụ st := ’hoc sinh gioi’
POS(‘o’, St); kết quả là 2; POS(‘kh’, St); kết quả là 0
4.4. Thủ tục DELETE(St, Pos, Num);
Xoá trong xâu St Num ký tự bắt đầu từ vị trí Pos.
Ví dụ st := ’hoc sinh gioi’
DELETE(St, 4, 2); st := ’hocinh gioi’
4.5. Thủ tục INSERT(St1, St, Pos);
Chèn xâu St1 vào xâu St bắt đầu tại vị trí Pos.
Ví dụ st := ’hoc sinh gioi’; st1 := ‘truong thanh co hoc ’
INSERT(St1, St, 10); kết quả là ‘hoc sinh truong thanh co hoc gioi’
4.6. Thủ tục STR(Num, St);
Đổi số nguyên hay thực Num thành dạng xâu ký tự, kết quả lưu vào biến
St.
Ví dụ STR(123.5, St); st:=’123.5’
4.7. Thủ tục VAL(St, Num, loi);
Đổi xâu số St thành số và gán kết quả lưu vào biến Num. Nếu việc chuyển
đổi thành công thì biến loi có giá trị là 0, ngược lại biến loi có giá trị khác
0 (vị trí của lỗi).
VAL(‘123.5’, Num, loi); num:= 123.5
4.8 Hàm ORD(st[i]);
Đổi một kí tự trong xâu thành một số tương ứng của bảng mã (vị trí trong
bảng mã)
Ví dụ ORD(‘A’) kết quả là 65
4.9 Hàm CHR(num);
Đổi một số thành một kí tự tương ứng trong bảng mã
Ví dụ CHR(97); kết quả là ‘a‘
4.10 Hàm UPCASE(st[i])
đổi kí tự in thường thành kí tự in hoa (kiểu chữ)
upcase(‘a’) kết quả là ’A’

BÀI TẬP MẪU

Bài tập 6.1: Viết chương trình nhập vào một xâu ký tự từ bàn phím. Đổi
xâu ký tự đó sang chữ in hoa rồi in kết quả ra màn hình.
Ví dụ :Xâu abcdA5bcD45 sẽ cho ra xâu ABCDA5BCD45

Uses Crt;
Var St:String;
i:Byte;
Begin
Write(‘Nhap xau St: ‘); Readln(St);
For i:=1 to length(St) do St[i]:=Upcase(St[i]);
Write(‘Xau ket qua: ‘, St);
Readln;
End.

Bài tập 6.2: Viết chương trình nhập vào một xâu ký tự từ bàn phím. Đổi
các ký tự chữ hoa sang chữ thường rồi in kết quả ra màn hình.
Ví dụ :Xâu abCdAbcD sẽ cho ra xâu abcdabcd.

Uses Crt;
Var St:String;
i:Byte;
Begin
Write(‘Nhap xau St: ‘); Readln(St);
For i:=1 to length(St) do
If St[i] IN [‘A’..’Z’] Then St[i]:=CHR(ORD(St[i])+32);
Write(‘Xau ket qua: ‘, St);
Readln;
End.

Bài tập 6.3: Viết chương trình đếm số ký tự chữ số trong một xâu ký tự
được nhập vào từ bàn phím.

Uses Crt;
Var St:String;
i,d:Byte;
Begin
Write(‘Nhap xau St: ‘); Readln(St);
For i:=1 to length(St) do
If St[i] IN [‘0’..’9’] Then d:=d+1;
Write(‘So ky tu chu so trong xau: ‘, d);
Readln;
End.
BÀI TẬP TỰ GIẢI

Bài tập 6.11: Viết chương trình nhập vào một xâu ký tự từ bàn phím. Tìm
và in ra màn hình một từ có độ dài lớn nhất trong xâu.

Bài tập 6.12: Viết chương trình nhập một xâu ký tự St từ bàn phím và một
ký tự ch. In ra màn hình xâu St sau khi xóa hết các ký tự ch trong xâu đó.
Gợi ý:
While POS(ch,st)<>0 Do Delete(st,POS(ch,st),1);

Bài tập 6.13: Viết chương trình nhập một xâu vào từ bàn phím và thông
báo lên màn hình xâu đó có phải đối xứng không (Ví dụ: abba, abcba là
các xâu đối xứng).
Gợi ý:
- Nếu xâu Length(st)<=1 thì st là xâu đối xứng
- Ngược lại:
+ Nếu st[1]<>st[Length(st)] thì st không đối xứng
+ Ngược lại: Gọi đệ qui với xâu st sau khi bỏ đi ký tự đầu và ký
tự cuối.

Bài tập 6.14: Viết chương trình đảo ngược thứ tự các từ trong một xâu
được nhập vào từ bàn phím.
Ví dụ: Xâu Nguyen Van An sẽ thành An Van Nguyen.

Bài tập 6.15: Viết chương trình nhập vào 2 xâu ký tự s1 và s2. Kiểm tra
xem xâu s2 xuất hiện bao nhiêu lần trong xâu s1. (Lưu ý: length(s2)<=
length(s1)).

You might also like