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

skkn xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi

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 (295.67 KB, 22 trang )

SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
PHẦ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ều
triể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ất
quan 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ện
nay cũng là một ngành đang đưa công nghệ thông tin vào ứng dụng trong việc
dạ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ông
cuộ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ài
cá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 đẩy
mạ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 v
thế 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 đối
vớ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ột
trong 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ảo
tí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ọc
sinh 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ài
toá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ập
trì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àm
cho 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ệu
chỉ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”.
GV: Hoàng Thị Yến THPT Nông Cống II


1
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
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ây
dự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ăn
hoá 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ềm
nă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ính
tí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ư duy
sá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ừa
hồ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 23
là: “ 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ân
cách con người Việt Nam xã hội chủ nghĩa, xây dựng tư cách và trách nhiệm
cô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 động
tham 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ần
thự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ệ chung
như: phân tích, tổng hợp, trừu tượng hoá, khái quát hoá…rèn luyện những đức
tí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:
GV: Hoàng Thị Yến THPT Nông Cống II
2
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
Tri thức Tin học ngày càng nhiều, thời gian dạy học Tin học không được
tă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ất
cầ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 sinh
yê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ất
quan 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ời
gian 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ông
Cố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ều
kiệ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, trang
thiết bị phục vụ cho việc dạy và học môn Tin học.
* Học sinh:
Là môn học có tính ứng dụng cao nên đa số học sinh có ý thức tìm hiểu về
môn học nói riêng và CNTT nói chung. Một số học sinh có khả năng phát triển
về lập trình và yêu thích lập trình.
2. Khó khăn:
* Nhà trường:
Nhà trường đã có hai phòng máy vi tính để cho học sinh học nhưng vẫn
còn hạn chế về số lượng cũng như chất lượng, mỗi ca thực hành có tới 2 – 3 em
ngồi cùng một máy nên các em không có nhiều thời gian để thực hành làm bài
tập một cách đầy đủ. Tuy đã có hai phòng thực hành nhưng số lớp nhiều (24 lớp
học) và mỗi lớp số lượng học sinh khoảng 45-55 học sinh do đó rất khó khăn

cho việc xếp lịch thực hành cho các lớp.
Đ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.
GV: Hoàng Thị Yến THPT Nông Cống II
3
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
Do đó 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ốt
cá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 trong
họ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úng
tú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ương
trì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
GV: Hoàng Thị Yến THPT Nông Cống II
4
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
nghệ 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:
1. Chương trình con dạng thủ tục:
{Thủ tục gắn đại diện để đọc ghi tệp}
Procedure chuanbi;
var f,f1:text;
begin assign(f,fo);
reset(f); {có thể đọc luôn dữ liệu vào biến hoặc mảng}
assign(f1,fi); rewrite(f1);
end;
{……………………………………………………………………………}
{Thủ tục đọc dữ liệu từ tệp vào mảng}
Procedure doc;
var fa:text;
begin
assign(fa,f0);reset(fa);

readln(fa,n,k);
for i:=1 to n do read(fa,a[i]);
close(fa);
end;
{……………………………………………………………………………}
{Thủ tục đọc dữ liệu từ tệp vào xâu hoặc biến}
Procedure doc;
var fa:text;
begin assign(fa,f0);reset(fa);
read(fa,s);
close(fa);
end;
{……………………………………………………………………………}
* Một số thủ tục trong sắp xếp
{Thủ tục sắp xếp theo thuật toán sắp xếp lựa chọn}
Procedure selection;
var
i, j, t : integer;
begin
for i := 1 to n – 1 do
for j := i+1 to n do
if a[i] > a[j] then
begin
t := a[i]; a[i] := a[j]; a[j] := t;
end;
end;
GV: Hoàng Thị Yến THPT Nông Cống II
5
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
{…………………………………………………………… …………….}

{Thủ tục sắp xếp theo thuật toán sắp xếp nhanh:}
procedure qSort(l, r : integer);
var
i, j, x, y : integer;
begin
i := l; j := r; x := a[(l+r) div 2];
repeat
while a[i] < x do i := i + 1;
while x < a[j] do j := j – 1;
if i <= j then
begin
y := a[i]; a[i] := a[j]; a[j] := y;
i := i + 1; j := j – 1;
end;
until i > j;
if l < j then qSort(l, j);
if i < r then qSort(i, r);
end;
{…………………………………………………………… …………….}
{Thủ tục sắp xếp tăng dần các phần tử của một mảng:}
procedure sxep;
var i,j,tg : integer;
begin
for i := 1 to n-1 do
for j := i + 1 to n do
if a[i] > a[j] then begin
tg := a[i]; a[i] := a[j]; a[j] := tg;
end;
writeln('DAY SAU KHI SAP XEP TANG DAN:');
for i := 1 to n do writeln(a[i]);

