CHƯƠNG IV
TIN HỌC 11
KIỂU DỮ LIỆU CÓ CẤU TRÚC
D?T V?N D?
Câu hỏi 1: Nêu cú pháp khai báo biến mảng theo cách trực tiếp?
Var : Array[] of ;
CHƯƠNG IV
TIN HỌC 11
KIỂU DỮ LIỆU CÓ CẤU TRÚC
D?T V?N D?
Câu hỏi 2: Cho 3 dãy sau:
Dãy A: 1  4  2  8  5  9
Dãy B: 7.5 7.3 3.4 5.2 4.6 2.1
Dãy C: T I N H O C
Nhận xét ???
CHƯƠNG IV
TIN HỌC 11
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Biến S là biến mảng một chiều có tối đa 6 phần tử, mỗi phần tử của S là 1 kí tự (ki?u char). Hãy viết khai báo biến cho biến S
Câu hỏi 3:
Var S: Array[1..6] of char;
S
CHƯƠNG IV
TIN HỌC 11
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Ti?t 28
Bài 12. Kiểu xâu
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
1. Một số khái niệm
- Xâu:
- Ví dụ: S:=`Ha Noi`
- Mỗi kí tự được gọi là một phần tử của xâu
- Ví dụ: S:=`Ha Noi`
-> Các phần tử của xâu S:
- Độ dài của xâu:
- Ví dụ: S:=`Ha Noi`;
Độ dài của xâu S: 6
- Xâu rỗng:
Kí hiệu: S:= ``;
Là xâu có độ dài bằng 0
S:= ``;
Xâu S có độ dài là bao nhiêu?
Là dãy các kí tự có trong bảng mã ASCII
Là số lượng kí tự có trong xâu
H,a, ,N,o,i
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
1. Một số khái niệm
* Chú ý:
1 2 3 4 5 6
S
o
- Tham chiếu đến từng phần tử của xâu
- Cú pháp:
`o`
S[5] =
S[3] =
` `
- Ví dụ:
[chỉ số]
Có thể xem xâu là mảng một chiều mà
mỗi phần tử là một kí tự
S:=‘Lop 11K1’
S[7]=
S[7]=‘K’
Ví dụ:
S1:= ‘Chao mung ngay nha giao viet nam 20-11’
S1[6]=
1. Một số khái niệm
S1[6]= ‘m’
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
2. Khai báo biến xâu
Var : String[độ dài lớn nhất của xâu];
- Trong đó:
- Cú pháp:
S? kí t? t?i da của xâu
Độ dài lớn nhất của xâu :
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
2. Khai báo biến xâu
Var : String[độ dài lớn nhất của xâu];
- VD1: Khai báo biến để lưu họ tên của một người
- Cú pháp:
Var Hoten: String[50];
- VD2: Khai báo biến để lưu địa chỉ của một người
Var diachi: String;
* Chú ý:
Khi khai báo biến nếu không đưa độ dài lớn nhất
vào thì độ dài mặc định là 255
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
3. Nhập xuất xâu:
1 2 3 4 5 6
S
- Vi?t l?nh dua kí t? th? 5 c?a x�u S ra m�n hình?
Write(S[5]) (Xuất ra màn hình kí tự ‘o’) 
Viết lệnh xuất toàn bộ kí tự của xâu S ra màn hình?
- Cách nhập/xuất: cách nhập/ xuất cũng tương tự như các kiểu dữ liệu chuẩn, ta sử dụng các thủ tục READ, hoặc WRITE.
Ví dụ:  Readln(st);
Writeln(st);
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
4. Các thao tác xử lí xâu
- Sử dụng kí hiệu + để ghép nhiều xâu thành một xâu
a. Phép ghép xâu
- Ví dụ:
S:=`Viet`+`Nam`
S:=`VietNam`
Cho xâu: ‘LOP’; ’11K2’; ‘ ‘; muốn có xâu S = ‘LOP 11K2’ phải thực hiện phép ghép xâu như thế nào?
S:=‘LOP’+ ‘ ’ + ’11K2’
S = ‘LOP 11K2’
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
4. Các thao tác xử lí xâu
- Các phép so sánh xâu:
b. Phép so sánh xâu
- Quy tắc:
+ Xâu A=B nếu chúng giống hệt nhau. VD: `a` = `a`
+ Xâu A>B nếu:
Kí tự đầu tiên khác nhau giữa chúng tính t? trái sang ở xâu A có mã ASCII lớn hơn ở xâu B
`Ha Noi` `Ha Nam`
Xâu B là đoạn đầu của xâu A
`lop hoc` `lop`
>, >=, <, <=, =, <>
>
>
Câu hỏi
Câu hỏi 1: So sánh hai xâu sau:
ST1:= `CBA`
ST2:= `CBa`
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
1 2 3
1 2 3
=
<
Mã 65
Mã 97
ST2
<
ST1
BÀI 12: KIỂU XÂU
Cần có thao tác gì để xâu A thành xâu B ?
N
G
O
H
G
N
O
S
A
B
1 2 3 4
1 2 3 4 5 6 7 8 9
4. Các thao tác xử lí xâu
c. Các hàm và thủ tục trên xâu
BÀI 12: KIỂU XÂU
1. Thủ tục DELETE(St, vt, n)
Xoá n kí tự của xâu St bắt đầu từ vị trí vt
Ví dụ 1:
St:= ‘Song Hong’;
Delete(St,1,5);
g
n
o
H
g
n
o
S
1 2 3 4 5 6 7 8 9
Kết quả: St = ‘Hong’
C. CÁC HÀM VÀ THỦ TỤC XỬ LÝ XÂU:
BÀI 12: KIỂU XÂU
2. Thủ tục INSERT(St1, St2, vt)
Ví dụ 1:
St1:= ‘vi-’; St2:= ‘May-tinh’;
1 2 3
1 2 3 4 5 6 7 8
v
-
i
Kết quả: St2 = ‘May-vi-tinh’
1 2 3 4 5 6 7 8 9 10 11
Chèn xâu St1 vào xâu St2 bắt đầu từ vị trí vt
Insert(St1,St2,5);
BÀI 12: KIỂU XÂU
3. Hàm COPY(S, vt, n)
Tạo một xâu gồm n ký tự liên tiếp bắt đầu từ vị trí vt của xâu S
Ví dụ 1:
St1:= ‘Xau-ky-tu’; St2:= Copy(St1,5,5);
1 2 3 4 5 6 7 8 9
Copy
k
y
-
u
t
Kết quả St2 = ‘ky-tu’
BÀI 12: KIỂU XÂU
4. Hàm LENGTH(S)
Ví dụ :
S:= ‘Tin hoc’;
D:= Length(S);
1
2
7
3
6
5
4
Kết quả: D = 7
Cho giá trị là độ dài của xâu S
BÀI 12: KIỂU XÂU
5. Hàm POS(St1, St2)
1
2
7
3
6
5
4
8
- Cho vị trí xuất hiện đầu tiên của xâu St1 trong xâu St2
Ví dụ 1:
St2:= ‘HOA NANG’; St1:= ‘NANG’;
Kết quả: D = 5
D:= Pos(St1,St2);
BÀI 12: KIỂU XÂU
Ví dụ 2:
S2:= ‘abcde’
D:= pos(‘Cd’,S2);
D = 0
BÀI 12: KIỂU XÂU
Cho chữ cái in hoa ứng với chữ cái trong ch
6. Hàm UPCASE(Ch)
Ch2:= Upcase(Ch1);
1 2 3 4 5 6
Upcase(st[1])
Upcase(st[2])
Upcase(st[3])
Upcase(st[4])
Upcase(st[5])
Upcase(st[6])
1 2 3 4 5 6
U
p
C
a
s
e
P
A
S
E
Kết quả: Ch2 = ‘A’
Ch1:= ‘a’;
st 2
St
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
C?ng c?
Câu 1: Hãy cho biết độ dài của xâu s; Với s=‘NAM KI HOI’; Cho hàm: k:=length(s); k = ?
A. 8 B. 10
C. 12 D. 3
Câu hỏi
Câu hỏi 2: Cách khai báo biến xâu nào dưới đây là sai
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
A
B
C
D
Var A: String[50];
Var A= String[30];
Var A: String;
Var A: String[1];
Câu hỏi
Câu hỏi 3: So sánh hai xâu sau:
ST1:= `ANH`
ST2:= `EM`
CHƯƠNG IV
TIN HỌC 11
BÀI 12: KIỂU XÂU
1 2 3
1 2
<
Mã 65
Mã 69
ST2
<
ST1
BÀI 12: KIỂU XÂU
Câu 4: Cho xâu st:= ‘LOP11K2’
Thủ tục delete(st, 1, 3)
Cho kết quả xâu St=?
Câu 5: Cho xâu st:= ‘LOP11K2’
Lệnh st1:=copy(st, 4, 4)
Cho kết quả xâu St=?, xâu St1=?
BÀI 12: KIỂU XÂU
Về nhà so sánh lại sự giống và khác nhau giữa mảng 1 chiều và xâu
Khi xử lý dãy kí tự? Nên dùng mảng hay xâu?
Đọc trước nội dung còn lại của bài, chuẩn bị tiết sau.
Dặn dò:
nguon VI OLET