Bài 12. Kiểu xâu
Chia sẻ bởi Nguyễn Thị Tố Châu |
Ngày 10/05/2019 |
74
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:
Viết chương trình nhập vào tên của 1 học sinh và in tên của học sinh đó
Tên học sinh dữ liệu kiểu gì?
Tên có bao nhiêu kí tự?
Var ten: Char;
Begin
Write(‘Nhap ten: ’);
Readln(ten);
Write(ten);
Readln;
End.
- Vì sao khi xuất ra màn hình chỉ nhận 1 kí tự?
- Kiểu kí tự nhận được bao nhiêu kí tự?
- Làm thế nào để nhập vào 1 dãy kí tự?
Bài 12
1. Khái niệm:
- Xâu là dãy các kí tự trong bộ mã ASCII
- Mỗi kí tự được gọi là 1 phần tử của xâu.
- Số lượng kí tự trong 1 xâu gọi là độ dài của xâu.
- Xâu có độ dài bằng 0 là xâu rỗng.
8
1 2 3 4 5 6 7 8
BÀI 12. KIỂU XÂU
ST
Tên xâu
Độ dài của xâu
Kí tự
Chỉ số
2. Khai báo:
BÀI 12. KIỂU XÂU
Var : String[độ dài lớn nhất];
Ví dụ: Var hoten: String[26];
* Chú ý:
- Độ dài xâu nằm trong khoảng 1 đến 255
- Nếu bỏ qua khai báo [độ dài lớn nhất] thì độ dài của xâu ngầm định là 255 kí tự
- Hằng xâu được đặt trong dấu nháy đơn ``
Ví dụ: Var chuthich :String;
3. Tham chiếu tới phần tử xâu:
BÀI 12. KIỂU XÂU
Tên biến xâu[chỉ số phần tử]
(Chỉ số có thể nhận giá trị từ 1 đến độ dài lớn nhất của xâu)
Ví dụ:
Var ten: string[20];
Begin
Ten:=‘Le Loi’; Write(ten[5]);
Readln;
End.
Chạy chương trình bên cho kết quả gì trên màn hình?
o
Kết quả:
Để nhập xâu:
Readln (tên biến xâu);
Để đưa xâu ra màn hình:
Write/Writeln(tên biến xâu);
02 Hái hoa dân chủ
Câu số 1:
??Khai bo b?n tin d? di t?i da 255?
Trả lời: Var bantin:string;
ho?c Var bantin:string[255];
Đáp án
Chọn câu
Câu 1 (Hái hoa dân chủ)
Câu số 2:
??S1:=11; v S2:=`11`; gi?ng nhau dng hay sai?
Trả lời: Sai, S1 v S2 l 2 bi?n ki?u d? li?u khc nhau
Đáp án
Chọn câu
Câu 2 (Hái hoa dân chủ)
Câu số 3:
??Var st1:char; st2:string[1];
L?nh gn st1:=st2; dng khơng? Gi?i thích?
Trả lời: Sai, vì khơng cng ki?u d? li?u
Đáp án
Chọn câu
Câu 3 (Hái hoa dân chủ)
Câu số 4:
?? S[5];
d? tham chi?u d?n kí t? th? 5 trong xu S?
Trả lời: Sai, S[5]
Đáp án
Chọn câu
Câu 4 (Hái hoa dân chủ)
Câu số 5:
??Khai bo 1 xu S cĩ d? di t?i da 100?
Trả lời: Var S: String[100];
Đáp án
Chọn câu
Câu 5 (Hái hoa dân chủ)
4. Các thao tác xử lí xâu:
BÀI 12. KIỂU XÂU
a. Phép ghép xâu (+): được dùng để ghép nhiều xâu thành một.
Ví dụ: ‘Tin’+’Hoc’=‘TinHoc’
b. Các phép so sánh: dùng các phép toán quan hệ để so sánh (=,<>, <,<=,>,>=)
So sánh 2 xâu theo quy tắc:
`Ha Noi` > `Ha Nam`
`Xau` < `Xau ki tu`
- 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 B là đoạn đầu của xâu A.
`Tin hoc` = `Tin hoc`
Ví dụ
c. Các thủ tục và hàm chuẩn xử lí xâu :
S1:=`1` S2:=`Hinh .2`
Insert(S1,S2,6);
? S2=`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);
?S= `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
BÀI 12. KIỂU XÂU
TRẮC NGHIỆM
Ch?n cu
Đáp án
Khai báo nào sau đây đúng:
A. Var ten:string(30);
B. Var ten: string[256];
C. Var ten= string;
D. Var ten:string[30];
Đáp án
Ch?n cu
Tham chiếu đến phần tử trong xâu:
A. Tênbiến[chỉ số phần tử];
B. Tênbiến(chỉ số phần tử)
C. Tênbiến[chỉ số phần tử]
D. [chỉ số phần tử]tênbiến
Đáp án
Ch?n cu
Phát biểu nào sau đây sai:
A. Xâu có độ dài bằng 0 là xâu rỗng.
B. Xâu là 1 kí tự trong bảng mã ASCII
C. Số lượng kí tự trong 1 xâu gọi là độ dài của xâu.
D. Mỗi kí tự được gọi là 1 phần tử của xâu.
Đáp án
Ch?n cu
Phép gán giá trị biến xâu(S) nào sau đây đúng?
A. S:=‘tin hoc’;
B. S:=“tin hoc”;
C. S:=tin hoc;
D. S:= ‘tin hoc’
Câu 5 (01 Hái hoa dân chủ)
Đáp án
Ch?n cu
Write (‘ha Noi’ > ‘ ha nam’) cho kết quả ?
A. True
B. False
‘hoc’ +‘Tin’
thực hiện phép ghép xâu trên cho kết quả gì?
A. ‘Tinhoc’
B. ‘Tin hoc’
C. ‘hoc Tin’
D. ‘hocTin’
Đáp án
Ch?n cu
Đáp án
Ch?n cu
Write (‘May tinh’ >= ‘May tinh’) cho kết quả ?
A. True
B. False
Đáp án
Ch?n cu
Cho xâu st:= `chuc mung nam moi !`, hãy chọn giá trị tham chiếu đúng:
A. st[6]= ‘ `; B. st[6]= ‘m`;
C. st[6]= `u`; D. st[6]= `c`;
Chú ý:
BÀI 12. KIỂU XÂU
- Xâu được tạo thành bởi các kí tự, trong đó có thể có dấu cách.
- Khi viết 2 xâu kí tự phải đặt trong 2 dấu nháy đơn nhưng khi nhập vào từ bàn phím giá trị 1 xâu chỉ cần gõ giá trị của xâu đó.
- Xâu rỗng ta viết 2 nháy đơn liền nhau.
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’;
Ch:=`a`
UPCase(ch) = `A`
Chuyển kí tự ch thành chữ hoa
4. UPCase(ch)
S1:=`1` S2:=`Hinh 1.2`
Pos(S1,S2) = 6
Cho vị trí xuất hiện đầu tiên của xâu S1 trong xâu S2
3. Pos(S1,S2)
S := `Xin chao`
Length(S) = 8
Cho giá trị là độ dài của xâu S
2. Length(S)
Ví dụ
ý nghĩa
Hàm
S := `Tin hoc`
Copy(S,5,3)= `hoc`
Tạo xâu gồm n kí tự liên tiếp bắt đầu từ vị trí vt của xâu S
1. Copy(S,vt,n)
BÀI 12. KIỂU XÂU
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?
1
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
BEGIN
Write(‘ Nhap xau ho ten thu nhat :’); Readln(a);
Write(‘Nhap xau ho ten thu hai :’); Readln(b);
3. Xö lÝ x©u
IF Length(a)>Length(b) Then write(a)
else write(b);
Readln;
END.
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?
2
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:
B[x] trong ®ã 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?
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?
3
Hãy nêu thuật toán để giải bài toán trên?
Ví dụ:
- Xâu ban đầu : `Mon Tin hoc`
- Kết quả ra màn hình : `MonTinhoc`
Thuật toán
B1. Khởi tạo xâu rỗng;
B2. Lần lượt duyệt qua tất cả các phần tử của xâu vừa nhập,
nếu phần tử được duyệt khác dấu cách thì bổ sung vào xâu rỗng.
Hãy viết chương trình dựa theo thuật toán bên.
Tên học sinh dữ liệu kiểu gì?
Tên có bao nhiêu kí tự?
Var ten: Char;
Begin
Write(‘Nhap ten: ’);
Readln(ten);
Write(ten);
Readln;
End.
- Vì sao khi xuất ra màn hình chỉ nhận 1 kí tự?
- Kiểu kí tự nhận được bao nhiêu kí tự?
- Làm thế nào để nhập vào 1 dãy kí tự?
Bài 12
1. Khái niệm:
- Xâu là dãy các kí tự trong bộ mã ASCII
- Mỗi kí tự được gọi là 1 phần tử của xâu.
- Số lượng kí tự trong 1 xâu gọi là độ dài của xâu.
- Xâu có độ dài bằng 0 là xâu rỗng.
8
1 2 3 4 5 6 7 8
BÀI 12. KIỂU XÂU
ST
Tên xâu
Độ dài của xâu
Kí tự
Chỉ số
2. Khai báo:
BÀI 12. KIỂU XÂU
Var
Ví dụ: Var hoten: String[26];
* Chú ý:
- Độ dài xâu nằm trong khoảng 1 đến 255
- Nếu bỏ qua khai báo [độ dài lớn nhất] thì độ dài của xâu ngầm định là 255 kí tự
- Hằng xâu được đặt trong dấu nháy đơn ``
Ví dụ: Var chuthich :String;
3. Tham chiếu tới phần tử xâu:
BÀI 12. KIỂU XÂU
Tên biến xâu[chỉ số phần tử]
(Chỉ số có thể nhận giá trị từ 1 đến độ dài lớn nhất của xâu)
Ví dụ:
Var ten: string[20];
Begin
Ten:=‘Le Loi’; Write(ten[5]);
Readln;
End.
Chạy chương trình bên cho kết quả gì trên màn hình?
o
Kết quả:
Để nhập xâu:
Readln (tên biến xâu);
Để đưa xâu ra màn hình:
Write/Writeln(tên biến xâu);
02 Hái hoa dân chủ
Câu số 1:
??Khai bo b?n tin d? di t?i da 255?
Trả lời: Var bantin:string;
ho?c Var bantin:string[255];
Đáp án
Chọn câu
Câu 1 (Hái hoa dân chủ)
Câu số 2:
??S1:=11; v S2:=`11`; gi?ng nhau dng hay sai?
Trả lời: Sai, S1 v S2 l 2 bi?n ki?u d? li?u khc nhau
Đáp án
Chọn câu
Câu 2 (Hái hoa dân chủ)
Câu số 3:
??Var st1:char; st2:string[1];
L?nh gn st1:=st2; dng khơng? Gi?i thích?
Trả lời: Sai, vì khơng cng ki?u d? li?u
Đáp án
Chọn câu
Câu 3 (Hái hoa dân chủ)
Câu số 4:
?? S[5];
d? tham chi?u d?n kí t? th? 5 trong xu S?
Trả lời: Sai, S[5]
Đáp án
Chọn câu
Câu 4 (Hái hoa dân chủ)
Câu số 5:
??Khai bo 1 xu S cĩ d? di t?i da 100?
Trả lời: Var S: String[100];
Đáp án
Chọn câu
Câu 5 (Hái hoa dân chủ)
4. Các thao tác xử lí xâu:
BÀI 12. KIỂU XÂU
a. Phép ghép xâu (+): được dùng để ghép nhiều xâu thành một.
Ví dụ: ‘Tin’+’Hoc’=‘TinHoc’
b. Các phép so sánh: dùng các phép toán quan hệ để so sánh (=,<>, <,<=,>,>=)
So sánh 2 xâu theo quy tắc:
`Ha Noi` > `Ha Nam`
`Xau` < `Xau ki tu`
- 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 B là đoạn đầu của xâu A.
`Tin hoc` = `Tin hoc`
Ví dụ
c. Các thủ tục và hàm chuẩn xử lí xâu :
S1:=`1` S2:=`Hinh .2`
Insert(S1,S2,6);
? S2=`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);
?S= `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
BÀI 12. KIỂU XÂU
TRẮC NGHIỆM
Ch?n cu
Đáp án
Khai báo nào sau đây đúng:
A. Var ten:string(30);
B. Var ten: string[256];
C. Var ten= string;
D. Var ten:string[30];
Đáp án
Ch?n cu
Tham chiếu đến phần tử trong xâu:
A. Tênbiến[chỉ số phần tử];
B. Tênbiến(chỉ số phần tử)
C. Tênbiến[chỉ số phần tử]
D. [chỉ số phần tử]tênbiến
Đáp án
Ch?n cu
Phát biểu nào sau đây sai:
A. Xâu có độ dài bằng 0 là xâu rỗng.
B. Xâu là 1 kí tự trong bảng mã ASCII
C. Số lượng kí tự trong 1 xâu gọi là độ dài của xâu.
D. Mỗi kí tự được gọi là 1 phần tử của xâu.
Đáp án
Ch?n cu
Phép gán giá trị biến xâu(S) nào sau đây đúng?
A. S:=‘tin hoc’;
B. S:=“tin hoc”;
C. S:=tin hoc;
D. S:= ‘tin hoc’
Câu 5 (01 Hái hoa dân chủ)
Đáp án
Ch?n cu
Write (‘ha Noi’ > ‘ ha nam’) cho kết quả ?
A. True
B. False
‘hoc’ +‘Tin’
thực hiện phép ghép xâu trên cho kết quả gì?
A. ‘Tinhoc’
B. ‘Tin hoc’
C. ‘hoc Tin’
D. ‘hocTin’
Đáp án
Ch?n cu
Đáp án
Ch?n cu
Write (‘May tinh’ >= ‘May tinh’) cho kết quả ?
A. True
B. False
Đáp án
Ch?n cu
Cho xâu st:= `chuc mung nam moi !`, hãy chọn giá trị tham chiếu đúng:
A. st[6]= ‘ `; B. st[6]= ‘m`;
C. st[6]= `u`; D. st[6]= `c`;
Chú ý:
BÀI 12. KIỂU XÂU
- Xâu được tạo thành bởi các kí tự, trong đó có thể có dấu cách.
- Khi viết 2 xâu kí tự phải đặt trong 2 dấu nháy đơn nhưng khi nhập vào từ bàn phím giá trị 1 xâu chỉ cần gõ giá trị của xâu đó.
- Xâu rỗng ta viết 2 nháy đơn liền nhau.
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’;
Ch:=`a`
UPCase(ch) = `A`
Chuyển kí tự ch thành chữ hoa
4. UPCase(ch)
S1:=`1` S2:=`Hinh 1.2`
Pos(S1,S2) = 6
Cho vị trí xuất hiện đầu tiên của xâu S1 trong xâu S2
3. Pos(S1,S2)
S := `Xin chao`
Length(S) = 8
Cho giá trị là độ dài của xâu S
2. Length(S)
Ví dụ
ý nghĩa
Hàm
S := `Tin hoc`
Copy(S,5,3)= `hoc`
Tạo xâu gồm n kí tự liên tiếp bắt đầu từ vị trí vt của xâu S
1. Copy(S,vt,n)
BÀI 12. KIỂU XÂU
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?
1
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
BEGIN
Write(‘ Nhap xau ho ten thu nhat :’); Readln(a);
Write(‘Nhap xau ho ten thu hai :’); Readln(b);
3. Xö lÝ x©u
IF Length(a)>Length(b) Then write(a)
else write(b);
Readln;
END.
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?
2
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:
B[x] trong ®ã 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?
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?
3
Hãy nêu thuật toán để giải bài toán trên?
Ví dụ:
- Xâu ban đầu : `Mon Tin hoc`
- Kết quả ra màn hình : `MonTinhoc`
Thuật toán
B1. Khởi tạo xâu rỗng;
B2. Lần lượt duyệt qua tất cả các phần tử của xâu vừa nhập,
nếu phần tử được duyệt khác dấu cách thì bổ sung vào xâu rỗng.
Hãy viết chương trình dựa theo thuật toán bên.
* 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ẻ: Nguyễn Thị Tố Châu
Dung lượng: |
Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)