end;
{…………………………………………………………… …………….}
{Thủ tục sắp xếp số lẻ về đầu dãy, số chẳn về cuối dãy}
procedure sxep;
var j,i,tg:integer;
begin
for i:=1 to n-1 do
if a[i] mod 2 =0 then
begin j:=i+1;
while j<=n do
if a[j] mod 2=1 then
begin tg:=a[i];
GV: Hoàng Thị Yến THPT Nông Cống II
6
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
a[i]:=a[j];
a[j]:=tg;
break;
end
else inc(j);
end;
end;
{……………………………………………………………………………}
{Thủ tục chèn một số vào dãy mà không làm thay đổi thứa tự của dãy}
procedure sxep;
var j,i:integer;
begin
a[n+1]:=k;
j:=n+1;
while (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);
Begin
For i:=1 to length(St) do St[i]:=Upcase(St[i]);
End.
{……………………………………………………………………………}
{Chuyển xâu kí tự sang xâu chữ thường}
GV: Hoàng Thị Yến THPT Nông Cống II
7

SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
Procedure 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);
End.
{……………………………………………………………………………}
{Đếm số từ trong xâu}
Procedure dem_so_tu(s:string);
begin
d:=0;
s:=' '+s;
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]);
z:=y;
end;
write(' ');
end;
end;
{……………………………………………………………………………}
{Thủ tục giải phương trình bậc 2}

Procedure GPTB2;
Var Delta: real;
Begin
Delta:=sqr(b) – 4*a*c;
if Delta<0 then writeln(‘phuong trinh vo nghiem’)
else
if delta=0 then
Begin
write(‘phuong trinh co nghiep kep’);
write(‘x1,2=’,-b/(2*a):8:2);
end
Else
begin
x1:=(-b+sqrt(delta))/(2*a);
GV: Hoàng Thị Yến THPT Nông Cống II
8
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
x2:= (-b-sqrt(delta))/(2*a);
writeln(‘phuong trinh co 2 nghiem phan biet
la:’);
writeln(‘x1=’,x1:8:2,’x2=’,x2:8:2);
end;
end;
{……………………………………………………………………………}
{Phân tích số nguyên n ra thừa số nguyên tố}
Procedure PhantichSoN ( Var N1 : Integer );
Var u,dem:Integer;
Begin
If ( N1 > 1 ) Then
Begin

u := 2; dem := 0;
While ( N1 > 1 ) do
If ( N1 mod u = 0 ) Then
Begin
dem:=dem+1;
Writeln( u);
N1 := N1 div u;
End
Else
u:=u+1;
End
Else
Writeln(' Khong the phan tich duoc' );
End;
{……………………………………………………………………………}
{Thủ tục đếm xem trong dãy số nguyên có bao nhiêu số khác nhau, sử dụng
thuật toán lùa bò vào chuồng}
Procedure Dem;
Var d,i,n:integer;
A:array[1 3200] of integer;
Begin d:=0;
Fillchar(a,sizeof(a),0);
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
GV: Hoàng Thị Yến THPT Nông Cống II

