Chương 4
DỮ LIỆU KIỂU CHUỖI
NGÔ QUANG THẠCH
5/21/21
• Kiểu chuỗi (STRING)
• Khái niệm
• Khai báo chuỗi
• Các thao tác trên String
• Một số hàm và thủ tục
NỘI DUNG
5/21/21
• Một chuỗi dữ liệu là một loạt các ký tự được định nghĩa
bằng từ khố STRING.
• Có thể khai báo kiểu String gián tiếp hoặc trực tiếp
• Khai báo trực tiếp
VAR <Tên biến> : STRING [độ dài của chuỗi] ;
• Khai báo gián tiếp
TYPE <Tên kiểu String> = STRING [hằng nguyên] ;
VAR <Tên biến> : <Tên kiểu String> ;
KIỂU CHUỖI
5/21/21
• TYPE TenSV = STRING [25] ; {định độ dài tối đa là
25}
Diachi = STRING; {mặc nhiên có độ dài tối đa là 255}
• VAR HT : TenSV ;
DC : Diachi ;
• VAR HT : STRING [25] ;
DC : STRING;
Ví dụ:
5/21/21
• VAR DH: STRING[15]
DH:= CONG THUONG;
0
1
2
3
4
C ONG
5
6
7
8
9
10 11 12 13 14 15
T HUONG
Chuỗi: ‘CONG THUONG’ có độ dài 11 ký tự
Ký tự thứ
0 chứa ký tự độ dài thực của chuỗi CHR(11)
PHÉP GÁN
5/21/21
HoTen := Nguyen Van A ;
DiaChi := 291 Phan Dinh Phung, QN ;
• Thực hiện nối chuỗi bằng dấu Cộng (+)
• HoTen+DiaChi = Nguyen Van A 291 Phan Dinh Phung,
QN
• Chú ý: Khơng có phép trừ, nhân, chia trong chuỗi ký tự.
PHÉP CỘNG
5/21/21
• Gồm có:
• = ; > ; >= ; <> ; < ; <=
• So sánh từng cặp một từ trái sang phải theo giá trị của bảng
mã ASCII
• Ví dụ:
• 'Hello' = 'Hello'
• 'Hello' > 'Hella'
• 'Hello' < 'Hellu'
• ‘Lan' < ‘Lang'
CÁC PHÉP SO
SÁNH
5/21/21
• Thủ tục xóa một phần
• Cú pháp: DELETE (St, Pos, Num)
• Ví dụ:
VAR st : string [20];
BEGIN
St := 'CONG CHA NGHIA ME';
Writeln (St) ;
DELETE (St, 10, 6);
Writeln(St);
Readln ;
END.
St: Chuỗi ban đầu
Pos: Vị trí cần xố
Num: Số ký tự cần xoá
CÁC THỦ TỤC VÀ
HÀM
CONG CHA NGHIA ME
CONG CHA ME
5/21/21
• Thủ tục chèn một chuỗi
• Cú pháp: INSERT (Obj, St, Pos)
• Ví dụ:
VAR St : string [25];
Obj: Chuỗi cần chèn
BEGIN
St: Chuỗi gốc ban đầu
St := 'CONG CHA NGHIA ME';
Pos: Vị trí cần chèn
Writeln (St) ;
INSERT(‘ CHU THAY’, St, 18);
CONG CHA NGHIA ME
Writeln(St);
CONG CHA NGHIA ME CHU
Readln ;
THAY
END.
5/21/21
• Hàm LENGTH (St)
• Cho kết quả là một số nguyên chỉ độ dài của chuỗi ký tự St
VAR St : String[80];
BEGIN
Write(' Nhập vào một câu : ');
Readln(St) ;
Writeln(‘Độ dài của câu: ‘, length(St)) ;
Readln ;
END.
5/21/21
• Thủ tục STR (S [: n[: m]], St): Chuyển số S thành chuỗi
rồi gán cho St
• Thủ tục VAL(St, S, Code): Chuyển chuỗi St thành số rồi
gán cho S, Code sẽ nhận giá trị lỗi
• Hàm COPY (St, Pos, Num): Sao chép ra một chuỗi từ vị
trí Pos và có độ dài Num
• Hàm CONCAT (St1, St2, ..., StN): Nối các chuỗi lại với
nhau (giống phép +)
MỘT SỐ THỦ TỤC VÀ
HÀM
5/21/21
• Thủ tục STR (S [: n[: m]], St)
VAR S: real;
St: string[10];
BEGIN
S:= 12345.6718;
Writeln(S:5:2);
Str(S:6:2:St);
Writeln(St);
Readln;
END.
5/21/21
• Truy xuất từng ký tự trong chuỗi
PROGRAM DoiChu;
VAR St:String;
i: integer;
BEGIN
Write('Hãy nhập tên của bạn : ');
Readln(St);
FOR i:= 1 TO Length(St) DO
Write(Upcase(St[i]:3));
(*Hàm Upcase đổi ký tự thành chữ in hoa*)
Readln;
END.
5/21/21
• 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ữ hoa rồi in kết quả ra màn hình.
• Ví dụ :Xâu abcdAbcD sẽ cho ra xâu ABCDABCD.
• Ý tưởng: Lặp từ đầu đến hết chuỗi, dung hàm
Upercase() để chuyển ký tự thường sang ký tự hoa
Bài tập:
5/21/21
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.
5/21/21
• Viết chương trình nhập từ bàn phím một chuỗi ký tự và in
ra màn hình chuỗi ký tự ngược lại:
VD: CONG HOA XA HOI CHU NGHIA VIET NAM
MAN TEIV AIHGN UHC IOH AX AOH GNOC
Ý tưởng: Xuất chuỗi từ cuối chuỗi đến đầu chuỗi
5/21/21
Program DaoChuoi;
Var
Cau : String[80];
i : Byte;
Begin
Write(‘ Nhap vao mot cau : ‘);
Readln(Cau);
For i := Length(Cau) DownTo 1 do
Write(Cau[i]);
Readln;
End.
5/21/21
Thank You !
5/21/21