PHẦN 2: GIẢI QUYẾT VẤN ĐỀ.I/ CƠ SỞ LÝ LUẬN: + Nghị quyết của Hội nghị lần thứ hai của Ban chấp hành trung ươngĐảng khoá VIII khẳng định: ‘ Mục tiêu và nhiệm vụ của giáo dục là nhằm xâydự
Trang 1PHẦN I ĐẶT VẤN ĐỀ I/ LÝ DO CHỌN ĐỀ TÀI
Công nghệ thông tin của nước ta hiện nay đang rất phát triển đưa ra nhiềutriển vọng cho tất cả các ngành trong việc tin học hoá xã hội Nó có ý nghĩa rấtquan trọng đối với rất nhiều lĩnh vực của đời sống Trong ngành giáo dục hiệnnay cũng là một ngành đang đưa công nghệ thông tin vào ứng dụng trong việcdạy và học
Trong thời đại hiện nay sự bùng nổ thông tin đã tác động lớn đến côngcuộc phát triển kinh tế xã hội người Với con người của thời đại hiện nay ngoàicác kiến thức về chuyên môn thì hầu hết mọi người luôn sử dụng máy tính nhưmột công cụ trợ giúp Chính vì vậy Đảng và Nhà nước đã xác định rõ ý nghĩa vàtầm quan trọng của tin học và CNTT, truyền thông cũng như những yêu cầu đẩymạnh của ứng dụng CNTT, đào tạo nguồn nhân lực đáp ứng yêu cầu CNH,HĐH, mở cửa và hội nhập, hướng tới nền kinh tế tri thức của nước ta nói riêng vthế giới nói chung
Đưa môn tin học vào chương trình THPT là cần thiết và rất quan trọng đốivới sự phát triển của xã hội, phát triển nguồn nhân lực có trình độ cao Mộttrong những mục tiêu khi đưa Tin học vào trường học là nhằm giúp học sinh cókhả năng phân tích, tổng hợp, trừu tượng hoá, khái quát vấn đề và phát triển tưduy Muốn vậy ngoài dạy học Tin học đại trà trong nhà trường nhằm đảm bảotính phổ thông, hướng nghiệp và dạy nghề ta cần phải tạo điều kiện cho các họcsinh có năng khiếu về Tin học phát triển về khả năng lập trình để giải quyết bàitoán Góp phần nâng cao chất lượng dạy và học Tin học ở nhà trường phổ thông,bồi dưỡng các học sinh có năng khiếu và yêu thích môn tin học Đặc biệt khi lậptrình để giải bài toán phức tạp thường rất dài, có thể gồm hàng nghìn lệnh làmcho chương trình dài, rất khó nhận biết được thực hiện công việc gì và hiệuchỉnh cũng khó khăn Vì vậy vấn đề đặt ra là làm thế nào để chương trình dễđọc, dễ hiệu chỉnh và dễ nâng cấp Với những lý do trên tôi quyết định chọn đềtài :“Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi”
Trang 2PHẦN 2: GIẢI QUYẾT VẤN ĐỀ.
I/ CƠ SỞ LÝ LUẬN:
+ Nghị quyết của Hội nghị lần thứ hai của Ban chấp hành trung ươngĐảng khoá VIII khẳng định: ‘ Mục tiêu và nhiệm vụ của giáo dục là nhằm xâydựng những con người và thế hệ gắn bó với tư tưởng độc lập dân tộc và chủnghĩa xã hội, có đạo đức trong sáng, có ý kiến kiên cường xây dựng và bảo vệ tổquốc; công nghiệp hoá, hiện đại hoá đất nước, giữ gìn và phát huy các giá trị vănhoá dân tộc, có năng lực tiếp thu tinh hoa và văn hoá nhân loại; phát huy tiềmnăng của dân tộc và con người Việt Nam có ý thức cộng đồng và phát huy tínhtích cực của cá nhân, làm chủ tri thức khoa học và công nghệ hiện đại, có tư duysáng tạo, có kỹ năng thực hành giỏi, có tác phong công nghiệp, có tính tổ chức
kỷ luật, có sức khoẻ, là những người thừa kế xây dựng chủ nghĩa xã hội vừahồng, vừa chuyên như lời căn dặn của Bác Hồ’
+ Luật giáo dục nước ta cũng đã cụ thể hoá tại chương II, mục 2 điều 23là: “ Mục tiêu của giáo dục phổ thông là giúp học sinh phát triển toàn diện vềđạo đức, trí tuệ, thể chất, thẩm mỹ và các kỹ năng cơ bản nhằm hình thành nhâncách con người Việt Nam xã hội chủ nghĩa, xây dựng tư cách và trách nhiệmcông dân, chuẩn bị cho học sinh tiếp tục học lên hoặc đi vào cuộc sống lao độngtham gia xây dựng và bảo vệ Tổ Quốc”
+ Môn tin học, cũng như mọi môn học khác, căn cứ vào mục tiêu trên đểxác định ra nhiệm vụ cụ thể của môn học, tổ chức hoạt động đào tạo góp phầnthực hiện mục tiêu giảo dục mà Đảng và nhà nước đề ra
+ Ngoài việc tạo điều kiện cho học sinh chiếm lĩnh những tri thức và kỉnăng Tin học cần thiết, Tin học còn có tác dụng phát triển năng lực trí tuệ chungnhư: phân tích, tổng hợp, trừu tượng hoá, khái quát hoá…rèn luyện những đứctính, phẩm chất của người lao động mới Học sinh sẽ thấy rõ hiệu quả mạnh mẽcủa công nghệ thông tin và nhận thức cần có
II/ THỰC TRẠNG VẤN ĐỀ
Thực trạng chung:
Trang 3Tri thức Tin học ngày càng nhiều, thời gian dạy học Tin học không đượctăng lên, dạy học lập trình càng gặp nhiều khó khăn Nhu cầu xã hội đang rấtcần những kỹ sư công nghệ thông tin thật sự giỏi nhưng việc bồi dưỡng học sinhyêu thích môn tin học trong trường THPT chưa đáp ứng được những yêu cầu cơbản Do vậy việc dạy học sinh tiếp cận và chiếm lĩnh tri thức một cách tự lực rấtquan trọng Học sinh yêu thích môn tin học nhưng gặp khó khăn về tài liệu, thờigian và luôn phải lo lắng cho các kỳ thi nên thời gian dành cho môn tin không
có Đó là thực trạng của đa số các trường phổ thông hiện nay
* Một số thuận lợi và khó khăn khi thực hiện đề tài ở trường THPT NôngCống II
1 Thuận lợi:
* Nhà trường:
- Môn Tin học mới được đưa vào giảng dạy nhưng nhà trường đã tạo điềukiện để học sinh có điều kiện tốt nhất để học, tạo điều kiện về máy móc, trangthiết bị phục vụ cho việc dạy và học môn Tin học
Đa số học sinh trong trường đều là con em nông dân nên điều kiện kinh tếkhông đủ để các em có máy tính riêng ở nhà
* Giáo viên:
Môn tin học mới đưa vào giảng dạy nên giáo viên thường gặp khó khăn
về phân hoá học sinh và bồi dưỡng học sinh yêu thích và học khá giỏi môn tin
Trang 4Do đó việc lựa chọn học sinh giỏi là rất khó khăn vì học sinh giỏi thường học tốtcác môn tự nhiên.
* Học sinh:
Học sinh đa số chưa tiếp cận ngôn ngữ lập trình nên rất khó khăn tronghọc lập trình Việc thực hiện các bài toán phức tạp thường làm học sinh lúngtúng vì học sinh chưa quen cách làm ‘mịn’ dần bài toán và sử dụng các chươngtrình con đã có để thực hiện
III/ GIẢI PHÁP VÀ TỔ CHỨC THỰC HIỆN.
- Các chương trình giải các bài toán phức tạp thường rất dài do đó khi đọc rất khó hiểu chương trình làm công việc gì và hiệu chỉnh chương trình rất khó khăn Do vậy nên việc chia bài toán thành những bài toán nhỏ hơn để có thể giao cho nhiều người thực hiện, việc giải quyết các bài toán nhỏ thường là những bài toán đã biết và làm được
- Ta có thể phân tách vấn đề phức tạp thành những vấn đề nhỏ hơn để dễ kiểm tra, gỡ rối từng khối một sau đó lại lắp ghép thành một chương trình lớn Việc này tương ứng trong dây truyền sản xuất công nghiệp, người ta có thể lắp ráp sản phẩm từ những bán thành phẩm, từ các modul đã được chế tạo ở nơi khác Đó cũng là ý tưởng cơ bản của lập trình có cấu trúc.
- Việc chia nhỏ bài toán cũng giúp học sinh có thể liên kết giúp đỡ lẫn nhau trong việc giải quyết các yêu cầu từ đó tăng khả năng làm việc độc lập cũng như làm việc theo nhóm của học sinh.
- Thời gian để hoàn thành các bài thực hành ngay trong giờ thực hành cũng là một khó khăn lớn; do vậy khi giải quyết vấn đề học sinh chỉ chia nhỏ bài toán và liên hệ với các chương trình con đã có để giải quyết.
Vì vậy, tôi đã xây dựng một số chương trình con thường dùng trong các bài toán để bồi dưỡng học sinh khá giỏi và là các ví dụ minh hoạ cho các các bài lý thuyết ở chương VI (Chương trình con và lập trình có cấu trúc – Tin học 11).
Hơn thế nữa, đây cũng là khoảng thời gian rất cần thiết cho các em làm quen với lập trình có cấu trúc, từ đó phát huy những ý tưởng và những đam mê của mình trong khi học tập và đó cũng là khoảng thời gian học tập rất bổ ích cho những học sinh có ý định sau này tiếp tục theo đuổi chuyên ngành công
Trang 5nghệ thông tin hay có thể trở thành các lập trình viên giỏi trong tương lai…Vì vậy, tôi đã đưa ra các chương trình con sau:
Trang 6{Thủ tục sắp xếp theo thuật toán sắp xếp nhanh:}
procedure qSort(l, r : integer);
if a[i] > a[j] then begin
tg := a[i]; a[i] := a[j]; a[j] := tg;
Trang 7while (j>1) and (a[j-1]>k) do dec(j);
for i:=n downto j do a[i+1]:=a[i];
a[j]:=k;
end;
{………}
* Một số thủ tục về xâu
{Chuẩn hoá xâu}
Procedure chuanhoa(var s:string);
begin while s[1]=' ' do delete(s,1,1);
while s[length(s)]=' ' do delete(s,length(s),1);
for i:=length(s)-1 downto 2 do
if (s[i]=' ') and (s[i-1]=' ') then delete(s,i,1);
end;
{………}
{chuyển kí tự đầu thành chữ hoa còn các kí tự khác thành chữ thường}
Procedure chuyen(var s:string);
begin s[1]:=upcase(s[1]);
for i:=2 to length(s) do
if s[i-1]=' ' then s[i]:=upcase(s[i])
else if (s[i]>='A') and(s[i]<='Z') then s[i]:= chr(ord(s[i])+32);
end;
{………}
{Chuyển xâu kí tự sang xâu chữ in hoa}
Procedure chuyen(var St:String);
Trang 8Procedure chuyen(var St:String);
Begin
For i:=1 to length(St) do
If St[i] IN [‘A’ ’Z’] Then St[i]:=CHR(ORD(St[i])+32);
for i:=1 to length(s) do
if (s[i]=' ') and (s[i+1]<>' ') then d:=d+1;
end;
{……… ……….}
{Thủ tục đảo xâu theo từ}
Procedure dao_xau_theo_tu(var s:string);
var x,y,z:byte;
begin z:=length(s);
for y:=length(s) downto 1 do
begin if ((s[y]=' ') or (y=1)) then
begin for x:=y to z do write(s[x]);
begin
x1:=(-b+sqrt(delta))/(2*a);
Trang 9{Phân tích số nguyên n ra thừa số nguyên tố}
Procedure PhantichSoN ( Var N1 : Integer );
For i:=1 to n do inc(a[i]);
For i:=1 to 3200 do if a[i]<>0 then inc(d);
Write(‘so luong phan tu khac nhau la:’,d);
End;
{………}
2 Chương trình con dạng hàm:
* Một số hàm tìm kiếm
Trang 10{Tìm kiếm tuần tự trên dãy chưa có thứ tự}
Function tim(x: integer; a:array[1 n] of integer):word;
{Tìm kiếm tuần tự trên dãy đã có thứ tự}
Function tim(x: integer; a:array[1 n] of integer):word;
{Tìm kiếm nhị phân trên một mảng được sắp xếp}
Function tim(x: integer; a:array[1 n] of integer):word;
Var dau,cuoi,giua: integer;
Trang 11If cuoi=-1 then tim:=giua else tim:=0;
while (i<=sqrt(k)) and (k mod i<>0) do inc(i);
if i>sqrt(k) then kt:=true else kt:=false;
end;
nt:=kt;
end;
Trang 12for i:=1 to k div 2 do if k mod i=0 then s:=s+i;
if s=k then kt:=true else kt:=false;
Trang 13repeat y:=he10 mod 16;
if y<10 then str(y,tg) else tg:=chr(y+55);
Trang 14begin b:='';
repeat a:=k mod 16;
if a<10 then str(a,tg) else tg:=chr(a+55);
{Hàm hoán đổi 2 giá trị cho nhau}
Function hoandoi(Var x,y:Real);
- Dữ liệu vào từ file bai1.inp gồm 1dòng là 1 xâu ký tự
- Dữ liệu ra ghi vào file bai1.out gồm:
Trang 15+ dòng 1 ghi: xâu đã được chuẩn hoá
+ dòng 2 ghi: xâu sau khi đã chuyển ký tự đầu mỗi từ thành chữ in hoa, các ký
tự còn lại là chữ thường
+ dòng 3: số lượng từ có trong xâu
+ dòng 4: độ dài từ lớn nhất trong xâu
procedure chuanhoa(var s:string);
begin while s[1]=' ' do delete(s,1,1);
while s[length(s)]=' ' do delete(s,length(s),1);
for i:=length(s)-1 downto 2 do
if (s[i]=' ') and (s[i-1]=' ') then delete(s,i,1);
end;
procedure chuyen(var s:string);
begin s[1]:=upcase(s[1]);
for i:=2 to length(s) do
if s[i-1]=' ' then s[i]:=upcase(s[i])
else if (s[i]>='A') and(s[i]<='Z') then s[i]:= chr(ord(s[i])+32);
for i:=1 to length(s) do
if (s[i]=' ') and (s[i+1]<>' ') then d:=d+1;
Trang 16{ Thu tuc nhap so N }
Procedure NhapSoN( var NN : Integer );
{ Thu tuc phan tich N ra thanh cac thua so nguyen to }
Procedure PhantichSoN ( Var N1 : Integer );
Trang 17Bài 3: Hai số tự nhiên được gọi là Nguyên tố tương đương nếu chúng có chung
các ước số nguyên tố Ví dụ các số 75 và 15 là nguyên tố tương đương vì cùng
có các ước nguyên tố là 3 và 5 Cho trước hai số tự nhiên N, M Hãy viết chương trình kiểm tra xem các số này có là nguyên tố tương đương với nhau hay không
Trang 18While d mod i=0 do d:=d div i;
While M mod i=0 do M:=M div i;
While N mod i=0 do N:=N div i;
Inc(i);
end;
If M*N=1 then Write('M va N nguyen to tuong duong.')
Else Write('M va N khong nguyen to tuong duong.');
Readln
End.
IV/ KIỂM NGHIỆM
Sau khi tôi xây dựng các chương trình con và áp dụng vào bồi dưỡnghọc sinh khá, giỏi của các lớp kết quả rất khả quan Trong bồi dưỡng học sinhgiỏi thì việc sử dụng các chương trình con đã có giúp học sinh giảm bớt đượcthời gian lập trình Thời gian cho học sinh thực hiện thiết kế bài toán từ trênxuống được tốt hơn, khả năng tư duy thuật toán của học sinh được tăng lên rõrệt Học sinh của các lớp cũng rất thích với các việc thiết kế bài toán và việclàm ‘mịn’ bài toán rồi sau đó được sử dụng các chương trình đã có để lậptrình
Khi có các chương trình con đã có thì việc làm bài tập trở thành các tiếtthiết kế và làm ‘mịn’ bài toán do đó học sinh rất hứng thú với việc xây dựngbài Điểm số các bài kiểm tra của học sinh có sự tiến bộ so với học kỳ I
Trang 19PHẦN 3 KẾT LUẬN VÀ ĐỀ XUẤT I/ KẾT LUẬN
* Thông qua việc sử dụng các chương trình con đã có để lập trình:
- Đa số học sinh của các lớp đều nắm vững những phần kiến thức cơ bảncủa bài học như mục tiêu, yêu cầu đã đề ra
- Các em đã từng bước hình thành kỹ năng cơ bản trong lập trình và thựchiện việc thiết kế bài toán một cách thành thạo hơn
Trong quá trình thực hành và làm bài tập cũng tạo cho học sinh tinh thầntrách nhiệm, nhận thức đúng đắn về môn học, khơi dậy lòng say mê môn học vàtạo hứng thú học tập cho học sinh
- Việc thiết kế và làm mịn dần bài toán giúp học sinh có thể liên kết vớinhau để giải quyết vấn đề
Thông qua các tiết bài tập và thực hành cũng giúp cho giáo viên nắm bắtđược những nhược điểm của học sinh hay mắc phải, những phần kiến thức họcsinh thường nhầm lẫn để củng cố, sửa đổi, bổ sung kịp thời cho các em giúp các
em hiểu rõ từng vấn đề đang vướng mắc trong quá trình thực hiện và học tập
II/ Ý KIẾN ĐỀ XUẤT.
Để giúp học sinh yêu thích lập trình có nhiều điều kiện rất mong được sựquan tâm của nhà trường cùng các ngành có liên quan giúp đỡ về cơ sở vật chất
Đề nghị các nhà khoa học có chuyên môn nên xem xét lại sự phân bốphân phối chương trình trong sách giáo khoa lớp 11
Trên đây là một số chương trình con tôi đã áp dụng vào dạy môn tin học
11 Tuy nhiên còn nhiều mặt hạn chế và chưa thật sự được hệ thống Rất mong được sự đóng góp ý kiến của đồng nghiệp để đề tài của tôi có hiệu quả hơn.
Thanh Hóa, Ngày 25/04/2013
Xác nhận của thủ trưởng đơn vị
NGƯỜI THỰC HIỆN ĐỀ TÀI
Tôi xin cam đoan đây là SKKN của mình viết, không sao chép nội dung người khác
Trang 20Hoàng Thị Yến
Trang 21III/ Giải pháp và tổ chức thực hiện
IV/ Kiểm nghiệm
I/ Kết luận
II/ Ý kiến đề xuất
TÀI LIỆU THAM KHẢO
1 SGK tin học 11 - NXB Giáo dục Việt Nam
2 Sách bài tập tin học 11 - NXB Giáo dục Việt Nam
3 Đề kiểm tra tin học 11 - NXB Giáo dục Việt Nam
4 Tài liệu bồi dưỡng thường xuyên chu kỳ 3
5 Một số tài liệu trên mạng Internet
Trang 22SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ
TRƯỜNG THPT NÔNG CỐNG II
SÁNG KIẾN KINH NGHIỆM
XÂY DỰNG MỘT SỐ CHƯƠNG TRÌNH CON ĐỂ
BỒI DƯỠNG HỌC SINH KHÁ GIỎI
Người thực hiện: Hoàng Thị Yến Chức vụ: Giáo viên
Đơn vị công tác: Trường THPT Nông Cống II SKKN thuộc lĩnh vực: Tin học
THANH HOÁ NĂM 2013