Tải bản đầy đủ (.doc) (20 trang)

skkn một số bài tập cơ bản về kiểu xâu tin học 11

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (177.78 KB, 20 trang )

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


Trang: 1


Một số bài tập cơ bản về kiểu xâu - Tin học 11

dạy tôi nhận thấy các em học sinh tỏ ra khá lúng túng khi xác định kiểu dữ
liệu, nhất là các kiểu dữ liệu như kiểu dữ liệu mảng một chiều, kiểu dữ liệu
xâu…
Giải quyết vấn đề này, với mỗi kiểu dữ liệu mới, giáo viên ngoài việc
cung cấp cho các em các kiến thức cơ bản về lý thuyết của kiểu dữ liệu đó cần
dành nhiều thời gian để phân tích các ví dụ, các bài tập cơ bản có trong sách
giáo khoa. Ngoài ra, giáo viên nên chú ý chuẩn bị sẵn hệ thống các ví dụ, các
bài tập cụ thể, cơ bản khác nhưng phù hợp với trình độ của học sinh lớp mình
dạy. Để từ việc tìm hiểu về các ví dụ đó học sinh không những củng cố về lý
thuyết mà còn hiểu sâu sắc hơn kiểu dữ liệu tương ứng. Xuất phát từ tinh thần
đó cũng như từ thực tế trình độ của học sinh các lớp 11 trường THPT Phạm
Văn Đồng mà tôi đang giảng dạy, tôi chọn đề tài: "Một số bài tập cơ bản về
kiểu xâu tin học 11", với mong muốn từ việc tìm lời giải cho các bài tập này
và thực hiện chúng trực tiếp trên máy tính các em học sinh sẽ cảm thấy thích
thú và hiểu sâu kiến thức hơn.
2/ Thực trạng trước khi thực hiện sáng kiến:
a) Thuận lợi:
− Việc ứng dụng công nghệ thông tin vào tất cả các lĩnh vực được đề cao.
− Môn Tin học là môn chính khóa trong trường phổ thông.
− Các em học sinh thích được thực hành trên máy tính để nghiên cứu, tìm
tòi.
b) Khó khăn:
− Trình độ học sinh không đồng đều và đa số không nắm vững kiến thức các
môn tự nhiên.
− Đa số học sinh không thích môn Tin học, mang tâm lí Tin học 11 là môn

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


6

7

8

>=5

Số lượng

3

4

13

8

6

2

1

17

Tỷ lệ

8,1% 10,9% 35,1% 21,6% 16,2%


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:

- Giáo viên chuẩn bị trước các bài tập cơ bản dạng kiểu xâu để phân tích,
dẫn dắt cho học sinh làm.
b/ Về phương tiện:
- Giáo viên chuẩn bị máy tính “để bàn hoặc xách tay”, một máy chiếu,
một màn chiếu, bảng phụ …
- Học sinh cần có đầy đủ sách bút, vở ghi…
2/ Nội dung.
Bài tập 1: 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ự ch bất kỳ từ bàn phím. Đếm số lần xuất hiện của kí tự ch trong
xâu kí tự vừa nhập.
Ví dụ: Nhập vào xâu: 'HOC TOT TIN HOC', nhập kí tự: 'T' thì kết quả
số lần xuất hiện của kí tự 'T' trong xâu 'HOC TOT TIN HOC' là 3 lần.
GV hướng dẫn học sinh bằng cách đặt các câu hỏi cho học sinh trả lời: Nêu ý
tưởng để giải bài toán? Làm thế nào để đếm được?
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng

Trang: 4


Một số bài tập cơ bản về kiểu xâu - Tin học 11

