Tìm kiếm Bài giảng
Bài 12. Kiểu xâu

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Hồ Thị Minh Tâm
Ngày gửi: 12h:43' 06-03-2022
Dung lượng: 1.9 MB
Số lượt tải: 153
Nguồn:
Người gửi: Hồ Thị Minh Tâm
Ngày gửi: 12h:43' 06-03-2022
Dung lượng: 1.9 MB
Số lượt tải: 153
Số lượt thích:
0 người
Tiết 32: Kiểu xâu (tiết 3)
Phần 1: Kiểm tra bài cũ
05
04
03
02
01
00
Câu 1: Trong ngôn ngữ lập trình Pascal, thủ tục Delete(a,b,c) thực hiện công việc gì trong các công viêc sau?
A. Xóa trong xâu a, tại vị trí b, xóa đi c kí tự
B. Xóa trong xâu a, tại vị trí c, xóa đi b kí tự
C. Xóa trong xâu c, tại vị trí b, xóa đi a kí tự
D. Xóa trong xâu c, tại vị trí a, xóa đi b kí tự
10
09
08
07
06
05
04
03
02
01
00
Câu 2:
Cho S:= ‘Tin hoc’; Tham chiếu tới phần tử thứ 4 của S ta được kết quả?
A. S[4] = ‘hoc’
B. S[4] = ‘’
C. S[4] = ‘h’
D. S[4] = ‘ ’
10
09
08
07
06
05
04
03
02
01
00
Câu 3:
Cú pháp khai báo tổng quát, đầy đủ của dữ liệu kiểu xâu là:
A. Var of String;
B. Var: String[độ dài lớn nhất của xâu];
C. Var < tên biến> String[độ dài lớn nhất của xâu];
D. Var < tên biến> of String[độ dài lớn nhất của xâu];
05
04
03
02
01
00
Câu 4:
Tìm vị trí xuất hiện đầu tiên
của xâu ‘hoa’ trong xâu S ta viết
A. I:= Pos(‘hoa’,S);
B. S1:= ‘hoa’; I:= Pos(S1,‘hoa’);
C. I:=Pos(S,‘hoa’)
D. I:=Pos(‘hoa’,‘hoa’)
10
09
08
07
06
05
04
03
02
01
00
Câu 5: Trong ngôn ngữ lập trình pascal,hai xâu được so sánh dựa trên?
A. Độ dài tối đa của hai xâu;
B. Mã của từng kí tự trong các xâu lần lượt
từ trái sang phải;
C. Độ dài thực sự của hai xâu;
D. Số lượng kí tự khác nhau trong xâu;
Tiết 32: Kiểu xâu (Tiết 3)
3. Một số ví dụ
Ví dụ 1: Nhập họ tên hai người vào hai biến xâu và đư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.
Hãy phát hiện và sửa lỗi sai nếu có của chương trình ví dụ 1
Phần 2: Tìm hiểu chương trình
Ý TƯỞNG
Xác định bài toán
Input: Nhập vào xâu a
Output: Đưa ra màn hình xâu a theo thứ tự ngược lại
Ví dụ 3: Nhập vào một xâu từ bàn phím và đưa ra màn hình xâu đó được viết theo thứ tự ngược lại.
-Tính độ dài xâu a là k.
- Lần lượt với i từ k về 1 đưa lên màn hình từng a[i]
Minh hoạ (ví dụ 3)
Var a: String;
i, k:Byte;
1
3
2
…
4
255
a
Write(‘Nhap vao mot xau: ’);
Readln(St);
k := length(a);
i
a
b
c
d
a
c
d
b
For i:= k downto 1 do
Write(a[i]);
Nhap vao mot xau:
4
d
c
b
a
3
2
1
Màn hình
6
5
7
20
15
1
8
Phần 2: Tìm hiểu chương trình
Ý TƯỞNG
Xác định bài toán
Input: Nhập vào xâu a
Output: Đưa ra màn hình xâu b không chứa dấu cách
Ví dụ 4: Nhập vào một xâu từ bàn phím và đưa ra màn hình xâu thu được từ nó bởi việc loại bỏ các dấu cách nếu có.
- Xác định độ dài xâu a.
- Tạo xâu rỗng b.
- Lần lượt với i từ 1 tới k, so sánh phần tử a[i] với dấu ‘ ‘, nếu a[i] <> ‘ ‘ ghép a[i] vào xâu b
Minh hoạ (ví dụ 4)
Var a, b:String;
1
2
4
3
…
5
255
a
Write(‘Nhap xau: ’);
Readln(a);
L
o
n
L
n
For i:= 1 to k do
If a[i] <> ‘ ‘ then b := b + a[i];
Nhap xau:
L
o
n
g
Màn hình
b
g
L
o
n
g
1
2
3
4
…
255
o
k := length(a);
b := ‘’;
g
x: byte;
Ket qua:
writeln (‘Ket qua: ’,b);
6
5
7
20
15
1
8
Phần 2: Tìm hiểu chương trình
Ý TƯỞNG
Xác định bài toán
Input: Nhập vào xâu s1
Output: Đưa ra màn hình xâu s2 gồm các chữ số trong s1
Ví dụ 5: Nhập vào một xâu kí tự s1, tạo xâu s2 gồm tất cả các chữ số trong s1 (giữ nguyên thứ tự xuất hiện của chúng) và đưa kết quả ra màn hình.
- Khởi tạo xâu s2 rỗng.
- Lần lượt với i tới chiều dài s1, so sánh phần tử a[i] có nằm trong đoạn kí tự ‘0’ tới ‘9’ hay không? Nếu thuộc đoạn ‘0’ tới ‘9’ thì cộng vào xâu s2.
Minh hoạ (ví dụ 5)
Var s1, s2: String;
1
2
4
3
…
5
255
s1
Write(‘Nhap xau s1: ’);
Readln(s1);
L
1
1
L
A
For i:= 1 to length (s1) do
If (‘0’=< s1[i]) and (s1[i] <= ‘9’) then s2 := s2 + s1[i];
Nhap xau s1:
1
1
1
Màn hình
s2
1
1
1
1
1
2
3
4
…
255
1
s2 := ‘’;
A
i: byte;
1
Ket qua:
1
Writeln (‘Ket qua: ‘,s2);
6
5
7
20
15
1
8
Phần 3: Củng cố
Câu 1: Em hãy ghép các câu lệnh vào chương trình cho sẵn thành một chương trình hoàn chỉnh và nêy ý nghĩa chương trình
Ý nghĩa chương trình: Nhập vào từ bàn phím xâu a, tạo xâu b gồm tất cả các chữ cái in hoa (giữ nguyên thứ tự xuất hiện của chúng) và đưa kết quả ra màn hình.
Đáp án:
Câu 2: Em hãy sửa chương trình ví dụ 5 SGK để cho biết có bao nhiêu chữ số có trong s1
Đáp án: Sửa câu lệnh s2 := ‘’; và s2:=s2+s1[i];
Thay tương ứng bằng câu lệnh d:= 0; và d:=d+1;
DẶN DÒ:
1. Ôn tập các thao tác với xâu.
2. Bài tập.
Bài tập 1: Viết chương trình nhập vào một xâu. In ra màn hình xâu đó sau khi đã đổi tất cả chữ in thường thành in hoa.
Bài tập 2: Viết chương trình nhập vào một xâu bất kỳ rồi in ra màn hình số từ của xâu đó.
Phần 1: Kiểm tra bài cũ
05
04
03
02
01
00
Câu 1: Trong ngôn ngữ lập trình Pascal, thủ tục Delete(a,b,c) thực hiện công việc gì trong các công viêc sau?
A. Xóa trong xâu a, tại vị trí b, xóa đi c kí tự
B. Xóa trong xâu a, tại vị trí c, xóa đi b kí tự
C. Xóa trong xâu c, tại vị trí b, xóa đi a kí tự
D. Xóa trong xâu c, tại vị trí a, xóa đi b kí tự
10
09
08
07
06
05
04
03
02
01
00
Câu 2:
Cho S:= ‘Tin hoc’; Tham chiếu tới phần tử thứ 4 của S ta được kết quả?
A. S[4] = ‘hoc’
B. S[4] = ‘’
C. S[4] = ‘h’
D. S[4] = ‘ ’
10
09
08
07
06
05
04
03
02
01
00
Câu 3:
Cú pháp khai báo tổng quát, đầy đủ của dữ liệu kiểu xâu là:
A. Var
B. Var
C. Var < tên biến> String[độ dài lớn nhất của xâu];
D. Var < tên biến> of String[độ dài lớn nhất của xâu];
05
04
03
02
01
00
Câu 4:
Tìm vị trí xuất hiện đầu tiên
của xâu ‘hoa’ trong xâu S ta viết
A. I:= Pos(‘hoa’,S);
B. S1:= ‘hoa’; I:= Pos(S1,‘hoa’);
C. I:=Pos(S,‘hoa’)
D. I:=Pos(‘hoa’,‘hoa’)
10
09
08
07
06
05
04
03
02
01
00
Câu 5: Trong ngôn ngữ lập trình pascal,hai xâu được so sánh dựa trên?
A. Độ dài tối đa của hai xâu;
B. Mã của từng kí tự trong các xâu lần lượt
từ trái sang phải;
C. Độ dài thực sự của hai xâu;
D. Số lượng kí tự khác nhau trong xâu;
Tiết 32: Kiểu xâu (Tiết 3)
3. Một số ví dụ
Ví dụ 1: Nhập họ tên hai người vào hai biến xâu và đư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.
Hãy phát hiện và sửa lỗi sai nếu có của chương trình ví dụ 1
Phần 2: Tìm hiểu chương trình
Ý TƯỞNG
Xác định bài toán
Input: Nhập vào xâu a
Output: Đưa ra màn hình xâu a theo thứ tự ngược lại
Ví dụ 3: Nhập vào một xâu từ bàn phím và đưa ra màn hình xâu đó được viết theo thứ tự ngược lại.
-Tính độ dài xâu a là k.
- Lần lượt với i từ k về 1 đưa lên màn hình từng a[i]
Minh hoạ (ví dụ 3)
Var a: String;
i, k:Byte;
1
3
2
…
4
255
a
Write(‘Nhap vao mot xau: ’);
Readln(St);
k := length(a);
i
a
b
c
d
a
c
d
b
For i:= k downto 1 do
Write(a[i]);
Nhap vao mot xau:
4
d
c
b
a
3
2
1
Màn hình
6
5
7
20
15
1
8
Phần 2: Tìm hiểu chương trình
Ý TƯỞNG
Xác định bài toán
Input: Nhập vào xâu a
Output: Đưa ra màn hình xâu b không chứa dấu cách
Ví dụ 4: Nhập vào một xâu từ bàn phím và đưa ra màn hình xâu thu được từ nó bởi việc loại bỏ các dấu cách nếu có.
- Xác định độ dài xâu a.
- Tạo xâu rỗng b.
- Lần lượt với i từ 1 tới k, so sánh phần tử a[i] với dấu ‘ ‘, nếu a[i] <> ‘ ‘ ghép a[i] vào xâu b
Minh hoạ (ví dụ 4)
Var a, b:String;
1
2
4
3
…
5
255
a
Write(‘Nhap xau: ’);
Readln(a);
L
o
n
L
n
For i:= 1 to k do
If a[i] <> ‘ ‘ then b := b + a[i];
Nhap xau:
L
o
n
g
Màn hình
b
g
L
o
n
g
1
2
3
4
…
255
o
k := length(a);
b := ‘’;
g
x: byte;
Ket qua:
writeln (‘Ket qua: ’,b);
6
5
7
20
15
1
8
Phần 2: Tìm hiểu chương trình
Ý TƯỞNG
Xác định bài toán
Input: Nhập vào xâu s1
Output: Đưa ra màn hình xâu s2 gồm các chữ số trong s1
Ví dụ 5: Nhập vào một xâu kí tự s1, tạo xâu s2 gồm tất cả các chữ số trong s1 (giữ nguyên thứ tự xuất hiện của chúng) và đưa kết quả ra màn hình.
- Khởi tạo xâu s2 rỗng.
- Lần lượt với i tới chiều dài s1, so sánh phần tử a[i] có nằm trong đoạn kí tự ‘0’ tới ‘9’ hay không? Nếu thuộc đoạn ‘0’ tới ‘9’ thì cộng vào xâu s2.
Minh hoạ (ví dụ 5)
Var s1, s2: String;
1
2
4
3
…
5
255
s1
Write(‘Nhap xau s1: ’);
Readln(s1);
L
1
1
L
A
For i:= 1 to length (s1) do
If (‘0’=< s1[i]) and (s1[i] <= ‘9’) then s2 := s2 + s1[i];
Nhap xau s1:
1
1
1
Màn hình
s2
1
1
1
1
1
2
3
4
…
255
1
s2 := ‘’;
A
i: byte;
1
Ket qua:
1
Writeln (‘Ket qua: ‘,s2);
6
5
7
20
15
1
8
Phần 3: Củng cố
Câu 1: Em hãy ghép các câu lệnh vào chương trình cho sẵn thành một chương trình hoàn chỉnh và nêy ý nghĩa chương trình
Ý nghĩa chương trình: Nhập vào từ bàn phím xâu a, tạo xâu b gồm tất cả các chữ cái in hoa (giữ nguyên thứ tự xuất hiện của chúng) và đưa kết quả ra màn hình.
Đáp án:
Câu 2: Em hãy sửa chương trình ví dụ 5 SGK để cho biết có bao nhiêu chữ số có trong s1
Đáp án: Sửa câu lệnh s2 := ‘’; và s2:=s2+s1[i];
Thay tương ứng bằng câu lệnh d:= 0; và d:=d+1;
DẶN DÒ:
1. Ôn tập các thao tác với xâu.
2. Bài tập.
Bài tập 1: Viết chương trình nhập vào một xâu. In ra màn hình xâu đó sau khi đã đổi tất cả chữ in thường thành in hoa.
Bài tập 2: Viết chương trình nhập vào một xâu bất kỳ rồi in ra màn hình số từ của xâu đó.
 









Các ý kiến mới nhất