Caách tìm ra lỗi chương trình trong free pascal

Sáng kiến kinh nghiệm trong dạy học tin học 11
A. MỞ ĐẦU
I. Lý do chọn đề tài:
Tin học là một môn học mới và tương đối khó đối với học sinh THPT trong đó
môn lập trình Pascal trong chương trình lớp 11 lại càng khó. Để viết được một
chương trình hoàn chỉnh thỏa mãn 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 hay viết chương trình trên giấy 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.
Trong quá trình giảng dạy và hướng dẫn học sinh viết chương trình hầu giáo
viên thường để học sinh tự tìm và sữa chữa lỗi sai. Các lỗi sai được SGK Tin học
11 đưa ra tuy nhiên nếu làm theo cách mà các giáo viên thường dùng sẻ tạo cho
học sinh tính thụ động. Chỉ khi nào lên thực hành trên máy tính thì học sinh mới
tìm ra lỗi sai và sữa. Hiện nay các trường THPT trên địa bàn Nghệ An trường nào
có điều kiện thì củng chỉ xây dựng được 3 phòng máy để học sinh thực hành như
vậy học sinh sẻ không được thực hành viết chương trình trên máy tính thường
xuyên dẫn đến các lỗi sai cơ bản học sinh vẫn mắc phải. Để khắc phục vấn đề này
củng như giúp học sinh chủ động tìm lỗi sai và sửa khi viết chương trình tôi dã
mạnh dạn áp dụng phương pháp “ Giúp học sinh tự tìm và sử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”.

Giáo viên: Ngô Xuân Lan – Tổ: Toán Tin - Trường THPT Phan Thúc Trực Trang 1

Sáng kiến kinh nghiệm trong dạy học tin học 11
II. Mục đích nghiên cứu:
- Việc 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 bục
giảng và phòng thực hành
III. Đối tượng nghiên cứu:
- Học sinh lớp 11A1, 11G năm học 2010 – 2011
- Sách giáo khoa Tin học 11, sách giáo viên, chương trình Pascal.
IV. Phương pháp nghiên cứu:
- Tiến hành thực nghiệm qua tiết dạy
V. Điểm mới trong kết quả nghiên cứu:
- Tỷ lệ học sinh viết chương trình hoàn chỉnh nhiều hơn, chất lượng tốt hơn
- Các em hiểu được tính chặt chẻ khi viết chương trình bằng ngôn nghữ
Pascal.

Giáo viên: Ngô Xuân Lan – Tổ: Toán Tin - Trường THPT Phan Thúc Trực Trang 2

Sáng kiến kinh nghiệm trong dạy học tin học 11
B. NỘI DUNG
I. Cơ sở lý luận:
1. Thuận lợi:
- Trước yêu cầu ngày càng cao của việc dạy và học Tin học của giáo viên và
học sinh Trường THPT Phan Thúc Trực đã trang bị 1 phòng máy chiếu và 1 phòng
thực hành để học sinh học tốt hơn
- Đội ngũ giáo viên dạy môn Tin học còn trẻ, nhiệt tình, năng động luôn tìm
tòi những phương pháp giảng dạy tốt nhất để mang lại cho học sinh những tiết học
thú vị và bổ ích.
2. Khó khăn
- Học sinh của trường THPT Phan Thúc Trực đa phần là con em nhà nông
nên hoàn cảnh kinh tế còn khó khăn. Việc tiếp xúc với máy tình còn khá xa lạ nên
các thao tác khi các em thực hành trên máy tính còn chậm.
- Lập trình bằng ngôn ngữ lập trình Pascal là môn học yêu cầu học sinh phải
tư duy lôgic cao, tính chặt chẻ nên rất khó cho học sinh ở vùng nông thôn.
II. Cơ sở thực tiển
- Khi viết chương trình học sinh thường mắc các lỗi sau:
+ 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 về cấu trúc của ngôn ngữ lập trình như: thiếu dấu, sai câu lệnh, đặt tên
biến, tên chương trình sai,… Đối với lỗi này khi thực hiện chương trình ta ấn tổ
hợp phím Alt + F9 là chương trình dịch báo lỗi và căn cứ vào bảng mã lỗi trong
sách giáo khoa là ta có thể sữa được.
+ Lỗi Ngữ nghĩa: Là khi chương trình không còn xảy ra lỗi cú pháp. Nhưng
khi thực hiện chương trình thi kết quả không đúng hoặc không giới hạn hết các
trường hợp xẩy ra theo yêu cầu của bài toán
- 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á giỏi lên viết chương trình và
những học sinh còn lại chỉ việc chép vào vở. 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.
Giáo viên: Ngô Xuân Lan – Tổ: Toán Tin - Trường THPT Phan Thúc Trực Trang 3