HS: Kiểm tra kí tự vừa nhập với lần lượt từng kí tự trong xâu, nếu bằng nhau
thì ta tăng số lần xuất hiện (biến đếm) lên 1.
GV: Kiểm tra bằng cách nào?
HS: Sử dụng vòng lặp với số lần biết trước (số lần lặp bằng độ dài của xâu).
Với mỗi kí tự trong xâu lấy ra so sánh với kí tự ch.
Câu lệnh: for i:= 1 to length(xau) do để duyệt lần lượt từng kí tự trong
xâu.
GV (giải thích thêm): Để lưu lại giá trị của số lần xuất hiện, ta sử dụng biến
dem, ban đầu biến này được khởi tạo bằng 0, lấy lần lượt từng kí tự trong xâu

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)

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 kí tự vừa nhập hay không?
Ví dụ: Nhập vào xâu: 'HOC TOT TIN HOC' nhập kí tự: 'T' thì kết quả là
kí tự có xuất hiện trong xâu vừa nhập.
Với bài tập này, dù không khó nhưng học sinh lại lúng túng vì chương
trình các em viết (sửa lại từ chương trình ở bài tập 1) đa số đều mắc chung
một lỗi là trong xâu vừa nhập có bao nhiêu kí tự giống kí tự ch thì chương
trình in ra bấy nhiêu dòng thông báo.
GV: Giải thích cho HS hiểu, ở bài tập này gần giống như bài tập 1 nhưng
chúng ta không đếm số lần nữa mà chỉ đưa ra thông báo là có xuất hiện hay
không? Nếu kí tự đó xuất hiện nhiều lần ta cũng chỉ đưa ra một dòng thông
báo có xuất hiện. Vậy làm sao khắc phục lỗi này?
HS: Suy nghĩ để tìm ra câu trả lời.
Để khắc phục lỗi này, giáo viên hướng dẫn học sinh kiểm tra giá trị của
biến đếm trước khi in ra thông báo. Nếu biến đếm lớn hơn 0 thì có xuất hiện
và ngược lại thì không xuất hiện. Sau đó yêu cầu HS tự chỉnh sửa bài tập 1 để
có bài tập 2 hoàn chỉnh.
Chương trình hoàn chỉnh có thể như sau:
Program baitap2;
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:');
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng

Trang: 6



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] <='9') then dem:=dem+1;
HS tự chỉnh sửa để có bài tập 3, chương trình hoàn chỉnh như sau:
Program baitap3;
Var

S: String;
i,dem: Byte;


Begin
Write(‘Nhap xau S: ‘);
Readln(S); dem:=0;
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng

Trang: 7


Một số bài tập cơ bản về kiểu xâu - Tin học 11

For i:= 1 to length(s) do
If (s[i]>='0') and (s[i] <='9') then dem:=dem+1;
Write(‘So ki tu chu so trong xau la: ‘, dem);
Readln
End.
Trong quá trình học các hàm và thủ tục thao tác trên kiểu dữ liệu xâu,
học sinh thường nhầm lẫn chức năng của hàm upcase(ch). Để giúp học sinh
hiểu kỹ hơn về hàm này, Giáo viên nên cho hs làm bài tập cơ bản sau đây:
Bài tập 4: Viết chương trình nhập vào một xâu kí tự từ bàn phím. Đổi xâu kí
tự đó sang chữ in hoa rồi in kết quả ra màn hình.
Ví dụ: Nhập xâu 'Cham Hoc' sẽ cho ra xâu 'CHAM HOC'.
GV nêu câu hỏi: Làm thế nào để khi ta nhập họ tên vào máy là chữ thường
thì khi hiện lên trên màn hình là chữ in hoa?
HS: Sử dụng hàm upcase(ch)
GV: Nhưng hàm upcase(ch) chỉ đổi được 1 kí tự thành kí tự in hoa, ở đây
chúng ta đổi cả 1 xâu kí tự? vậy chúng ta xử lý vấn đề này như thế nào?
HS: đưa ra cách xử lý.
GV: Chúng ta đã biết có thể coi xâu là mảng 1 chiều mà mỗi phần tử là một
kí tự. Mỗi kí tự của xâu được đánh số thứ tự thường bắt đầu từ 1, số kí tự của

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).

Sau khi giải thích xong GV hỏi: Làm thế nào để đọc ngược xâu?
HS: duyệt xâu theo thứ tự ngược, dòng vòng lặp for-do dạng lùi.
GV: Với mỗi kí tự đọc ngược, ghép ký tự đó vào xâu mới, xâu này ban
đầu được khởi tạo bằng rỗng. Yêu cầu học sinh suy nghĩ để viết chương trình.
GV yêu cầu HS lên chạy chương trình trực tiếp trên máy chiếu và sau đó
chỉnh sửa, chiếu chương trình hoàn chỉnh lên cho hoc sinh quan sát:
Program baitap5;
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];
write('xau dao nguoc la: ', ng);
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng

Trang: 9


Một số bài tập cơ bản về kiểu xâu - Tin học 11

Readln
End.
Bài tập 6: Viết chương trình nhập vào từ bàn phím một xâu. Kiểm tra xâu đó
có phải là xâu đối xứng hay không? (Tính chất của xâu đối xứng: đọc nó từ
phải sang trái cũng thu được kết quả giống như đọc từ trái sang phải).
Ở bài tập này, GV yêu cầu học sinh dựa vào tính chất của xâu đối xứng
để nêu ý tưởng. HS dựa vào tính chất xâu đối xứng và dựa vào kiến thức

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

nhau để kết luận xâu là là xâu đối xứng hay không, chỉ cần xuất hiện một cặp
kí tự ở vị trí đối xứng mà không đối xứng thì xâu đó không đối xứng. Hướng
dẫn học sinh tìm các vị trí đối xứng.
GV: kí tự thứ nhất đối xứng với kí tự nào trong xâu?
HS: kí tự ở vị trí 1 đối xứng với kí tự ở vị trí x (với x là độ dài xâu)
GV: tương tự vị trí thứ 2 đối xứng với vị trí thứ x-1, thứ 3 với vị trí x-2,

Vậy vị trí thứ i sẽ đối xứng với vị trí nào?
HS: vị trí thứ x-i+1
Như vậy vòng lặp chỉ cần chạy (x div 2) lần là được.
Yêu cầu học sinh về nhà làm tiếp bài tập theo cách thứ 2 này.
Để học HS có thể hiểu và thành thạo các thao tác xử lí xâu, GV tiếp tục
đưa ra các bài tập sau:
Bài tập 7: Viết chương trình nhập một xâu từ bàn phím, đưa ra màn hình xâu
thu được từ nó sau khi loại bỏ các dấu cách có trong xâu.
GV hướng dẫn học sinh có thể sử dụng các thao tác xử lí xâu để giải
quyết bài tập này, cho học sinh thảo luận để tìm ra cách giải.
GV gợi ý: Kết quả ta đưa ra là xâu sau khi loại bỏ những kí tự là dấu
cách (học sinh có thể biểu diễn kí tự là dấu cách là dấu cách đặt trong cặp
nháy đơn ' ' hoặc biểu diễn bằng mã của dấu cách là #32), xâu OUTPUT sẽ
chứa tất cả các kí tự trong xâu INPUT trừ kí tự là dấu cách. Như vậy, dựa vào
các kiến thức đã học ta có thể xử lý yêu cầu trên theo 2 cách: Cách 1: Sử dụng
phép ghép xâu tạo xâu mới gồm tất cả các kí tự trong xâu INPUT mà khác kí
tự là dấu cách.
Cách 2: Sử dụng thủ tục delete(st,vt,n) để xóa tất cả các kí tự là dấu cách
trong xâu INPUT.

GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng

Trang: 11



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;

Begin
Write(‘Nhap xau S: ‘);
Readln(S);
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng

Trang: 12


Một số bài tập cơ bản về kiểu xâu - Tin học 11

While (pos(#32,s)<>0) do
Begin
Vt:=pos(#32,s);
Delete(s,vt,1)
End;
Writeln('ket qua la: ', s);
Readln
End.
Bài tập 8: Viết chương trình nhập một xâu từ bàn phím. In ra xâu đó sau khi
xóa hết các kí tự trắng thừa trong xâu.
Đầu tiên Giáo viên phải giải thích: Kí tự trắng thừa là các kí tự trắng đầu
xâu, cuối xâu và nếu ở giữa xâu có 2 kí tự trắng liên tiếp nhau thì có 1 kí tự
trắng thừa.
Program baitap8;
Var

S:String;

Begin
Write(‘Nhap xau S: ‘); Readln(S);

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ự

phân cách ở đây chỉ xét dấu cách, không xét các kí tự phân cách khác (dấu
chấm, dấu phẩy…).
GV: Làm thế nào để đếm được số từ có trong xâu?
HS: Dựa vào số dấu cách có trong xâu?
GV: Trường hợp xâu chứa các kí tự dấu cách thừa (kí tự trắng thừa) thì
làm thế nào?
Lúc này, vì học sinh đã viết được bài tập 8 xóa các kí tự trắng thừa ở trên
nên dễ dàng trả lời câu hỏi này: Đầu tiên, tiến hành chuẩn hóa xâu trước sau
đó mới đếm số từ, số từ sẽ bằng số dấu cách cộng 1.
Chương trình hoàn chỉnh có thể như sau:
Program baitap9;
Var

S: String;
i, dem: byte;

Begin
Write(‘Nhap xau S: ‘); Readln(S);
{Chuan hoa xau}
While S[1]=#32 do
Delete(S,1,1);
While S[Length(S)]=#32 do
Delete(S,Length(S),1);
While POS(#32#32,St)<>0 do
Delete(S,POS(#32#32,S),1);
{Dem so tu co trong xau}
Dem:=0;
For i:= 1 to length(s) do
If s[i]=#32 then dem:=dem+1;
Write(‘so tu trong xau la: ', dem+1);

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;

Vt:byte;

Begin
Write(‘Nhap xau S: ‘); Readln(S);
{Chuan hoa xau}
While S[1]=#32 do
Delete(S,1,1);
While S[Length(S)]=#32 do
Delete(S,Length(S),1);
GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng

Trang: 15


Một số bài tập cơ bản về kiểu xâu - Tin học 11

While POS(#32#32,St)<>0 do
Delete(S,POS(#32#32,S),1);
{in so tu trong xau}
s:=s+#32;
writeln('cac tu co trong xau:');
while (pos(#32,s)<>0) do
begin
vt:= pos(#32,s);
writeln(copy(s,1,vt-1));
delete(s,1,vt);
end;
Readln
End.
BÀI TẬP ĐỀ NGHỊ

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


5

6

7

8

9

10

>=5

Số lượng

2

4

8

3

12

1

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

mê và kích thích học sinh tìm kiếm kiến thức. Trong tiết học nên sử dụng máy
chiếu, khi viết xong chương trình nên thực hành chạy trên máy cho học sinh
quan sát kết quả, gọi các em chỉnh sửa để có kết quả mới từ đó tạo không khí
hăng say học tập từ đó các em học sinh đã chủ động để tìm tòi lại kiến thức đã
học qua đó giải quyết được vấn đề do giáo viên đặt ra. Trong quá trình giải
quyết vấn đề, giáo viên chỉ ra những sai lầm mà các em học sinh mắc phải do
hiểu không rõ vấn đề giúp cho các em hiểu rõ hơn về câu lệnh.
Cuối cùng một điểm cần đặc biệt lưu ý trong khi dạy lập trình, nếu các
em trình bày ý tưởng của mình, có thể gặp vài sai sót nhưng giáo viên cần giải
thích và chỉ rõ chỗ chưa đúng trong ý tưởng của các em, cần thiết cho các em
chạy thử chương trình theo ý tưởng của mình để nhận ra điểm sai, tuyệt đối
không nên áp đặt học sinh lập trình giải bài tập theo cách áp đặt của giáo viên.
Khi xây dựng hệ thống bài tập nên đi từ bài cơ bản, đơn giản sau đó mới tăng
dần mức độ phức tạp của bài tập lên. Với mỗi bài tập, có thể có nhiều cách
giải khác nhau nên khuyến khích học sinh giải theo cách đơn giản và dễ hiểu
nhất.
Kết quả là, sau khi thực hiện đề tài học sinh đã tự tin hơn trong việc sử
dụng các kiểu dữ liệu, đặc biệt là kiểu dữ liệu xâu.

GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng

Trang: 18


Một số bài tập cơ bản về kiểu xâu - Tin học 11

D. TÀI LIỆU THAM KHẢO
1. Sách giáo khoa tin học 11

Hồ Sĩ Đàm


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

Tên tiêu đề

Trang
A. ĐẶT VẤN ĐỀ

01

1. Lý do chọn đề tài

01

2. Thực trạng trước khi thực hiện sáng kiến

02

B. NỘI DUNG

04

1. Cơ sở lý luận

04

2. Chuẩn bị, nội dung và giải pháp thực hiện

04

3. Kết quả thu được

16


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



×