Bài 12. Kiểu xâu

Chia sẻ bởi Lương Hồng Cẩm | Ngày 10/05/2019 | 83

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:

Câu 1
A
B
C
D
Trong các khai báo dưới đây khai báo nào sai?
Var M : array [1..5,1..10] of integer;
Var N : array [1..3] of array [1..5] of real;
Type P : array [1..50,1..10] of char;
Var K : array [5..3] of array [7..5] of real;
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Câu 2
A
B
C
D
Var a : array [-10..-5] of integer;
số phần tử của mảng là bao nhiêu?
5
6
7
8
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Câu 3
A
B
C
D
Khai báo một mảng gồm 8 phần tử là kiểu kí tự
Var M : array [0..5] of char;
Var N : array [-1..7] of real;
Var P : array [1..8] of char;
Var K : array [5..3] of array [7..5] of byte;
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Câu 2
A
B
C
D
Var a : array [-10..-5] of integer;
số phần tử của mảng là bao nhiêu?
5
6
7
8
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Câu 3
A
B
C
D
Khai báo một mảng gồm 8 phần tử là kiểu kí tự
Var M : array [0..5] of char;
Var N : array [-1..7] of real;
Var P : array [1..8] of char;
Var K : array [5..3] of array [7..5] of byte;
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Câu 3
A
B
C
D
Khai báo một mảng gồm 8 phần tử là kiểu kí tự
Var M : array [0..5] of char;
Var N : array [-1..7] of real;
Var P : array [1..8] of char;
Var K : array [5..3] of array [7..5] of byte;
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Câu 1
A
B
C
D
Trong các khai báo dưới đây khai báo nào sai?
Var M : array [1..5,1..10] of integer;
Var N : array [1..3] of array [1..5] of real;
Type P : array [1..50,1..10] of char;
Var K : array [5..3] of array [7..5] of real;
Câu 2
A
B
C
D
Var a : array [-10..-5] of integer;
số phần tử của mảng là bao nhiêu?
5
6
7
8
Câu 3
A
B
C
D
Khai báo một mảng gồm 8 phần tử là kiểu kí tự
Var M : array [0..5] of char;
Var N : array [-1..7] of real;
Var P : array [1..8] of char;
Var K : array [5..3] of array [7..5] of byte;
Bài toán đặt vấn đề:
Nếu ta muốn nhập và hiển thị họ tên của 1 học sinh nào đó trong lớp thì phải làm thế nào?
Xét chương trình nhập và hiển thị họ tên của học sinh PHAN ANH
+ Xác định số kí tự của họ tên học sinh đó để xác định là lặp bao nhiêu lần.
Bài 12
(string)
* Khái niệm
Xâu là dãy các kí tự trong bộ mã ASCII, mỗi kí tự gọi là một phần tử của xâu.
Xâu là gì?
1. Khai báo
Cú pháp:
var : string [độ dài lớn nhất của xâu];
* Yêu cầu:
+ do người lập trình tự chọn
+ [độ dài lớn nhất của xâu] phải là một số nguyên dương, có thể có hoặc không (<= 255)
? ht[0] có phải là phần tử của xâu ht không?
+ ht là tên_biến_xâu
+ [30] độ dài lớn nhất của xâu ht
+ ht[1], ht[2], ..., ht[30] là
các phần tử của xâu ht
+ xâu ht có độ dài thực là 30 kí tự
không
*Nếu có, đó là độ dài thực của
vd1: var ht : string[30];
? ht là gì?
? [30] gọi là gì?
? Xâu ht có độ dài thực bao nhiêu kí tự?
? các phần tử của xâu ht là gì?
Hãy khai báo một biến xâu có độ dài thực là 10 kí tự?
Hãy khai báo một biến xâu có độ dài thực là 255 kí tự?
*Nếu không có, có độ dài thực tối đa mặc nhiên là 255
vd2: var dc : string;
Có thể khai báo gián tiếp biến xâu không?
Type = string [độ dài lớn nhất của xâu];
var : ;
? Xâu trên có bao nhiêu phần tử?
- Xét xâu: ’chau thanh’
10 phần tử
Độ dài của xâu trên là bao nhiêu?
10
* Qui ước:
- Số lượng kí tự trong xâu được gọi là độ dài thực của xâu
? Xâu rỗng được viết như thế nào? Số lượng kí tự bao nhiêu?
+ Kí hiệu của xâu rỗng là ’’, xâu này có độ dài là 0
Xâu chỉ có một kí tự trống được viết như thế nào?
Số lượng kí tự bao nhiêu?
+ Kí hiệu của xâu gồm một kí tự trống là ’ ’,
xâu này có độ dài là 1
Xâu có độ dài bằng 0 gọi là xâu rỗng. Xâu rỗng được viết là hai dấu nháy đơn liền nhau ’’
* Tham chiếu đến từng kí tự trong xâu:
[chỉ số]
a[5] = ’H’
a
Vd: Var a: String[10];
2. Các thao tác xử lí xâu
- Nhập giá trị cho biến xâu:
readln();
- Xuất giá trị cho biến xâu:
write();
- Phép gán xâu:
:= hằng xâu;
vd: ht := ’phan anh’;
dc := ’chau thanh’;
- Phép ghép xâu: sử dụng dấu “+” để ghép nhiều xâu thành một xâu.
vd: ’tra’ + ’vinh’
cho kết quả: ’travinh’
2
3
5
Phép so sánh xâu:
Gồm các phép so sánh như: >, >=, <, <=, =, <>
Theo em, xâu ’AC’ và xâu ’AB’ xâu nào lớn hơn?
+ ’AC’ > ’AB’
+ Xâu A là xâu 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 xâu B
vd: ’AC’ > ’AB’
Theo em, xâu ’may tinh’ và xâu ’may tinh cua toi’ xâu nào lớn hơn?
+ ’may tinh’ < ’may tinh cua toi’
+ Nếu xâu A và xâu B là các xâu có độ dài khác nhau và xâu A là đoạn đầu của xâu B thì xâu A nhỏ hơn xâu B
vd: ’may tinh’ < ’may tinh cua toi’
+ Hai xâu được xem là bằng nhau nếu chúng giống nhau hoàn toàn
vd: ’Tin hoc’ = ’Tin hoc’
* Ghi chú: Khi so sánh hai xâu, xâu có độ dài nhỏ hơn có thể là xâu lớn hơn
vd: ’Anh’ < ’Ba’
- Các hàm và thủ tục thường sử dụng trong xâu
length(tên_biến_xâu)
cho kết quả là một số nguyên không âm, là độ dài thực của xâu (kể cả kí tự trắng)
vd: ht := ’phan anh’;
writeln(length(ht));
 8
