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
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
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

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:
sang_kien_kinh_nghiem_bien_phap_khac_phuc_mot_so_loi_thuong.docx
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ữ.pdf