Sáng kiến kinh nghiệm Biện pháp khắc phục một số lỗi thường gặp khi viết chương trình bằng ngôn ngữ lập trình PASCAL

1. Lý do chọn đề tài
Tin học là một bộ môn khoa học mới, đòi hỏi người học phải có kiến thức cơ bản về các bộ môn khoa học khác như: Toán, Vật lý, Hoá học, Tiếng anh….Tin học sử dụng kiến thức của các bộ môn khoa học đó làm công cụ để nghiên cứu. Muốn giải quyết được các bài tập Tin học không chỉ cần có những kiến thức về các môn học đó mà còn phải có kiến thức cơ bản về Tin học.
Ngôn ngữ lập trình Pascal là nội dung mới lạ đối với đa số học sinh lớp 8, nội dung này có nhiều khái niệm, thuật ngữ, cấu trúc câu lệnh mà học sinh mới được tiếp xúc lần đầu. Chính vì vậy mà học sinh dễ mắc lỗi sai khi lập trình. Nguyên nhân dẫn đến những lỗi sai là rất nhiều, nhưng có thể kể tới một số nguyên nhân chính sau đây: Thời gian dành cho bộ môn Tin học ít; Ít có động cơ trong học tập môn Tin học; Ngôn ngữ lập trình có nhiều khái niệm, cú pháp yêu cầu phải nhớ; Thời gian thực hành còn hạn chế;
Và qua thực tế giảng dạy ở trường THCS Khe Sanh, tôi nhận thấy khi học đến chương trình Tin học lớp 8 đa số học sinh đều nhận xét bộ môn này khó học.
Các học sinh thường gặp khá nhiều lỗi khi viết một chương trình bằng ngôn ngữ lập trình Pascal;
Các em khó khăn trong việc tổ chức dữ liệu và viết chương trình
Các em chưa nắm vững về cú pháp của ngôn ngữ lập trình Pascal.
Các em thường gặp khó khăn khi xác định bài toán, khó liên hệ phương pháp giải một bài toán trong Toán học với thuật giải trong Tin học
Tuy nhiên cũng có một lượng không nhỏ học sinh rất yêu thích môn Tin học và thích tìm hiểu một số bài toán, dạng toán ngoài phạm vi sách giáo khoa. Nhưng có những chương trình các em viết nhiều lỗi không hiểu tại sao và không sửa được khiến cho việc học môn Tin học càng trở nên nhàm chán hơn. Đã từng có rất nhiều học sinh lúc bắt tay vào viết chương trình với niềm đam mê hào hứng bao nhiêu thì càng tỏ ra nản hơn bấy nhiêu khi chương trình viết ra gặp quá nhiều lỗi. Chính vì vậy mà với tư cách một giáo viên Tin học tôi phải có nhiệm vụ hướng dẫn các em, giúp khơi lại niềm đam mê với Tin học
docx 24 trang Thanh Ngân 22/06/2025 210
Bạn đang xem 20 trang mẫu của tài liệu "Sáng kiến kinh nghiệm Biện pháp khắc phục một số lỗi thường gặp khi viết chương trình bằng ngôn ngữ lập trình PASCAL", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Sáng kiến kinh nghiệm Biện pháp khắc phục một số lỗi thường gặp khi viết chương trình bằng ngôn ngữ lập trình PASCAL

Sáng kiến kinh nghiệm Biện pháp khắc phục một số lỗi thường gặp khi viết chương trình bằng ngôn ngữ lập trình PASCAL
 I.MỞ ĐẦU
 1. Lý do chọn đề tài
 Tin học là một bộ môn khoa học mới, đòi hỏi người học phải có kiến thức cơ 
bản về các bộ môn khoa học khác như: Toán, Vật lý, Hoá học, Tiếng anh.. ..Tin 
học sử dụng kiến thức của các bộ môn khoa học đó làm công cụ để nghiên cứu. 
Muốn giải quyết được các bài tập Tin học không chỉ cần có những kiến thức về 
các môn học đó mà còn phải có kiến thức cơ bản về Tin học.
 Ngôn ngữ lập trình Pascal là nội dung mới lạ đối với đa số học sinh lớp 8, nội 
