0
2
/
0
1
/
1
5
1
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
KIểM TRA BÀI CŨ
Khai báo m t m ng m t chi u có tên là ộ ả ộ ề hoten
g m 20 ph n t m i ph n t là m t kí t .ồ ầ ử ỗ ầ ử ộ ự
Vi t đo n ch ng trình đ nh p các ph n t cho ế ạ ươ ể ậ ầ ử
m ng ả hoten.
Tham chi u đ n ph n t th 2 c a m ng.ế ế ầ ử ứ ủ ả
0
2
/
0
1
/
1
5
2
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
Đáp án
Var hoten:array[1 20] of char
i:integer;
Begin
for i:=1 to 20 do
begin
write(‘nhap hoten[’,i,’]=‘);
readln(hoten[i]);
end;
readln;
End.
Tham chi u đ n ph n t th 2 c a m ng ế ế ầ ử ứ ủ ả
hoten[2]
0
2
/
0
1
/
1
5
3
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
KIểU XÂU (TIếT 1)
Giáo viên h ng d n: Cô Hoàng Khánh M .ướ ẫ ỹ
Giáo sinh: Nguy n Th Qu nh Nhễ ị ỳ ư
0
2
/
0
1
/
1
5
4
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
1. M T S KHÁI NI Mộ ố ệ
Ví d : ‘hocụ sinh’, ‘Lop11B’, ‘**’, ‘’ , ‘’
Đây là xâu kí tự
Xâu là dãy kí t trong b mã ASCII. 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 xâu.ố ượ ự ượ ọ ộ
Xâu có đ dài b ng 0 đ c g i là xâu r ng.ộ ằ ượ ọ ỗ
0
2
/
0
1
/
1
5
5
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
Kiểu xâu
Đ DÀI C A XÂ Uộ ủ
‘hocsinh’
Có 8 kí t => Đ dài xâu b ng 8.ự ộ ằ
‘Lop11B’
Có 7 kí t => Đ dài xâu b ng 7.ự ộ ằ
0
2
/
0
1
/
1
5
6
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
V y s kí t c a xâu và đ dài xâu ậ ố ự ủ ộ
liên quan nh th nào?ư ế
S l ng kí t trong xâu đ c g i là đ dài xâuố ượ ự ượ ọ ộ
h o c
s i n h
1 2 3 4 5 6 7 8
L o p
1 1 B
1 2 3 4 5 6 7
2. KHAI BÁO
0
2
/
0
1
/
1
5
7
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
<tên biến>: [độ dài lớn nhất của xâu];Var string
L u ý: Đ dài l n nh t không v t quá 255)ư ộ ớ ấ ượ
Ví d : Var st: string [8];ụ
Var hoten: string[20];
Khai báo bi n ế
hoten có đ dài ộ
l n nhât là 20ớ
2. KHAI BÁO
Var a: string;
Chú ý: Khi khai báo bi n xâu mà không ch ra đ ế ỉ ộ
dài l n nh t c a xâu thì m c đ nh xâu có đ dài ớ ấ ủ ặ ị ộ
l n nh t là 255ớ ấ
0
2
/
0
1
/
1
5
8
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
Đúng Sai
3. NH P XU T D LI Uậ ấ ữ ệ
Nh pậ
Read (<danh sách bi n vào>);ế
readln(<danh sách bi n vào>);ế
Xu tấ
Write (<danh sách k t qu ra>);ế ả
writeln(<danh sách k t qu ra>);ế ả
Ví d : ụ write(‘nhap ho ten’);
readln(hoten);
Writeln(‘ho ten la’, hoten);
Readln(a,b);
write(‘xau 1 la’,a,’xau2 la’,b);
0
2
/
0
1
/
1
5
9
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
Dùng l nh gánệ
Cú pháp: tên_bi n_xâu:= h ng_xâu;ế ằ
Ví d :ụ st:=‘hoctap’;
s1:=‘’;
s2:=‘’
0
2
/
0
1
/
1
5
10
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
THAM CHI U Đ N T NG KÍ T C A ế ế ừ ự ủ
XÂU
Cú pháp
Tên_bi n[ch _s ]ế ỉ ố
Ví d : + hoten[2]ụ
Cho st:=‘Lop11B’
st[4]=???
st[4]=‘’
0
2
/
0
1
/
1
5
11
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
L o p
1 1 B
1 2 3 4 5 6 7
4. THAO TÁC Xử LÝ XÂU
A. PHÉP GHÉP XÂU (+)
Ví dụ: s1:= ‘hocsinh ’; s2:= ‘Lop11B’;
s:=s1+s2;
s:=‘hocsinhLop11B’
Minh họa
+
Ý nghĩa: Phép ghép xâu dùng để ghép nhiều xâu
thành một
0
2
/
0
1
/
1
5
12
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
h o c
s i n h
L o p
1 1 B
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7
s1 s2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
h o c
s i n h
L o p
1 1 B
h o c
s i n h
L o p
1 1 B
A. PHÉP GHÉP XÂU (+)
Ví d 2: ụ
s1:=‘dong’;
s2:=‘thoi’;
s3:=‘gian’;
S:=s1+s2+s3;
=> S=‘dongthoigian’
0
2
/
0
1
/
1
5
13
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
4. THAO TÁC Xử LÝ XÂU
B. CÁC PHÉP TOÁN SO SÁNH
Các phép so sánh: Bằng(=), khác(<>), nhỏ hơn(<), lớn
hơn(>), nhỏ hơn hoặc bằng(<=), lớn hơn hoặc bằng(>=)
Để so sánh xâu, chúng ta phải dựa vào mã ASCII của kí tự
trong xâu.
Muốn so sánh hai xâu bất kì ta dùng 3 quy tắc so sánh xâu
0
2
/
0
1
/
1
5
14
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
QUY TắC 1
Xâu A > xâu B nếu 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.
Ví dụ : s1:=‘ ’; s2:=‘ ’;
s1 s2
Ví dụ 2: s3:=‘ ’; s4:=‘ ’;
s3 s4
Chú ý: Xâu có độ dài lớn hơn chưa chắc đã lớn hơn xâu
có độ dài nhỏ hơn.
0
2
/
0
1
/
1
5
15
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
C
c
?
BA
AB
<
a
B
C
a
>
?
C<c
a>B
QUY TắC 2
Ví dụ: s1:= ; s2:=
s1 s2
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 nh h n B.ạ ầ ủ ỏ ơ
0
2
/
0
1
/
1
5
16
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
‘AB’
‘AB ’
?<
C
QUY TắC 3
Hai xâu được gọi là bằng nhau nếu chúng giống nhau hoàn
toàn.
Ví dụ: s1:=‘ABC’; s2:=‘ABC’;
s1=s2
0
2
/
0
1
/
1
5
17
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
CủNG Cố KIếN THứC
Câu 1: Trong các khai báo sau, khai báo
nào sai?
a. var a: string[15];
b. var a,b:string[15];
c. var a,b: string[256];
d. var a:string;
0
2
/
0
1
/
1
5
18
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
Câu 2: Cho xâu st:= ‘Hoahoctro’. Giá tr t i ph n ị ạ ầ
t th 7 s là?ử ứ ẽ
a. ‘c’
b. ‘’
c. ‘t’
d. ‘’
0
2
/
0
1
/
1
5
19
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
Câu 3: Cho 2 xâu s1:= ‘truong’; s2:= ‘noitru’;
Th c hi nự ệ câu l nh ệ
s:=s1+s2+ ‘’;
Ta đ c k t qu nào sau đây?ươ ế ả
a. ‘truongnoitru’
b. ‘truongnoitru’
c. ‘truongnoitru’
d. ‘truongnoitru’
0
2
/
0
1
/
1
5
20
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
Câu 4: Cho 2 xâu:
a:= ‘hoahong’
b:= ‘hoahong’
Mã ASCII c a kí t ‘ủ ự ’=32. Mã ASCII c a kí t ‘h’ = ủ ự
104.
So sánh hai xâu a và b. Đáp án đúng là?
a. a>b
b. a<b
c. a=b
0
2
/
0
1
/
1
5
21
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
Câu 5: Cho 2 xâu a:= ‘tin’; b:= ‘hoclop11’; Mã
ASCII c a kí t ‘t’=116. Mã ASCII c a kí t ủ ự ủ ự
‘h’=104.
So sánh hai xâu a và b. Đáp án đúng là?
a. a>b
b. a<b
c. a=b
0
2
/
0
1
/
1
5
22
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư
0
2
/
0
1
/
1
5
23
S
V
T
T
:
N
g
u
y
ễ
n
T
h
ị
Q
u
ỳ
n
h
N
h
ư