Sáng kiến kinh nghiệm trong dạy học tin học 11
* Dự báo
Nếu Giáo viê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 học sinh vẫn
chưa viết được một chương trình hoàn chỉnh.
III. Các biện pháp đã tiến hành:
Trong quá trình giảng dạy tôi dùng cả hai phương pháp dạy học là dạy bảng
và dạy tại phòng thực hành.
1. Lỗi cú pháp:
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 phải 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: “[”, “]”,
“ ,”, “.”, “:=”, “=”, “ ’ ”, …
+ Học sinh viết chương trình mà quên không xuống dòng dẫn đến dòng quá
dài.
+ khai báo quá nhiều biến.
+ Đặ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.
+ Giữa các biến đực viết cách nhay 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].
+ 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.
….
- Để tránh những lỗi sai cho học sinh khi viết chương trình tôi dùng phương pháp
sau:
Ví dụ 1:
Đề bài: Viết chương trình in ra màn hình dòng chữ: “Lop 11A1 truong
THPT Phan Thuc truc”
- Chương trình sau Giáo viên chiếu lên bảng:
Giáo viên: Ngô Xuân Lan – Tổ: Toán Tin - Trường THPT Phan Thúc Trực Trang 4

Sáng kiến kinh nghiệm trong dạy học tin học 11
Progam vi du1;
Uses crt
Begin;
Clrscr;
Writeln[ lop 11A1 truong THPT Phan Thuc Truc’];
Realn
End;
- Nếu dạy trên bục giảng:
+ Chia lớp học thành các nhóm[mỗi bàn học sinh ngồi là một nhóm] để thảo
luận
+ Đưa ví dụ lên bảng yêu cầu học sinh viết chương trình. Khi học sinh viết
xong yêu cầu các nhóm kiểm tra và sữa các lỗi của nhóm vừa lên bảng thực hiện.
+ Giáo viên đưa chương trình viết lên bảng qua bảng phụ, chương trình này
nên viết sai các lỗi cú pháp, sau đó yêu cầu các nhóm thảo luận và sữa chữa rồi cho
điểm nhóm nào sữa chữa đúng nhất để tạo hứng thú cho học sinh trong quá trình
học.
+ Giáo viên đưa chương trình đúng lên bảng để các nhóm xem và ghi bài.
- Giáo viên Yêu cầu học sinh thảo luận theo nhóm tìm ra lỗi trong chương
trình trên
Các lỗi sai trong chương trình trên là:

Từ khoá Progam sai đúng là: Program[mã lỗi: 36].

Tên chương trình vi du1 là sai vì tên chương trình được đặt theo
quy tắc đặt tên của ngôn ngữ lập trình nên không được chứa dấu
cách [mã lỗi: 85].

Sau Uses crt phải có dấu ;[mã lỗi 85].

Sau từ khóa Begin không có dấu “;”[mã lỗi: 85].

Thủ tục Realn sai, phải là Readln[mã lỗi: 3].

End; sai phải là End.[End. là từ khóa để kết thúc chương trình]
[mã lỗi: 94].

Qua ví dụ trên học sinh sẻ không mắc vào các lỗi cơ bản đã nêu và biết cách sửa
lại chương trình trên lại cho đúng là:

Giáo viên: Ngô Xuân Lan – Tổ: Toán Tin - Trường THPT Phan Thúc Trực Trang 5

