Giáo án số 2
Kiểu dữ liệu xâu
Giảng viên hướng dẫn: Thầy Trần Doãn Vinh.
Sinh viên thực hiện: Lê Văn Đảm.
Lớp: k56A_CNTT.
A.Mục đích yêu cầu:
Biết xâu là một dãy ký tự (có thể coi xâu là một mảng một
chiều) .
Biết cách khai báo xâu, truy cập phần tử của xâu .
Sử dụng được một số thủ tục, hà thông dụng về xâu .
Viết được một số chương trình đơn giản có sử dụng xâu .
⇒ Giúp học sinh nắm được kiến thức liên quan tới xâu; biết cách vận
dụng viết một số chương trình đơn giản liên quan tới xâu; từ đó làm cho học
sinh yêu thích và hứng thú với môn học.
B.Phương pháp – phương tiện
1. Phương pháp
Kết hợp các phương pháp giảng dạy như thuyết trình, vấn đáp, vẽ hình
minh hoạ…
2. Phương tiện
o Sách giáo khoa Tin học 11.
o Vở ghi lý thuyết Tin học 11.
o Sách tham khảo (nếu có).
o Máy tính, máy chiếu, màn chiếu.
C.Tiến trình lên lớp, nội dung bài giảng
I. Ổn định lớp (1’)
Yêu cầu lớp trưởng báo cáo sĩ số
II. Kiểm tra bài cũ và gợi động cơ (5’)
Trong bài học trước chúng ta đã được làm quen với một trong số
những kiểu dữ liệu có cấu trúc đó là kiểu mảng và biến có chỉ số.
Câu hỏi kiểm tra bài cũ :
1.Em hãy cho biết trong những cách khai báo sau, cách khai báo nào
đúng (sai)? Nếu sai hãy sửa lại cho đúng:
Var mangA = array [1..max] of real;
Var mangB : array [1..100, 1..50] of real;
Type
Array = array [1..n] of real;
Type
Array : array [1..10,1..20] of integer;
Đặt vấn đề: Để lưu trữ và xử lý họ tên của một người, các kiểu dữ liệu đã
học có đáp ứng được không?
III. Nội dung bài giảng
Hoạt động của thầy và trò Nội dung Thời
gian
Phân tích các phương
án của học sinh, từ đó đưa
ra yêu cầu cần sử dụng
một kiểu mới : Kiểu xâu .
Giới thiệu một số khái
niệm và thao tác thường
dùng khi làm việc với xâu
ký tự trong lập trình nói
chung .
Thuyết trình:
-Người lập trình phải nắm
được Xâu là gì? Thế nào
là độ dài của xâu?
-Giới thiệu một số khái
niệm và thao tác thường
dùng khi làm việc với xâu
ký tự trong lập trình nói
chung .
-Ta nên lựa chọn cách
khai báo biến kiểu xâu
cho phù hợp.
-Đây là cách khai báo
trong ngôn ngữ Pascal,
trong các ngôn ngữ khác
nhau có thể có cách khai
báo khác nhau .
Độ dài tối đa của xâu phụ
Một số khái niệm:
- Xâu là một dãy kí tự trong bảng mã ASCII .
- Mỗi kí tự được gọi là một phần tử của xâu .
- Số lượng kí tự trong xâu được gọi là độ dài
của xâu .
- Xâu có độ dài bằng 0 gọi là xâu rỗng.
- Tham chiếu tới phần tử trong xâu được xác
định thông qua chỉ số của phần tử trong
xâu .
- Chỉ số phần tử trong xâu thường được đánh
số là 1 .
- Trong ngôn ngữ Pacal, tham chiếu tới phần
tử thường được viết :
<Tên biến xâu>[chỉ số]
1.Khai báo kiểu dữ liệu xâu
- Để khai báo kiểu dữ liệu xâu, Pascal dùng tên
riêng STRING. Độ dài tối đa của xâu được viết
trong [ ] sau từ khóa STRING . Khai báo như
sau :
VAR <Tên biến > : STRING [độ dài lớn
nhất của xâu];
thuộc vào ngôn ngữ lập
trình, thường là 255 ký tự.
Thuyết trình:
-Để thao tác xử lí xâu ta
cần chú ý tới điều gi?
-Khi làm việc với các dữ
liệu kiểu xâu ta cần chú ý
tới thứ tự ưu tiên như thế
nào?
-Các phép so sánh xâu
phụ thuộc vào điều gì?(chỉ
số của kí tự trong bảng mã
ASCII)
-Lấy ví dụ minh hoạ cho
các thủ tục và hàm.(sgk)
Xét ví dụ như sau : Có
xâu kí tự :‘ nGuyen vaN
A ’
Hỏi cần có các thao
tác gì để chỉnh sửa xâu kí
tự này ? (cần đưa xâu về
dạng ‘Nguyen Van A’)
Phân tích ý kiến và gợi ý
để các em nhận ra cần :
- Xóa bớt một
số dấu cách .
- Chuyển chữ
hoa về chữ thường
và ngược lại .
- Ví dụ: Var hoten : string [25];
Ta cũng có thể khai báo
var hoten : string [];
Khi đó độ dài lớn nhất của xâu được ngầm định
là 255.
- Chú ý: Hằng xâu kí tự được đặt trong cặp
nháy đơn‘ ’.
2.Các thao tác xử lí xâu
- Tham chiếu tới phần tử của xâu được xác
định bởi tên xâu và chỉ số đặt trong [].
- Các kí tự được đánh số bắt đầu từ 1.Có thể
xem xâu là mảng một chiều mà mỗi phần tử là
một kí tự.
- Với dữ liệu kiểu xâu có thế thực hiện phép
toán ghép xâu và phép toán quan hệ
Phép ghép xâu (kí hiệu là +): ‘lớp’ + ’k56a’
cho xâu kết quả là: ‘lớp k56a’.
Các phép so sánh =, <>, <, >, <=, >= Pascal
tự động so sánh lần lượt từ kí tự từ trái sang
phải.Ví dụ : ‘AB’ < ‘AC’, ‘ABC’ > ‘ABB’,
‘ABC’ <’ABCD’.
Một số thủ tục chuẩn dùng để xử lí
xâu :
• Delete(st, vt, n) : xoá n kí tự của xâu st từ vị
trí vt
• Inser(s1, s2, vt) : chèn xâu s1 vào xâu s2 bắt
đầu ở vị trí vt.
• Val(St,x,m) Đổi giá trị xâu St thành số ghi
giá trị vào biến X, nếu không đổi được thì vị
trí gây lỗi ghi trong m, nếu đổi thành công
thì m = 0
• Str(X,St) chuyển số X thành xâu kí tự lưu
Đưa ra một số câu hỏi :
- Làm sao biết
một ký tự là dấu
cách ?
- Làm sao để
xóa đi một vài kí
tự ?
- Làm sao để
thêm vào một xâu
một vài kí tự ?
- Làm sao để
có được chữ in hoa
tương ứng với chữ
thường.
- Làm sao có
được chữ cái
thường tương ứng
với chữ hoa ?
- Làm sao biết
xâu hiện có bao
nhiêu kí tự ?
Từ đó đưa ra các thủ tục
chuẩn và hàm chuẩn của
Pascal thường dùng để xử
lí xâu .
trong St
Một số hàm chuẩn :
• Copy(St,vt,n) sao chép từ xâu St n kí tự từ
vị trí vt .
• Length(s): cho giá trị là độ dài xâu s
• Pos (s1, s2): cho vị trí xuất hiện đầu tiên của
xâu s1 trong xâu s2
• Upcase(ch): cho chữ cái viết hoa ứng với
chữ cái trong ch
• Pos(S1,S2): tìm vị trí xuất hiện đầu tiên của
S1 trong S2 .
• Length(St): cho độ dài xâu St .
• Upcase(ch): cho chữ cái viết hoa tương ứng
với chữ thường trong ch .
• CHR(X): cho kí tự có mã X trong bảng mã
ASCII .
• Ord(ch): cho mã của kí tự ch trong bảng mã
.
3.Ví dụ
Ví dụ 1:Viết chương trình nhập tên của hai
người từ bàn phím, đưa ra màn hình tên dài
hơn, nếu bằng nhau thì đưa ra xâu nhập sau.
Program vidu1;
User crt;
Var
Xau1, Xau2 : string;
Begin
Clrscr;
Write(‘nhap ho ten thu nhat ’);
Readln(Xau1);
Write(‘nhap ho ten thu hai ’);
Readln(Xau2);
If length(Xau1) > length(Xau2) then
write (Xau1)
Học sinh cùng thầy xây
dựng chương trình.
Thầy đưa ra các trường
hợp có thể xảy ra và cùng
học sinh tìm cách giải
quyết.
Ví dụ: khi nhập một xâu
vào ta có thể gặp vấn đề
như :xâu nhập vào có thể
là xâu rỗng, hay xâu đó có
nhiều dấu cách không cần
thiết.
Else write(Xau2);
readln
End.
Ví dụ 2: Nhập 1 xâu, viết ra màn hình xâu đó
theo thứ tự ngược lại của các ký tự trong xâu .
Program vd3 ;
Uses crt ;
Var
x : String ;
k : Byte ;
Begin
Clrscr ;
Write('Nhap xau : ') ;
Readln(x) ;
For k := length(x) downto 1 do
Write(x[i]) ;
Readln ;
End .
Ví dụ 3:Viết chương trình nhập xâu từ bàn
phím đưa ra màn hình xâu thu được sau khi đã
loại bỏ các dấu cách.
Progam VD2;
User crt;
Var
x : string;
i, : byte;
Begin
Write (‘nhap xau ’); readln (x);
For i:=1 to length(x) do
If x[i]= ‘ ’ then delete(x,i,1);
Writeln(‘ xau khi da loai bo dau cach
la: ’,x);