pos(tb_xâu1, tb_xâu2)
cho kết quả là một số nguyên không âm, là vị trí xuất hiện đầu tiên của trong
vd: s1 := ’xuan’;
s2 := ’mua xuan’;
writeln(pos(s1,s2));
 5
copy(tên_biến_xâu,vt,n)
cho kết quả là một xâu mới, bằng cách lấy n ký tự trong tên_biến_xâu, bắt đầu từ vị trí vt
vd: ht := ’phan anh’;
writeln(copy(ht,6,3));
 ’anh’
upcase(ch)
cho kết quả là một kí tự chữ hoa, chú ý ch phải là một phần tử của xâu hay một kí tự
ht := ’phan anh’;
writeln(upcase(ht[6]));
 ’A’
delete(tb_xâu,vt,n);
cho kết quả là một xâu, bằng cách xóa n kí tự bắt đầu từ vị trí vt trong xâu.
s2 := ’mua xuan’;
delete(s2,1,4);
write(s2);
 ’xuan’
insert(tb_xâu1, tb_xâu2,vt);
cho kết quả là một xâu, bằng cách chèn vào < tb_xâu2> bắt đầu ở vị trí vt.
s1 := ’h’
s2 := ’Cau’;
insert(s1,s2,2);
write(s2);
 ’Chau’