9
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
{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;
Var i: word;
Begin
I:=1;
While (i<=n) and not (x=a[i]) do
Inc(i);
If i>n then tim:=0 else tim:=i;
End;
{……………………………………………………………………………}
{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;
Var i: word;
Begin
I:=1;
While (i<=n) and not (x>a[i]) do
Inc(i);
If ((i<=n) and (a[i]>x)) or (i>n) then tim:=0 else tim:=i;
End;
{……………………………………………………………………………}
{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;
Begin
dau:=1; cuoi:=n;
While cuoi>= dau do
Begin
Giua:=(dau+cuoi) div 2;

If a[giua] < x then
Dau:=giua + 1;
Else
If (x< a[giua]) then cuoi:=giua-1
Else cuoi:=-1;
End;
GV: Hoàng Thị Yến THPT Nông Cống II
10
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
If cuoi=-1 then tim:=giua else tim:=0;
End;
{……………………………………………………………………………}
* Một số chương trình con
{Hàm tính độ dài từ lớn nhất trong xâu}
function dodai_tu_max(s:string):byte;
var d:string; k:byte;
begin
k:=0;
repeat i:=1;
while s[i]<>' ' do inc(i);
d:=copy(s,1,i-1);
delete(s,1,i);
if length(d)>k then k:=length(d);
until length(s)=0;
dodai_tu_max:=k;
end;
{……………………………………………………………………………}
{Hàm kiểm tra xem một số có phải là số chính phương hay không}
function cp(k:longint):boolean;
var kt:boolean; j:longint;

begin kt:=false;
if k=1 then kt:=true ;
for j:=1 to k div 2 do
if j*j=k then begin kt:=true;
break;
end;
cp:=kt;
end;
{……………………………………………………………………………}
{Hàm kiểm tra xem một số có phải là số nguyên tố hay không}
function nt(k:longint):boolean;
var kt:boolean; i:longint;
begin kt:=false;
if k=1 then kt:=false
else begin
i:=2;
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;
GV: Hoàng Thị Yến THPT Nông Cống II
11
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
{………………………………………………………………………}
{Hàm kiểm tra xem một số có phải là số hoàn hảo hay không}
function hh(k:longint):boolean;
var kt:boolean; s,i:longint;
begin
s:=0;

for 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;
hh:=kt;
end;
{………………………………………………………………………}
{Hàm tính ước chung lớn nhất của 2 số nguyên}
function ucln(m,n:integer):integer;
begin
while m<>n do
if m>n then m:=m-n else n:=n-m;
ucln:=m;
end;
Hoặc sử dụng hàm sau:
Function USCLN(m,n: integer): integer;
Var r: integer;
Begin
While n<>0 do
begin
r:=m mod n; m:=n; n:=r;
end;
USCLN:=m;
End;
{……………………………………………………………………………}
{Đổi 1 số từ cơ số 10 sang cơ số 2}
Function doi(he10:longint):String;
var he2,tg:string;
y:byte;
begin he2:=’’;
repeat y:=he10 mod 2;
str(y,tg);

he2:=tg+he2;
he10:=he10 div 2;
until he10=0;
doi:=he2;
end;
GV: Hoàng Thị Yến THPT Nông Cống II
12
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
{……………………………………………………………………………}
{Đổi cơ số 10 sang cơ số 8}
Function doi(he10:longint):String;
var he8,tg:string;
y:byte;
begin he8:=’’;
repeat y:=he10 mod 8;
str(y,tg);
he8:=tg+he8;
he10:=he10 div 2;
until he10=0;
doi:=he8;
end;
{……………………………………………………………………………}
{Đổi cơ số 10 sang cơ số 16}
Function doi(he10:longint):String;
var he16,tg:string;
y:byte;
begin he16:=’’;
repeat y:=he10 mod 16;
if y<10 then str(y,tg)
else tg:=chr(y+55);

he16:=tg+he16;
he10:=he10 div 16;
until he10=0;
doi:=he16;
end;
{……………………………………………………………………………}
{Đổi cơ số 2 sang cơ số 10}
function thap_phan(k:longint):longint;
var i,y,x:integer;
begin y:=0;i:=0;
repeat x:=k mod 10;
y:=y+x*round(exp(i*ln(2)));
i:=i+1;
k:=k div 10;
until k=0;
thap_phan:=y;
end;
{……………………………………………………………………………}
{Đổi cơ số 2 sang cơ số 16}
function hexa(k:longint):string;
var b,tg:string; a:byte;
GV: Hoàng Thị Yến THPT Nông Cống II
13
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
begin b:='';
repeat a:=k mod 16;
if a<10 then str(a,tg) else tg:=chr(a+55);
b:=tg+b;
k:=k div 16;
until k=0;

hexa:=b;
end;
{……………………………………………………………………………}
{Hàm tìm max của 2 số thực}
Function Max(x,y:Real):Real;
Begin
If x>y Then Max:=x Else Max:=y;
End;
{……………………………………………………………………………}
{Hàm hoán đổi 2 giá trị cho nhau}
Function hoandoi(Var x,y:Real);
Var Tam:Real;
Begin
Tam:=x; x:=y; y:=Tam;
End;
{……………………………………………………………………………}
{Hàm tính giá trị x
n
.}
Function XMU(x:Real;n:Byte):Real;
Var i:Byte; S:Rea;
Begin
S:=1;
For i:=1 To n Do S:=S*x;
XMU:=S;
End;
{……………………………………………………………………………}
{Hàm tính n!}
Function GiaiThua(n:Word):Word;
Var P, i:Word;

Begin
P:=1;
For i:=1 To n Do P:=P*i;
GiaiThua:=P;
End;
3. Một số ví dụ minh họa
Bài 1:
- 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:
GV: Hoàng Thị Yến THPT Nông Cống II
14
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
+ 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
program xulixau;
const f0='bai1.inp';
f1='bai1.out';
var f:text;
s:string; i,d:byte;
procedure doc;
var fa:text;
begin assign(fa,f0);reset(fa);
read(fa,s);
close(fa);
end;
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);
end;
procedure dem_so_tu(s:string);
begin
d:=0;
s:=' '+s;
for i:=1 to length(s) do
if (s[i]=' ') and (s[i+1]<>' ') then d:=d+1;
end;
function dodai_tu_max(s:string):byte;
var d:string; k:byte;
begin
k:=0;
repeat i:=1;
while s[i]<>' ' do inc(i);
d:=copy(s,1,i-1);
GV: Hoàng Thị Yến THPT Nông Cống II
15
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
delete(s,1,i);
if length(d)>k then k:=length(d);
until length(s)=0;

dodai_tu_max:=k;
end;
begin
assign(f,f1);rewrite(f);
doc;
chuanhoa(s);
writeln(f,s);
chuyen(s);
writeln(f,s);
dem_so_tu(s);
writeln(f,d);
write(f,dodai_tu_max(s));
close(f);
end.
{……………………………………………………………………………}
Bài 2: Viết chương trình hoàn chỉnh thực hiện phân tích ra N ra thành các thừa
số nguyên tố.
Ví dụ: N = 1260 = 2 . 2 . 3 . 3 . 5 . 7
Program Phan_Tich_Thua_So;
Uses crt;
Var N : integer;
{ Thu tuc nhap so N. }
Procedure NhapSoN( var NN : Integer );
Begin
NN := 0; {Gan khoi dau bang 0 de vao vong lap, vong lap dung khi nhap
khac 0}
While ( N = 0 ) do
Begin
Write( 'Nhap N=' ); Readln(NN );
End;

End;
{ Thu tuc phan tich N ra thanh cac thua so nguyen to }
Procedure PhantichSoN ( Var N1 : Integer );
Var u,dem:Integer;
Begin
If ( N1 > 1 ) Then
Begin
u := 2; dem := 0;
GV: Hoàng Thị Yến THPT Nông Cống II
16
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
While ( N1 > 1 ) do
If ( N1 mod u = 0 ) Then
Begin
dem:=dem+1;
Writeln( u);
N1 := N1 div u;
End
Else
u:=u+1;
End
Else
Writeln(' Khong the phan tich duoc' );
End;
{ Than chuong trinh chinh }
BEGIN
Clrscr;
Writeln('Phan tich so N thanh tich cua cac so nguyen to :' );
NhapSoN( N );
PhantichSoN( N );

Writeln ('Nhan Enter de ket thuc ' );
Readln;
END.
{……………………………………………………………………………}
Bà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.
Program Nttd;
Var M,N,d,i: integer;
{ }
Function USCLN(m,n: integer): integer;
Var r: integer;
Begin
While n<>0 do
begin
r:=m mod n; m:=n; n:=r;
end;
USCLN:=m;
End;
{ }
BEGIN
GV: Hoàng Thị Yến THPT Nông Cống II
17
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
Write('Nhap M,N: '); Readln(M,N);
d:=USCLN(M,N); i:=2;
While d<>1 do
begin

If d mod i =0 then
begin
While 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;
end;
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ưỡng
họ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 sinh
giỏi thì việc sử dụng các chương trình con đã có giúp học sinh giảm bớt được
thờ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ên
xuố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ệc
làm ‘mịn’ bài toán rồi sau đó được sử dụng các chương trình đã có để lập
trì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ết
thiế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ựng
bà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.
GV: Hoàng Thị Yến THPT Nông Cống II
18
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
PHẦ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ản
củ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ực
hiệ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ần
trá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ới
nhau để 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ọc
sinh 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
GV: Hoàng Thị Yến THPT Nông Cống II
19
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.
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi

Hoàng Thị Yến
GV: Hoàng Thị Yến THPT Nông Cống II
20
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
PHỤ LỤC
Phần 1: Đặt vấn đề Trang 1
I/ Lý do chọn đề tài
Phần 2: Giải quyết vần đề Trang 2
I/ Cơ sở lý luận
II/ Thực trạng vấn đề
III/ Giải pháp và tổ chức thực hiện
IV/ Kiểm nghiệm
Phần 3. Kết luận và đề xuất Trang 19
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.
GV: Hoàng Thị Yến THPT Nông Cống II
21
SKKN: Xây dựng một số chương trình con để bồi dưỡng học sinh khá, giỏi
SỞ 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
GV: Hoàng Thị Yến THPT Nông Cống II
22

×