dung này có nhiều khái niệm, thuật ngữ, cấu trúc câu lệnh mà học sinh mới được 
tiếp xúc lần đầu. Chính vì vậy mà học sinh dễ mắc lỗi sai khi lập trình. Nguyên 
nhân dẫn đến những lỗi sai là rất nhiều, nhưng có thể kể tới một số nguyên nhân 
chính sau đây: Thời gian dành cho bộ môn Tin học ít; ít có động cơ trong học tập 
môn Tin học; Ngôn ngữ lập trình có nhiều khái niệm, cú pháp yêu cầu phải nhớ; 
Thời gian thực hành còn hạn chế;
 Và qua thực tế giảng dạy ở trường THCS Khe Sanh, tôi nhận thấy khi học đến 
chương trình Tin học lớp 8 đa số học sinh đều nhận xét bộ môn này khó học.
 Các học sinh thường gặp khá nhiều lỗi khi viết một chương trình bằng ngôn 
ngữ lập trình Pascal;
 Các em khó khăn trong việc tổ chức dữ liệu và viết chương trình
 Các em chưa nắm vững về cú pháp của ngôn ngữ lập trình Pascal.
 Các em thường gặp khó khăn khi xác định bài toán, khó liên hệ phương pháp 
giải một bài toán trong Toán học với thuật giải trong Tin học
 Tuy nhiên cũng có một lượng không nhỏ học sinh rất yêu thích môn Tin học 
và thích tìm hiểu một số bài toán, dạng toán ngoài phạm vi sách giáo khoa. Nhưng 
có những chương trình các em viết nhiều lỗi không hiểu tại sao và không sửa 
được khiến cho việc học môn Tin học càng trở nên nhàm chán hơn. Đã từng có 
rất nhiều học sinh lúc bắt tay vào viết chương trình với niềm đam mê hào hứng 
bao nhiêu thì càng tỏ ra nản hơn bấy nhiêu khi chương trình viết ra gặp quá nhiều 
lỗi. Chính vì vậy mà với tư cách một giáo viên Tin học tôi phải có nhiệm vụ Đồng thời, nội dung ngôn ngữ lập trình cũng là nội dung chính cho việc lựa 
chọn và tham gia thi học sinh giỏi các cấp. Nhưng qua thực tế lựa chọn đội tuyển, 
bước đầu các em làm quen và được bồi dưỡng thì bản thân các em còn thấy nhàm 
chán, khó khăn cũng như muốn bỏ cuộc. Nên với biện pháp tôi đưa ra cũng là cơ 
sở để thu hút các em tham gia đội tuyển nhiều hơn.
 Xuất phát từ những thực tế và kinh nghiệm trong giảng dạy tôi nhận thấy kết 
quả học tập chỉ đạt được tối đa khi học sinh thực sự có hứng thú học môn học 
này, chủ động tham gia vào các hoạt động tự lực giải quyết các nhiệm vụ học tập 
theo yêu cầu của giáo viên cũng như tự bản thân mình tạo ra các sản phẩm học 
tập. Cho nên khi tổ chức dạy học tôi nhận thấy giáo viên cũng như học sinh gặp 
những thuận lợi và khó khăn sau:
 1.1. Thuận lợi
 - Được sự quan tâm của BGH nhà trường trong công tác tổ chức dạy học bộ 
môn Tin học.
 - Giáo viên giảng dạy được đào tạo theo đúng chuyên ngành và được bồi 
dưỡng chuyên đề hàng năm
 - Giáo viên tích cực, hoạt bát, thích ứng nhanh với các kế hoạch mới, cập nhật 
công nghệ thông tin tốt
 - Phần lớn các em học sinh đã phần nào có ý thức tự học.
 1.2. Khó khăn
 - Bộ môn Tin học lớp 8 là môn được học sinh đánh giá là khó, rất khó so với 
lực học của đa số bộ phận các em học sinh.
 - Các học sinh thường gặp khá nhiều lỗi khi viết một chương trình trong ngôn 
ngữ lập trình Pascal. Có những lỗi mà học sinh mắc phải rất nhiều lần song các 
em lại không biết sửa như thế nào.
 Và trong quá trình giảng dạy chương trình lớp 8 tôi thấy nhiều học sinh mắc 
phải những sai lầm giống nhau. Dẫn đến nhiều em khó khăn trong việc tổ chức 
dữ liệu và viết chương trình. Hậu quả là, có không ít học sinh còn tìm cách học 90 “=” expected Thiếu dấu “=” 
 91 “:=” expected Thiếu dấu “:=” 
 92 “[” or “(.” Thiếu dấu “[” 
 expected hoặc “(.” 
 93 “]” or “.)” Thiếu dấu “]” 
 expected hoặc “.)” 
 94 “.” expected Thiếu dấu “.” 
 95 “..” expected Thiếu dấu “..” 
 (Lỗi sinh ra trong quá trình chạy chương trình Runtime Error)
 MÃ LỖI THÔNG BÁO LỖI Ý NGHĨA 
 2 File not found Không tìm thấy tệp 
 3 Path not found Không tìm thấy 
 đường dẫn 
 100 Disk read error Lỗi khi đọc đĩa 
 101 Disk write error Lỗi khi ghi đĩa 
 103 File not open Tệp chưa được mở 