Thảo luận nhóm nhỏ (cặp đôi)
– thời gian 3 phút
1/ Giá trị của X là ’mon tin hoc’, sau thao tác delete(X,4,4) giá trị của X là gì?
2/ Cho biết giá trị của pos(’xinh’, ’cai xac xinh xinh’)?
3/ Giá trị của H là ’em yeu truong em’ , hãy viết thao tác để thêm từ ’ cua’ vào sau từ ‘truong’ trong xâu H?
+ ’mon hoc’
+ 9
+ insert(’ cua’,H,14);
3. Một số ví dụ:
ví dụ 1: Viết chương trình nhập từ bàn phím họ tên của hai học sinh vào 2 biến xâu. Đưa ra màn hình xâu dài hơn, nếu bằng nhau thì đưa ra xâu nhập sau.
+ Input: Họ tên của 2 học sinh ( 2 xâu)
+ Output: Xâu dài hơn hoặc xâu thứ 2
nếu hai xâu bằng nhau về độ dài.
* Hướng dẫn viết chương trình
+ Khai báo xâu:
+ Nhập xâu:
+ Xử lí xâu:
var a, b : string[30];
write(’nhap ho ten hoc sinh 1: ’);
readln(a);
write(’nhap ho ten hoc sinh 2: ’);
readln(b);
Dựa vào đâu để so sánh hai xâu?
+ độ dài thực của hai xâu
Hàm nào xác định độ dài thực của xâu?
+ hàm length
câu lệnh xử lí xâu
if length(b) >= length(a) then write(b)
else write(a);
ví dụ 2: Viết chương trình nhập từ bàn phím xâu s1. Tạo ra xâu s2 gồm tất cả các chữ số có trong xâu s1.
+ Input: Xâu s1
+ Output: Xâu s2 (gồm các chữ số trong xâu s1)
* Hướng dẫn viết chương trình
+ Khai báo xâu:
+ Nhập xâu:
+ Xử lí xâu:
var s1, s2 : string[30];
write(’nhap xau s1: ’);
readln(s1);
Làm thế nào biết s1 có chứa chữ số?
+ Kiểm tra từng phần tử của xâu
Làm thế nào để đưa chữ số của xâu s1 vào xâu s2?
+ phép ghép xâu
câu lệnh xử lí xâu
For i := 1 to length(s1) do
if ’0’ <= s1[i] and s1[i] <= ’9’ then
s2 := s2 + s1[i];
+ Khởi tạo xâu rỗng s2:
s2 := ’’;
+ Hiển thị xâu s2: write(’Tao xau s2: ’,s2);
Thảo luận nhóm – thời gian 5 phút
Viết chương trình nhập từ bàn phím hai xâu. Kiểm tra xem kí tự đầu 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?
Bài tập về nhà
+ Input: Hai xâu bất kỳ
+ Output: “Trùng nhau”
hoặc “khác nhau”
- Hướng dẫn viết chương trình
+ Khai báo xâu: var a, b : string;
+ Nhập xâu: write(’nhap xau thu nhat: ’);
readln(a);
write(’nhap xau thu hai: ’);
readln(b);
+ Xử lí xâu:
- Lấy kí tự đầu tiên của xâu thứ nhất: a[1]
- Lấy kí tự cuối cùng của xâu thứ hai:
x := length(b);
b[x];
câu lệnh xử lí xâu:
if a[1] = b[x] then write(’trung nhau’)
else write(’khac nhau’);
Program hten;
Uses crt;
var a : array [1..30] of char;
i : byte;
Begin
clrscr;
write(’nhap ho ten: ’);
for i := 1 to 8 do
readln(a[i]);
writeln(’hien thi ten vua nhap la: ’);
for i := 1 to 8 do
write(a[i]);
readln
end.
* 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ẻ: Lương Hồng Cẩm
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)