Bài 12. Kiểu xâu
Chia sẻ bởi Phạm Thúy Vân |
Ngày 10/05/2019 |
47
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:
Tiết 32: Kiểu xâu (tiết 2)
Phần 1: Khởi động
Câu 1: Trong ngôn ngữ lập trình Pascal, tthủ tục
Delete(a,b,c)
thực hiện công việc gì trong các công viêc sau?
Xóa trong xâu a, tại vị trí b, xóa đi c kí tự
Xóa trong xâu c, tại vị trí b, xóa đi a kí tự
Xóa trong xâu c, tại vị trí a, xóa đi b kí tự
Xóa trong xâu a, tại vị trí c, xóa đi b kí tự
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ả?
S[4] = ‘hoc’
S[4] = ‘h’
S[4] = ‘ ‘
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à:
Var of String
Var < tên biến> String[độ dài lớn nhất của xâu];
Var < tên biến> of String[độ dài lớn nhất của xâu];
Var: String[độ dài lớn nhất của xâu];
10
09
08
07
06
05
04
03
02
01
00
Câu 4: Tìm vị trí xuất hiện đầu a của xâu ‘hoa’ trong S ta viết:
S1:= ‘hoa’; I:= Pos(S1,‘hoa’);
I:= Pos(‘hoa’,S);
I:=Pos(‘hoa’,‘hoa’)
I:=Pos(S,‘hoa’)
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?
Độ dài tối đa của hai xâu
Độ dài thực sự của hai xâu;
Số lượng kí tự khác nhau trong xâu;
Mã của từng kí tự trong các xâu lần lượt
từ trái sang phải
10
09
08
07
06
05
04
03
02
01
00
Phần 2: Tìm hiểu chương trình
Phần 2: Tìm hiểu chương trình
Xác định bài toán
Input: Nhập vào xâu a, xâu b
Output: Thông báo trùng nhau hoặc không trùng nhau
Ví dụ 2: Nhập hai xâu từ bàn phím, kiểm tra 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 hay không?
Ý NGHĨA ĐOẠN LỆNH
Xác định độ dài xâu b để biết vị trí của kí tự cuối cùng xâu b. Câu lệnh rẽ nhánh đầy đủ kiểm tra nếu kí tự đầu của xâu a bằng kí tự cuối xâu b thì đưa ra thông báo ‘Trung nhau’ ngược lại ‘Khac nhau’.
Minh họa (ví dụ 2)
Var a, b:String;
1
2
4
3
…
5
255
a
Write(‘Nhap vao xau thu nhat: ’);
Readln(a);
t
r
n
a
t
a
n
x := length(b);
If a[1]= b[x] then write (‘Trung nhau’)
else write (‘Khac nhau’);
Nhap vao xau thu nhat:
t
h
i
e
Màn hình
b
g
t
h
i
e
1
2
3
4
5
…
255
t
r
Write(‘Nhap vao xau thu hai: ’);
Readln(b);
g
x: byte;
Nhap vao xau thu hai:
t
Trung nhau
6
5
7
20
15
1
8
Phần 2: Tìm hiểu chương trình
Ý NGHĨA ĐOẠN LỆNH
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. Sử dụng vòng lặp For giá trị cuối downto giá trị đầu để sau đó in ra các kí tự của chuỗi theo chiều ngược lạ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
Ý NGHĨA ĐOẠN LỆNH
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.Dùng vòng lặp For để duyệt từ đầu xâu tới cuối xâu. Kiểm tra từng kí tự xâu a. Nếu kí tự nào khác dấu cách thì cộng vào xâu b qua phép toán ghép xâu
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
Ý NGHĨA ĐOẠN LỆNH
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. Sử dụng vòng lặp For giá trị đầu là 1 to giá trị cuối là độ dài xâu s1 để duyệt từng phần tử từ đầu đến cuối xâu. Câu lệnh If kiểm tra từng phần tử của xâu 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(a);
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
b := ‘’;
A
i: byte;
1
Ket qua:
1
Writeln (‘Ket qua: ‘,s2);
6
5
7
20
15
1
8
Phần 3: Về đích
Câu hỏi: 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
(Viết thành chương trình hoàn chỉ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 (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 d:= 0; s2:=s2+s1[i];
Thay tương ứng bằng câu lệnh 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: Khởi động
Câu 1: Trong ngôn ngữ lập trình Pascal, tthủ tục
Delete(a,b,c)
thực hiện công việc gì trong các công viêc sau?
Xóa trong xâu a, tại vị trí b, xóa đi c kí tự
Xóa trong xâu c, tại vị trí b, xóa đi a kí tự
Xóa trong xâu c, tại vị trí a, xóa đi b kí tự
Xóa trong xâu a, tại vị trí c, xóa đi b kí tự
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ả?
S[4] = ‘hoc’
S[4] = ‘h’
S[4] = ‘ ‘
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à:
Var
Var < tên biến> String[độ dài lớn nhất của xâu];
Var < tên biến> of String[độ dài lớn nhất của xâu];
Var
10
09
08
07
06
05
04
03
02
01
00
Câu 4: Tìm vị trí xuất hiện đầu a của xâu ‘hoa’ trong S ta viết:
S1:= ‘hoa’; I:= Pos(S1,‘hoa’);
I:= Pos(‘hoa’,S);
I:=Pos(‘hoa’,‘hoa’)
I:=Pos(S,‘hoa’)
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?
Độ dài tối đa của hai xâu
Độ dài thực sự của hai xâu;
Số lượng kí tự khác nhau trong xâu;
Mã của từng kí tự trong các xâu lần lượt
từ trái sang phải
10
09
08
07
06
05
04
03
02
01
00
Phần 2: Tìm hiểu chương trình
Phần 2: Tìm hiểu chương trình
Xác định bài toán
Input: Nhập vào xâu a, xâu b
Output: Thông báo trùng nhau hoặc không trùng nhau
Ví dụ 2: Nhập hai xâu từ bàn phím, kiểm tra 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 hay không?
Ý NGHĨA ĐOẠN LỆNH
Xác định độ dài xâu b để biết vị trí của kí tự cuối cùng xâu b. Câu lệnh rẽ nhánh đầy đủ kiểm tra nếu kí tự đầu của xâu a bằng kí tự cuối xâu b thì đưa ra thông báo ‘Trung nhau’ ngược lại ‘Khac nhau’.
Minh họa (ví dụ 2)
Var a, b:String;
1
2
4
3
…
5
255
a
Write(‘Nhap vao xau thu nhat: ’);
Readln(a);
t
r
n
a
t
a
n
x := length(b);
If a[1]= b[x] then write (‘Trung nhau’)
else write (‘Khac nhau’);
Nhap vao xau thu nhat:
t
h
i
e
Màn hình
b
g
t
h
i
e
1
2
3
4
5
…
255
t
r
Write(‘Nhap vao xau thu hai: ’);
Readln(b);
g
x: byte;
Nhap vao xau thu hai:
t
Trung nhau
6
5
7
20
15
1
8
Phần 2: Tìm hiểu chương trình
Ý NGHĨA ĐOẠN LỆNH
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. Sử dụng vòng lặp For giá trị cuối downto giá trị đầu để sau đó in ra các kí tự của chuỗi theo chiều ngược lạ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
Ý NGHĨA ĐOẠN LỆNH
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.Dùng vòng lặp For để duyệt từ đầu xâu tới cuối xâu. Kiểm tra từng kí tự xâu a. Nếu kí tự nào khác dấu cách thì cộng vào xâu b qua phép toán ghép xâu
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
Ý NGHĨA ĐOẠN LỆNH
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. Sử dụng vòng lặp For giá trị đầu là 1 to giá trị cuối là độ dài xâu s1 để duyệt từng phần tử từ đầu đến cuối xâu. Câu lệnh If kiểm tra từng phần tử của xâu 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(a);
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
b := ‘’;
A
i: byte;
1
Ket qua:
1
Writeln (‘Ket qua: ‘,s2);
6
5
7
20
15
1
8
Phần 3: Về đích
Câu hỏi: 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
(Viết thành chương trình hoàn chỉ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 (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 d:= 0; s2:=s2+s1[i];
Thay tương ứng bằng câu lệnh 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 đó.
* 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ẻ: Phạm Thúy Vân
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)