Bài 12. Kiểu xâu
Chia sẻ bởi Trần Thị Kim Loan |
Ngày 10/05/2019 |
69
Chia sẻ tài liệu: Bài 12. Kiểu xâu thuộc Tin học 11
Nội dung tài liệu:
Bài 15 - Tiết 27 + 28
KIỂU DỮ LIỆU XÂU
GIÁO ÁN ĐIỆN TỬ TIN HỌC LỚP 11
GV: Trần Thị Kim Loan
Nhập vào họ tên của hai học sinh, in ra màn hình họ tên dài hơn?
A
B
Với những kiểu DL đã học em hãy xác định kiểu DL cho 2 họ tên trên?
Bài toán đặt vấn đề:
Kiểu nguyên
Kiểu thực
Kí tự ( 1 chử cái )
Logic
Mảng 1 chiều
Xâu là dãy các kí tự trong bộ mã ASCII.
A
1 2 3 4 5 6 7
Trong đó:
Khi tham chiếu đến kí tự thứ i của xâu ta viết Tên xâu[chỉ số i]
Ví dụ: Khi tham chiếu đến kí tự thứ 5 ta viết A[5]=‘H’.
Tên xâu: A
Mỗi kí tự gọi là một phần tử của xâu
Ví dụ 1: Xâu ‘TIN HOC’
Độ dài của xâu (số kí tự trong xâu): 7
H
1. Khái niệm:
1 2 3 4 5 6
Khi tham chiếu đến kí tự thứ 2 của xâu ta viết như thế nào?
Tên xâu là gì?
Có bao nhiêu kí tự?
Ví dụ 2: Xâu ‘Lop 11’
Độ dài của xâu bằng bao nhiêu?
1. Khái niệm:
xau
xau[2]=‘O’.
xau
6
6
2. Khai báo kiểu dữ liệu xâu:
Var : String[độ dài lớn nhất];
Ví dụ: Var A: String[7];
* Khi khai báo xâu có thể bỏ qua phần khai báo [độ dài lớn nhất], khi đó độ dài lớn nhất của xâu sẽ nhận giá trị ngầm định là 255.
Ví dụ: Var A :String;
Var xau: String[6];
Var hoten: String[30];
Var Hoten :String;
3. Các thao tác xử lí xâu:
a. Biểu thức xâu:
Ví dụ 1: ‘ Ha’ + ‘Noi’
‘HaNoi’
* Phép ghép xâu: kí hiệu dấu + dùng để ghép nhiều xâu thành một xâu
Là biểu thức trong đó các toán hạng là các biến xâu, biến kí tự.
Ví dụ 2: ‘Nham Thin’ + ‘ 2012’
‘Nham Thin 2012’
3. Các thao tác xử lí xâu:
* Phép so sánh: =, < >, <, <=, >, >=
‘Ha Noi’ > ‘Ha Nam’
Trong đó có các quy ước:
- Xâu A = B nếu chúng giống hệt nhau.
- Xâu A > B nếu:
+ Kí tự đầu tiên khác nhau giữa chúng ở xâu A có mã ASCII lớn hơn ở xâu B.
- Xâu rỗng là xâu không có kí tự nào: Kí hiệu là ‘’
‘Tin hoc’ = ‘Tin hoc’
Ví dụ
A B
‘TIN HOC’ ?? ‘Tin hoc’
‘TIN HOC’ <> ‘Tin hoc’
+ Xâu B là đoạn đầu của xâu A.
‘Xau’ < ‘Xau ki tu’
‘Lop 11’ ?? ‘Lop 12’
‘Lop 11’ < ‘Lop 12’
b. Các thủ tục và hàm chuẩn xử lí xâu:
S1=‘1’
S2=‘Hinh .2’
Insert(s1,s2,6)
‘Hinh 1.2’
Chèn xâu S1 vào xâu S2 bắt đầu từ vị trí vt.
2.
Insert(S1,S2,vt)
S = ‘Song Hong’
Delete(S,1,5)
‘Hong’
Xoá n kí tự của
xâu S bắt đầu từ vị trí vt.
1.
Delete(S,vt,n)
VÍ DỤ
Ý NGHĨA
THỦ TỤC
Giả sử tên xâu là S và xâu có n kí tự
S = ‘TinHoc’
Delete(S, 4, 3)
‘Tin’
S1=‘Hoang’ S2=‘Anh’
Insert(s2, s1, 1)
‘AnhHoang’
b. Các thủ tục và hàm chuẩn xử lí xâu:
VÍ DỤ
Ý NGHĨA
HÀM
Giả sử tên xâu là S và xâu có n lí tự
1.
Copy(S,vt,n)
Tạo xâu gồm n kí tự của xâu S, bắt đầu tại vị trí vt
S = ‘Tin hoc’
Copy(S, 5, 3)
‘hoc’
2.
Length(S)
Cho giá trị là độ dài của xâu S
S = ‘Xin chao’
Length(S)
8
S= ‘Bai 12’
Copy (S, 1, 3)
‘Bai’
b. Các thủ tục và hàm chuẩn xử lí xâu:
VÍ DỤ
Ý NGHĨA
HÀM
Giả sử tên xâu là S và xâu có n lí tự
3.
Pos(S1,S2)
Cho vị trí xuất hiện đầu tiên của xâu S1 trong xâu S2
S1=‘1’
S2=‘Hinh 1.2’
Pos(S1, S2)
6
4.
UPCase(K)
Chuyển kí tự K thành kí tự chữ hoa
S=‘e’
UPCase(S)
‘E’
S1=‘010’
S2=‘1001010’
Pos(s1, s2)
3
Một số câu hỏi trắc nghiệm về Các thủ tục và hàm:
Câu 1: cho A=‘abc’ và B=‘ABC’ khi đó A+ B cho kết quả nào?
a. ‘aAbBcC’ b. ‘abcABC’
c. ‘AaBbCc’ d. ‘ABCabc’
Câu 2: Cho xâu ‘ABBA’ lớn hơn xâu nào dưới đây?
a. ‘A’ b. ‘AAA’ c. ‘ABA’ d. cả a,b,c
Câu 3: Cho xâu s=‘123456789’, khi thực hiện delete(s, 3, 4) thì được:
a. s=‘1256789’ b. s=‘12789’ c. s=‘123789’ d. s=‘’
Câu 4: Cho s1=‘123’; s2=‘abc’ khi thực hiện lệnh insert(s1, s2, 2) thì được:
s1=‘123’ ; s2=‘a123bc’
s1=‘1abc23’ ; s2=‘abc’
s1=‘123’ ; s2=’12abc’
s1=‘ab123’ ; s2=‘abc’
4. Một số ví dụ:
Nhập vào họ tên của hai học sinh, in ra màn hình họ tên dài hơn?
Vd1
- Ví dụ: a là xâu 1
b là xâu 2
- Ví dụ
Xâu a: ‘Nguyen Thi Anh’
Xâu b: ‘Nguyen Ngoc Bao Tran’
Xâu b dài hơn
Sử dụng hàm lấy chiều dài (length)
Lấy chiều dài xâu a: length(a)
Lấy chiều dài xâu b: length(b)
Có bao nhiêu xâu?
- Có 2 xâu
Em thử đặt tên cho 2 xâu trên?
Xâu nào dài hơn?
Vì sao em biết xâu b dài hơn?
Lấy chiều dài xâu a (xâu b), em viết ntn?
4. Một số ví dụ:
Nhập vào họ tên của hai học sinh, in ra màn hình họ tên dài hơn?
Vd1
CÁC BƯỚC:
THỂ HIỆN BẰNG PASCAL
1. Khai b¸o x©u
Var a,b: string;
2. NhËp x©u
Write(‘ Nhap ho ten thu nhat :’);
Readln(a);
Write(‘Nhap ho ten thu hai :’);
Readln(b);
3. Xö lÝ x©u
IF Length(a) > Length(b) Then write(a)
else write(b);
Program VD1;
Uses crt;
Var a,b : string ;
BEGIN
Clrscr;
write(‘ Nhap ho ten thu nhat : ’) ;
readln(a) ;
write(‘ Nhap ho ten thu hai : ’) ;
readln(b) ;
if length(a) > length(b) then Writeln(‘Ho Ten dai nhat la:’, a)
else Writeln(‘Ho Ten dai nhat la:’, b);
Readln ;
END.
Nhap ho ten thu nhat :
Nguyen Thi Anh
Chương trình chạy và cho kết quả như sau:
Nhap ho ten thu hai :
Nguyen Ngoc Bao Tran
Ho Ten dai nhat la : Nguyen Ngoc Bao Tran
Nhập vào hai xâu từ bàn phím, kiểm tra xem kí tự đầu tiên của xâu thứ nhất có trùng với kí tự cuối cùng của xâu thứ hai không?
Vd 2
Hướng dẫn CÁC BƯỚC:
1. Khai b¸o x©u : A,B
2. NhËp x©u
3. Xö lÝ x©u, trong ®ã:
Kí tự đầu tiên của xâu A:
A[1]
Kí tự cuối cùng của xâu B:
Với X là độ dài của xâu B
Dựa vào các bước bên, hãy hoàn thiện chương trình?
B[x]
Nếu A[1] = B[x] thì thông báo trùng Ngược lại thông báo không trùng
Program VD1;
Uses crt;
Var a,b : string ;
x: byte;
BEGIN
Clrscr;
write(‘ Nhap xau thu nhat : ’) ;
readln(a) ;
write(‘ Nhap xau thu hai : ’) ;
readln(b) ;
x:=length(b);
if a[1]=b[x] then Writeln(‘Trung nhau’)
else Writeln(‘Khong trung’);
Readln ;
END.
Nhap xau thu nhat :
ngot ngao nhu dong suoi
Chương trình chạy và cho kết quả như sau:
Nhap xau thu hai :
Co chu chim ngon
Trung nhau
Nhap xau thu nhat :
Mua xuan den roi
Chương trình chạy và cho kết quả như sau:
Nhap xau thu hai :
Co chu chim ngon
Khong trung
Nhập vào một xâu từ bàn phím, đưa ra màn hình xâu thu được bằng cách loại bỏ các dấu cách từ xâu đã cho?
Vd3
Em thử nêu cách viết chương trình trên?
Ví dụ:
- Xâu ban đầu : ‘Mon Tin hoc’
- Kết quả ra màn hình :
THUẬT TOÁN :
Khai báo xâu a
Nhập xâu a
Khởi tạo 1 xâu rỗng p
Lần lượt duyệt qua tất cả các phần tử của xâu a
( Duyệt từ đầu xâu a đến cuối xâu a For …..do….)
Nếu phần tử được duyệt khác dấu cách thì đưa vào xâu rỗng p
Xuất xâu p
Hãy viết chương trình dựa theo thuật toán bên.
‘MonTinhoc’
Hãy nhớ!
Xâu là dãy các kí tự trong bộ mã ASCII.
Khai báo: tên xâu, độ dài lớn nhất của xâu.
Tham chiếu phần tử của xâu: Tên xâu[chỉ số]
Các thao tác xử lí thường dùng:
+ Phép ghép xâu, so sánh xâu;
+ Các thủ tục và hàm chuẩn.
‘Xin chao cac ban!’
Var S : string[30]
S[1] = ‘X’
KIỂU DỮ LIỆU XÂU
GIÁO ÁN ĐIỆN TỬ TIN HỌC LỚP 11
GV: Trần Thị Kim Loan
Nhập vào họ tên của hai học sinh, in ra màn hình họ tên dài hơn?
A
B
Với những kiểu DL đã học em hãy xác định kiểu DL cho 2 họ tên trên?
Bài toán đặt vấn đề:
Kiểu nguyên
Kiểu thực
Kí tự ( 1 chử cái )
Logic
Mảng 1 chiều
Xâu là dãy các kí tự trong bộ mã ASCII.
A
1 2 3 4 5 6 7
Trong đó:
Khi tham chiếu đến kí tự thứ i của xâu ta viết Tên xâu[chỉ số i]
Ví dụ: Khi tham chiếu đến kí tự thứ 5 ta viết A[5]=‘H’.
Tên xâu: A
Mỗi kí tự gọi là một phần tử của xâu
Ví dụ 1: Xâu ‘TIN HOC’
Độ dài của xâu (số kí tự trong xâu): 7
H
1. Khái niệm:
1 2 3 4 5 6
Khi tham chiếu đến kí tự thứ 2 của xâu ta viết như thế nào?
Tên xâu là gì?
Có bao nhiêu kí tự?
Ví dụ 2: Xâu ‘Lop 11’
Độ dài của xâu bằng bao nhiêu?
1. Khái niệm:
xau
xau[2]=‘O’.
xau
6
6
2. Khai báo kiểu dữ liệu xâu:
Var
Ví dụ: Var A: String[7];
* Khi khai báo xâu có thể bỏ qua phần khai báo [độ dài lớn nhất], khi đó độ dài lớn nhất của xâu sẽ nhận giá trị ngầm định là 255.
Ví dụ: Var A :String;
Var xau: String[6];
Var hoten: String[30];
Var Hoten :String;
3. Các thao tác xử lí xâu:
a. Biểu thức xâu:
Ví dụ 1: ‘ Ha’ + ‘Noi’
‘HaNoi’
* Phép ghép xâu: kí hiệu dấu + dùng để ghép nhiều xâu thành một xâu
Là biểu thức trong đó các toán hạng là các biến xâu, biến kí tự.
Ví dụ 2: ‘Nham Thin’ + ‘ 2012’
‘Nham Thin 2012’
3. Các thao tác xử lí xâu:
* Phép so sánh: =, < >, <, <=, >, >=
‘Ha Noi’ > ‘Ha Nam’
Trong đó có các quy ước:
- Xâu A = B nếu chúng giống hệt nhau.
- Xâu A > B nếu:
+ Kí tự đầu tiên khác nhau giữa chúng ở xâu A có mã ASCII lớn hơn ở xâu B.
- Xâu rỗng là xâu không có kí tự nào: Kí hiệu là ‘’
‘Tin hoc’ = ‘Tin hoc’
Ví dụ
A B
‘TIN HOC’ ?? ‘Tin hoc’
‘TIN HOC’ <> ‘Tin hoc’
+ Xâu B là đoạn đầu của xâu A.
‘Xau’ < ‘Xau ki tu’
‘Lop 11’ ?? ‘Lop 12’
‘Lop 11’ < ‘Lop 12’
b. Các thủ tục và hàm chuẩn xử lí xâu:
S1=‘1’
S2=‘Hinh .2’
Insert(s1,s2,6)
‘Hinh 1.2’
Chèn xâu S1 vào xâu S2 bắt đầu từ vị trí vt.
2.
Insert(S1,S2,vt)
S = ‘Song Hong’
Delete(S,1,5)
‘Hong’
Xoá n kí tự của
xâu S bắt đầu từ vị trí vt.
1.
Delete(S,vt,n)
VÍ DỤ
Ý NGHĨA
THỦ TỤC
Giả sử tên xâu là S và xâu có n kí tự
S = ‘TinHoc’
Delete(S, 4, 3)
‘Tin’
S1=‘Hoang’ S2=‘Anh’
Insert(s2, s1, 1)
‘AnhHoang’
b. Các thủ tục và hàm chuẩn xử lí xâu:
VÍ DỤ
Ý NGHĨA
HÀM
Giả sử tên xâu là S và xâu có n lí tự
1.
Copy(S,vt,n)
Tạo xâu gồm n kí tự của xâu S, bắt đầu tại vị trí vt
S = ‘Tin hoc’
Copy(S, 5, 3)
‘hoc’
2.
Length(S)
Cho giá trị là độ dài của xâu S
S = ‘Xin chao’
Length(S)
8
S= ‘Bai 12’
Copy (S, 1, 3)
‘Bai’
b. Các thủ tục và hàm chuẩn xử lí xâu:
VÍ DỤ
Ý NGHĨA
HÀM
Giả sử tên xâu là S và xâu có n lí tự
3.
Pos(S1,S2)
Cho vị trí xuất hiện đầu tiên của xâu S1 trong xâu S2
S1=‘1’
S2=‘Hinh 1.2’
Pos(S1, S2)
6
4.
UPCase(K)
Chuyển kí tự K thành kí tự chữ hoa
S=‘e’
UPCase(S)
‘E’
S1=‘010’
S2=‘1001010’
Pos(s1, s2)
3
Một số câu hỏi trắc nghiệm về Các thủ tục và hàm:
Câu 1: cho A=‘abc’ và B=‘ABC’ khi đó A+ B cho kết quả nào?
a. ‘aAbBcC’ b. ‘abcABC’
c. ‘AaBbCc’ d. ‘ABCabc’
Câu 2: Cho xâu ‘ABBA’ lớn hơn xâu nào dưới đây?
a. ‘A’ b. ‘AAA’ c. ‘ABA’ d. cả a,b,c
Câu 3: Cho xâu s=‘123456789’, khi thực hiện delete(s, 3, 4) thì được:
a. s=‘1256789’ b. s=‘12789’ c. s=‘123789’ d. s=‘’
Câu 4: Cho s1=‘123’; s2=‘abc’ khi thực hiện lệnh insert(s1, s2, 2) thì được:
s1=‘123’ ; s2=‘a123bc’
s1=‘1abc23’ ; s2=‘abc’
s1=‘123’ ; s2=’12abc’
s1=‘ab123’ ; s2=‘abc’
4. Một số ví dụ:
Nhập vào họ tên của hai học sinh, in ra màn hình họ tên dài hơn?
Vd1
- Ví dụ: a là xâu 1
b là xâu 2
- Ví dụ
Xâu a: ‘Nguyen Thi Anh’
Xâu b: ‘Nguyen Ngoc Bao Tran’
Xâu b dài hơn
Sử dụng hàm lấy chiều dài (length)
Lấy chiều dài xâu a: length(a)
Lấy chiều dài xâu b: length(b)
Có bao nhiêu xâu?
- Có 2 xâu
Em thử đặt tên cho 2 xâu trên?
Xâu nào dài hơn?
Vì sao em biết xâu b dài hơn?
Lấy chiều dài xâu a (xâu b), em viết ntn?
4. Một số ví dụ:
Nhập vào họ tên của hai học sinh, in ra màn hình họ tên dài hơn?
Vd1
CÁC BƯỚC:
THỂ HIỆN BẰNG PASCAL
1. Khai b¸o x©u
Var a,b: string;
2. NhËp x©u
Write(‘ Nhap ho ten thu nhat :’);
Readln(a);
Write(‘Nhap ho ten thu hai :’);
Readln(b);
3. Xö lÝ x©u
IF Length(a) > Length(b) Then write(a)
else write(b);
Program VD1;
Uses crt;
Var a,b : string ;
BEGIN
Clrscr;
write(‘ Nhap ho ten thu nhat : ’) ;
readln(a) ;
write(‘ Nhap ho ten thu hai : ’) ;
readln(b) ;
if length(a) > length(b) then Writeln(‘Ho Ten dai nhat la:’, a)
else Writeln(‘Ho Ten dai nhat la:’, b);
Readln ;
END.
Nhap ho ten thu nhat :
Nguyen Thi Anh
Chương trình chạy và cho kết quả như sau:
Nhap ho ten thu hai :
Nguyen Ngoc Bao Tran
Ho Ten dai nhat la : Nguyen Ngoc Bao Tran
Nhập vào hai xâu từ bàn phím, kiểm tra xem kí tự đầu tiên của xâu thứ nhất có trùng với kí tự cuối cùng của xâu thứ hai không?
Vd 2
Hướng dẫn CÁC BƯỚC:
1. Khai b¸o x©u : A,B
2. NhËp x©u
3. Xö lÝ x©u, trong ®ã:
Kí tự đầu tiên của xâu A:
A[1]
Kí tự cuối cùng của xâu B:
Với X là độ dài của xâu B
Dựa vào các bước bên, hãy hoàn thiện chương trình?
B[x]
Nếu A[1] = B[x] thì thông báo trùng Ngược lại thông báo không trùng
Program VD1;
Uses crt;
Var a,b : string ;
x: byte;
BEGIN
Clrscr;
write(‘ Nhap xau thu nhat : ’) ;
readln(a) ;
write(‘ Nhap xau thu hai : ’) ;
readln(b) ;
x:=length(b);
if a[1]=b[x] then Writeln(‘Trung nhau’)
else Writeln(‘Khong trung’);
Readln ;
END.
Nhap xau thu nhat :
ngot ngao nhu dong suoi
Chương trình chạy và cho kết quả như sau:
Nhap xau thu hai :
Co chu chim ngon
Trung nhau
Nhap xau thu nhat :
Mua xuan den roi
Chương trình chạy và cho kết quả như sau:
Nhap xau thu hai :
Co chu chim ngon
Khong trung
Nhập vào một xâu từ bàn phím, đưa ra màn hình xâu thu được bằng cách loại bỏ các dấu cách từ xâu đã cho?
Vd3
Em thử nêu cách viết chương trình trên?
Ví dụ:
- Xâu ban đầu : ‘Mon Tin hoc’
- Kết quả ra màn hình :
THUẬT TOÁN :
Khai báo xâu a
Nhập xâu a
Khởi tạo 1 xâu rỗng p
Lần lượt duyệt qua tất cả các phần tử của xâu a
( Duyệt từ đầu xâu a đến cuối xâu a For …..do….)
Nếu phần tử được duyệt khác dấu cách thì đưa vào xâu rỗng p
Xuất xâu p
Hãy viết chương trình dựa theo thuật toán bên.
‘MonTinhoc’
Hãy nhớ!
Xâu là dãy các kí tự trong bộ mã ASCII.
Khai báo: tên xâu, độ dài lớn nhất của xâu.
Tham chiếu phần tử của xâu: Tên xâu[chỉ số]
Các thao tác xử lí thường dùng:
+ Phép ghép xâu, so sánh xâu;
+ Các thủ tục và hàm chuẩn.
‘Xin chao cac ban!’
Var S : string[30]
S[1] = ‘X’
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Trần Thị Kim Loan
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)