S¸ng kiÕn kinh nghiÖm
A- PHẦN MỞ ĐẦU:
1. Lí do chọn đề tài
- Trong thời đại hiện nay, sự bùng nổ CNTT đã tác động lớn đến công cuộc phát
triển kinh tế xã hội. HiÖn nay níc ta còng nh c¸c níc trªn thÕ giíi ®ang c¹nh
tranh vÒ nghµnh c«ng nghÖ chÕ t¹o m¸y còng nh c¸c s¶n phÇn phÇn mÒm gióp
Ých cho con ngêi trªn mäi lÜnh vùc. VËy lµm thÕ nµo ®Ó lµm ®îc ®iÒu ®ã : nhê
vµo ngµnh c«ng nghÖ th«ng tin. Ngµy nay con ngêi kh«ng biÕt sö dông m¸y vi
tÝnh th× coi nh lµ mù chữ. VËy khi biÕt sö dông m¸y vi tÝnh råi chóng ta sÏ lµm
g× hay chØ ngåi ch¬i ®iÖn tö, c¸c trß gi¶i trÝ, so¹n th¶o c¸c bµi v¨n b¶n mµ th«i?
Lµ mét gi¸o viªn tin häc mét trong c¸c môc tiªu khi ®a tin häc vµo
trêng häc lµ nh»m gióp häc sinh kh«ng chØ biÕt so¹n th¶o mµ cßn ph¶i cã kh¶
n¨ng ph©n tÝch, tæng hîp, trõu tîng ho¸, kh¸i qu¸t ho¸ vÊn ®Ò vµ ®Æc biÖt lµ ph¸t
triÓn t duy, s¸ng t¹o. Nh÷ng n¨m qua m«n tin häc ë THCS cha cã s¸ch gi¸o
khoa cô thÓ híng dÉn cho häc sinh vÒ c¸ch ph©n tÝch lËp tr×nh. V× vËy häc sinh
cha cã tÝnh ®éc lËp s¸ng t¹o mµ ph¶i nhê vµo gi¸o viªn rÊt nhiÒu. Nhng n¨m
nay ®· cã s¸ch gi¸o khoa híng dÉn cho häc sinh cô thÓ qui tr×nh lËp tr×nh nh
thÕ nµo.V× thÕ mµ t«i sÏ híng cho häc sinh líp 8 c¸ch ®Ó trë thµnh mét nhµ lËp
tr×nh th× cÇn ph¶i n¾m bíc c¬ b¶n nµo?
2. C¬ së thùc tiÔn
Trong qu¸ tr×nh d¹y t«i nhËn thÊy ë c¸c em häc sinh là người dân tộc thiểu
số. Đây là môn học mới, và các em bước đầu làm quen với máy tính nên còn khó
khăn trong việc thao tác máy. Ở trong lËp tr×nh còng bµi to¸n ®ã mµ ph¶i lµm
®Õn hµng chôc phót mµ l¹i cã thÓ cho kÕt qu¶ sai. Song b»ng nh÷ng t©m huyÕt
cña m×nh vµ còng nh sù yªu thÝch cña häc sinh. NhÊt lµ n¨m nay nghµnh gi¸o
dôc cã ph¸t ®éng phong trµo gi¶i to¸n trªn m¹ng. §iÒu ®ã ®· thóc ®Èy t«i rÊt
nhiÒu trong viÖc d¹y häc lµ lµm sao ®a ra ®îc cho c¸c em sù ®am mª vµ ph¸t
triÓn tµi n¨ng cña häc sinh trong viÖc ®µo t¹o nh©n tµi cho ®Êt níc .
Ng«n ng÷ lËp tr×nh PASCAL lµ mét phÇn mÒm cã cÊu tróc vµ rÊt ®îc
nhiÒu ®éc gi¶ quan t©m vµ còng chÝnh ®ã còng cã nhiÒu cuèn s¸ch do nhiÒu t¸c
gi¶ viÕt. Song víi b¶n th©n t«i khi lùa chän viÕt ®Ò tµi nµy lµ muèn ®a ra “
1
S¸ng kiÕn kinh nghiÖm
CÁCH GIẢI BÀI TOÁN TRÊN MÁY TÍNH” Sö dông b»ng ng«n ng÷ lËp
tr×nh pascal.
3. Đối tượng nghiên cứu:
Ứng dụng ngôn ngữ lập trinh Pascal để giải một số bài toán trên máy.
4. Khách thể nghiên cứu:
Học sinh lớp 8.
5. Phạm vi nghiên cứu:
Các tiết học tin học của lớp 8. Sự hứng thú và tích cực của học sinh lớp 8
về tiết học. Thời gian nghiên cứu là từ năm học 2009-2010 đến năm học 20122013.
6. Phương pháp nghiên cứu:
Phương pháp phân tích.
Phương pháp tổng hợp kinh nghiệm trong giảng dạy.
Phương pháp trò chuyện trao đổi.
Phương pháp nghiên cứu tài liệu.
Phương pháp cử đôi bạn học tập, tạo sự hoạt động nhóm.
2
S¸ng kiÕn kinh nghiÖm
B. NỘI DUNG
I- Giải quyết vấn đề
Ph¬ng ph¸p c¬ b¶n gi¶i c¸c bµi to¸n trong tin häc kh«ng chØ dïng ®Ó gi¶i
mét bµi to¸n cô thÓ mµ cßn gi¶i 1 líp c¸c bµi to¸n cô thÓ thuéc cïng mét lo¹i. Bµi
to¸n ®îc cÊu t¹o tõ hai yÕu tè c¬ b¶n: Th«ng tin vµo (Input) vµ th«ng tin ra
(Output). Ph¬ng ph¸p tæng qu¸t ®Ó gi¶i mét bµi to¸n b»ng m¸y vi tÝnh dùa trªn
ng«n ng÷ pascal th× cÇn c¸c bíc :
1. X¸c ®Þnh c¸c bµi to¸n.
2. Viết thuËt to¸n
3. ViÕt ch¬ng tr×nh
4. Ch¹y thö, söa ®æi ch¬ng tr×nh
1- XÁC ĐỊNH BÀI TOÁN
a. Kh¸i niÖm bµi to¸n
Trong qu¸ tr×nh häc ngêi häc sinh hay bÊt kú mét c¸ nh©n nµo lu«n ph¶i
liªn tôc gi¶i quyÕt c¸c bµi to¸n. Trong cuéc sèng lµ 1 chuçi c¸c bµi to¸n mµ ta
ph¶i ®èi ®Çu gi¶i quyÕt kh«ng mét chót ®¬n gi¶n mµ nhiÒu lóc ph¶i bøc m×nh.
Song ®èi víi häc sinh líp 8 do ch¬ng tr×nh häc to¸n cña c¸c chØ míi ®Õn gi¶i
ph¬ng tr×nh bËc nhÊt lµ cao nhÊt. Nªn viÖc ®a c¸c líp bµi to¸n vµo gi¶i cho c¸c
em ®ang cßn mét phÇn nµo bÞ h¹n chÕ. Nhng bÊt kú mét bµi to¸n nµo th× chóng
ta còng ®äc ®Ò råi x¸c ®Þnh nã : A B.
Trong ®ã:- A lµ gi¶i thiÕt : ®iÒu kiÖn ban ®Çu hoÆc c¸i ®· cho khi b¾t ®Çu
gi¶i bµi to¸n.
- B lµ kÕt luËn: Kết quả thu được hay c¸i ph¶i t×m, ph¶i lµm ra khi
kÕt thóc bµi to¸n .
- Lµ suy luËn: gi¶i ph¸p cÇn x¸c ®Þnh hay mét chuèi thao t¸c thùc
hiÖn tõ A ®Õn B.
b. Bµi to¸n trªn m¸y vi tÝnh
Bµi to¸n trªn m¸y còng mang ®Çy ®ñ c¸c tÝnh chÊt cña bµi to¸n tæng qu¸t
trªn, nhng nã l¹i ®îc diÔn ®¹t theo mét c¸ch kh¸c.
- A: lµ ®a th«ng tin vµo (Input )
- B: lµ ®a th«ng tin ra( Output)
- : lµ ch¬ng tr×nh t¹o tõ c¸c lÖnh c¬ b¶n cña m¸y tÝnh cho
phÐp biÕn ®æi tõ A ®Õn B.
c. Mét sè vÝ dô
3
S¸ng kiÕn kinh nghiÖm
VÝ dô 1: TÝnh diÖn tÝch h×nh ch÷ nhËt.
Ta cÇn x¸c ®Þnh cho bµi to¸n:
+ Th«ng tin vµo: ChiÒu dµi lµ c¹nh a, chiÒu réng lµ c¹nh b
+ Th«ng tin ra: KÕt qu¶ diÖn tÝch khi đã có chiều dài và chiều rộng
+ C¸c th«ng tin cÇn chÕ biÕn th«ng tin nh:
i. LÇn lît ®a a,b vµo ( cho a=3,b=4)
ii. ¸p dông c«ng thøc tÝnh diÖn tÝch h×nh ch÷ nhËt: a*b
iii. KÕt qu¶ in ra lµ 12.
VÝ dô 3: T×m tÊt c¶ c¸c sè hoàn hảo trong c¸c sè nguyªn N ®îc nhËp vµo
tõ bµn phÝm:
+ X¸c ®Þnh th«ng tin vµo:NhËp sè nguyªn N
+X¸c®Þnh th«ng tin ra: C¸c sè hoàn hảo (có tổng các ước bằng chính nó)
II- T×m thuËt to¸n
ThuËt to¸n lµ mét qu¸ tr×nh thực hiện c¸c thao t¸c ®¬n gi¶n ®îc s¾p xÕp
theo mét tr×nh tù sao cho tõ Input cña bµi to¸n sÏ t×m ra ®îc Output bµi to¸n .
Mét bµi to¸n ta cã 3 c¸ch thÓ hiÖn thuËt to¸n: C¸c bíc x¸c ®Þnh b»ng lêi, lËp s¬
®å khèi, dïng mét ng«n ng÷ lËp tr×nh (Pascal).
VÝ dô: T×m íc sè chung lín nhÊt cña 2 sè nguyªn d¬ng a,b . ta cã thÓ gi¶i b»ng
c¸c c¸ch trªn
C¸ch 1: C¸c bíc x¸c ®Þnh bµi to¸n b»ng lêi:
- Bíc 1: NhËp 2 sè nguyªn d¬ng lµ a,b
- Bíc 2: So s¸nh gi¸ trÞ a vµ b . NÕu a b»ng b th× sang bíc 3, ngîc l¹i a
kh¸c b th× sang bíc 4
- Bíc 3: T×m ®îc íc sè chung lµ a vµ kÕt thóc ch¬ng tr×nh
- Bíc 4: NÕu a lín h¬n b th× íc sè chung lín nhÊt lµ a vµ quay trë l¹i
bíc 2. Ngîc l¹i íc sè chung lµ b vµ quay trë l¹i bíc 2
C¸ch 2: Gi¶i bµi to¸n b»ng s¬ ®å
- Cã h×nh thoi thÓ hiÖn c¸c thao t¸c so s¸nh
- H×nh ch÷ nhËt thÓ hiÖn c¸c phÐp tÝnh to¸n, c¸c c©u lÖnh
- H×nh «van thÓ hiÖn b¾t ®Çu vµ kÕt thóc
- C¸c mòi tªn quy ®Þnh tr×nh tù c¸c thao t¸c
4
S¸ng kiÕn kinh nghiÖm
Begin
a, b
a=b
®óng
UCLN lµ a
sai
END
§óng
Sai
a<>b
b:= b - a
a:= b - a
C¸ch 3: ViÕt ch¬ng tr×nh hoµn chØnh (dïng ng«n ng÷ pascal)
PROGRAM USCLN;
USES CRT;
VAR
a,b, :integer;
BEGIN
CLRSCR;
WRITE('nhap 2 gia tri m,n=');READLN(a,b);
WHILE m<>n DO
IF a>b THEN a:=a – b
else b:=b-a;
WRITELN('uoc so chung lon nhat cua 2 so’,a:5);
READLN
END.
5
S¸ng kiÕn kinh nghiÖm
III- ViÕt ch¬ng tr×nh
LËp tr×nh lµ dïng ng«n ng÷ cô thÓ (ng«n ng÷ Pascal) ®Ó diÔn t¶ thuËt to¸n,
cÊu tróc d÷ liÖu thµnh c©u lÖnh ®Ó m¸y tÝnh cã thÓ thùc hiÖn ®îc vµ gi¶i quyÕt
®óng bµi to¸n mµ ngêi lËp tr×nh mong muèn.
1. Kü n¨ng lËp tr×nh
- RÌn luyÖn ®îc cho häc sinh kü n¨ng cµi ®Æt thµnh c«ng c¸c thuËt to¸n b»ng
mét ng«n ng÷ lËp tr×nh.
- §· gäi lµ kü n¨ng th× chØ cã thÓ cã ®îc th«ng qua rÌn luyÖn tÝch cùc.
- Kinh nghiÖm cho thÊy mét thuËt to¸n do cµi ®Æt vông vÒ, lén xén th× khi ch¹y
trªn m¸y tÝnh cã thÓ cho kÕt qña tåi tÖ.
2. Ph¸t triÓn ch¬ng tr×nh b»ng c¸ch tinh chÕ tõng bíc
Mét bµi to¸n ta cã thÓ ®a ra nhiÒu c¸ch gi¶i kh¸c nhau, song lµ mét gi¸o
viªn th× chóng ta cÇn gióp häc sinh viÕt ch¬ng tr×nh lµm sao ngêi xem nh×n
vµo cã thÓ dÔ hiÓu ®îc bµi to¸n ®ã lµ g× ? Do ®ã viÖc tinh chØnh c¸c bíc cho
bµi to¸n trong m¸y tÝnh lµ ph¬ng ph¸p khoa häc, cã hÖ thèng gióp ta ph©n tÝch
c¸c thuËt to¸n vµ cÊu tróc d÷ liÖu tõ ®ã thµnh mét ch¬ng tr×nh . Muèn lËp tr×nh
giái kh«ng ph¶i chØ cÇn n¾m ng«n ng÷ lËp tr×nh lµ ®ñ. Mµ vÊn ®Ò cèt yÕu lµ biÕt
ph¬ng ph¸p ph¸t triÓn dÇn dÇn ®Ó chuyÓn c¸c ý tëng ra thµnh ch¬ng tr×nh
hoµn chØnh.
3. Ph¬ng ph¸p tinh chÕ tõng bíc
Mét ch¬ng tr×nh b¾t ®Çu ®îc viÕt b»ng lêi tù nhiªn(tiÕng viÖt) thÓ hiÖn
sù ph©n tÝch tæng thÓ cña ngêi lËp tr×nh ®îc thÓ hiÖn
ë tõng bíc sau c¸c c©u lÖnh ®îc ph©n tÝch chi tiÕt h¬n, b»ng nh÷ng lêi
kh¸c nhau t¬ng øng víi sù ph©n tÝch c«ng viÖc thµnh c¸c viÖc nhá chi tiÕt h¬n
dÔ hiÓu vµ chØnh x¸c h¬n. Song ng«n ng÷ lËp r×nh pascal ngêi lËp tr×nh cã thÓ
®a ra ph¬ng ph¸p tinh chØnh tõng bíc lµ thÓ hiÖn t duy gi¶i quyÕt vÊn ®Ò bµi
to¸n tõ trªn xuèng trong ®ã c¸c bíc lµ híng vÒ ng«n ng÷ lËp tr×nh lµm sao cho
bµi to¸n ®a ra ®îc ph¬ng ph¸p lËp tr×nh tèi u, s¸ng söa.
4. VÝ dô
T×m tÊt c¶ c¸c sè nguyªn tè trong c¸c sè nguyªn N ®îc nhËp vµo tõ bµn
phÝm
a. Tinh chÕ lÇn 1
- LÊy 2 tËp
NT= [ ] (®Ó chøa c¸c sè nguyªn tè t×m ®îc)
S = [2,..N] (tËp c¸c sè cÇn xÐt )
- T×m sè ®Çu tiªn trong S ®a vµo NT
6
S¸ng kiÕn kinh nghiÖm
- Lo¹i bá khái S c¸c béi sè cña sè nguyªn tè võa t×m ®îc
- Sè ®Çu tiªn cßn l¹i cña S lµ sè nguyªn tè. TiÕp tôc qu¸ tr×nh cho ®Õn khi S=[]
- XuÊt NT
b. Tinh chÕ lÇn 2
B¾t ®Çu
NT: = [ ]
S = [2,..N]
Repeat
T×m sè ®Çu tiªn trong S
NT:= NT+ [S0]
Lo¹i khái S c¸c béi sè cña S0
Until S=[ ];
XuÊt NT;
KÕt thóc;
c. Tinh chÕ lÊn 3 ( ch¬ng tr×nh hoµn chØnh)
Program nguyen_to;
Const
N=100;
Type
nguyen=1..N;
var
NT, S:set of nguyen;
s0,I:integer;
begin
NT:=[]; S:=[2..N];S0:=2;
repeat
while not (S0 in S) do
S0:=S0+1; NT:=NT+[S0];I:=S0;
While I<=N do
Begin
s:=S-[i];I:=I+S0;
End;
until S=[];
for I:= 1 to n do
If I in Nt then Write(I:4);
readln
end.
7
S¸ng kiÕn kinh nghiÖm
d. Tinh chÕ lÇn 4. Râ rµng cÊu tróc d÷ liÖu tËp hîp Set of nguyen tuy dÔ hiÓu
nhng rÊt cång kÒnh vµ lµm m¸y ch¹y chËm ch¹p, ta cã thÓ dïng m¶ng Boolean
linh ho¹t h¬n nh sau:
Program nguyen_to;
Const
N=100;
var
a:array[1..N] of boolean;
i,j:integer;
begin
a[1]:=false;
for i:=2 to N do a[i]:=true;
for i:= 2 to N div 2 do
for j:= 2 to N div i do
a[i*j]:=false;
for i:= 1 to N do
if a[i] then
write(i:3);
readln
end.
e. Tinh chÕ lÇn 5
Trong ng«n ng÷ pascal nÕu dïng m¶ng boolean th× ta bÞ giíi h¹n
N<10000. §Ó cã thÓ ch¹y víi sè lín h¬n ta kh«ng dïng m¶ng , tËp hîp mµ
dïng nh sau:
Program nguyen_to;
uses crt;
var
i,j,k,n:integer;
begin
repeat
write('nhap n=');readln(n);
until n>= 2;
for i:= 2 to n do
begin
k:=0;
for j:= 2 to trunc(sqrt(i)) do
if i mod j=0 then k:= 1;
if k=0 then write(i:3);
end;
readln
8
S¸ng kiÕn kinh nghiÖm
end.
VËy ®ã lµ kü n¨ng lËp tr×nh ngêi lËp tr×nh cã thÓ tinh chØnh ch¬ng tr×nh
tõng bíc lµm sao ®a ra mét ph¬ng ¸n tèi u cho ngwêi xem dÔ tiÕp thu còng
nh chiÕm bé nhí cña m¸y tÝnh cµng Ýt c¸c tèt.
IV- Ch¹y Thö , thay ®æi, kiÓm tra ch¬ng tr×nh
1. Ch¹y thö
Mét ch¬ng tr×nh ®· viÕt xong cha ch¾c ®· ch¹y ®îc trªn m¸y vi tÝnh ®Ó
cho kÕt qu¶ mong muèn.
VÝ dô: T×m sè lín nhÊt trong 3 sè a,b,c nguyªn d¬ng ®îc nhËp vµo tõ bµn
phÝm.
LÇn 1: Program tim_so;
uses crt;
var
a,b,c:integer;
begin
clrscr;
write('nhap 3 so=');readln(a,b,c);
if a
- Xem thêm -