Qua khảo sát chất lượng đầu năm học (bài thực hành đầu tiên), tôi thấy giờ thực 
hành học sinh rất ngại thực hành trên máy vì các em mới làm quen với một vài 
khái niệm cơ bản để viết chương trình. Mặc dù các em được sử dụng chương 
trình trong sách giáo khoa để thực hiện nhập vào máy tính song đa số các em vẫn 
chưa thực sự nhập đúng các câu lệnh. Đặc biệt là các từ khóa, dấu “;”, cặp dấu 
‘ ’ .... Nguyên nhân một phần là do các em chưa thực sự hiểu rõ bản chất của 
việc thực hiện các câu lệnh, chưa nắm rõ cú pháp câu lệnh... Vì thế, kết quả khảo 
sát đầu năm học thấp. “Lỗi là gì ?”
 Chúng ta cần hiểu “lỗi” ở đây là những vấn đề bất thường xảy ra trong quá 
trình thực hiện chương trình Pascal khiến cho kết quả nhận được không như mong 
muốn của người lập trình.
 “Có những loại lỗi nào ?”
 Có rất nhiều lỗi mà người lập trình có thể mắc phải khi viết và thực hiện 
chương trình Pascal. Nhưng thường được phân thành hai loại lỗi sau: Lỗi cú pháp 
và lỗi về ngữ nghĩa. Đối với những lỗi về cú pháp thì khi dịch chương trình, 
chương trình dịch Pascal sẽ báo lỗi. Và vấn đề của người lập trình ở đây là làm 
sao dựa vào chỉ dẫn của máy để sửa lỗi. Còn đối với những lỗi về ngữ nghĩa, 
chương trình dịch của Pascal không thể tìm ra lỗi này. Lỗi về cú pháp phải do 
người lập trình phát hiện ra và tương đối phức tạp.
 “Làm thế nào để sửa lỗi về ngữ nghĩa ?”
 Như chúng ta đã hiểu, lỗi về ngữ nghĩa là những lỗi vô cùng phức tạp. Hay nói 
cách khác các lỗi này nó “muôn hình vạn trạng”. Điều đó cũng cho thấy để sửa 
những lỗi về ngữ nghĩa vô cùng khó khăn đối với những người mới làm quen với 
ngôn ngữ lập trình Pascal như học sinh lớp 8 của chúng ta. Có những lỗi mà người 
học chưa trải qua thì khả năng sửa được gần như là bằng không. Do vậy cần phải 
cung cấp cho học sinh những kinh nghiệm sửa lỗi, phải hình thành tư duy thuật 
toán giúp học sinh nhanh nhạy hơn trong quá trình học lập trình Pascal.
 2.1.2. Xác định các lỗi cơ bản học sinh thường mắc phải
 Luôn luôn nhớ: Cần kiểm tra thường xuyên và nhắc nhở các em mỗi khi 
các em mắc các lỗi khi viết chương trình.
 Thực tế qua nhiều năm giảng dạy chương trình Tin học lớp 8, tôi đã rút ra được 
một số lỗi cơ bản mà các em thường mắc phải khi viết chương trình. Cụ thể tôi 
rút ra được một số lỗi của học sinh trường THCS Khe Sanh qua các thế hệ học 
sinh tôi đảm nhận giảng dạy hầu hết mắc phải như sau:
 - Sử dụng sai vị trí hoặc thiếu dấu ”
 + Sai lầm thường gặp: Trong ngôn ngữ lập trình Pascal, kết thúc mỗi câu lệnh một chương trình có khai báo một biến tên “a” và một biến tên “A” rồi dịch 
chương trình để chỉ ra lỗi Error: Duplicate indentifier “a ”.
 - Biến đếm, biến chỉ số là biến kiểu số thực.
 + Sai lầm thường gặp: Trong ngôn ngữ lập trình Pascal, biến đếm, biến chỉ số 
trong mảng thường là biến kiểu số nguyên.
 Học sinh thường nắm cú pháp của câu lệnh trong Pascal không vững, dẫn đến 