Sáng kiến kinh nghiệm trong dạy học tin học 11
Program vidu1;
Uses crt;
Begin
Clrscr;
Writeln[‘ lop 11A1 truong THPT Phan Thuc Truc’];
Readln
End.
- Nếu dạy trên phòng máy:
+ Giáo viên chép bài tập 1,2 lên bảng, yêu cầu học sinh thực hiện 2 bài tập
đó trên máy.
+ Sau khi học sinh thực hiện xong ấn phím F9 để kiểm tra lỗi, căn cứ vào mã
lỗi báo dưới dạng: Error mã lỗi: Lỗi mắc phải đối chiếu vào bảng lỗi ở
trang 136,137,138 SGK để sửa.
+ Các lỗi hay mắc phải trong trường hợp này là:
Error 21: Duplicate identifier Trùng tên
Error 21: Error in type Lỗi kiểu
Error 26: Type mismatch Sai kiểu
Error 36: BEGIN expected Phải là BEGIN
Error 37: END expected Phải là END
Error 85: ";" expected Phải là dấu ";"
Error 86: ":" expected Phải là dấu ":"
Error 87” "," expected Phải là dấu ","
Error 88: "[" expected Phải là dấu "["
Error 89: "]" expected Phải là dấu "]"
Error 90: "=" expected Phải là dấu "="
Error 91: ":=" expected Phải là dấu ":="
Error 92: "[" or "[." Expected Phải là dấu "[" hoặc "[."
Error 93: "]" or ".]" expected Phải là dấu "]" hoặc ".]"
Error 94: "." expected Phải là dấu "."
Error 113: Error in statement Lỗi trong câu lệnh
b. Những lỗi sai cơ bản trong câu lệnh rẻ nhánh và lặ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,..
+ Điều kiện trong câu lệnh rẻ nhánh là biểu thức lôgic.
+ 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].
Giáo viên: Ngô Xuân Lan – Tổ: Toán Tin - Trường THPT Phan Thúc Trực Trang 6

Sáng kiến kinh nghiệm trong dạy học tin học 11
+ Trước từ khoá Else không có dấu “;”.
+ Giá trị đầu luôn luôn mhỏ hơn hoặc bằng giá trị cuối trong câu lệnh lặp và
là những hằng số.
+ Trong câu lệnh lặp While … do phải có lệnh làm thay đổi giá trị biến đếm.
+ Điều kiện trong câu lệnh Whlie … do là một biểu thức Logic.
+ Phải khai báo biến đếm trong chương trình.
Ví dụ 2:
Đề bài: Viết chương trình giải và biện luận số nghiệm của phương trình
ax2 + bx + c =0 [a#0].
- Nếu dạy trên bục giảng:
- Giáo viên yêu cầu học sinh thảo luận theo nhóm và sau đó gọi một nhóm lên
thực hiện. đây là chương trình mà một nhóm viết lên bảng:
Program vidu2;
Uses crt;
Var
a,b,c: real;
delta,x1,x2:read;
Begin
Clrscr;
Write[‘ nhap a,b,c]; readln[a,b,c];
Delta:=b2-4ac;
If delta=0 then
Writeln[‘phuong trinh co nghiem kep,’ –b/2a];
Else
If delta>0 then
x1:= [-b+
x2:=[-b-

dela
dela

]/2a;

]/2a;

Writeln[‘phương trinh co 2 nghiem,’x1,x2];
If delta0 then
x1:= [-b+
x2:=[-b-

dela
dela

]/2a;

]/2a;

Writeln[‘phương trinh co 2 nghiem,’x1,x2];
Có nhiều hơn 2 lệnh nên phải được đặt trong cụm từ khóa Begin..
End;
Else
If delta>0 then
x1:= [-b+
x2:=[-b-

dela
dela

]/2a;

]/2a;

Writeln[‘phương trinh co 2 nghiem,’x1,x2];
Giáo viên: Ngô Xuân Lan – Tổ: Toán Tin - Trường THPT Phan Thúc Trực Trang 8

Sáng kiến kinh nghiệm trong dạy học tin học 11
If delta0 then
Begin
x1:= [-b+Sqrt[delta]]/2*a;
x2:=[-b-sqrt[delta]]/2*a;
Writeln[‘phương trinh co 2 nghiem’,x1,x2];
End;
If delta

Bài Viết Liên Quan

Chủ Đề