MỤC LỤC
1. Mở đầu
1.1 Lý do chọn đề tài ………………………………………………………2
1.2 Mục đích nghiên cứu …………………………………………………..2
1.3 Đối tượng nghiên cứu ………………………………………………….2
1.4 Phương pháp nghiên cứu ………………………………………………2
2. Nội dung sáng kiến kinh nghiệm ……………………………………….. 2
2.1 Cơ sở lý luận …………………………………………………………. 2
2.2 Thực trạng dạy học môn Tin học tại trường THPT Nông Cống 1…… .3
2.3 Giải quyết vấn đề ………………………………………………………3
2.3.1 Đối với lý thuyết ………………………………………………..3
2.3.2 Đối với thực hành ……………………………………………….3
2.3.2.1 Khắc phục những lỗi sai cơ bản thường gặp trong chương II:
‘‘Chương trình đơn giản’’. ......................................................4
2.3.2.2 Khắc phục những lỗi sai cơ bản trong chương III: ‘‘Cấu trúc
rẽ nhánh và lặp’’. ………………………………………….. 6
2.3.2.3 Khắc phục những lỗi sai cơ bản trong chương IV: ‘‘Kiểu dữ
liệu có cấu trúc’’. …………………………………………. 9
2.3.2.4 . Khắc phục những lỗi sai cơ bản trong chương V: “Tệp và
thao tác với tệp”. ………………………………………….. 11
2.3.2.5 Khắc phục những lỗi sai cơ bản trong chương VI: “Chương
trình con và lập trình có cấu trúc”. ……………………….. 13
2.4 Hiệu quả ………………………………………………………………. 14
3. Kết luận, kiến nghị …………………………………………………….. 15
Tài liệu tham khảo
1
1. Mở đầu
1.1 Lý do chọn đề tài
Căn cứ vào kế hoạc năm học 2019 – 2020 của trường THPT Nông Cống 1, Tổ
Toán – Tin, chuyên đề của trường THPT Nông Cống 1 “Tăng cường vận dụng kiến
thức liên môn gắn liền với thực tế, thực tiễn trong giảng dạy, chú trọng phát huy
năng lực và tính chủ động, sáng tạo của học sinh”.
Chương trình tin học 11 nghiên cứu về NNLT Pascal là chương trình khó, có
cấu trúc chă ̣t chẽ. Để viết được một chương trình hoàn chnnh thna mãnn yêu cầu của
bài toán đặt ra trên máy tính thì học sinh phải có tư duy lôgic về thuật toán, khả
năng sử dụng máy tính thành thạo, sử dụng các câu lệnh và khai báo kiểu dữ liệu
một cách hợp lý. Tuy nhiên khi tiến hành viết chương trình trên máy tính học sinh
thường gặp một số lỗi cơ bản về mặt cú pháp và ngữ nghĩa.
1.2 Mục đích nghiên cứu
Khi thực hiện giảng dạy môn Tin học lớp 11 tại Trường THPT Nông Cống 1,
tôi thấy rằng, việc học sinh lập trình giải các bài toán trên máy tính thường gặp
không ít khó khăn. Phần lớn các em đều gặp một số lỗi cơ bản về mặt cú pháp và
ngữ nghĩa. Trong khi đó để viết được một chương trình hoàn chnnh thì học sinh phải
có tư duy logic về thuật toán, biết khai báo kiểu dữ liệu một cách hợp lí, biết sử
dụng các câu lệnh đúng cú pháp.
Bản thân tôi trong quá trình giảng dạy cũng đãn cố gắng hướng dẫn học sinh
viết chương trình đúng với yêu cầu trên. Nhưng do thời lượng thực hành trên lớp
không nhiều nên các em không được thực hành thường xuyên, dẫn đến các em vẫn
mắc phải một số lỗi cơ bản. Vì vậy, tôi đãn áp dụng một số biện pháp: “Hướng dẫn
học sinh lớp 11 phát hiện và sửa lỗi cú pháp khi viết chương trình bằng ngôn
ngữ lập trình Pascal”.
Trong quá trình áp dụng, bản thân tôi tự thấy đãn có những kết quả nhất định,
muốn được chia sẻ với các bạn đồng nghiệp. Hi vọng sẽ nhận được nhiều ý kiến bổ
ích để đề tài của tôi ngày một hoàn thiện hơn.
1.3 Đối tượng nghiên cứu
Áp dụng cho học sinh khối 11 trường THPT Nông Cống 1 với mục đích rèn
cho học sinh kỹ năng viết chương trình, giúp học sinh tự tìm và sửa chữa lỗi khi viết
chương trình bằng ngôn ngữ lập trình Pascal trong chương trình Tin học 11 được
thực hiện cả trên lớp và ở phòng thực hành.
1.4 Phương pháp nghiên cứu
- Phương pháp nghiên cứu xây dựng cơ sở lý thuyết: giáo viên tạo ra lỗi để
học sinh giải quyết vấn đề.
- Phương pháp thực hành các bài thực hành sách giáo khoa tin học 11.
2 Nội dung sáng kiến kinh nghiệm
2.1 Cơ sở lý luận
- Xuất phát từ thực trạng trên, tôi nhận thấy nếu bản thân không thay đổi cách
dạy nhằm giúp học sinh chủ động hơn trong quá trình tìm lỗi và sửa lỗi thì học xong
chương trình Tin học 11 có không ít học sinh vẫn chưa viết được một chương trình
hoàn chnnh. Dẫn đến học sinh sẽ chán nản, ngày càng xa rời môn Tin học. Vì vậy để
khắc phục tình trạng trên tôi đãn có một số giải pháp hướng dẫn học sinh tự tìm và
2
sửa lỗi cú pháp mà học sinh thường mắc phải ở cả những tiết lí thuyết và tiết bài tập
và thực hành
2.2 Thực trạng dạy học môn Tin học tại trường THPT Nông Cống 1.
- Điều kiện phòng máy nhà trường chưa đáp ứng được 1 học sinh/máy, các em
còn phải ngồi chung 2 em/máy dẫn đến hiệu quả của các tiết thực hành chưa cao.
Do đó việc nắm bắt nội dung các bài học bị hạn chế.
- Khi viết chương trình học sinh thường mắc các lỗi cú pháp. Đó là lỗi mà khi
viết chương trình học sinh không tuân thủ đúng quy định của ngôn ngữ lập trình
như: Đặt sai các tên hằng, biến, tên chương trình …, viết sai các câu lệnh, viết sai
các từ khóa …
- Phần lớn khi dạy lập trình cho học sinh giáo viên thường sử dụng hai phương
pháp:
+ Phương pháp dùng bảng: Đối với phương pháp này giáo viên thường viết
sẵn chương trình cho học sinh hoặc cho học sinh khá gini lên viết chương trình và
những học sinh còn lại chn việc chép vào vở để đảm bảo thời gian của mô ̣t tiết học.
Các chương trình viết sẵn này thông thường không có lỗi sai.
+ Phương pháp dạy tại phòng thực hành: Giáo viên viết chương trình bằng
ngôn ngữ lập trình Pascal rồi chạy chương trình đó cho học sinh. Học sinh ghi bài
và gõ lại đúng chương trình đó.
- Tuy nhiên khi gặp bài toán tương tự thì học sinh lại lập trình mắc rất nhiều
lỗi sai. Tại phòng thực hành với số lượng học sinh và số máy tính nhiều nên giáo
viên không thể có đủ thời gian để sửa lỗi và hướng dẫn từng máy nên viê ̣c học sinh
phải biết tự tìm ra lỗi sai và hình thành kỹ năng viết chương trình là vấn đề cần
thiết.
2.3 Giải quyết vấn đề
2.3.1 Đối với lý thuyết
* Giải pháp 1: Giáo viên tạo tình huống mắc lỗi. Thực hiện chia nhóm. Yêu
cầu các nhóm tìm ra lỗi có trong chương trình. Sau đó đại diện các nhóm lên bảng
trình bày. Giáo viên nhận xét, tổng kết, nhấn mạnh nguyên nhân gây ra các lỗi có
trong chương trình. Để khích lệ học sinh, giáo viên tiến hành đánh giá kết quả các
nhóm và cho điểm.
* Giải pháp 2: Giáo viên nêu bài toán. Thực hiện chia nhóm. Yêu cầu mỗi
nhóm viết chương trình. Chiếu kết quả của một nhóm bất kì. Các nhóm khác nhận
xét sau đó giáo viên củng cố, chạy thử chương trình cho cả lớp quan sát. Từ chương
trình hoàn chnnh đó, các nhóm tự đối chiếu với câu trả lời của nhóm mình để hoàn
chnnh chương trình của nhóm.
2.3.2 Đối với thực hành
Học sinh thực hành theo yêu cầu của SGK, giáo viên yêu cầu cả lớp thực hành
cùng một nội dung. Các em tự sửa lỗi, giáo viên quan sát, bao quát phòng máy, hỗ
trợ cho những học sinh yếu. Sau đó, giáo viên chiếu chương trình có các lỗi mà các
em chưa khắc phục được và những lỗi đa phần các em mắc phải. Giáo viên phân
tích nguyên nhân của từng lỗi và yêu cầu các em sửa lại trong chương trình của
mình.
3
Trong quá trình giảng dạy tôi đãn áp dụng kinh nghiệm của mình bắt đầu từ
chương II cho đến hết chương trình Tin học lớp 11. Nhưng do điều kiện không cho
phép nên ở mỗi chương tôi chn đưa ra một số tiết làm ví dụ để minh họa cho đề tài.
2.3.2.1 Khắc phục những lỗi sai cơ bản thường gặp trong chương II: ‘‘Chương
trình đơn giản’’.
a. Những lỗi sai cơ bản:
- Khi viết chương trình học sinh chúng ta thường mắc một số lỗi cơ bản như:
+ Khi kết thúc câu lệnh không có dấu “ ; ” .
+ Khi viết từ khóa học sinh hay viết thiếu hoặc thừa từ
Ví dụ: Từ khóa: Program thì học sinh viết là Progam, End thì học sinh viết là
And
+ Sau từ khóa End kết thúc chương trình là “.” Nhưng học sinh lại viết “;”
+ Khi viết chương học sinh thường hay viết thiếu hoặc thừa các dấu: “(”, “)”,
“ ,”, “.”, “:=”, “=”, “ ’ ”, …
+ Khai báo thiếu biến hoặc khai báo quá nhiều biến.
+ Khai báo tên biến trùng nhau. VD : Var a, A: byte; (Pascal không phân biệt
chữ hoa và chữ thường. Do đó a và A chn là một).
+ Đặt tên biến, tên chương trình, tên tệp không đúng theo quy định của ngôn
ngữ lập trình.
+ Khi viết từ khóa thường viết sai lỗi chính tả. VD: Const thì viết là Cont, end
thì viết là and, Real thì viết là Read,…
+ Viết sai câu lệnh gán. VD: x := 0; thì viết là: x = 0;
+ Giữa các biến được viết cách nhau bằng dấu “;”
+ Trong một câu lệnh nếu số lệnh >=2 thì phải được đặt trong cặp từ khoá
Begin … End;(Câu lệnh ghép).
+ Sử dụng thủ tục clrscr; nhưng không khai báo thư viện chứa thủ tục là CRT;
+ Học sinh khai báo kiểu dữ liệu một đường nhưng khi viết chương trình thì
dùng kiểu dữ liệu khác dẫn đến sai kiểu.
….
b. Biện pháp sửa lỗi
- Để tránh những lỗi sai cho học sinh khi viết chương trình tôi đưa ra một số ví dụ:
Ví dụ 1: Viết chương trình in ra màn hình dòng chữ: “Xin Chao cac ban den
voi chương trinh Pacal”
-Bước 1: Giáo viên chuân bị 1 chương trình mẫu bằng pascal như sau:
Program ; 11A;
Begin
Clrscr;
Writeln(’Xin Chao cac hoc sinh 11 ban den voi chương trinh Pacal’)
Realn ;
End;
- Bước 2. Chia lớp thành 4 nhóm. Yêu cầu mỗi nhóm tìm lỗi sai có trong chương
trình ở trên.
4
- Bước 3. Đại diện các nhóm lên bảng trình bày kết quả.
- Bước 4. Giáo viên thực hiện biên dịch chương trình để học sinh thấy được các lỗi
sai và phân tích để học sinh hiểu được nguyên nhân vì sao sai.
Các lỗi sai trong chương trình trên là :
+ Câu lệnh Program ; là sai vì sau từ khóa Program không có dấu; (mãn lỗi: 2)
+ Tên chương trình 11A là sai, vì không đúng theo quy tắc đặt tên của ngôn
ngữ lập trình Pascal (tên không đượcbắt đầu bằng số)(mãn lỗi 2)
+ Sử dụng thủ tục clrscr; mà chưa khai báo thư viện CRT;(mãn lỗi 3);
+ Câu lệnh Writeln(’Xin Chao cac ban hoc sinh 11 den voi chương trinh
Pacal); có 2 lỗi sai, vì thiếu dấu đóng nháy ở hằng xâu kí tự (mãn lỗi:8) và kết thúc
câu lệnh không có dấu ; (mãn lỗi: 85)
+ Thủ tục Realn sai, phải là Readln (mãn lỗi: 3).
- Bước 5. Chạy thử chương trình cho học sinh quan sát.
- Bước 6. Giáo viên đánh giá kết quả và cho điểm các nhóm.
Qua ví dụ trên học sinh sẽ thấy rằng có 2 lỗi sai có cùng mãn lỗi là 2 hoặc có 2 lỗi sai
mãn lỗi là 3, tuy nhiên mỗi lỗi lại sai ở một tình huống khác nhau. Do đó nếu học
sinh chn thụ động tra cứu bảng thông báo lỗi ở SGK thì khó có thể tự mình sửa được
lỗi. Cũng qua ví dụ trên học sinh đãn được phân tích nguyên nhân vì sao có các lỗi
sai và cách sửa lỗi. Do đó sau này học sinh sẽ không còn mắc phải các lỗi cơ bản đãn
nêu.
Ví dụ 2: Tiết 8 : Bài tập và thực hành 1.
Thực hành theo yêu cầu của SGK.
- Bước 1. Yêu cầu cả lớp soạn thảo chương trình đãn viết sẵn ở SGK trang 34:
Program
Giai_PTB2 ;
Uses
Crt ;
Var
a, b, c, D : Real ;
x1, x2: Real;
Begin
Clrscr;
Write(‘a, b, c: ’);
Readln(a,b,c);
D:= b * b – 4 *a*c;
x1:= (-b – sqrt(D)) / (2*a);
x2:= -b/a –x1;
write(‘x1= ’ , x1:6:2, ‘ x2= ’, x2:6:2);
readln;
end.
- Bước 2. Yêu cầu học sinh thực hiện biên dịch chương trình để phát hiện và sửa
lỗi.
Tuy là nhìn chương trình đãn viết sẵn trong SGK để soạn thảo nhưng chương
trình các em soạn thảo vẫn mắc rất nhiều lỗi. Có rất nhiều nguyên nhân, như kỹ
năng soạn thảo chưa thành thạo dẫn đến sai lỗi chính tả, hay chưa nắm vững cách
viết một biểu thức, cách viết thông báo ra ngoài màn hình,…
5
Để học sinh tự sửa lỗi. Giáo viên quan sát, bao quát phòng máy, hỗ trợ cho
những học sinh yếu. Sau đó, giáo viên chiếu chương trình có các lỗi mà các em
chưa khắc phục được và những lỗi đa phần các em mắc phải. Giáo viên phân tích
nguyên nhân của từng lỗi và yêu cầu các em sửa lại trong chương trình của mình.
Giáo viên chiếu lên màn chiếu:
Program
Giai_PTB2 ;
Uses
Crt ;
Var
a, b, c, D : Read ;
x1, x2: Read;
begin
Clrscr;
Write(‘a, b, c: ’);
Readln(a;b;c);
D:= b * b – 4 *a*c;
x1:= (-b – sqrt(D)) / (2a);
x2:= -b/a –x1;
write(‘x1= ’ ; x1:6:2, ’ x2= ’; x2:6:2);
readln;
end;
Giáo viên thực hiện biên dịch, hướng dẫn học sinh sửa lỗi có trong chương
trình trên. Cụ thể chương trình trên có các lỗi sai:
Sai kiểu dữ liệu, không phải là Read mà là Real (mãn lỗi: 26)
Câu lệnh Read(a;b;c); sai vì ngăn cách giữa các biến phải là dấu phẩy, sửa lại
là: Read(a,b,c); (mãn lỗi: 89)
Câu lệnh
x1:= (-b – sqrt(D)) / (2a); sai vì trong phép nhân phải dùng kí
hiệu *, sửa lại là: x1:= (-b – sqrt(D)) / (2*a); (mãn lỗi: 89)
Câu lệnh write(‘x1= ’ x1:6:2, ‘ x2= ’, x2:6:2); sai vì ngăn cách giữa các
kết quả ra phải là dấu phẩy. Sửa lại là: write(‘x1= ’, x1:6:2, ‘ x2= ’,x2:6:2);
(mãn lỗi: 89);
Câu lệnh end; sai vì kết thúc chương trình phải là dấu chấm, sửa lại là: end.
(mãn lỗi : 88)
-Bước 3. Khi đãn hết lỗi về mặt cú pháp, yêu cầu học sinh chạy chương trình như
yêu cầu của sách giáo khoa.
Tuy nhiên vẫn có nhiều em thực hiện chưa đúng, lỗi thường gặp đó là: Khi
thực hiện câu lệnh nhập Read(a,b,c) các em dùng dấu chấm phẩy để ngăn cách giữa
các giá trị. VD: Khi nhập giá trị cho a, b, c, thì các em gõ: 3 ; 4; 5 Như vậy các em
chưa nắm vững cách nhập giá trị cho nhiều biến. Lúc này giáo viên cần làm mẫu
cho học sinh quan sát và nhấn mạnh cách nhập giá trị cho nhiều biến: những giá trị
này phải được gõ cách nhau bởi ít nhất một dấu cách hoặc một kí tự xuống dòng
(nhấn phím Enter)
2.3.2.2 Khắc phục những lỗi sai cơ bản trong chương III: ‘‘Cấu trúc rẽ nhánh
và lặp’’.
a. Các lỗi thường gặp
- Đối với trường hợp này học sinh hay mắc phải các lỗi:
+ Thiếu từ khoá then hoặc do, downto,to,..
6
+ Điều kiện trong câu lệnh rẽ nhánh, câu lê ̣nh lă ̣p không phải là biểu thức
lôgic hay quan hê ̣.
+ Không sử dụng câu lê ̣nh ghép
+ Trước từ khoá Else có dấu “;”.
+ Giá trị đầu> giá trị cuối trong câu lệnh lặp và không phải là những hằng số.
+ Trong câu lệnh lặp While … do không có lệnh làm thay đổi giá trị biến
đếm.
+ Không khai báo biến đếm trong chương trình.
+ Sau câu lệnh Do có câu lệnh thay đổi giá trị của biến đếm
+ Dùng cùng tên biến điều khiển cho các vòng lặp for lồng nhau
b. Biện pháp sửa lỗi
* Với câu lệnh rẽ nhánh
Ví dụ 1: Để tìm số lớn nhất trong 3 số a,b,c được nhập vào từ bàn phím, có học sinh
đãn viết chương trình như sau:
Program timmin;
Uses crt;
Var a,b,c:integer;
Begin
Clrscr;
Write(‘nhap vao 3 so:’);
Readln(a,b,c);
If ad) then kt:=false
else i:=i+1;
if kt then writeln(‘Day so tao thanh cap so cong!’)
else writeln(‘Day so khong tao thanh cap so cong!’);
readln
End.
Bước 2: chạy chương trình và yêu cầu học sinh quan sát kết quả
Khi thực hiện chương trình trên, chương trình dịch không báo lỗi nhưng kết quả khi
thực hiện chương trình sẽ bị sai lệch. Khi thực hiện từng bước chương trình ta có
thể khắc phục lỗi trên bằng cách gán lại giá trị ban đầu cho biến đếm i=2.
2.3.2.4 . Khắc phục những lỗi sai cơ bản trong chương V: “Tệp và thao tác với
tệp”
a. Các lỗi sai thường gặp
Đối với trường hợp này học sinh hay mắc phải các lỗi:
10
+ Không khai báo biến tệp
+ Không mở tệp để đọc hay ghi nhưng vẫn thao tác đọc ghi tệp
+ Đường dẫn tới tệp không đúng hoặc chưa có.
+ Mở quá nhiều tệp.
+ Không gán tên cho tệp.
+ Mở tệp nhưng không đóng tệp lại.
…
b. Biện pháp khắc phục
Giáo viên yêu cầu học sinh nghiên cứu chương trình Khoang_cach SGk trang 87
STT
1
Câu lê ̣nh
Program Khoang_cach;
2
3
Var f : text ; d:real; x,y:integer;
Begin
4
Assign(f,’TRAI.TXT’);
5
Reset(f);
6
While not eof(f) do
7
Begin
8
Read(f,x,y);
9
d:= sqrt(x*x + y*y);
10
writeln(’ Khoang cach:’ , d:10 : 2) ;
11
end;
12
13
Giải thích
close(f);
End.
- Giáo viên yêu cầu học sinh giải thích chức năng, ý nghĩa từng câu lê ̣nh của
chương trình
- Giáo viên phát vấn học sinh
? Biến têp̣ f đưươc gán cho tên têp̣ nào? Hs trả lời : tê ̣p TRAI.TXT
? Câu lênh
̣ reset(f) se tham chiếu đưến tên têp̣ nào đưê đưọc? Hs trả lời: tham
chiếu mở tê ̣p TRAT.TXT
- Như vâ ̣y khi thực hành trên máy để có thể mở tê ̣p TRAI.TXT để đọc thì tê ̣p
TRAI.TXT phải tồn tại trên bô ̣ nhớ, và để tham chiếu được đến tê ̣p TRAI.TXT thì
chương trình phải có đường dẫn đầy đủ đến nơi lưu trữ tê ̣p TRAI.TXT
?Đê chương trình trên hoạt đưông
̣ cân co đưiều kiêṇ gì? Hs trả lời: Cần có tê ̣p
TRAI.TXT ở trong máy và trong câu lê ̣nh gán phải chn đường dẫn đầy đủ tới tê ̣p
- Gv giới thiê ̣u chương trình hoàn chnnh, yêu cầu học sinh giải thích ý nghĩa, chức
năng ý nghĩa của các câu đãn được chnnh sửa và thêm vào trong chương trình
STT
Câu lê ̣nh
Giải thích
11
1
Program Khoang_cach;
2
Var f : text ;
3
4
x,y:integer; d:real;
Begin
5
Assign(f,'c:\TRAI.TXT');
6
rewrite(f);
7
writeln('nhap toa do x,y');
8
readln(x,y);
9
write(f,x:2,y:2);
10
close(f);
11
Reset(f);
12
While not eof(f) do
13
Begin
14
Read(f,x,y);
15
d:= sqrt(x*x + y*y);
16
writeln(' Khoang cach:' , d:10 : 2) ;
17
end;
18
19
20
close(f);
readln
End.
- Gv phát vấn học sinh
?Tại sao co 2 câu lênh
̣ close(f) ơ vi tri 10 và vi tri 18 c̉a chương trình? Hs giải
thích
- Gv nhấn mạnh và lưu ý cho học sinh sau mỗi thao tác với tê ̣p để lưu kết quả phải
có câu lê ̣nh đóng tê ̣p và sau khi kết thúc làm viê ̣c với tê ̣p cũng cần đóng tê ̣p
- Giáo viên cho học sinh thực hành
Sau khi gõ chương trình xong học sinh thực hiện chương trình. Căn cứ vào mãn lỗi
được thông báo để sữa lỗi.
Các lỗi thường gặp là:
Error 2: File not found Không tìm thấy file
Error 3: Path not found Không tìm thấy đường dẫn
Error 4: Too many open files Mở quá nhiều file
Error 5: File access denied Không truy nhập được file
Error 6: Invalid file handle Số hiệu file không hợp lệ
Error 102: File not assigned File chưa được chn định
Error 103: File not open File chưa được mở
Error 13: Too many open files Quá nhiều file được mở
12
Error 14: Invalid file name Tên file không hợp lệ
Error 15: File not found Không tìm thấy file
Error 16: Disk full Đĩa đầy
Error 18: Too many files Quá nhiều file
Error 34: Invalid function result type Kiểu trả về của hàm không hợp lệ
Error 59: Undefined forward Biến hay hàm chưa được định nghĩa trước đó
Error 60: Too many procedures Quá nhiều chương trình con
Error 63: Invalid file type Kiểu file không hợp lệ
Error 77: File variable expected Phải là biến file
2.3.2.5 Khắc phục những lỗi sai cơ bản trong chương VI: “Chương trình con
và lập trình có cấu trúc”
a) Các lỗi thường gặp
+ Không phân biệt được hàm và thủ tục.
+ Viết sai từ khoá hàm và thủ tục.
+ Trong hàm không có lệnh trả về giá trị cho hàm.
+ Gán giá trị của biến cho thủ tục.
+ Quên khai báo kiểu dữ liệu cho tên hàm.
…
b) Biện pháp sửa lỗi.
* Tiết 44 – Ví dụ về cách viết và sử dụng chương trình con.
Ví dụ 1: Viết chương trình thực hiện rút gọn phân số, trong đó có sử dụng hàm tính
ước chung lớn nhất của hai số nguyên.
- Bước 1: Giáo viên chiếu chương trình đãn viết sẵn cho học sinh quan sát:
program
Rut_gon;
var
tuso, mauso, a: integer;
funtion
UCLN(x,y:integer);
var sodu:integer;
begin
while y < > 0 do
begin
Sodu := x mod y;
x:=y;
y:=sodu;
end;
end;
Begin
write(‘Moi ban nhap tu so va mau so: ’) ; readln(tuso, mauso) ;
UCLN :=x;
a:=UCLN(tuso, mauso);
if a > 1 then
begin
13
tuso := tuso div a ;
mauso := mauso div a ;
end ;
writeln(tuso :5, mauso :5) ;
readln;
End.
- Bước 2: Chia lớp thành 4 nhóm. Yêu cầu các nhóm tìm lỗi sai có trong chương
trình ở trên.
- Bước 3: Đại diện các nhóm lên bảng trình bày kết quả.
- Bước 4: Giáo viên thực hiện biên dịch chương trình để học sinh thấy được các lỗi
sai và phân tích để học sinh hiểu được nguyên nhân vì sao sai.
Các lỗi sai trong chương trình trên là :
+ Từ khóa Funtion sai (mãn lỗi : 86) , đúng là : Function.
Chưa khai báo kiểu dữ liệu cho tên hàm UCLN (mãn lỗi : 86), sửa lại là:
Function UCLN(x,y :integer) : integer ;
+ Câu lệnh UCLN: = x; sai (mãn lỗi: 88). Trình biên dịch thông báo câu lệnh
này thiếu dấu “(” nhưng bản chất câu lệnh này sai vì đặt sai vị trí. Câu lệnh gán giá
trị cho tên hàm phải nằm trong chương trình con. Cụ thể nó phải nằm ở ngay trên
câu lênh end; kết thúc chương trình con.
- Bước 5: Chạy thử chương trình cho học sinh quan sát.
- Bước 6: Giáo viên đánh giá kết quả và cho điểm các nhóm.
- Do lệnh trả kết quả cho tên hàm rất giống một lệnh gán bình thường nên học sinh
thường nhầm tên hàm là biến cục bộ. Vì vậy khi viết chương trình để tiết kiệm biến
cục bộ học sinh đãn sử dụng tên hàm làm biến cục bộ.
Function GT(n:integer):Longint;
Var i:integer;
Begin
For i:=2 to n do GT:=GT*i;
End;
Trong thân hàm đãn sử dụng tên hàm làm biến cục bộ nên khi biên dịch sẽ báo lỗi
gọi hàm nhưng thiếu tham số do chương trình hiểu GT:=GT*i là lời gọi đệ qui.
Để tránh lỗi này cần lưu ý với học sinh: để trả kết quả cho hàm (không đệ quy), tốt
nhất nên tính kết quả hàm vào một biến cục bộ, trước khi kết thúc ta mới gán tên
hàm bằng giá trị biến này để trả giá trị về cho hàm.
2.4 Hiệu quả
- Năm học 2018 – 2019 tôi được phân công giảng dạy 3 lớp 11A1, 11A2. Đề tài
được thực hiện trên cả 2 lớp. Với việc nghiên cứu kĩ chương trình sách giáo khoa,
tài liệu tham khảo, lựa chọn phương pháp giảng dạy phù hợp nên những lớp được
triển khai đề tài đãn thu được kết quả thực sự. Biểu hiện:Mức độ tập trung chú ý của
lớp cao, học sinh tham gia một cách tích cực, các em đãn chủ động hơn, hứng thú
hơn trong học tập, nhất là trong các giờ thực hành.
14
- Kết quả khảo sát đối với học sinh 11A1, 11A2 trong năm học 2018 – 2019 các em
đãn tiến bô ̣ qua từng tiết thực hành.
Kết quả
Mức đô ̣ học sinh viết chương trình bị lỗi cú pháp
Trước khi thực hiện
giải pháp
Sau khi thực hiện
giải pháp
11A1
11A2
20% đến 30%
40% đến 50%
10% đến 15%
20% đến 30%
3 Kết luận, kiến nghị
- Với phương pháp dạy giáo viên vừa kết hợp bài giảng vừa kết hợp cả thao tác
kiểm tra lỗi và học sinh tự nhận biết lỗi khi viết chương trình. Sau mỗi tiết học học
sinh sẽ biết được những lỗi mà mình mắc phải khi viết chương trình để rút kinh
nghiệm cho lần sau tuy nhiên để rèn luyê ̣n cho các em hình thành kỹ năng thì đòi
hni giáo viên phải thực hiê ̣n liên tục trong từng tiết, khi viết chương trình ở đơn vị
kiến thức nào giáo viên đều phải nhắc lại những lỗi hay gă ̣p ở phần đơn vị kiến thức
đó, ví dụ khi dạy xong cho học sinh quy tắc đă ̣t tên biến thì khi viết chương trình
có đă ̣t biến giáo viên đều nhắc nhở học sinh đă ̣t đúng quy tắc như vâ ̣y các em mới
có thể hình thành kỹ năng viết chương trình.
- Giải pháp có thể áp dụng có các học sinh K11 mới học về lập trình pascal đơn
giản. chúng ta cũng có thể áp dụng phương pháp này khi dạy cho học sinh khối 8
bước đầu làm quen với ngôn ngữ lập trình pascal.
- Tuy nhiên không có một biện pháp sửa lỗi cú pháp nào tối ưu nào dành cho tất cả
các tiết dạy. Vì thế, trong quá trình dạy học giáo viên cần biết phát hiện và lựa chọn
những biện pháp thích hợp đối việc sửa lỗi để các giờ học trở nên sinh động hơn.
- Trên đây là giải pháp nhn mà tôi đưa ra, do kinh nghiệm giảng dạy vẫn còn hạn
chế nên sự thiếu sót là không tránh khni rất mong được sư đóng góp ý kiến của
đồng nghiệp để giải pháp này của tôi được hoàn thiện hơn.
XÁC NHẬN CỦA THỦ TRƯỞNG
ĐƠN VỊ
Nông Cống, ngày 24 tháng 05 năm 2020
Tôi xin cam đoan đây là SKKN của mình
viết, không sao chép nội dung của người
khác.
Người viết
Trần Lê Chức
15
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 giáo viên tin học 11
Hồ Sĩ Đàm
chủ biên
3. KT đánh giá thường xuyên và định kỳ tin học 11 Quách Tuấn Kiên chủ biên
4. Một số sáng kiến kinh nghiệm và ý kiến của đồng nghiệp .
16
- Xem thêm -