1 Bài xâu trong pascal Sun Nov 13, 2011 5:42 pm
kingofthedevils
Thành viên tích cực
Câu 1: Hãy nêu cách khai báo trực tiếp và gián tiếp mảng 1chiều?
Câu 2: Hãy chuyển cách khai báo mảng 1chiều sau từ dạng trực tiếp sang dạng gián tiếp?
Var ArrayInt : Array[1..100] of integer;
Câu 3: Trong ngôn ngữ lập trình Pascal, về mặt cú pháp, việc khai báo mảng 1 chiều nào sau đây là đúng:
Type 1chieu=array[1…100] of integer;
Type 1chieu=array[1-100] of integer;
Type 1chieu=array(1..100) of integer;
Type Mchieu=array[1..100] of integer;
Trả lời
Câu 1: - Cách khai báo trực tiếp:
Var : Array [kiểu chỉ số] of ;
- Cách khai báo gián tiếp:
Type = Array [kiểu chỉ số] of ;
Var : ;
Câu 2: Chuyển khai báo mảng 1chiều sau từ dạng trực tiếp sang dạng gián tiếp: Type B = Array[1..100] of integer;
Var ArrayInt : B ;
Câu 3: Trong ngôn ngữ lập trình Pascal, về mặt cú pháp, việc khai báo mảng 1 chiều nào sau đây là đúng:
Type 1chieu=array[1…100] of integer;
Type 1chieu=array[1-100] of integer;
Type 1chieu=array(1..100) of integer;
Type Mchieu=array[1..100] of integer;
TIẾT 28: KIỂU DỮ LIỆU XÂU(t1)
* Một số khái niệm:
- Xâu là một dãy các kí tự trong bảng mã ASCII
* Ví dụ:
‘Bach Khoa’
‘KI SU’
‘2008 la nam Mau Ty’
- Mỗi kí tự gọi là một …………. của xâu
- Số lượng kí tự trong xâu được gọi là ……………………
- Xâu có độ dài bằng 0 được gọi là …………..
- Tham chiếu tới phần tử của xâu được xác định thông qua ............. của phần tử trong xâu.
- Chỉ số của phần tử của xâu thường được đánh số thứ tự bắt đầu từ 1
- Trong ngôn ngữ lập trình Pascal, để truy cập tới từng phần tử của xâu, ta viết:
[chỉ số ]
phần tử
độ dài của xâu
xâu rỗng
chỉ số
Tiết 28 : Kiểu xâu
- [chỉ số ]
Ví dụ: Biến Hoten lưu trữ giá trị hằng xâu ‘Le Chieu Khang’
Hoten [6] cho ta kí tự ‘i’ là kí tự thứ sáu của biến xâu Hoten
Tiết 28 : Kiểu xâu
Tiết 28 : Kiểu xâu
- Biến kiểu xâu có thể khai báo như sau:
Var : String [độ dài lớn nhất của xâu];
- Ví dụ:
Var Ten : String [10];
Var Ho_dem : String [25];
Var Que : String;
- Chú ý:
- Nếu không khai báo độ dài tối đa của biến xâu thì độ dài ngầm định của xâu là 255.
- Độ dài lớn nhất của xâu là 255 kí tự.
- Hằng xâu kí tự được đặt trong cặp nháy đơn ‘’
1. Khai báo
Tiết 28 : Kiểu xâu
1. Khai báo:
Var : String [độ dài lớn nhất của xâu];
2. Các thao tác xử lí xâu:
a. Phép ghép xâu:
Được sử dụng để ghép nhiều xâu thành 1 xâu;
‘Ha’
‘Ha Noi’
‘Noi’
+
Kí hiệu là dấu (+)
Có thể thực hiện phép ghép xâu với hằng và biến xâu.
* Ví dụ:
‘ nGuyen vaN A’
‘Nguyen Van A’
Tiết 28 : Kiểu xâu
1. Khai báo:
Var : String [độ dài lớn nhất của xâu ];
2. Các thao tác xử lí xâu:
a. Phép ghép xâu:
Kí hiệu là dấu (+)
b. Phép so sánh:
<, <=, >, >=, =, <>
Pascal tự động so sánh lần lượt từng kí tự từ trái sang phải;
Xâu A lớn hơn 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ụ:
‘AB’
‘AC’
<
‘ABC’
‘ABB’
>
Nếu A và B có độ dài khác nhau, A là đoạn đầu của B thì A
* Ví dụ:
‘Ha Noi’
‘Ha Noi Viet Nam’
<
Hai xâu bằng nhau nếu chúng giống nhau hoàn toàn.
* Ví dụ:
‘Ha Noi’
‘Ha Noi’
=
Tiết 28 : Kiểu xâu
1. Khai báo:
2. Các thao tác xử lí xâu:
*Một số thủ tục chuẩn trong xử lí xâu:
c. Delete (st,vt,n): xoá n kí tự của biến xâu st, bắt đầu từ vị trí vt
* Ví dụ:
‘ABCDEF’
Delete(st,4,3)
‘ABC’
‘HA NOI’
Delete(st,3,4)
‘HA’
Tiết 28 : Kiểu xâu
1. Khai báo:
2. Các thao tác xử lí xâu:
*Một số thủ tục chuẩn trong xử lí xâu:
c. Delete (st,vt,n): xoá n kí tự của biến xâu st, bắt đầu từ vị trí vt
* Ví dụ:
‘LE MY’
‘N’
‘HA NOI’
d. insert(s1,s2,vt): chèn xâu s1 vào xâu s2, bắt đầu từ vị trí vt
insert(s1,s2,4 )
‘HA ’
‘HA OI’
‘LE HA MY’
insert(s1,s2,4 )
Tiết 28 : Kiểu xâu
2. Các thao tác xử lí xâu:
*Một số hàm chuẩn chuẩn trong xử lí xâu:
1. Khai báo:
* Ví dụ:
e. copy(St,vt,n): Sao chép từ xâu st n kí tự liên tiếp bắt đầu từ vị trí vt
Copy(st,4,11 )
Copy(st,1,3 )
‘TP HO CHI MINH’
‘HAI PHONG’
‘HAI’
‘HO CHI MINH’
Tiết 28 : Kiểu xâu
2. Các thao tác xử lí xâu:
*Một số hàm chuẩn chuẩn trong xử lí xâu:
1. Khai báo:
* Ví dụ:
e. copy(St,vt,n): Sao chép từ xâu st n kí tự liên tiếp bắt đầu từ vị trí vt
length(st)
‘TP HO CHI MINH’
‘HAI PHONG’
9
14
f. length(St): cho giá trị độ dài xâu St
length(st)
Tiết 28 : Kiểu xâu
2. Các thao tác xử lí xâu:
*Một số hàm chuẩn chuẩn trong xử lí xâu:
1. Khai báo:
* Ví dụ:
e. copy(St,vt,n): Sao chép từ xâu st n kí tự liên tiếp bắt đầu từ vị trí vt
pos(‘CHI’, S2)
‘TPHOCHIMINH’
‘HAI PHONG’
0
5
f. length(St): cho giá trị độ dài xâu St
g. pos(S1,S2,): cho vị trí xuất hiện đầu tiên của xâu S1 trong xâu S2
pos(‘M’, S2)
Tiết 28 : Kiểu xâu
2. Các thao tác xử lí xâu:
*Một số hàm chuẩn chuẩn trong xử lí xâu:
1. Khai báo:
* Ví dụ:
e. copy(St,vt,n): Sao chép từ xâu st n kí tự liên tiếp bắt đầu từ vị trí vt
upcase(ch)
‘h’
‘M’
M
H
f. length(St): cho giá trị độ dài xâu St
g. pos(S1,S2,): cho vị trí xuất hiện đầu tiên của S1 trong S2
h. upcase(ch): cho chữ cái viết hoa trong tương ứng với chữ cái thường trong ch
upcase(ch)
Tiết 28 : Kiểu xâu
2. Các thao tác xử lí xâu:
*Một số hàm chuẩn chuẩn trong xử lí xâu:
1. Khai báo:
*Một số thủ tục chuẩn trong xử lí xâu:
Delete (st,vt,n): xoá n kí tự của biến xâu st, bắt đầu từ vị trí vt
insert(s1,s2,vt): chèn xâu s1 vào xâu s2, bắt đầu từ vị trí vt
copy(St,vt,n): Sao chép từ xâu st n kí tự liên tiếp bắt đầu từ vị trí vt
length(St): cho giá trị độ dài xâu St
pos(S1,S2,): cho vị trí xuất hiện đầu tiên của S1 trong S2
upcase(ch): cho chữ cái viết hoa trong tương ứng với chữ cái thường trong ch
Var : String [độ dài lớn nhất của xâu ];
Tiết 28 : Kiểu xâu
I
E
U
X
A
U
K
2
3
4
5
6
7
1
GIẢI Ô CHỮ
Trong ngôn ngữ lập trình Pascal, xâu kí tự không có kí tự nào gọi là:
Xâu không; B. Xâu trắng;
C. Xâu rỗng; D. Không phải xâu kí tự;
bài tập ứng dụng
Trong ngôn ngữ lập trình Pascal, phần tử đầu tiên của xâu kí tự mang chỉ số là:
1;
B. 0;
C. Không có chỉ số
D. Do người lập trình khai báo;
bài tập ứng dụng
Trong ngôn ngữ lập trình Pascal, thủ tục delete(a,b,c) thực hiện việc gì trong các việc sau:
Xoá xâu kí tự c, a kí tự bắt đầu từ vị trí b;
B. Xoá trong xâu a, c kí tự từ vị trí b;
C. Xoá trong xâu c, b kí tự bắt đầu từ vị trí a;
D. Xoá trong xâu b, c kí tự bắt đầu từ vị trí a;
bài tập ứng dụng
Trong ngôn ngữ lập trình Pascal, cách khai báo xâu kí tự nào sau đây là sai:
S: String;
X1: String[100];
C. S: String[256];
D. X1: String[1];
bài tập ứng dụng
bài tập ứng dụng
Trong ngôn ngữ lập trình Pascal, hàm Length(S) cho kết quả gì?
Độ dài xâu S khi khai báo;
B. Số kí tự hiện có của xâu S không tính các dấu cách;
C. Số kí tự của xâu S không tính dấu cách cuối cùng;
D. Số kí tự hiện có của xâu S ;
Trong ngôn ngữ lập trình Pascal, với xâu kí tự có các phép toán gì?
Cộng, trừ, nhân, chia;
B. Phép cộng và trừ;
C. Chỉ có phép cộng;
D. Phép ghép xâu và phép so sánh ;
bài tập ứng dụng
Trong ngôn ngữ lập trình Pascal, hàm Upcase(Ch) cho kết quả là:
Chữ cái in hoa tương ứng với Ch;
B. Xâu Ch toàn chữ thường;
C. Xâu Ch toàn chữ in hoa;
D. Biến Ch thành chữ thường ;
bài tập ứng dụng
Bài 1: Cho đoạn chương trình sau:
Var ch, sh: string[55]
Begin
ch:=‘Ha Noi’;
sh:=‘Ho Chi Minh’;
Delete(ch, 3, 1);
Insert(‘City’, sh, 7);
End.
? Hãy xác định giá trị của các biến ch, sh sau khi thực hiện xong đoạn chương trình trên.
bài tập ứng dụng
Bài 2: Cho đoạn chương trình sau:
Var kt, a: string; b, c: byte; d: char;
Begin
kt:=‘Xuan Mau Ty’;
a:=copy(kt, 6, 3);
b:=length(kt);
c:=pos(‘a’, kt);
d:=upcase(kt[4]);
End.
? Hãy xác định giá trị của các biến kt, a, b, c, d sau khi thực hiện xong đoạn chương trình trên.
bài tập ứng dụng
Bài tập về nhà
Làm bài tập: 10/80- SGK
Bài học đến đây đã kết thúc rồi!
Câu 2: Hãy chuyển cách khai báo mảng 1chiều sau từ dạng trực tiếp sang dạng gián tiếp?
Var ArrayInt : Array[1..100] of integer;
Câu 3: Trong ngôn ngữ lập trình Pascal, về mặt cú pháp, việc khai báo mảng 1 chiều nào sau đây là đúng:
Type 1chieu=array[1…100] of integer;
Type 1chieu=array[1-100] of integer;
Type 1chieu=array(1..100) of integer;
Type Mchieu=array[1..100] of integer;
Trả lời
Câu 1: - Cách khai báo trực tiếp:
Var : Array [kiểu chỉ số] of ;
- Cách khai báo gián tiếp:
Type = Array [kiểu chỉ số] of ;
Var : ;
Câu 2: Chuyển khai báo mảng 1chiều sau từ dạng trực tiếp sang dạng gián tiếp: Type B = Array[1..100] of integer;
Var ArrayInt : B ;
Câu 3: Trong ngôn ngữ lập trình Pascal, về mặt cú pháp, việc khai báo mảng 1 chiều nào sau đây là đúng:
Type 1chieu=array[1…100] of integer;
Type 1chieu=array[1-100] of integer;
Type 1chieu=array(1..100) of integer;
Type Mchieu=array[1..100] of integer;
TIẾT 28: KIỂU DỮ LIỆU XÂU(t1)
* Một số khái niệm:
- Xâu là một dãy các kí tự trong bảng mã ASCII
* Ví dụ:
‘Bach Khoa’
‘KI SU’
‘2008 la nam Mau Ty’
- Mỗi kí tự gọi là một …………. của xâu
- Số lượng kí tự trong xâu được gọi là ……………………
- Xâu có độ dài bằng 0 được gọi là …………..
- Tham chiếu tới phần tử của xâu được xác định thông qua ............. của phần tử trong xâu.
- Chỉ số của phần tử của xâu thường được đánh số thứ tự bắt đầu từ 1
- Trong ngôn ngữ lập trình Pascal, để truy cập tới từng phần tử của xâu, ta viết:
[chỉ số ]
phần tử
độ dài của xâu
xâu rỗng
chỉ số
Tiết 28 : Kiểu xâu
- [chỉ số ]
Ví dụ: Biến Hoten lưu trữ giá trị hằng xâu ‘Le Chieu Khang’
Hoten [6] cho ta kí tự ‘i’ là kí tự thứ sáu của biến xâu Hoten
Tiết 28 : Kiểu xâu
Tiết 28 : Kiểu xâu
- Biến kiểu xâu có thể khai báo như sau:
Var : String [độ dài lớn nhất của xâu];
- Ví dụ:
Var Ten : String [10];
Var Ho_dem : String [25];
Var Que : String;
- Chú ý:
- Nếu không khai báo độ dài tối đa của biến xâu thì độ dài ngầm định của xâu là 255.
- Độ dài lớn nhất của xâu là 255 kí tự.
- Hằng xâu kí tự được đặt trong cặp nháy đơn ‘’
1. Khai báo
Tiết 28 : Kiểu xâu
1. Khai báo:
Var : String [độ dài lớn nhất của xâu];
2. Các thao tác xử lí xâu:
a. Phép ghép xâu:
Được sử dụng để ghép nhiều xâu thành 1 xâu;
‘Ha’
‘Ha Noi’
‘Noi’
+
Kí hiệu là dấu (+)
Có thể thực hiện phép ghép xâu với hằng và biến xâu.
* Ví dụ:
‘ nGuyen vaN A’
‘Nguyen Van A’
Tiết 28 : Kiểu xâu
1. Khai báo:
Var : String [độ dài lớn nhất của xâu ];
2. Các thao tác xử lí xâu:
a. Phép ghép xâu:
Kí hiệu là dấu (+)
b. Phép so sánh:
<, <=, >, >=, =, <>
Pascal tự động so sánh lần lượt từng kí tự từ trái sang phải;
Xâu A lớn hơn 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ụ:
‘AB’
‘AC’
<
‘ABC’
‘ABB’
>
Nếu A và B có độ dài khác nhau, A là đoạn đầu của B thì A
* Ví dụ:
‘Ha Noi’
‘Ha Noi Viet Nam’
<
Hai xâu bằng nhau nếu chúng giống nhau hoàn toàn.
* Ví dụ:
‘Ha Noi’
‘Ha Noi’
=
Tiết 28 : Kiểu xâu
1. Khai báo:
2. Các thao tác xử lí xâu:
*Một số thủ tục chuẩn trong xử lí xâu:
c. Delete (st,vt,n): xoá n kí tự của biến xâu st, bắt đầu từ vị trí vt
* Ví dụ:
‘ABCDEF’
Delete(st,4,3)
‘ABC’
‘HA NOI’
Delete(st,3,4)
‘HA’
Tiết 28 : Kiểu xâu
1. Khai báo:
2. Các thao tác xử lí xâu:
*Một số thủ tục chuẩn trong xử lí xâu:
c. Delete (st,vt,n): xoá n kí tự của biến xâu st, bắt đầu từ vị trí vt
* Ví dụ:
‘LE MY’
‘N’
‘HA NOI’
d. insert(s1,s2,vt): chèn xâu s1 vào xâu s2, bắt đầu từ vị trí vt
insert(s1,s2,4 )
‘HA ’
‘HA OI’
‘LE HA MY’
insert(s1,s2,4 )
Tiết 28 : Kiểu xâu
2. Các thao tác xử lí xâu:
*Một số hàm chuẩn chuẩn trong xử lí xâu:
1. Khai báo:
* Ví dụ:
e. copy(St,vt,n): Sao chép từ xâu st n kí tự liên tiếp bắt đầu từ vị trí vt
Copy(st,4,11 )
Copy(st,1,3 )
‘TP HO CHI MINH’
‘HAI PHONG’
‘HAI’
‘HO CHI MINH’
Tiết 28 : Kiểu xâu
2. Các thao tác xử lí xâu:
*Một số hàm chuẩn chuẩn trong xử lí xâu:
1. Khai báo:
* Ví dụ:
e. copy(St,vt,n): Sao chép từ xâu st n kí tự liên tiếp bắt đầu từ vị trí vt
length(st)
‘TP HO CHI MINH’
‘HAI PHONG’
9
14
f. length(St): cho giá trị độ dài xâu St
length(st)
Tiết 28 : Kiểu xâu
2. Các thao tác xử lí xâu:
*Một số hàm chuẩn chuẩn trong xử lí xâu:
1. Khai báo:
* Ví dụ:
e. copy(St,vt,n): Sao chép từ xâu st n kí tự liên tiếp bắt đầu từ vị trí vt
pos(‘CHI’, S2)
‘TPHOCHIMINH’
‘HAI PHONG’
0
5
f. length(St): cho giá trị độ dài xâu St
g. pos(S1,S2,): cho vị trí xuất hiện đầu tiên của xâu S1 trong xâu S2
pos(‘M’, S2)
Tiết 28 : Kiểu xâu
2. Các thao tác xử lí xâu:
*Một số hàm chuẩn chuẩn trong xử lí xâu:
1. Khai báo:
* Ví dụ:
e. copy(St,vt,n): Sao chép từ xâu st n kí tự liên tiếp bắt đầu từ vị trí vt
upcase(ch)
‘h’
‘M’
M
H
f. length(St): cho giá trị độ dài xâu St
g. pos(S1,S2,): cho vị trí xuất hiện đầu tiên của S1 trong S2
h. upcase(ch): cho chữ cái viết hoa trong tương ứng với chữ cái thường trong ch
upcase(ch)
Tiết 28 : Kiểu xâu
2. Các thao tác xử lí xâu:
*Một số hàm chuẩn chuẩn trong xử lí xâu:
1. Khai báo:
*Một số thủ tục chuẩn trong xử lí xâu:
Delete (st,vt,n): xoá n kí tự của biến xâu st, bắt đầu từ vị trí vt
insert(s1,s2,vt): chèn xâu s1 vào xâu s2, bắt đầu từ vị trí vt
copy(St,vt,n): Sao chép từ xâu st n kí tự liên tiếp bắt đầu từ vị trí vt
length(St): cho giá trị độ dài xâu St
pos(S1,S2,): cho vị trí xuất hiện đầu tiên của S1 trong S2
upcase(ch): cho chữ cái viết hoa trong tương ứng với chữ cái thường trong ch
Var : String [độ dài lớn nhất của xâu ];
Tiết 28 : Kiểu xâu
I
E
U
X
A
U
K
2
3
4
5
6
7
1
GIẢI Ô CHỮ
Trong ngôn ngữ lập trình Pascal, xâu kí tự không có kí tự nào gọi là:
Xâu không; B. Xâu trắng;
C. Xâu rỗng; D. Không phải xâu kí tự;
bài tập ứng dụng
Trong ngôn ngữ lập trình Pascal, phần tử đầu tiên của xâu kí tự mang chỉ số là:
1;
B. 0;
C. Không có chỉ số
D. Do người lập trình khai báo;
bài tập ứng dụng
Trong ngôn ngữ lập trình Pascal, thủ tục delete(a,b,c) thực hiện việc gì trong các việc sau:
Xoá xâu kí tự c, a kí tự bắt đầu từ vị trí b;
B. Xoá trong xâu a, c kí tự từ vị trí b;
C. Xoá trong xâu c, b kí tự bắt đầu từ vị trí a;
D. Xoá trong xâu b, c kí tự bắt đầu từ vị trí a;
bài tập ứng dụng
Trong ngôn ngữ lập trình Pascal, cách khai báo xâu kí tự nào sau đây là sai:
S: String;
X1: String[100];
C. S: String[256];
D. X1: String[1];
bài tập ứng dụng
bài tập ứng dụng
Trong ngôn ngữ lập trình Pascal, hàm Length(S) cho kết quả gì?
Độ dài xâu S khi khai báo;
B. Số kí tự hiện có của xâu S không tính các dấu cách;
C. Số kí tự của xâu S không tính dấu cách cuối cùng;
D. Số kí tự hiện có của xâu S ;
Trong ngôn ngữ lập trình Pascal, với xâu kí tự có các phép toán gì?
Cộng, trừ, nhân, chia;
B. Phép cộng và trừ;
C. Chỉ có phép cộng;
D. Phép ghép xâu và phép so sánh ;
bài tập ứng dụng
Trong ngôn ngữ lập trình Pascal, hàm Upcase(Ch) cho kết quả là:
Chữ cái in hoa tương ứng với Ch;
B. Xâu Ch toàn chữ thường;
C. Xâu Ch toàn chữ in hoa;
D. Biến Ch thành chữ thường ;
bài tập ứng dụng
Bài 1: Cho đoạn chương trình sau:
Var ch, sh: string[55]
Begin
ch:=‘Ha Noi’;
sh:=‘Ho Chi Minh’;
Delete(ch, 3, 1);
Insert(‘City’, sh, 7);
End.
? Hãy xác định giá trị của các biến ch, sh sau khi thực hiện xong đoạn chương trình trên.
bài tập ứng dụng
Bài 2: Cho đoạn chương trình sau:
Var kt, a: string; b, c: byte; d: char;
Begin
kt:=‘Xuan Mau Ty’;
a:=copy(kt, 6, 3);
b:=length(kt);
c:=pos(‘a’, kt);
d:=upcase(kt[4]);
End.
? Hãy xác định giá trị của các biến kt, a, b, c, d sau khi thực hiện xong đoạn chương trình trên.
bài tập ứng dụng
Bài tập về nhà
Làm bài tập: 10/80- SGK
Bài học đến đây đã kết thúc rồi!