việc các em chỉ nhớ cú pháp câu lệnh mà không nhớ được ý nghĩa của các thành 
phần trong câu lệnh. Hậu quả là các em sử dụng cả biến kiểu số thực làm biến 
đếm hay biến chỉ số của mảng.
 + Biện pháp khắc phục: Để khắc phục sai lầm này ở học sinh, giáo viên yêu 
cầu học sinh không chỉ nhớ được cú pháp câu lệnh mà phải nắm vững ý nghĩa 
của từng thành phần trong câu lệnh trong ngôn ngữ lập trình Pascal.
 Ngoài ra, trong giờ thực hành, giáo viên có thể chủ động viết một chương trình 
có khai báo biến đếm và biến chỉ số của mảng là biến kiểu số thực rồi dịch chương 
trình để chỉ ra lỗi Error: Ordinal expression expected và lỗi Error: Incompatible 
types: got “Real” exptected “LongInt”.
 - Gán kết quả phép chia cho biến kiểu số nguyên.
 + Sai lầm thường gặp: Trong ngôn ngữ lập trình Pascal, kết quả thực hiện của 
phép chia luôn là số thực. Vì vậy, ta không thể gán kết quả của phép chia cho 
biến kiểu số nguyên.
 Học sinh thường nhớ được cú pháp của phép chia trong Pascal mà không để ý 
rằng kết quả của phép chia rất có thể là một số thực. Hậu quả là các em thường 
mắc lỗi gán giá trị cho biến kiểu số nguyên bằng giá trị của phép chia.
 + Biện pháp khắc phục: Trong các chương trình học sinh viết, mỗi khi học sinh 
gán kết quả phép chia cho biến kiểu số nguyên thì giáo viên cần chỉ rõ cho học 
sinh thấy được giá trị của phép chia luôn có thể là một số thực. Và nếu có là số 
nguyên thì trong Pascal cũng không được phép gán kết quả phép toán chia cho 
biến kiểu số nguyên mà phải sử dụng phép chia lấy phần nguyên “div”.
 Trong giờ thực hành, giáo viên có thể viết chương trình có sử dụng phép gán hạn rồi dịch chương trình để chỉ ra cho các em thấy lỗi Error: Illegal assignment 
to for-loop variable “a ”
 - Chạy chương trình mà không quan tâm đến kết quả.
 + Sai lầm thường gặp: Khi viết xong một chương trình, dịch thành công 
chương trình là có thể chạy chương trình. Nhưng điều đó chưa khẳng định được 
là chương trình cho kết quả đúng. Nhiều học sinh hiện nay chỉ viết chương trình 
mang tính đối phó mà không cần quan tâm tới tính đúng đắn của chương trình. 
Hậu quả là trong các giờ thực hành, nhiều học sinh viết chương trình đến khi 
chương trình chạy được là các em xem như đã hoàn thành yêu cầu của giáo viên 
mà không biết rằng chương trình các em viết cho kết quả không đúng hay sai với 
một số bộ test.
 + Biện pháp khắc phục: Để khắc phục tình trạng này ở học sinh thì mỗi khi 
giao bài tập cho học sinh, giáo viên nên chuẩn bị trước các bộ test mẫu để yêu 
cầu học sinh thực hiện chạy chương trình theo bộ test mẫu và đối chiếu kết quả.
 Viết sai các từ khóa.
 + Sai lầm thường gặp: Từ khóa là tên dành riêng do ngôn ngữ lập trình đặt với 
ý nghĩa riêng xác định.
 Học sinh thường mắc lỗi viết sai các từ khóa trong khi viết chương trình do 
các từ khóa trong Pascal đều là từ tiếng anh. Bên cạnh đó, nhiều học sinh có kiến 
thức tiếng anh hạn chế, một số học sinh học tin học mang tính đối phó. Dẫn đến 
việc nhiều học sinh viết sai các từ khóa trong khi viết chương trình bằng ngôn 
ngữ lập trình Pascal.
 + Biện pháp khắc phục: Để khắc phục sai lầm này ở học sinh, giáo viên yêu 
cầu học sinh nhớ chính xác các từ khóa trong chương trình.
 Đặc biệt, trong các giờ thực hành, giáo viên có thể chuẩn bị trước một chương 
