Bài 12. Kiểu xâu

Chia sẻ bởi Trần Hữu Duy | Ngày 10/05/2019 | 50

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: Em hãy cho biết xâu là gì? Cách khai báo xâu? Cho ví dụ?




Câu 2: Cho xâu A: ‘chuc mung nam moi’
Em hãy cho biết kết quả:
a. Delete(A, 10, 8)
b. Pos(‘nam’, A)
c. Length(A)
KIỂM TRA BÀI CŨ
Đáp án
 Xâu là dãy các kí tự trong bộ mã ASCII, mỗi
kí tự được gọi là một phần tử của xâu, được đặt
trong dấu nháy đơn ‘’.
Đáp án
Khai báo xâu:
Var : string[độ dài lớn nhất của xâu];
‘chuc mung’
11
17
Chương IV: Kiểu Dữ liệu Có Cấu Trúc
§12. KIỂU XÂU

I. Khái niệm xâu
II. Khai báo dữ liệu xâu
III. Các thao tác xử lý xâu
IV. Một số ví dụ



IV. Một số ví dụ
Ví dụ 1:
Chương trình dưới đây nhập họ tên của 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.
 Xác định bài toán:
Input: nhập họ tên của hai người vào hai biến xâu
Output: đư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 và output của ví dụ này là gì nhỉ?
IV. Một số ví dụ
Ví dụ 1:
Chương trình dưới đây nhập họ tên của 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.

Cần khai báo bao nhiêu biến xâu? Viết khai báo?

 Khai báo 2 biến xâu
 Var A, B: string;
Trong ví dụ này, ta cần sử dụng hàm nào để giải quyết yêu cầu đặt ra?
Sử dụng hàm length
để tính độ dài của xâu.
IV. Một số ví dụ
Ví dụ 1:
Chương trình dưới đây nhập họ tên của 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.

Sử dụng phép toán nào trong ví dụ này?
Sử dụng phép so sánh > hoặc <
Viết biểu thức so sánh độ dài của hai xâu?
Length(A) > length(B)
IV. Một số ví dụ
Ví dụ 1:

Các bước
Thể hiện bằng pascal
Bước 1: Khai báo xâu


Bước 2: Nhập xâu


Bước 3: Xử lý xâu




Var A, B: String;
Begin
write (‘Nhap xau thu 1: ’);
readln (A);
write (‘Nhap xau thu 2: ’);
readln (B);
if length(A) > length(B) then
write (A)
else
write(B);
readln
End.
Program Vidu_1;
Uses crt:
Var A, B: String;
Begin
clrscr;
write (‘Nhap xau thu 1: ’);
readln (A);
write (‘Nhap xau thu 2: ’);
readln (B);
if length(A) > length(B) then
write (A)
else
write(B);
readln
End.
IV. Một số ví dụ
Ví dụ 1:
Chương trình dưới đây nhập họ tên của 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.

Nếu hai xâu bằng nhau, muốn in ra xâu nhập trước thì phải làm sau đây?
IV. Một số ví dụ
Ví dụ 1:

Các bước
Thể hiện bằng pascal
Bước 1: Khai báo xâu


Bước 2: Nhập xâu


Bước 3: Xử lý xâu




Var A, B: String;
Begin
write (‘Nhap xau thu 1: ’);
readln (A);
write (‘Nhap xau thu 2: ’);
readln (B);
if length(A) length(B) then
write (A)
else
write(B);
readln
End.
>=
>
Có hai xâu:
S1: ‘Hong Lan’
S2: ‘My hanh’

S1[1] có trùng với S2[length(S2)] không?
IV. Một số ví dụ
Ví dụ 2:
Viết chương trình nhập hai xâu từ bàn phím, và 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ứ 2 không.
 Xác định bài toán:
Input: nhập vào hai xâu từ bàn phím.
Output: 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 hay không.

Input và output của ví dụ này là gì nhỉ?
IV. Một số ví dụ
Ví dụ 2:
Viết chương trình nhập hai xâu từ bàn phím, và 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ứ 2 không.

Khai báo những biến nào?
khai báo 2 biến xâu A, B và 1 biến giá trị x.
Truy cập đến phần tử đầu tiên của xâu A, và phần tử cuối cùng của xâu B như thế nào?
+ Phần tử đầu tiên của A: A[1]
+ Phần tử cuối của xâu B: B[length(B)]
IV. Một số ví dụ
Ví dụ 2:

Các bước
Thể hiện bằng pascal
Bước 1: Khai báo xâu


Bước 2: Nhập xâu


Bước 3: Xử lý xâu




Var A, B: String;
x: byte;
Begin
write (‘Nhap xau thu 1: ’);
readln (A);
write (‘Nhap xau thu 2: ’);
readln (B);
x := length(B);
if A[1] = B[x] then
write(‘Trung nhau’)
else
write(‘Khac nhau’
readln
End.

Program Vidu_2;
Uses crt:
Var A, B: String;
x: byte;
Begin
clrscr;
write (‘Nhap xau thu 1: ’);
readln (A);
write (‘Nhap xau thu 2: ’);
readln (B);
x:= length(B);
if A[1]=B[x] then
write(‘Trung nhau’)
else
write(‘khac nhau’);
readln
End.

Xâu S: ‘Lop 11C2’

S: ‘2C11 poL’
IV. Một số ví dụ
Ví dụ 3:
Viết 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 đó nhưng theo thứ tự ngược lại
 Xác định bài toán:
Input: Một xâu nhập vào từ bàn phím.
Output: xâu được viết theo thứ tự ngược lại.
Input và output của ví dụ này là gì nhỉ?
IV. Một số ví dụ
Ví dụ 3:
Viết 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 đó nhưng theo thứ tự ngược lại

Để in ra màn hình một chuỗi theo thứ tự ngược lại ta phải thực hiện ra sao?
 Dùng câu lệnh lập for - do dạng lập lùi:
for :=
downto do ;
IV. Một số ví dụ
Ví dụ 2:

Các bước
Thể hiện bằng pascal
Bước 1: Khai báo xâu


Bước 2: Nhập xâu


Bước 3: Xử lý xâu




Var A: String;
i, k: byte;
Begin
write (‘Nhap xau: ‘);
readln (A);
k := length(A);
for i:=k downto 1 do write(A[i]);
readln
End.


Program Vidu_3;
Uses crt:
Var A: String;
k, i: byte;
Begin
clrscr;
write (‘Nhap xau: ’);
readln (A);
k:= length(B);
for i:= K downto 1 do write(A[i]);
readln
End.


Xâu S: ‘cong nghe thong tin’

S: ‘congnghethongtin’
IV. Một số ví dụ
Ví dụ 4:
Viết 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 từ nó bởi việc loại bỏ các dấu cách.
 Xác định bài toán:
Input: Một xâu nhập vào từ bàn phím.
Output: xâu mới thu được từ xâu vừa nhập bởi việc loại bỏ dấu cách.
Input và output của ví dụ này là gì nhỉ?
IV. Một số ví dụ
Ví dụ 4:

Các bước
Thể hiện bằng pascal
Bước 1: Khai báo xâu

Bước 2: Nhập xâu

Bước 3: Xử lý xâu
- Khởi tạo xâu rỗng.
- Lần lượt duyệt qua
các Phần tử của xâu
mới nhập. Nếu phần
tử duyệt khác dấu
cách thì bổ sung
vào xâu rỗng.


Var i, k : byte ;
a, b : String;
Begin
write (‘Nhap xau: ’);
readln (a);
k := length(a);
b := ‘’;
for i:= 1 to k do
if a[i] <> ‘ ’ then
b: = b + a[i];
write(‘ket qua: ’, b);
readln
End.

Program Vidu_4;
Uses crt;
Var i, k : byte ;
a, b : String;
Begin
clrscr;
write (‘Nhap xau: ’);
readln (a);
k := length(a);
b := ‘’;
for i:= 1 to k do
if a[i] <> ‘ ’ then
b: = b + a[i];
write(‘ket qua: ’, b);
readln
End.
IV. Một số ví dụ
Ví dụ 4:
Viết 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 từ nó bởi việc loại bỏ các dấu cách.

Ta có thể thực hiện yêu cầu của ví dụ 4 bằng thủ tục delete được không?
Program Vidu_4;
Uses crt;
Var i, k, vt : byte ;
a, : String;
Begin
clrscr;
write (‘Nhap xau: ’);
readln (a);
k := length(a);
for i:= 1 to k do
begin
vt:= pos(‘ ‘, a );
delete(a, vt, 1);
end;
write(‘ket qua: ’, a);
readln
End.

Xâu S: ‘Lop 11C2’

S: ‘112’
IV. Một số ví dụ
Ví dụ 5:
Viết chương trình nhập vào từ bàn phím xâu S1, đưa ra màn hình xâu S2 gồm tất cả các chữ số có trong S1.
 Xác định bài toán:
Input: Một xâu S1 vào từ bàn phím.
Output: xâu S2 thu được từ xâu S1 bởi việc chỉ lấy những kí tự số có trong S1 .
Input và output của ví dụ này là gì nhỉ?
IV. Một số ví dụ
Ví dụ 5:

Các bước
Thể hiện bằng pascal
Bước 1: Khai báo xâu

Bước 2: Nhập xâu

Bước 3: Xử lý xâu
- Khởi tạo xâu rỗng.
- Lần lượt duyệt qua
các Phần tử của xâu
mới nhập. Nếu phần
tử duyệt thuộc kí tự
số thì bổ sung vào
xâu rỗng.


Var i, k : byte ;
S1, S2 : String;
Begin
clrscr;
write (‘Nhap xau: ’);
readln (S1);
S2 := ‘’;
for i:= 1 to k do
if (‘0’<= S1[i]) and (S1[i] <=‘9’) then
S2 := S2 + S1[i];
write(‘ket qua: ’, S2);
readln
End.
Program Vidu_5;
Uses crt;
Var i, k : byte ;
S1, S2 : String;
Begin
clrscr;
write (‘Nhap xau: ’);
readln (S1);
S2 := ‘’;
for i:= 1 to k do
if (‘0’<= S1[i]) and (S1[i] <=‘9’) then
S2 := S2 + S1[i];
write(‘ket qua: ’, S2);
readln
End.


 Các lệnh thường dùng khi thao tác với xâu.
 Một số thủ tục và hàm chuẩn khi xử lý xâu.
 Cách tham chiếu tới từng phần tử của xâu.
 Cách tạo một xâu mới từ một xâu rỗng, dùng phép ghép, ghép dần một kí tự lấy từ xâu ban đầu.
 Dùng vòng lặp for-do để duyệt lần lượt tất cả các kí tự của một xâu.
Lưu ý

 Thực hiện các câu hỏi và bài tập 1-10 trang 79 – 80 trong sách giáo khoa.
 Xem trước nội dung bài toán 1 của bài tập thực hành 4 trang 65, 66 sách giáo khoa.
Dặn dò
Giáo viên hướng dẫn: Nguyễn Thị Hồng Diễm
Bài học đã kết thúc
thân ái chào thầy cô cùng các em!
* 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 Hữu Duy
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)