TÊN BÀI GIẢNG: Tiết 31 - KIỂU XÂU
Giáo viên hướng dẫn: Thầy, Lê Đình Hoàn
Sinh viên thực tâp: Nguyễn Thị Hà Phương
Lớp: 11B3 Tiết:7 Thứ 6, ngày:14/03/08 phòng:P12
I. Mục đích, yêu cầu:
- Củng cố cho học sinh những hiểu biết về kiểu xâu
- Rèn luyện được kĩ năng:
+ Khai báo kiểu xâu
+ Nhập/ xuất xâu
+ Duyệt qua tất cả các kí tự của xâu để thực hiện xử lí tương ứng với từng kí tự đó.
+ Sử dụng được các hàm và thủ tục
- Từng bước hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình.
II. Phương pháp giảng dạy:
Sử dụng phương pháp giảng giãi, đưa ra những tình huống, những câu hỏi cho học sinh phân tích và hướng dẫn gợi ý.
III. Tiến trình dạy học:
1. Ổn định lớp: - Ổn định trật tự
- Báo cáo sĩ số
2. Nội dung bài học:
Thời
gian
Nội dung ghi bảng Hoạt động của giáo viên Hoạt động của học sinh
Tiết 31: BÀI TẬP
1, Bài tập1 :
Viết chương trình nhập vào một xâu. Hãy
xóa các kí tự trắng trong xâu đó và in ra
xâu đó.
Input: Một xâu
Output: In ra xâu đã xóa kí tự trắng
*Ví dụ:
S:’emđihọc’
‘emdihoc’
*Ý tưởng giải thuật:
- Nhập một xâu
- Xóa các kí tự trắng
- In ra xâu đã xóa kí tự trắng.
+ Xóa:
Dùng for để duyệt (1length(xâu))
Nếu s[i]= kí tự trắng thì xoa
Sau khi học xong kiểu xâu, có một tiết bài tập và
chúng ta cũng đã thực hành rồi. Các em đã thành
thạo về kiểu xâu, đặc biệt là cách khai báo và nhâp,
xuất xâu. Vậy bây giờ chúng ta sẽ đi tiếp phần bài
tập về kiểu xâu và hôm nay chúng ta sẽ đi sâu hơn
vào các hàm và thủ tục.
Xác định bài toán?
Em nào lấy một ví dụ về một xâu?
Kết quả của bài toán sẽ là xâu gì?
Bây giờ nêu lên ý tưởng giải thuật?
Nêu cách xóa các kí tự trắng? (gợi ý: dùng lệnh gì
để duyệt? Nếu bắt gặp kí tự trắng thì như thế nào?
Không phải kí tự trắng thì như thế nào?).
Nếu không bằng kí tự trắng thì làm gì?
Để xóa thì ta sử dụng thủ tục gì?
Ví dụ ta xét đến phần tử thứ 3 tức là i=3. Thì để
HSTL
HS đưa ra ví dụ
HSTL
HSTL
HSTL
HSTL
Delete(s,vt,n)
*Viết chương trình:
Program bai1;
Var s:string; i:byte;
BEGIN
Write(‘nhap xau:’);readln(s);
For i:=1 to length(s) do
If s[i]=’ ‘ then
Delete(s,i,1);
Write(s);
END.
2, Bài toán 2:
Viết chương trình nhập vào một xâu. In ra
xâu không chứa từ đầu tiên của xâu đó.
Input: Một xâu
Output: Xâu không chứa từ đầu tiên của
xâu đó.
*Ví dụ:
S:’lop 11b3 của em’
‘11b3 của em’
*Ý tưởng giải thuật:
muốn xóa kí tự này thì các tham số trong thủ tục
delete phải là gì?
Một bạn lên viết chương trình
Ai có thể nêu lên cách giải bài toán này bằng cách
khác?
Chúng ta có thể tạo một xâu mới. Trong đó ta sẽ
duyệt từng phần tử của xâu s nếu phần tử nào khác
kí tự trắng thì copy sang xâu mới tạo đó. Thì cuối
cùng ta được xâu mới không chứa kí tự trắng. Đây
chính là bài tập về nhà hãy giải bài toán theo cách
này cách tạo một xâu mới.
Bây giờ chúng ta sẽ tiếp tục với bài toán 2
Một bạn xác định bài toán?
Một đưa ra một ví dụ về một xâu bất kì?
Bài toán sẽ đưa ra kết quả gì?
Một em đưa ra ý tưởng giải thuật?
Delete(s,i,1)
HS lên bảng
HSTL
HSTL
HSTL
‘11b3 của em’
HSTL
- Nhập xâu
- Xóa kí tự đầu tiên
- IN ra xâu đã xóa kí tự đầu tiên
* Xóa từ đầu tiên
- Delete(s,vt,n)
+Vt=1
+ n=pos(‘ ‘,s)
*Viết chương trình:
Program bai2;
Var s:string; n:byte;
BEGIN
Phần nhập và in ra thì chúng ta đã thành thạo rồi.
Vậy chúng ta cùng nhau phân tích cách xóa kí tự
đầu tiên.
Để xóa thì chúng ta dùng thủ tục gì đây?
Đối với ví dụ trên để xóa kí tự đầu tiên thì các tham
số của delete là như thế nào?
Nếu là ta xóa 3 kí tự thì xâu của nó sẽ có một kí tự
trắng ở giữa sẽ không đẹp. Do đó chúng ta nên xóa
mấy kí tự?
Đó là ví dụ cụ thể thì ta mới lấy chính xác như vậy.
Nếu là một xâu bất kì thì ta phải làm thế nào để xác
định các tham số đó. Với bất kì xâu nào ta cũng
đều có delete vị trí của từ đầu tiên thì bao giờ cũng
xuất phát từ bao nhiêu?
Còn việc xóa bao nhiêu kí tự thì ta còn phải phụ
thuộc từ đầu tiên dài bao nhiêu nữa. Vậy ta thấy
rằng độ dài của kí tự đầu tiên kể cả dấu cách nữa
chính là bằng cái gì?(gợi ý: chính là vị trí của kí tự
nào?)
Vậy ta phải biết được vị trí của kí tự trắng đầu tiên.
Mà để biết vị trí của kí tự trắng đầu tiên thì ta phải
sử dụng hàm gì đây?
Bây giờ một bạn lên viết chương trình, các bạn còn
lại viết vào nháp. Cố sẽ gọi bất kì em nào lên để
chấm bài.
delete
delete(s,1,3)
delete(s,1,4)
1
Kí tự trắng
Pos(s1,s2)
HS lên bảng
Write(‘nhap xau:’);readln(s);
n:=pos(‘ ‘,s);
Delete(s,1,n);
Write(s);
Readln;
END.
3,Bài toán 3:
Nhập vào một xâu. IN ra xâu mới trong
đó các kí tự là chữ cái thường thì in hoa
lên, còn lại thì giữ nguyên.
Input: một xâu
Output: xâu đã in hoa
* ví dụ:
S:’Lop 11b3’ ‘LOP 11B3’
Có cách giải quyết bài toán bằng cách khác không?
Các em về tìm thêm các cách giải quyết bài toán
này bằng cách khác. Còn bây giờ chúng ta sẽ vào
tiếp bài tập tiếp theo.
Xác định bài toán?
Phần còn lại các em tự về nhà giải.
HSTL
HSTL
Giáo viên hướng dẫn duyệt
Thầy, Lê Đình Hoàn