trình có viết sai từ khóa trong Pascal rồi dịch chương trình để chỉ ra cho học sinh 
thấy lỗi Fatal: Syntax error.
 2.1.3. Các giải pháp thực tiễn
 Giải pháp 1: Cung cấp cho học sinh hệ thống bài tập đa dạng phong phú về B4: Thông báo giá trị SUM và kết thúc thuật toán.
 * Bài tập về đọc hiểu chương trình:
 Loại bài tập này sẽ giúp phát triển tư duy, giúp học sinh hiểu bài, nhất là khi 
dạy các cấu trúc lệnh. Đối với dạng bài tập này, giáo viên nên hướng dẫn các em 
thực hiện tuần tự từng lệnh theo từng câu lệnh cụ thể.
 Ví dụ: Cho biết kết quả khi thực hiện chương trình sau:
 Uses crt; Var i:integer;
 Begin
 Clrscr; I:=7; While i>1 do
 Begin
 If (i mod 2)0 then i:=i*3+1; Else i:=i div 2; Writeln(i);
 End;
 Readln; End.
 * Bài tập về sửa lôi chương trình:
 Ví dụ: Để tìm số lớn nhất trong 3 số a,b,c được nhập vào từ bàn phím, có 
người đã viết chương trình như sau:
 Var a,b,c:integer;
 Begin
 Write(‘nhap vao 3 so:’); Readln(a,b,c); If a<b then a:=b Else If a<c then a:=c;
 Write(‘So lon nhat la:’,a);
 Readln; End.
 Chương trình trên cho đáp số lúc đúng, lúc sai tuỳ thuộc vào a,b,c. Hãy giải 
thích tại sao và sửa lại cho đúng.
 Ta thực hiện chương trình trên với 2 bộ input sau đây:
Bộ 1: a=3,b=4,c=5 Bộ 2: a=5,b=4,c=7 
 a b c a<b a<c a b c a<b a<c
 3 4 5 T 5 4 7 F T 
 (3<4) (5<4) (5<7) Readln(x);
 Readln(y);
 z:=x+y;
 Sau đó khi chạy chương trình nhập x=100, y=200. Lúc này máy sẽ báo lỗi 
tràn bộ nhớ.
 Trong trường hợp này cần giải thích rõ tại sao lại lỗi và lỗi trong trường hợp 
nào?
 TH1: nhập x=100, y=200 thì chương trình sẽ tính z=300. Mà trong phần khai
 báo chúng ta khai bao z kiểu byte, kiểu byte có phạm vi giá trị là từ 0 đến 255 
như vậy z vượt quá phạm vi khai báo gây ra tình trạng tràn bộ nhớ.
 TH2: Tương tự nếu ta nhập x=100, y= -200 thì kết quả z=- 100. Lúc này lại 
xảy ra lỗi vì giá trị của c không nằm trong phạm vi giá trị của kiểu byte.
 TH3: Nếu nhập x = 300, y = - 100 thì mặc dù z := x+y được tính bằng 200 
thuộc phạm vi giá trị của kiểu byte thì chương trình vẫn sai vì lúc này chúng ta 
nhận thấy a lại vượt quá phạm vi khai báo, b không thuộc phạm vi khai báo.
 Kết luận: Để sửa lỗi này chúng ta cần phải chọn kiểu dữ liệu khi khai báo biến
 phù hợp. Và trong quá trình nhập dữ liệu cho các biến chúng ta cần phải chọn 
bộ
 “input” phù hợp.
 Giải pháp 3: Phân chia bài toán thành nhiều phần
 Trong thực tế, có những bài toán rất phức tạp, gồm nhiều công đoạn. Đối với 
những bài toán như vậy, chúng ta cần phải phân chia bài toán thành nhiều phần, 
giao cho mỗi nhóm thực hiện một phần của bài toán. Và như vậy, khi cần giải 
quyết một vấn đề nào đó bằng máy tính, để viết một chương trình phức tạp ta có 
thể viết từng phần chương trình giải quyết từng vấn đề nhỏ.
 Ta quay lại ví dụ trong phần giải pháp:
 Ở ví dụ này chia bài toán thành các phần sau: xác định bài toán, xây dựng thuật 
toán, khai báo biến, viết chương trình.
 Kết luận: Như vậy, việc phân chia một bài toán thành nhiều bài toán nhỏ sẽ 

File đính kèm:

  • docxsang_kien_kinh_nghiem_bien_phap_khac_phuc_mot_so_loi_thuong.docx
  • pdfSáng kiến kinh nghiệm Biện pháp khắc phục một số lỗi thường gặp khi viết chương trình bằng ngôn ngữ.pdf