A. ĐẶT VẤN ĐỀ
1/ Lí do chọn đề tài:
Hiện nay, Tin học là bộ môn bắt buộc trong chương trình THPT, tuy là
môn học bắt buộc nhưng không là một trong những môn thi tốt nghiệp trung
học phổ thông quốc gia nên nhìn chung thái độ của học sinh (trừ học sinh các
lớp chuyên Tin của các trường chuyên) đối với môn học này chưa thật sự tốt.
Mặt khác, chương trình Tin học nói chung và chương trình Tin học 11 nói
riêng tương đối khô khan và khó hiểu. Với Tin học lớp 11 học sinh bước đầu
làm quen với việc lập trình sử dụng ngôn ngữ Pascal nên đại đa số các em đều
cảm thấy rất khó hiểu, thấy trừu tượng. Nhiều học sinh tâm sự rằng, mặc dù
mình rất chịu khó đọc sách nhưng vẫn không hiểu mấy và thực sự cũng không
cảm thấy hứng thú học môn này. Các em tỏ ra rất lúng túng khi phải học
nhiều kiểu dữ liệu và lúc lập trình phải suy nghĩ sử dụng kiểu nào cho hợp lí.
Bản thân tôi là giáo viên giảng dạy bộ môn Tin học, tôi nhận thấy trong
việc giảng dạy cho học sinh, ngoài việc giúp học sinh lĩnh hội những kiến
thức cơ bản. Người giáo viên còn phải biết kích thích tính tích cực, sự sáng
tạo say mê học hỏi của học sinh. Bởi vì, khi có sự đam mê, các em tự nhiên sẽ
học tập một cách tự giác, tích cực, chủ động để đạt được mục tiêu đặt ra.
Tạo đam mê học tập cho học sinh không phải là việc làm đơn giản,
không chỉ đơn giản là việc giáo viên phải nêu rõ mục tiêu cho mỗi tiết học mà
còn thể hiện trong cách giáo viên gợi động cơ cho các em và đặc biệt là phải
đầu tư thiết kế bài giảng cho mỗi tiết học thật chi tiết, thật lôi cuốn. Các cách
thiết kế bài giảng hiện nay nhằm mục đích áp dụng phương pháp hiện đại để
bồi dưỡng cho học sinh năng lực ham muốn học hỏi, tư duy sáng tạo, năng
lực tự giải quyết vấn đề, rèn luyện và phát triển năng lực tự học, sáng tạo,
nghiên cứu, nghĩ và làm việc một cách tự chủ. Trong quá trình học lập trình,
để lập trình cho một bài toán cụ thể, một trong những điều quan trọng nhất là
học sinh phải xác định các biến sử dụng trong chương trình và kiểu dữ liệu
tương ứng của các biến đó sao cho hợp lí và chính xác. Trong quá trình giảng
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
trừu tượng, khó hiểu. Giáo viên ít có sự đầu tư để cải tiến, nâng cao chất
lượng dạy học
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
Trang: 2
Một số bài tập cơ bản về kiểu xâu - Tin học 11
c) Số liệu thống kê
Qua các lớp tôi đang dạy, khi học đến chủ đề Kiểu xâu đa số các em học
sinh còn lúng túng khi sử dụng đến kiểu dữ liệu mới, không hình dung được
chương trình mà mình phải viết.
Khảo sát thực tế lớp 11B2 (năm 2014-2015) có 37 học sinh khi đã dạy
xong chủ đề "Kiểu xâu", tôi đã cho học sinh làm bài kiểm tra 15 phút về kiểu
xâu như sau:
Bài tập: Viết chương trình nhập vào một xâu kí tự (độ dài không quá
100) và một kí tự bất kỳ từ bàn phím. Thông báo xem kí tự đó có xuất hiện
trong xâu vừa nhập hay không?
Điểm
2
3
4
5
5,4%
2,7% 45,9%
Với bài toán trên do học sinh chưa nắm vững kiến thức lập trình, đặc
biệt còn lúng túng trong việc sử dụng kiểu dữ liệu nên còn gặp nhiều sai sót
khi viết chương trình.
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
Trang: 3
Một số bài tập cơ bản về kiểu xâu - Tin học 11
B. NỘI DUNG
I . Cơ sở lí luận.
Khi tìm hiểu đến chủ đề Kiểu dữ liệu có cấu trúc học sinh phải dựa
vào các kiểu dữ liệu chuẩn có sẵn để xây dựng nên các kiểu dữ liệu mới phục
vụ cho các yêu cầu cao hơn.
Giáo viên có thể gợi động cơ bằng cách hỏi: "Với yêu cầu viết chương
trình nhập vào họ tên của hai bạn học sinh bất kỳ, in ra màn hình bạn có tên
dài hơn", với những kiểu dữ liệu mà em đã học liệu có thực hiện được yêu cầu
này không? Từ đó dẫn dắt vào kiểu dữ liệu mới: "Kiểu xâu". Sau khi cho học
sinh tìm hiểu những kiến thức cơ bản về lý thuyết kiểu dữ liệu này. Giáo viên
có thể xây dựng hệ thống các bài tập và dẫn dắt học sinh giải quyết các bài tập
này.
II. Chuẩn bị, nội dung và giải pháp thực hiện.
1/ Chuẩn bị
a/ Về phương pháp:
ra so sánh với kí tự ch nếu chúng bằng nhau thì giá trị của biến đếm được tăng
lên 1. Kết thúc vòng lặp, giá trị của biến dem chính là kết quả cần tìm.
GV: cho học sinh suy nghĩ, viết bài trong 5 phút sau đó gọi một em bất kỳ lên
trình bày:
GV: yêu cầu các HS khác nhận xét và chữa bài cho hoàn chỉnh. GV có thể
thực hiện chạy chương trình hoàn chỉnh lên máy chiếu cho HS quan sát, gọi
trực tiếp vài em lên nhập dữ liệu và xem kết quả thực hiện trên màn hình.
Program baitap1;
Var s:string[100];
i, dem: byte;
ch: char;
Begin
Writeln('nhap vao xau bat ki:'); Readln(s);
Write('nhap mot ki tu bat ki:');
Readln(ch); dem:=0;
For i:= 1 to length(s) do
If s[i] = ch then dem:=dem+1;
Write('so lan xuat hien cua ki tu ', ch,' trong xau vua nhap la: ',dem);
Readln
End.
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
Trang: 5
Một số bài tập cơ bản về kiểu xâu - Tin học 11
Tiếp theo, từ chương trình vừa viết, giáo viên yêu cầu học sinh chỉnh sửa để
thực hiện bài tập tiếp theo:
Bài tập 2: Viết chương trình nhập vào một xâu kí tự (độ dài không quá 100)
Một số bài tập cơ bản về kiểu xâu - Tin học 11
Readln(ch); dem:=0;
For i:= 1 to length(s) do
If s[i] = ch then dem:=dem+1;
If dem>0 then
Write('ky tu ', ch, ' co xuat hien trong xau ',s)
Else
Write('ki tu ', ch, ' khong xuat hien trong xau ',s)
Readln
End.
Để củng cố lại lần nữa các bài tập đếm với những yêu cầu khác nhau,
GV có thể yêu cầu học sinh tiếp tục chỉnh sửa chương trình để thực hiện bài
tập sau:
Bài tập 3: Viết chương trình đếm số kí tự là chữ số trong một xâu kí tự được
nhập vào từ bàn phím.
Ví dụ: Nhập vào xâu: 'HOC123' thì kết quả trả về là có 3 kí tự là chữ số.
GV hỏi: Với bài tập này, điều kiện để biến dem tăng lên 1 là gì?
HS trả lời: Kiểm tra từng kí tự trong xâu (s) vừa nhập nếu kí tự nào là chữ số
thì biến dem được tăng lên 1.
GV: Câu lệnh sau sẽ thực hiện việc kiểm tra yêu cầu đó:
For i:= 1 to length(s) do
If (s[i]>='0') and (s[i]
xâu chính là độ dài của xâu. Vậy để có thể chuyển 1 xâu nhập từ bàn phím
thành chữ in hoa thì ta sẽ chuyển từng kí tự trong xâu thành kí tự in hoa:
duyệt lần lượt từng phần tử trong xâu và gán phần tử đó bằng giá trị mới
upcase(ch);
Câu lệnh for i:=1 to length(s) do S[i]:=upcase(S[i]); dùng để thực hiện
yêu cầu đó.
Giáo viên gọi học sinh lên bảng viết chương trình. HS viết chương trình, sau
đó GV nhận xét, sửa chữa. Chạy chương trình để học sinh theo dõi kết quả
thực hiện.
Chương trình bài tập 4:
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
Trang: 8
Một số bài tập cơ bản về kiểu xâu - Tin học 11
Program baitap4;
Var S: String;
i:Byte;
Begin
Write(‘Nhap xau S: ‘); Readln(S);
For i:=1 to length(S) do S[i]:=Upcase(S[i]);
Write(‘Xau ket qua: ‘, S);
Readln
End.
Bài tập 5: 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 đảo ngược của xâu vừa nhập.
Trước tiên cần giải thích cho HS xâu đảo ngược tức là xâu có được bằng
cách đọc ngược các kí tự trong xâu vừa nhập (đọc ngược từ phải sang trái).
trong bài tập 5 vừa làm có thể hình thành ngay ý tưởng giải bài tập trên. Với
bài tập này, đa số các em đều làm theo cách tạo xâu đảo ngược từ xâu ban đầu
vừa nhập, sau đó kiểm tra nếu xâu đảo ngược bằng xâu ban đầu thì kết luận
xâu đối xứng. GV yêu cầu học sinh chỉnh sửa bài tập 5 để có bài tập 6:
Program baitap6;
Var S, Ng: String;
i: byte;
Begin
Write(‘Nhap xau S: ‘);
Readln(S); ng:='';
For i:= Length(S) downto 1 do
ng:=ng+s[i];
if s=ng then
write('xau doi xung')
else
write('xau khong doi xung');
Readln
End.
Ngoài cách kế thừa bài tập 5 ra, giáo viên có thể hướng dẫn để học sinh
viết chương trình theo cách khác không dùng cách tạo xâu đảo ngược. Gợi ý
cho học sinh khai thác khả năng tham chiếu đến từng kí tự trong xâu thông
qua vị trí của kí tự này. Như vậy, không nhất thiết phải tạo một xâu mới để
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
Trang: 10
Một số bài tập cơ bản về kiểu xâu - Tin học 11
cuối cùng so sánh hai xâu, mà chỉ cần so sánh các cặp kí tự ở vị trí đối xứng
Một số bài tập cơ bản về kiểu xâu - Tin học 11
Hướng dẫn HS để viết chương trình theo 2 cách: Với Cách 1, hướng dẫn cách
khởi tạo xâu rỗng, kiểm tra lần lượt từng kí tự trong xâu ban đầu nếu kí tự nào
khác kí tự dấu cách (#32) thì được ghép vào xâu rỗng vừa khởi tạo.
Cách thứ 2 cần hướng dẫn học sinh bằng cách đặt các câu hỏi dẫn dắt như:
Làm sao để xác định được vị trí chứa kí tự là dấu cách trong xâu vừa
nhập? Để xóa kí tự là dấu cách đó ta dùng thủ tục nào? Việc xóa các kí tự là
dấu cách sẽ chấm dứt khi nào? Số lần lặp lại này là xác định hay không xác
định?
Chương trình theo 2 cách có thể như sau:
Cách 1:
Program baitap7_1;
Var S, S1: String;
i :Byte;
Begin
Write(‘Nhap xau S: ‘);
Readln(S);
S1:=''; {khoi tao xau rong}
For i:=1 to length(s) do
If s[i]#32 then s1:=s1+s[i];
Writeln('ket qua la: ', s1);
Readln
End.
Cách 2:
Program baitap7_2;
Var S: String;
i,vt :Byte;
While S[1]=#32 do
{Xóa các kí tự trắng ở đầu xâu}
Delete(S,1,1);
While S[Length(S)]=#32
{Xóa các kí tự trắng ở cuối xâu}
Delete(S,Length(S),1);
While POS(#32#32,St)0 do
{Xóa các kí tự trắng ở giữa xâu}
Delete(S,POS(#32#32,S),1);
Write(‘Xau sau khi xoa cac ki tu trang thua la: ', S);
Readln
End.
Bài tập 9: Viết chương trình nhập một xâu từ bàn phím. Đếm số từ có trong
xâu? (xét trường hợp xâu chỉ chứa các kí tự phân cách là dấu cách, không
chứa các kí tự phân cách khác như dấu chấm, dấu phẩy,…)
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
Trang: 13
Một số bài tập cơ bản về kiểu xâu - Tin học 11
GV cần lưu ý cho HS: Từ trong xâu là một dãy các kí tự liên tiếp không
chứa kí tự phân cách. Trong trường hợp bài tập này cần giới hạn cho HS kí tự
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
Trang: 14
Một số bài tập cơ bản về kiểu xâu - Tin học 11
Readln
End.
Trên cơ sở chương trình của bài tập đã có và để học sinh hiểu hơn lý
thuyết về các hàm xử lý xâu, GV có thể yêu cầu học sinh làm tiếp bài tập sau:
Bài tập 10: Viết chương trình liệt kê các từ của một xâu ký tự được nhập vào
từ bàn phím, mỗi từ phải được viết trên một dòng.
GV: Trước tiên với xâu nhập bất kỳ để in chính xác các từ có trong xâu,
đầu tiên ta phải thực hiện chuẩn hóa xâu. Vì để in các từ trong xâu phải dựa
vào số dấu cách có trong xâu nên sau khi chuẩn hóa xong ta cộng vào xâu vừa
chuẩn hóa một dấu cách ở cuối xâu (mục đích để in được từ cuối cùng).
GV hỏi: Làm sao để lấy ra một từ bất kỳ trong một xâu?
HS: Sử dụng hàm copy(s,vt,n) để copy từ trong xâu ra và in ra.
GV: Làm sao để xác định được số kí tự trong từ (n)?
HS: Nêu ý tưởng
GV hướng dẫn: Số lượng ký tự của từ đầu tiên trong xâu sẽ bằng vị trí xuất
hiện của dấu cách đầu tiên trừ đi 1, dùng hàm pos(s1,s2) để xác định vị trí
xuất hiện của dấu cách. Sau khi in được từ nào ta tiến hành xóa từ đó ra
khỏi xâu.
Chương trình có thể như sau:
Program baitap10;
Var
S: String;
Bài tập 11: Viết chương trình nhập một xâu ký tự S từ bàn phím và một ký tự
ch bất kỳ. In ra màn hình xâu S sau khi xóa hết các ký tự ch trong xâu đó.
Gợi ý:
While POS(ch,s)0 Do Delete(s,POS(ch,s),1);
Bài tập 12: Viết chương trình nhập vào một xâu ký tự từ bàn phím. Tìm và
in ra màn hình một từ có độ dài lớn nhất trong xâu.
Gợi ý:
Tách từng từ để so sánh (xem lại bài tập 10).
III. Kết quả thu được.
Trong quá trình trao đổi, thảo luận, trình bày học sinh được thể hiện khả
năng vận dụng, hiểu biết của mình nên các em tỏ ra hăng hái trong việc giơ
tay phát biểu tranh luận. Đồng thời, sau khi viết chương trình các em được
quan sát và chạy thử kết quả của chương trình và chỉ vài thao tác chỉnh sửa
bài tập cũ các em đã có bài tập mới theo yêu cầu mới nên các em rất thích thú,
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
Trang: 16
Một số bài tập cơ bản về kiểu xâu - Tin học 11
hăng hái nghiên cứu. Kỹ năng tư duy, sáng tạo, biết phân tích và giải quyết
tình huống của các em học sinh ngày càng tốt hơn.
Cụ thể với lớp 11B2 năm học 2015 - 2016 có 36 học sinh, sau khi thực
hiện đề tài này thì kết quả khảo sát như sau:
Điểm
3
4
2
30
Tỷ lệ
5,6%
11,1%
22,2% 8,3%
33,3% 2,8% 11,1%
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
5,6
Trang: 17
83,3%
Một số bài tập cơ bản về kiểu xâu - Tin học 11
C. KẾT LUẬN
Với Tin học 11 học sinh bước đầu làm quen với lập trình thông qua ngôn
ngữ lập trình Pascal, vì ban đầu học lập trình luôn gặp khó khăn và tình trạng
khó hiểu là không thể tránh khỏi. Người giáo viên cần tạo động lực, tạo đam
chủ biên
2. Sách bài tập tin học 11
Hồ Sĩ Đàm
chủ biên
3. Sách giáo viên tin học 11
Hồ Sĩ Đàm
chủ biên
5. Một số tài liệu tham khảo trên internet.
6. Một số sáng kiến kinh nghiệm và ý kiến của đồng nghiệp.
Ia Sao, ngày 10 tháng 03 năm 2016
Người thực hiện
GV: Nguyễn Thị Mỹ Phương
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
Trang: 19
Một số bài tập cơ bản về kiểu xâu - Tin học 11
MỤC LỤC
C. KẾT LUẬN
18
D. TÀI LIỆU THAM KHẢO
19
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng
Trang: 20