Như vậy, kết quả trả về của các hàm xử lí xâu có thể là giá trị số, là kí tự hoặc xâu tuỳ theo hàm cụ thể?. Nhưng các em cần lưu ý truyền tham số cho hàm và thủ tục cần phải hợp lí, chẳ[r]
Trang 1Tuần : 25 Ngày soạn / / 09
Chương IV KIỂU DỮ LIỆU CÓ CẤU TRÚC
§12 KIỂU XÂU (t2)
A MỤC TIÊU
1 Kiến thức:
- Biết được lợi ích của các hàm và thủ tục liên quan đến xâu trong NNLT Pascal
- Nắm được cấu trúc chung và chức năng của một số hàm và thủ tục liên quan đến xâu trong NNLT Pascal
- Nhận biết và bước đâu sử dụng được một số hàm và thủ tục để giải quyết một số bài tập đơn giản liên quan
B PHƯƠNG PHÁP
Hỏi đáp
GV gợi mở để HS tham gia vào bài học
C CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH
1 Giáo viên: Giáo án, giáo cụ
2 Học sinh: Sách giáo khoa
D TIẾN TRÌNH LÊN LỚP
I Ổn định lớp:
- Chào, lớp trưởng báo cáo sỉ số lớp
II Kiểm tra bài cũ:
III Bài mới:
1.1 Đặt vấn đề:
Hôm nay chúng ta tiếp tục nghiên cứu về các thao tác xử lí xâu bằng cách dùng một
số hàm và thủ tục
1.2 Triển khai bài mới:
Hđ1 Tìm hiểu một số hàm và thủ tục liên
quan đến xâu
GV: Trong tiết trước ta đã biết một số phép
toán trên xâu là phép ghép xâu và các phép
so sánh hai xâu Hôm nay chúng ta tiếp tục
nghiên cứu một số thao tác xử lí xâu bằng
cách dùng hàm và thủ tục
GV: Trong những bài học trước, chúng ta đã
từng biết qua hàm chưa? Đã học các hàm nào?
HS: Nhớ lại, trả lời (đã học về một số hàm số
học)
GV: Đọc SGK, hãy cho biết cấu trúc và chức
năng một số hàm xử lí xâu
HS: Nghiên cứu SGK, trả lời
GV: Giảng giải từng hàm cụ thể
Mỗi hàm đưa ra một số ví dụ,
yêu cầu HS cho biết kết quả
HS: Trả lời kết quả, bổ sung, nhận xét
GV: Nhận xét, hoàn chỉnh
GV: Ngoài các hàm đã nghiên cứu trên,
trong NNLT Pascal còn cung cấp cho ta một
số các thủ tục xử lí xâu: thủ tục Delete và
Insert Hãy tìm hiểu cấu trúc và chức năng
của hai thủ tục này
KIỂU XÂU (tt)
2 Các thao tác xử lí xâu
* Hàm và thủ tục:
Thủ tục Delete(st, vt, n) thực hiện xóa n kí tự trong
xâu st bắt đầu từ vị trí vt Vd:
‘Viet Nam’ Delete(st, 5, 4) ‘Viet’
‘Khanh Hoa’ Delete(st, 1, 5) ‘ Hoa’
Thủ tụ Insert(st1, st2, vt) thực hiện chèn xâu st1 và xâu
st2 bắt đầu từ vị trí vt
TIẾT
30
‘ Ranh’ ‘TX Cam’ Insert(st1,st2,7) ‘TX Cam
Ranh’
‘ PC ’ ‘IBM486’ Insert(st1,st2,4) ‘IBM PC
486’
Trang 2HS: Nghiên cứu SGK, trình bày
GV: Giải thích lại từng thủ tục Đối với từng
thủ tục, GV nêu ví dụ, yêu cầu một số học
sinh cho biết kết quả thực hiện
GV: Nhận xét
GV: Các em cần lưu ý, như đã biết ở tiết học
trước, ta có thể xem xâu là mảng một chiều
mà mỗi phần tử là một kí tự Nhưng kiểu
mảng một chiều với các phần tử thuộc kiểu
char khác với kiểu xâu nên không thể áp
dụng các thao tác xử lí xâu cho mảng
GV: Các em hãy nhận xét về sự khác nhau
giữa hàm và thủ tục?
HS: Đưa ra nhận xét, HS khác bổ sung
GV: Tổng hợp các nhận nhét
GV: Hãy nhận xét về kết quả trả về của từng
hàm? (Hàm Copy?, hàm Pos?, hàm Length?
Hàm Upcase?)
HS: Hàm Copy cho kết quả là một xâu, hàm
Pos và hàm Length cho kết quả là một số,
hàm Upcase cho kết quả là một kí tự Như
vậy, kết quả trả về của các hàm xử lí xâu có
thể là giá trị số, là kí tự hoặc xâu tuỳ theo
hàm cụ thể
GV: Cho biết kết quả của chương trình sau
Var s1, s2: string;
Begin
S1 := ‘ em’;
S2 := ‘Truong’;
Insert(s1, s2, 10);
Write(s2);
end
HS: Một số cho kết quả in ra màn hình là:
Truong em
Một số thắc mắc về vị trí chèn s1 vào s2
(10 > length(s2))
GV: Mặc dù thủ tục trên vẫn thực hiện chèn
được vào xâu s1 vào xâu s2 và chương trình
cho kết quả đúng như mong muốn Nhưng
các em cần lưu ý truyền tham số cho hàm và
thủ tục cần phải hợp lí, chẳng hạn trong hàm
insert trên thì để thêm s1 vào cuối xâu s2 ta
nên viết là insert(s1, s2, length(s2)+1)
Hđ2 Làm một số bài tập liên quan
GV: Cho HS quan sát một số chương trình
(đã chuẩn bị trên giấy khổ lớn), yêu cầu HS
trả lời các câu hỏi do GV đặt ra
HS: Quan sát chương trình Vd1, suy nghĩ
GV: Với từng câu hỏi, gọi một số HS trả lời
HS: Lần lượt trả lời
GV: Nhận xét, đưa ra kết quả đúng
1 Kết quả in ra màn hình:
Truong emNgo Gia Tu than yeu
Hàm Copy(st, vt, n) cho giá trị là một xâu gồm n kí tự
liên tiếp bắt đầu từ vị trí vt của xâu st
Vd:
Hàm Length(st) cho giá trị là độ dài (số lượng
kí tự) của xâu st
Hàm Pos(st1, st2) cho giá trị là vị trí xuất hiện đầu tiên
của xâu st1 trong xâu st2
Hàm UpCase(ch) cho giá trị là kí tự hoa tương ứng với
kí tự ch
* Nhận xét:
- Kiểu mảng một chiều với các phần tử thuộc kiểu
char khác với kiểu xâu, do đó không thể áp dụng các
thao tác xử lí xâu cho mảng
- Thủ tục Delete(st, vt, n) và Insert(st1, st2, vt) làm
thay đổi xâu (thủ tục Delete: xâu st bị xóa bớt một số kí
tự, thủ tục Insert: xâu st2 được thêm vào một số kí tự)
- Các hàm trên xâu cho kết quả là một giá trị, có thể là
số, kí tự hay xâu tuỳ theo hàm cụ thể
- Tham số của các hàm và thủ tục chuẩn phải hợp lí, chẳng hạn trong thủ tục insert(st1, st2, n) thì n <= length(st2) + 1
St Thao tác Kết quả
‘Viet Nam’ copy(st, 6, 3) ‘Nam’
‘Khanh Hoa’ copy(st, 1, 5) ‘Khanh’
‘Viet Nam’ Pos(‘am’, st2) 7
‘Khanh
Trang 32 Kết quả in ra màn hình:
Truong Ngo Gia Tu than yeu
3 Khai báo thêm biến chỉ số i và thay
dòng lệnh write(s1); bằng các dòng
lệnh sau:
For i:=1 to length(s1) do
Write(upcase(s1[i]));
GV: Cho biết chương trình Vd2 làm gì? Kết
quả xuất ra màn hình như thế nào?
HS: Lần lượt trả lời
GV: Nhận xét, đưa ra kết quả đúng
Chương trình cho nhập vào một xâu bất kì từ
bàn phím và xuất ra màn hình xâu đó viết
theo thứ tự ngược lại
GV: Yêu cầu học sinh viết chương trình cho
Vd3 Gọi vài HS lên bảng viết
3 Một số ví dụ Vd1
Var s1, s2: string[30];
Begin
S1:= ‘Truong em’;
S2:= ‘Ngo Gia Tu than yeu’;
Insert(s2, s1, length(s1)+1);
Write(s1);
End.
1 Cho biết kết quả thực hiện chương trình trên
2 Thêm hai dòng lệnh
Delete(s1, pos(‘em’,s1), 3); vào trước dòng Insert.
Cho biết kết quả chương trình thay đổi như thế nào?
3 Hãy viết thêm vào chương trình để có kết quả xuất ra màn hình là ‘TRUONG NGO GIA TU THAN YEU’
Vd2 Cho chương trình sau:
Var xau: string;
Begin
Write(‘Nhap vao mot xau bat ki:’);
Readln(xau);
For i:=length(xau) downto 1 do
Write(xau[i]);
End.
Vd3 Viết chương trình nhập vào một xâu bất kì Kiểm
tra xem trong xâu có dấu cách hay không
Var s: string;
Begin
Write(‘Nhap vao mot xau bat ki:’);
Readln(s);
If pos(‘ ‘, s)>0 then
Write(‘Co dau cach trong xau’)
Else
Write(‘Trong xau khong co dau cach’);
Readln
End.
IV Củng cố
- Những hàm và thủ tục liên quan đến xâu
Thủ tục Delete(st, vt, n) Thủ tục Insert(st1, st2, vt) Hàm Copy(st, vt, n) Hàm Length(st) Hàm Pos(st1, st2) Hàm UpCase(ch)
V Dặn dò - Xem bài tập 1, 2, 3 trang 73 SGK
2 - Làm bài tập 10 trang 80 SGK
VI RÚT KINH NGHIỆM: