Một số phương pháp giúp học sinh giải bài tập về kiểu xâu
MỘT SỐ PHƯƠNG PHÁP GIÚP HỌC SINH
GIẢI BÀI TẬP VỀ KIỂU XÂU
A- PHẦN MỞ ĐẦU
I/ LÝ DO CHỌN ĐỀ TÀI
Ngày nay, trên thế giới đang diễn ra quá trình tin học hoá trên nhiều lĩnh vực hoạt
động của xã hội loài người và đem lại nhiều hiệu quả to lớn. Việc sử dụng máy tính không
còn chỉ bó hẹp trong viện nghiên cứu, các trường đại học, các trung tâm máy tính mà còn
mở rộng ra mọi cơ quan, tổ chức kinh tế, và trong các gia đình. Song song với quá trình
trên, việc giảng dạy Tin học trong các trường đại học, THPT cũng được đẩy mạnh đi đôi
với việc tăng cường trang bị máy vi tính. Đảng và Nhà nước ta đã nhận thấy được tầm quan
trọng của ngành Tin học và đã đưa môn học này vào trường phổ thông như những môn học
khác bắt đầu từ năm học 2006-2007.
Chính vì vậy, đối với mỗi giáo viên giảng dạy môn Tin học ở các trường phổ thông,
việc tìm hiểu, nghiên cứu các vấn đề về Tin học, cùng với việc tìm các biện pháp giảng dạy
Tin học trong các trường phổ thông là một công việc cần phải làm thường xuyên, nhằm đáp
ứng với sự đòi hỏi ngày càng cao của xã hội.
Trong nghiệp vụ của người thầy giáo có hai vấn đề quan trọng: thứ nhất là thực tiễn
về tiềm năng - những kiến thức lý thuyết mà họ được học rất cơ bản. Thứ hai là thực tiễn về
nghiệp vụ - thầy giáo phải biết cách truyền thụ kiến thức phù hợp với trình độ của học sinh.
Trong đó, thực tiễn thứ hai là điều quyết định trong nghiệp vụ của thầy giáo, nó đánh giá
chất lượng giảng dạy của thầy giáo. Hai thực tiễn trên vừa mâu thuẫn với nhau, lại vừa
thống nhất với nhau. Thầy giáo không thể mang hết các kiến thức lý thuyết cao xa và trừu
tượng dạy cho học sinh, nhưng cũng không thể dạy tốt cho học sinh nếu thầy giáo hiểu biết
quá ít.
Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phương pháp
dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong hoạt động học tập.
Điều 24.2 của Luật giáo dục đã nêu rõ: “Phương pháp giáo dục phổ thông phải phát huy
tính tích cực, tự giác, chủ động, sáng tạo của học sinh, phù hợp với đặc điểm của từng lớp
học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng vận dụng kiến thức vào
thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho học sinh”. Như
sinh biết tự mình tìm ra hướng giải quyết những vấn đề nảy sinh trong quá trình học tập,
biết cách làm việc độc lập, làm việc tập thể. Thầy là người định hướng, là người cố vấn
giúp học sinh tự đánh giá, cũng như giúp học sinh luôn đi đúng con đường tìm hiểu, lĩnh
hội kiến thức…”.
- Xuất phát từ thực tiễn giảng dạy tại trường THPT Thanh Bình tôi thấy rằng, để đạt
hiệu quả cao trong mỗi phần học, tiết học cần có cách thiết kế bài giảng cho phù hợp với
nội dung kiến thức, phương pháp, phương tiện dạy học phải phù hợp với từng đối tượng
Người thực hiện: Nguyễn Quang Hưng
2
Một số phương pháp giúp học sinh giải bài tập về kiểu xâu
học sinh. Để qua mỗi phần học, tiết học học sinh thích thú với kiến thức mới, qua đó hiểu
được kiến thức đã học trên lớp, đồng thời học sinh thấy được tầm quan trọng của vấn đề và
việc ứng dụng của kiến thức trước hết để đáp ứng những yêu cầu của môn học, sau đó là
việc ứng dụng của nó vào các công việc thực tiển trong đời sống xã hội (nếu có).
Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình tự hoạt
động cho máy tính, máy gia dụng là cần thiết và để làm được việc đó cần có một quá trình
nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đó người lập trình có thể chọn một
ngôn ngữ lập trình thích hợp. Tuy nhiên mọi thứ điều có điểm khởi đầu của nó, với học
sinh việc học Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình bậc cao, qua đó giúp
các em hình dung được sự ra đời, cấu tạo, hoạt đông cũng như ích lợi của các chương trình
hoạt động trong máy tính, các máy tự động…Quá đó giúp các em có thêm một định hướng,
một niềm đam mê về tin học, về nghề nghiệp mà các em lựa chọn sau này. Đồng thời
Pascal là một ngôn ngữ có cấu trúc thể hiện trên 3 yếu tố: Cấu trúc về mặt dữ liệu, cấu trúc
về mặt câu lệnh, cấu trúc về mặt chương trình.
Tuy nhiên, trong các môn học ở bậc học THPT thì môn Tin học lớp 11 được các em
học sinh cho là môn học “khó khăn” nhất trong các môn học. Từ việc các em chỉ là người
sử dụng các phần mềm sẵn có như: hệ điều hành, sọan thảo văn bản Word, bảng tính Excel,
các phần mềm học tập, nghe nhạc hay chơi game… thì các em lại là người phải tìm ra lời
giải cho các bài toán, chỉ ra các bước cho máy tính thực hiện và viết chương trình để tạo ra
các sản phẩm phần mềm cho người khác sử dụng mặc dù mới chỉ là bước khởi đầu, cơ bản.
4 7 15,56%
5 13 28,88%
6 10 22,22%
7 8 17,77%
8 3 6,67%
9 1 2,22%
Đối với hai ví dụ trên hấu hết các em chưa hình dung ra được thuật toán cũng như
các bước để viết chương trình
Để khắc phục được điều đó, theo tôi chúng ta cần phải tìm tòi, nghiên cứu tìm ra
những phương pháp phù hợp, kích thích tính tích cực của học sinh trong học tập. Học sinh
có thể tự mình tìm ra được những ý tưởng sáng tạo vận dụng thiết thực vào cuộc sống, thực
tế khi nhu cầu nảy sinh, khi đó các em có thể tự mình hoàn thành được ý tưởng đó.
Trên cơ sở những gì mà học sinh được học tập về môn lập trình Pascal, để giúp cho
học sinh nhìn nhận vấn đề một cách tích cực hơn, sáng tạo hơn và nhất là giúp cho các em
có thể yêu thích nhiều hơn nữa ngôn ngữ lập trình Pascal.
Người thực hiện: Nguyễn Quang Hưng
4
Một số phương pháp giúp học sinh giải bài tập về kiểu xâu
Xuất phát từ cơ sở trên, tôi đã chọn đề tài “Một số phương pháp giúp học sinh giải
bài tập kiểu xâu”, giúp các em nắm được kiểu dữ liệu có cấu trúc- kiểu xâu và ứng dụng
của kiểu dữ liệu này trong thực tiễn (Chương IV-bài 12-tin học 11).
3/ Mục đích của sáng kiến kinh nghiệm.
Sử dụng các ví dụ cụ thể trước hết để học sinh nắm được cú pháp, ý nghĩa của kiểu
xâu. Và thông qua các ví dụ để kết hợp với bài tập và thực hành số 5 (giới thiệu trước 2 thủ
tục) để củng cố về phần kiến thức này, đồng thời tăng sự yêu thích, ham học hỏi của học
sinh đối với môn học vốn được mệnh danh là khó nhất trong các môn học ở lớp 11.
Người thực hiện: Nguyễn Quang Hưng
5
Một số phương pháp giúp học sinh giải bài tập về kiểu xâu
B- NỘI DUNG
Người thực hiện: Nguyễn Quang Hưng
6
Một số phương pháp giúp học sinh giải bài tập về kiểu xâu
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(st) do St[i]:=upcase(St[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. Học sinh viết chương trình, sau đó giáo
viên nhận xét , sửa chữa nếu có sai sót.
Chạy chương trình để học sinh theo dõi kết quả thực hiện.
Chương tình bài tập 1:
Program inhoa;
Uses Crt;
Var St: String;
i:Byte;
Begin
Write(‘Nhap xau St: ‘); Readln(St);
For i:=1 to length(St) do St[i]:=Upcase(St[i]);
Write(‘Xau ket qua: ‘, St);
Readln;
End.
Bài tập 2: Viết chương rình nhập vào một chuỗi tách và in ra từ cuối cùng trong chuỗi:
Giáo viên gợi ý:
Khi nhập vào một chuỗi bất kỳ, có thể có khoảng trống sau từ cuối chuỗi. để xác
định từ cuối của chuỗi, trước tiên phải cắt bỏ các khoảng trống ở cuối chuỗi. sau đó xác
định vị trí (vitri) khoảng trống đầu tiên tính từ cuối trở về đầu. Từ cuối cùng chính là: các
ký tự bắt đầu từ vị trí (vitri+1) đến cuối chuỗi.
Ví dụ: s=’N Thanh Huong ’, length(s) trả về giá trị 16, Sau khi cắt khoảng trống cuối
s=’N Thanh Huong’, length(s) trả về giá trị 13. vị trí khoảng trống tìm thấy đầu tiên trong
chuỗi tính từ cuối lên là vitri = 8. Vậy ký tự từ vị trí đến cuối chuỗi tạo thành từ cuối là
Huong.
khác trống mới thôi.
Ví dụ:
Nhập s = ‘N Thanh Huong ’ , length(s)=16, s[16]= #32 → bắt đầu vong lặp While
Sau lệnh {2}, s = ‘N Thanh Huong ’ , length(s)=15, s[15]= #32 → tiếp tục lặp
Sau lệnh {2}, s = ‘N Thanh Huong ’, length(s)=14, s[14]= #32 → tiếp tục lặp
Sau lệnh {2}, s = ‘N Thanh Huong’ , length(s)=13, s[13]= ‘g’<>#32 → thoát lặp
{3} →{9}: Bắt đầu vòng lặp, biến xác định vị trí tìm thấy khoảng trống đầu tiên
bằng 0. Vòng lặp {4} lần lượt duyệt từ vị trí cuối đến vị trí đầu của chuỗi s. nếu ký tự i
khác trống thì giảm i để xét ký tự trước nó, nếu là khoảng trống {5}, thí cất vị trí này vào
biến vitri{7} và kết thúc ngay vòng lặp for {4} mà không cần đợi i giảm đến 1.
Trường hợp chuỗi s chỉ có một từ, không có khoảng trống (ví dụ: ‘Xuan’) thì vòng
lặp for sẽ kết thúc khi i giảm tới 1 và vị trí vẫn dữ nguyên giá trị 0 gán ở câu lệnh{3}. Khi
đó từ cuối bắt đầu bằng các ký tự (vitri+1) = 0+1=1 đến cuối chuỗi s.
Người thực hiện: Nguyễn Quang Hưng
8
Một số phương pháp giúp học sinh giải bài tập về kiểu xâu
{11} Vòng lặp for in các ký tự trong chuỗi s từ vị trí sau khoảng trống tìm được (vitri+1)
đến cuối chuỗi. Với length(s) trả về số ký tự thực có trong chuỗi s sau khi đã cắt bỏ những
khoảng trống ở cuối chuỗi.
Bài tập 3: Nhập 1 xâu St từ bàn phím (St<=80), đưa ra màn hình xâu đảo ngược của xâu đó
(viết theo chiều ngược lại).
VD: Input: ‘Hello’
Output: ‘olleH’
Giáo viên: Làm thế nào để chúng ta có thể viết ngược lại xâu nhập vào?
Học sinh: Trả lời
Giáo viên: Để duyệt lần lượt các kí tự trong xâu St từ 1 đến hết (phần tử cuối cùng có chỉ số
trùng với độ dài của xâu) ở các ví dụ và bài tập 1 chúng ta sử dụng vòng lặp biết trước for
i:=1 to length(st) do …Vậy nếu chúng ta sử dụng vòng lặp lùi for i:=length(s) downto 1 do
…thì có thể giải quyết được yêu cầu của bài toán không? Nếu được, em nào có thể viết
được chương trình?
Giáo viên chạy chương trình hoặc sửa chương trình của bài tập 4, học sinh theo dõi
kết quả thực hiện trên màn hình sự hứng thú cho học sinh khi học bài kiểu xâu và kết
hợp với các thủ tục tưởng chừng như đã rất quen thuộc nhưng khi vận dụng thì các em thấy
được sự kì diệu của tin học.
Chương trình bài tập 4:
Program baitap3;
Uses Crt;
Var St: String[25];
i:Byte;
Begin
Write(‘Nhap xau St: ‘); Readln(St);
Write(‘ket qua la: ‘);
For i:=1 to length(St) do writeln(St[i]:15);
Readln;
End.
Người thực hiện: Nguyễn Quang Hưng
10
Một số phương pháp giúp học sinh giải bài tập về kiểu xâu
Bài tập 5: Nhập 1 xâu St từ bàn phím (St<=25), đưa ra màn hình xâu st nhưng mỗi kí tự
viết trên 1 dòng ngược lại với xâu St
VD: Input: ‘Hello’
Output: o
l
l
e
H
Khi tôi nêu bài toán và hỏi học sinh: bạn nào xung phong lên bảng viết chương trình thì đã
có khá nhiều cách tay giơ lên.
Chương trình mà em học sinh đã sửa như sau:
Program baitap5;
For i:= length(St) downto 1 do writeln(St[i]:15);
Readln;
End.
Giáo viên: giới thiệu cho học sinh về nhà tham khảo bài 19 “Thư viện chương trình con
chuẩn” – phần kiến thức giảm tải và nêu thêm 1 số yêu cầu coi như bài tập ở nhà.
Giáo viên: Vậy làm thế nào để chúng ta có thể tạo ra được các dòng chữ chạy trên các biển
hiệu quảng cáo, hoặc khi các em không sử dụng máy tính vài phút thì trên màn hình hiện ra
các dòng chữ chuyển động từ trái sang hoặc từ trên xuống, kiểu chữ, màu chữ… trông rất
đẹp.
Khi nêu bài tập 5, tôi đã đặt câu hỏi như trên sau đó tôi mới nêu bài toán:
Bài tập 6: Nhập 1 xâu từ bàn phím, đưa xâu đó ra giữa màn hình, chuyển động dần về bên
trái, các ký tự đầu xâu sẽ lần lượt mất đi nhưng lại xuất hiện lần lượt ở cuối xâu. Tô màu
cho xâu xuất hiện trên màn hình.
Giáo viên: Chạy thử chương trình cho học sinh quan sát kết quả thực hiện, sau đó GV
hướng dẫn học sinh viết chương trình có sử dụng 2 thủ tục chữ chay và cắt dán ở bài tập và
thực hành số 6, giải thích các câu lệnh trong 2 thủ tục.
procedure catdan(s1:st79; var s2:st79);
begin
s2:=copy(s1,2,length(s1)-1)+s1[1];
end;
procedure cangiua(var s:st79);
var i,n:integer;
begin
n:=length(s);
n:=(80-n) div 2;
for i:=1 to n do s:=s+ ‘ ‘;
Người thực hiện: Nguyễn Quang Hưng
12
Một số phương pháp giúp học sinh giải bài tập về kiểu xâu
end;
end;
readln;
end.
Người thực hiện: Nguyễn Quang Hưng
13
Một số phương pháp giúp học sinh giải bài tập về kiểu xâu
Bài tập 7: Viết chương trình nhập vào một chuỗi, đổi các ký tự chữ hoa trong chuỗi thành
ký tự chữ thường, và các ký tự chữ thường trong chuỗi thành ký tự hoa
Ví dụ: Nhập ‘tHAO 12a3’ đổi thành ‘Thảo 12A3’
Giáo viên đặt vấn đề: Ta biết ký tự ‘A’ có số thứ tự trong bảng mã ASCII bằng 65, ‘a’ bằng
97, nghĩa là ORD(‘A’)+32 = 65 + 32 = 97. Tương tự với các ký tự chữ cái còn lại.
- Nêu để đổi một ký tự chữ thường ra hoa ta dùng công thức ORD(kytu)-32.
- Nêu để đổi một ký tự chữ hoa ra thường ta dùng công thức ORD(kytu)+32.
Giáo viên gơi ý và yêu cầu học sinh thảo luận và viết chương trình.
Chương trình đổi chữ hoa ra chữ thường và ngược lại.
Program BT7;
Uses CRT;
Var s: String;
i: integer;
Begin
Clrscr;
Writeln(‘Chuong trinh doi chu hoa ra thuong va nguoc lai’);
Write (‘Nhap vao chuoi s=’);
Readln(s);
For i:= 1 to length(s) do
If(s[i]<=’Z’) and (s[i]>=’A’) then
S[i]:= CHR(ord(s[i])+32);
Else
If(s[i]<=’z’) and (s[i]>=’a’) then
S[i]:= CHR(ord(s[i])-32);
Một số phương pháp giúp học sinh giải bài tập về kiểu xâu
C. KẾT LUẬN
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 tiết học trở nên sinh động hơn và giáo viên không đóng vai trò là người xây dựng
lý luận mà học sinh là người chủ động để giải quyết các vấn đề.
So sánh, đối chứng tỉ lệ % kết quả của học sinh trước và sau khi thực hiện đề tài ta
thấy rõ ràng kết quả của học sinh sau khi được học bằng giáo án điện tử trên máy chiếu kết
hợp mô phỏng trực quan, lấy dẫn chứng thực tế …cao hơn hẳn so với khi chưa thực hiện đề
tài.
Cụ thể kết quả thực tế đối với lớp 11a8 có 45 học sinh (với đề kiểm tra giống lớp
11A3 ở trên) sau khi thực hiện đề tài như sau:
Điểm Số học sinh Tỉ lệ
3 0 0%
4 0 0%
5 7 15,56%
6 10 33,33%
7 15 40%
8 5 11,11%
9 5 11,11%
10 3 6,67%
Ngôn ngữ lập trình nói chung đóng vai trò rất quan trọng trong việc xây dựng các
chương trình ứng dụng để phục vụ cho cuộc sống. Nhờ sự phát triển của tin học trong đó
các nhà lập trình chuyên nghiệp đóng vai trò không nhỏ mà hiện nay hầu hết các lĩnh vực
trong xã hội đã ứng dụng được tin học để giải quyết công viêc nhanh, hiệu quả và chính xác
hơn.
Hiện nay, ngôn ngữ lập trình Pascal đã trở thành ngôn ngữ lập trình phổ biến nhất
trên thế giới sử dụng trong lĩnh vực giảng dạy. Trong quá trình giảng dạy các thầy cô có thể
đưa ra các vấn đề như lập trình các game nhỏ…để các em có thể chứng tỏ được khả năng
của mình làm cho học sinh yêu thích môn học, ham học hỏi và tìm tòi sáng tạo.
MỤC LỤC
A- MỞ ĐẦU 1
I/ Lý do chọn đề tài 1
II/ Thực trạng của vấn đề nghiên cứu 4
1/ Tình trang thực tế khiu chưa thực hiện đề tài 4
2/ Khảo sát thực tế 4
3/ Mục đích của sáng kiến kinh nghiệm 5
B- NỘI DUNG 6
I/ Chuẩn bị 6
1/ Về phương pháp 6
2/ Về phương tiện 6
II/ Các bước thực hiện bài giảng 6
C- KẾT LUẬN 16
D- KIẾN NGHỊ 17
E- TÀI LIỆU THAM KHẢO 18
Người thực hiện: Nguyễn Quang Hưng
19