Sáng kiến kinh nghiệm THCS: 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
lượt xem 2
download
Sáng kiến "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" được hoàn thành với mục tiêu nhằm giúp học sinh khắc phục tối đa các lỗi các em thường hay mắc phải từ đó phát huy hết khả năng của mình. Thông qua các hoạt động giáo dục, giáo viên và học sinh sẽ có sự giao lưu thoải mái, thân thiện để làm việc có hứng thú, hiệu quả hơn.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Sáng kiến kinh nghiệm THCS: 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
- MỤC LỤC Trang I. MỞ ĐẦU……………………………………………………… 1 1. Lý do chọn đề tài …………………………………………..... 1 2. Tính cấp thiết của vấn đề…………………………………….. 1 II. NỘI DUNG ………………………………………………….. 2 1. Thực trạng vấn đề …………………………………………… 2 2. Mô tả, phân tích các giải pháp áp dụng sáng kiến…………… 4 2.1. Mô tả quy trình/quá trình thực hiện ………………........... 4 2.2. Tính mới của đề tài………………………………………. 12 2.3. Tính thực tiễn của sáng kiến................................................. 12 2.4. Tính hiệu quả của sáng kiến……………………………… 12 III. KẾT LUẬN 13 1. Kết luận……………………………………………………… 13 2. Các đề xuất và kiến nghị…………………………………….. 14 Tài liệu tham khảo……………………………………………... 15
- 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ụ hướng dẫn các em, giúp khơi lại niềm đam mê với Tin học 2. Tính cấp thiết của vấn đề Với thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình chạy trên máy tính, các thiết bị điện tử thông minh, tạo ra các trò chơi học vui - vui học là điều rất cần thiết. Cũng trên cơ sở này để các lứa học sinh tiếp theo khi được học tập với chương trình giáo dục phổ thông 2018 tôi sẽ áp dụng cho các em trong chủ đề F “Giải quyết vấn đề với sự trợ giúp của máy tính”. Và để làm được việc đó cần có một quá trình nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đó người lập trình có thể chọn một ngôn ngữ lập trình thích hợp để viết chương trình. Hỗ trợ các em tốt hơn khi tiếp tục học lên cấp trung học phổ thông với nội dung chủ đề về lập trình. Từ thực tế trên, trong quá trình dạy học tôi luôn băn khoăn trăn trở làm thế nào để giúp các em có thể khắc phục những lỗi cơ bản khi viết chương trình bằng ngôn ngữ lập trình Pascal. Đề xuất các giải pháp phát hiện và sửa lỗi, một số lỗi học sinh thường gặp và hướng giải quyết để giúp học sinh có thêm kinh
- 2 nghiệm để tránh các lỗi thường gặp trong quá trình viết chương trình Pascal. Đồng thời còn giúp học sinh thêm yêu thích môn Tin học và phát triển các năng lực chung cũng như năng lực riêng biệt của môn học. Từ đó phát huy được khả năng chủ động, sáng tạo ở học sinh Chính vì vậy tôi đã suy nghĩ cách làm thế nào để có “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” II. NỘI DUNG 1. Thực trạng của vấn đề Thực tế qua những năm trực tiếp giảng dạy bộ môn cũng như trao đổi với đồng nghiệp tôi nhận thấy: hầu như học sinh đều rất yêu thích và hứng thú với môn Tin học. Tuy nhiên, chất lượng bộ môn qua các năm học chưa cao, đặc biệt là với học sinh lớp 8. Và trong thời gian áp dụng chương trình giáo dục phổ thồn mới 2018, các em học sinh lớp 6, 7 cũng còn rất bỡ ngỡ, khó khăn khi làm quen với ngôn ngữ lập trình thông qua nội dung học tập của chủ đề F. Đồ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
- 3 thuộc lòng các chương trình mẫu của giáo viên và trong sách mà chưa có khả năng tự mình viết được chương trình hoàn chỉnh cho máy tính giải bài toán. Nguyên nhân chính dẫn đến điều đó chủ yếu là do các em chưa nắm vững về cú pháp của ngôn ngữ lập trình Pascal. Và đặc biệt kể cả khi các em sử dụng sẵn chương trình mẫu để viết vẫn mắc phải một số lỗi cơ bản. Cụ thể, để tìm hiểu thực trạng của học sinh trong việc phát hiện và sửa các lỗi khi viết chương trình, tôi đã tiến hành thống kê trong các tiết bài tập và thực hành các lỗi mà học sinh thường mắc phải bao gồm các lỗi như sau: MỘT SỐ LỖI THƯỜNG GẶP (Lỗi biên dịch) MÃ THÔNG BÁO LỖI Ý NGHĨA LỖI 3 Unknown identifier Tên gọi chưa được mô tả 4 Duplicate indentifier Khai báo lặp một tên gọi 5 Syntax error Lỗi cú pháp 36 Begin expected Thiếu BEGIN 37 End expected Thiếu END 42 Error in expression Lỗi trong biểu thức 50 DO expected Thiếu DO 54 OF expected Thiếu OF 57 THEN expected Thiếu THEN 85 “;” expected Thiếu dấu “;” 86 “:” expected Thiếu dấu “:” 87 “,” expected Thiếu dấu “,” 88 “(” expected Thiếu dấu “(” 89 “)” expected Thiếu dấu “)” 90 “=” expected Thiếu dấu “=” 91 “:=” expected Thiếu dấu “:=” 92 “[” or “(.” expected Thiếu dấu “[” hoặc “(.” 93 “]” or “.)” expected Thiếu dấu “]” 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Ã THÔNG BÁO LỖI Ý NGHĨA LỖI 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ở … … …
- 4 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. Kết quả khảo sát đầu năm học 2021-2022 (phần thực hành) Kết quả kiểm tra T Sĩ Giỏi Khá TB Yếu Kém Lớp T số SL % SL % SL % SL % SL % 1 8B 38 7 18,4 10 26,4 14 36,8 7 18,4 0 0 2 8C 34 5 14,7 10 29,4 12 35,3 7 20,6 0 0 3 8D 34 6 17,6 9 26,5 13 38,3 6 17,6 0 0 Tổng cộng 106 18 17,0 29 27,4 39 36,8 20 18,8 0 0 Qua những thuận lợi và khó khăn cũng như kết quả khảo sát trên, việc cần thiết là giáo viên phải có phương pháp giáo dục và biện pháp phù hợp, có sự đầu tư, sáng tạo, chủ động hơn trong quá trình dạy học, nhằm giúp học sinh khắc phục tối đa các lỗi các em thường hay mắc phải từ đó phát huy hết khả năng của mình. Thông qua các hoạt động giáo dục, giáo viên và học sinh sẽ có sự giao lưu thoải mái, thân thiện để làm việc có hứng thú, hiệu quả hơn. 2. Mô tả, phân tích các giải pháp áp dụng sáng kiến 2.1. Mô tả quy trình/quá trình thực hiện Khảo sát mức độ hứng thú, tự giác của học sinh khi làm quen với phần lập trình Học tập, tham khảo phương pháp của các đồng nghiệp. Khảo sát năng lực của học sinh các lớp khi tiếp cận với nội dung chương trình Tin học lớp 8 Tổng hợp kết quả khảo sát, thực nghiệm từ các bạn học sinh ở trường Trung học cơ sở Khe Sanh ( 210 học sinh trong trường) Tham khảo các tài liệu có liên quan. Đánh giá kết quả học tập của học sinh sau khi áp dụng sáng kiến. 2.1.1.Các vấn đề liên quan đến “lỗi” và “sửa lỗi” trong Pascal “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,
- 5 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 đều có dấu chấm phẩy, câu lệnh liền trước từ khóa else không có dấu chấm phẩy và sau từ khóa end cuối cùng là dấu chấm. Học sinh thường mắc sai lầm khi viết kết thúc câu lệnh mà không có dấu chấm phẩy hoặc sử dụng dấu chấm phẩy trước từ khóa else, sử dụng dấu chấm phẩy sau từ khoá do trong các câu lệnh lặp câu lệnh lặp rỗng không làm việc gì cả. + Biện pháp khắc phục: Trong giờ dạy lý thuyết cũng như thực hành, giáo viên có thể viết chương trình có lỗi thiếu dấu chấm phẩy hay sai lỗi dấu chấm phẩy trước từ khóa else rồi dịch chương trình để chỉ ra lỗi Fatal Syntax error, “;” expected hay Fatal Syntax error, “;” expected but else found. - Đặt tên không đúng + Sai lầm thường gặp: Trong ngôn ngữ lập trình Turbo Pascal, tên là một dãy liên tiếp không quá 127 kí tự bao gồm chữ số, chữ cái hoặc dấu gạch dưới và bắt đầu bằng chữ cái hoặc dấu gạch dưới. (Trong Free Pascal thì tên có thể có tới 255 kí tự). Học sinh thường mắc sai lầm đặt tên không đúng theo quy tắc của ngôn ngữ lập trình Pascal. Các em thường đặt tên có dấu cách hay có thêm các kí tự khác, ngoài các kí tự được phép đặt tên trong ngôn ngữ lập trình Pascal. + Biện pháp khắc phục: Giáo viên có thể chủ động viết một chương trình có khai báo một tên không đúng quy tắc đặt tên của ngôn ngữ lập trình Pascal rồi dịch chương trình để chỉ ra lỗi như: Error: Fatal: Syntax error, “;” expected but “ordinal const” found. - Đặt tên biến trùng nhau. + Sai lầm thường gặp: Trong một chương viết bằng ngông ngữ lập trình Pascal, mỗi đối tượng có một tên và không phân biệt chữ hoa và chữ thường. Học sinh thường mắc sai lầm khi đặt tên các biến trùng nhau. Đặc biệt với
- 6 những chương trình có sử dụng nhiều biến tham gia, học sinh thường đặt một biến có tên chữ thường, một biến có tên chữ hoa mà không nhớ rằng trong Pascal không phân biệt chữ hoa và chữ thường (ví dụ: var a, A:integer;) + Biện pháp khắc phục: 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 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 kết quả phép chia cho biến kiểu số nguyên rồi dịch chương trình để chỉ ra lỗi Error: Incompatible types: got “Extended” expected “SmallInt”. - Nhầm lẫn giữa phép gán và phép toán quan hệ bằng. + Sai lầm thường gặp: Trong ngôn ngữ lập trình Pascal, phép gán có cú pháp “:=” dùng để gán giá trị cho biến bên trái bằng giá trị của biểu thức bên phải. Học sinh thường nhầm lẫn giữa phép gán với biểu thức quan hệ bằng bởi vì các em quen với việc tính toán trong các môn học khác. Ví dụ: trong môn toán các em thường có biểu thức = b − 4ac khi các em giải phương trình bậc hai. 2 Và khi viết chương trình trong Pascal các em thường viết delta=b*b-4*a*c; + Biện pháp khắc phục: Để khắc phục sai lầm này ở học sinh, giáo viên cần nói rõ ý nghĩa phép gán trong Pascal là dùng để thay đổi giá trị của biến và nó là một câu lệnh. Còn dấu “=” trong Pascal là phép toán quan hệ bằng.
- 7 Trong giờ thực hành, giáo viên có thể viết một chương trình mà thay phép gán “:=” bởi phép toán quan hệ bằng “=” rồi dịch chương trình để chỉ ra lỗi Error Illegal Expression. - Vòng lặp vô hạn. + Sai lầm thường gặp: Trong ngôn ngữ lập trình Pascal, biến đếm trong vòng lặp for được tăng hoặc giảm một cách tự động hay vòng lặp while-do chỉ kết thúc khi điều kiện lặp sai. Học sinh thường mắc sai lầm khi viết các chương trình có sử dụng vòng lặp lồng nhau mà chưa phân tích rõ việc sử dụng các biến nên có em sử dụng cùng một biến cho các vòng lặp lồng nhau. Bên cạnh đó, có những học sinh xác định điều kiện lặp không chính xác làm cho điều kiện lặp trong vòng lặp while-do luôn luôn đúng. Hậu quả là chương trình lặp vô hạn mà không cho ra kết quả. + Biện pháp khắc phục: Để khắc phục sai lầm này ở học sinh, giáo viên nên yêu cầu học sinh phân tích rõ thuật toán, các biến được sử dụng trong chương trình cùng ý nghĩa của nó. Hay việc xác định điều kiện lặp phải được thay đổi đến một lúc nào đó điều kiện đó phải sai để tránh lặp vô hạn. Trong giờ thực hành, giáo viên có thể viết một chương trình có vòng lặp vô 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
- 8 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ề thể loại như viết thuật toán, đọc hiểu chương trình, phát hiện lỗi chương trình, chia nhỏ bài toán lớn, viết chương trình, bài tập về khai báo biến... Khi dạy lập trình nói chung và Pascal nói riêng, nhiều khi người dạy chỉ chú ý tới các bài tập về lập trình mà không nghĩ rằng trong những bước đầu để học sinh hiểu yêu cầu đề bài và phân loại bài tập cần phải đưa ra nhiều dạng bài tập khác nhau, trong số các dạng bài tập đó ở đây ta có thể nêu ra một số dạng như sau: bài tập về viết thuật toán, bài tập về đọc hiểu chương trình, bài tập về sửa lỗi chương trình, bài tập về viết chương trình, … * Bài tập về viết thuật toán: Với đa số học sinh hiện nay, cần phải dành một lượng thời gian thích hợp để rèn luỵên loại bài tập này. Phải làm sao cho việc viết thuật toán trở thành kĩ năng để khi các em lập trình trên máy, tuy không cần viết thuật toán ra mà các em có thể hình dung được thuật toán đó trong đầu. Cần phải tạo cho các em có ý thức khi viết một chương trình Pascal là phải tuân thủ theo trình tự sau: Bài toán Xây dựng thuật toánViết chương trình Ví dụ: Cho hai số thực a và b. Hãy cho biết kết quả so sánh hai số đó dưới dạng “a lớn hơn b”, “a nhỏ hơn b”, hoặc “a bằng b”. . Khi đó ta có thể trình bày thuật toán như sau: B1- Nếu a>b, kết quả là “a lớn hơn b” và chuyển qua bước 3. B2- Nếu a>b, kết quả là “a nhỏ hơn b”; Ngược lại, kết quả là “a bằng b”. B3- Kết thúc thuật toán * Bài tập tìm kết quả dựa trên thuật toán sẵn có: Với loại bài toán này từ các bước đã cho giáo viên hướng dẫn học sinh cách tìm kết quả mà tác giả đã xây dựng cho bài toán qua các bước của thuật toán. Ví dụ: Hãy cho biết kết quả của thuật toán sau: (Câu 5 SGK Tin học quyển 3 trang 45) B1: SUM 0; i 0; B2: Nếu i > 100 thì chuyển tới bước 4. B3: i i + 1; SUM SUM + i. Quay lại bước 2. 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:
- 9 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
- 10 Việc làm này giúp học sinh hiểu rõ hơn nguyên nhân mắc lỗi và lần sau không mắc phải các lỗi tương tự. Ta xét ví dụ sau: Trong phần khai báo: Var x, y, z: byte; Trong phần thân chương trình: 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ẽ giúp cho việc giải quyết bài toán mạch lạc, việc kiểm tra sai sót thuận tiện hơn, có thể thấy kết quả ở từng bước và có thể điều chỉnh kịp thời. * Giải pháp 4: Rèn luyện kĩ năng phát hiện và sửa lỗi bằng việc tích cực cho học sinh thực hành và sửa lỗi. Trong dạy lập trình Pascal, việc giúp học sinh nhận ra lỗi và cách sửa các lỗi đó là rất cần thiết và quan trọng. Để có thể sửa lỗi nhanh chóng cần có sự sự tư duy và tổng hợp trong quá trình thực hành. Muốn cho học sinh tích lũy được nhiều kinh nghiệm thì bản thân tôi thường tăng cường cho học sinh thực hành trên máy. Đối với các bài “ Bài tập và thực hành” tôi thường cho học sinh viết
- 11 chương trình trực tiếp trên máy sau đó yêu cầu học sinh chạy tự tìm ra lỗi và nguyên nhân. Đối với các lỗi phức tạp yêu cầu học sinh ghi nhớ bằng cách chạy nhiều bộ input khác nhau hoặc ghi chép vào vở chi tiết. Ta xét các ví dụ sau: + Trong phần khai báo: Var i:real; Trong phần thân chương trình: For i:=1 to n do write (i); Biến đếm trong các vòng lặp luôn luôn nhận giá trị nguyên hoặc dưới dạng kí tự, do vậy khi khai báo biến đếm tuyệt đối không sử dụng kiểu dữ liệu thực. Giải pháp: Khi khai báo biến đếm tuyệt đối không sử dụng kiểu dữ liệu thực. + Trong phần khai báo: Var a, b, c: Integer; Trong phần thân chương trình: a: =20; b:=14; c:=a/b Giải pháp: Biến được khai báo dùng để gán cho phép chia phải được sử dụng kiểu dữ liệu thực. + Với đoạn chương trình: i:=1; While i< 10 do write (i); Đoạn chương trình này đã rơi vào vòng lặp vô hạn bởi giá trị của i bao giờ cũng nhỏ hơn 10. Giải pháp: Ví dụ trên đã rơi vào vòng lặp vô hạn bởi giá trị của i bao giờ cũng nhỏ hơn 10. Để sửa lỗi trên học sinh cần phải thêm câu lệnh làm thay đổi giá trị của i vào sau “do”. Có thể thêm như sau: i:=1; While i< 10 do Begin write (i); i:=i+1; End; Kết luận: Giải pháp này giúp các em tích lũy kinh nghiệm về việc phát hiện và sửa lỗi đồng thời phát huy năng lực tự học tự giải quyết vấn đề. Giải pháp 5: Tạo tình huống mắc lỗi yêu cầu học sinh phát hiện và sửa lỗi Để thực hiện giải pháp này, tôi thường đưa ra các bài tập yêu cầu học sinh làm mà không hề nhắc đến việc các dữ liệu của bài tập có vấn đề và để tự học sinh phát hiện ra điều đó. Việc này nhằm giúp cho học sinh khắc sâu và lần sau không mắc phải những lỗi tương tự. Đây cũng là một cách giúp các em được “làm quen” với các lỗi một cách hay nhất. Đối với những lỗi mà giáo viên tạo tình huống như vậy thì học sinh thường nhớ lâu hơn, điều đó cũng có nghĩa là lần sau học sinh sẽ không mắc phải các lỗi đó nữa. Ví dụ: Cho HS chạy chương trình với lỗi đặt sai dấu “;” như sau: If a>b then write (‘ So lon nhat la:’, a); Else write(‘ so lon nhat la:’, b); Từ đó HS phát hiện ra lỗi mà mình cũng thường hay mắc phải. Giải pháp: Yêu cầu học sinh ghi nhớ các quy tắc của Pascal khi viết chương trình đặc biệt trong câu lệnh ghép, trong các vòng lặp. Giải thích cho học sinh hiểu rằng câu lệnh rẽ nhánh phải hết câu lệnh sau “else” mới kết thúc và lúc đó mới cần dấu “;”.
- 12 Kết luận: Giải pháp này giúp các em khắc sâu hơn nữa các lỗi đã phát hiện và cách sửa. Ngoài ra nó còn phát huy năng lực hợp tác. 2.2. Tính mới của sáng kiến Sáng kiến đã đáp ứng được nhu cầu đổi mới dạy - học theo hướng phát triển năng lực của người học cũng như năng lực tự học, tự giải quyết vấn đề, năng lực hợp tác, năng lực công nghệ thông tin nâng cao, năng lực khoa học máy tính. Ứng dụng tại trường THCS Khe Sanh các giải pháp tích cực để điều chỉnh lỗi sai thường xuyên mắc phải của học sinh khi viết chương trình bằng ngôn ngữ lập trình Pascal. Với giải pháp này cũng sẽ hỗ trợ rất đắc lực cho giáo viên cũng như học sinh khi áp dụng cho chương trình giáo dục phổ thông 2018 với chủ đề “Giải quyết vấn đề với sự trợ giúp của máy tính”. Mặc dù các em sẽ không trực tiếp sử dụng ngôn ngữ lập trình Pascal mà sẽ được làm quen với ngôn ngữ lập trình khác như ngôn ngữ lập trình kéo thả Scratch…. Không chỉ tác động hành vi trong mối quan hệ giữa học sinh với học sinh mà còn rất hiệu quả trong thể hiện thái độ của giáo viên với học sinh. 2.3. Tính thực tiễn của sáng kiến Qua quá trình, áp dụng đề tài tôi nhận thấy nội dung này phù hợp với nhu cầu thực tiễn trong quá trình giảng dạy nhất là khi thực hành. Khi áp dụng đề tài cũng đòi hỏi người hướng dẫn phải luôn biết tự nghiên cứu, tạo cảm hứng và khơi gợi sự sáng tạo cho học sinh. Đồng thời nó có sức ảnh hưởng đến học sinh qua các bài kiểm tra, nhất là học sinh được làm việc ở dạng kiến thức tổng quát của một nội dung Toán học cụ thể. Và đồng thời hỗ trợ các em lượng kiến thức cơ bản về lập trình nói chung để phục vụ cho việc tiếp cận kiến thức mới ủa chương trình giáo dục phổ thông 2018 cấp THPT. 2.4. Tính hiệu quả của sáng kiến. Qua thời gian áp dụng áp dụng một số giải pháp tại trường Trung học cơ sở Khe Sanh tôi nhận thấy học sinh hoạt động tích cực hơn, các thao tác trên máy thực hiện khá thuần thục. Các đối tượng học sinh hỗ trợ được cho nhau để cùng học, cùng tiến bộ. Học sinh ít mắc phải các lỗi, đặc biệt là các lỗi như thiếu dấu “;”, cặp dấu ‘ ’, đặt tên không đúng, trùng tên, sai từ khóa…. Các em thuần thục hơn khi viết chương trình, dịch và chạy chương trình đơn giản.Và kết quả sau quá trình áp dụng biện pháp trên cho bài kiểm tra thực hành cuối năm so với đầu
- 13 học kỳ I như sau: Qua bảng khảo sát trên ta nhận thấy rằng số lượng học sinh giỏi, khá đã tăng lên rất nhiều khi các em đã biết phát hiện ra lỗi và sữa lỗi khi viết các chương trình. Cụ thể số lượng học sinh giỏi đạt 31,1%, tăng 13,9% so với khảo sát đầu kỳ I; Học sinh khá đạt 45,4%, tăng 18% so với khảo sát đầu học kỳ I; Học sinh trung bình giảm chỉ còn 23,5%; Đặc biệt không còn học sinh yếu, kém. Và đặc biệt hơn cả là các em đã tự tin, mạnh dạn và hứng thú hơn khi tham gia vào đội tuyển học sinh giỏi môn Tin học. Các em không còn e ngại, không còn thấy chán nanr, mất hứng thú khi tham gia bồi dưỡng nữa. Chính vì thế trong thời gian gần đây, chất lượng đội tuyển học sinh giỏi môn Tin học được nâng lên rõ rệt. Các em đã gặt hái những thành công đáng kể như giải nhất cấp huyện, giải ba cấp tỉnh…. Các em còn tham gia vào các cuộc thi tin học miền Trung Tây Nguyên hay các cuộc thi sáng tạo khác và đều đạt kết quả đáng khích lệ. Là tiền đề cho các thế hệ học sinh, các em học sinh sau này hứng thú và tự tin hơn khi tham gia các cuộc thi về lập trình, về sáng tạo tin học… Giá trị khoa học: Đề tài đã giúp cho việc dạy học đạt nhiều hiệu quả cao, giúp cho học sinh dễ dàng tiếp nhận tri thức và từ đó phát triển khả năng tư duy, bao quát trong mọi hoạt động giáo dục. III. KẾT LUẬN 1. Kết luận Qua việc nghiên cứu và thực hiện các biện pháp trên, tôi nhận thấy có những thay đổi đáng kể trong quá trình dạy và học. Điều đó cho thấy nó có những ý nghĩa nhất định đó là: Thứ nhất, biện pháp trên không chỉ giúp cho học sinh phát hiện, sửa các lỗi thường gặp mà nó còn giúp cho các em thêm yêu thích môn Tin học. Nhiều học sinh thể hiện hứng thú một cách rất rõ ràng: như tích cực làm bài tập về nhà, tích cực trao đổi bài với bạn bè, giáo viên, chất lượng các bài kiểm tra tăng lên rõ rệt. Thứ hai, biện pháp trên còn giúp những giáo viên dạy môn Tin học mà cụ thể là bản thân tôi cảm thấy yêu nghề hơn. Mỗi khi bước vào lớp cảm nhận được sự hứng thú của học sinh trong các tiết học khiến cho giáo viên truyền đạt kiến thức
- 14 một cách say mê hơn. Trong các tiết bài tập và thực hành giáo viên cũng tiết kiệm được rất nhiều thời gian khi không phải sửa các lỗi đã gặp cho học sinh. Thứ ba, các biện pháp trên còn giúp học sinh phát huy một số năng lực chung và năng lực riêng của môn Tin học trong chương trình giáo dục phổ thông. Đó cũng là một trong những yêu cầu cấp thiết đặt ra trong bối cảnh giáo dục hiện nay. Qua thực nghiệm trên ở một số lớp, tôi thấy các em đã phát huy các năng lực như năng lực tự học, tự giải quyết vấn đề, năng lực sáng tạo, năng lực công nghệ thông tin nâng cao, năng lực khoa học máy tính Tuy nhiên, bên cạnh đó thì tôi nhận thấy mức độ áp dụng của giải pháp chưa thực sự sâu rộng trong học sinh. Do đó đối với một số học sinh chậm phát triển về trí tuệ, những học sinh thụ động thì vẫn còn tồn tại những khó khăn nhất định. Từ những mặt làm được cũng như hạn chế nêu trên, là cơ sở, là bài học kinh nghiệm quý báu cho bản thân trong quá trình giảng dạy. Trong thời gian qua bản thân tôi đã vận dụng vào thực tế giảng dạy và chất lượng học sinh đã nâng lên rõ rệt. Tuy nhiên trong quá trình nghiên cứu và thực hiện đề tài này sẽ không tránh khỏi những mặt hạn chế, thiếu sót. Vì vậy, tôi mong đươc sự giúp đỡ, đóng góp ý kiến quý báu của cấp trên và đồng nghiệp để đề tài này được hoàn thiện và đạt kết quả cao hơn. 2. Các đề xuất và kiến nghị 2.1. Đối với nhà trường Tiếp tục đầu tư xây dựng, hoàn thiện cơ sở vật chất, thiết bị, sách tham khảo cho bộ môn Tin học. Đầu tư xây dựng phòng học bộ môn Tin học khoa học, đảm bảo số lượng phục vụ nội dung thực hành cho học sinh. 2.2. Đối với phòng giáo dục: Thường xuyên tổ chức các cuộc thi sáng tạo, các câu lạc bộ Tin học để kích thích hứng thú học tập môn Tin học của học sinh. Trên đây là một số kinh nghiệm của bản thân rút ra được trong quá trình dạy học. Rất mong nhận được sự góp ý của quý thầy cô, bạn bè đồng nghiệp để tôi có thể hoàn chỉnh hơn đề tài này, góp phần nâng cao chất lượng dạy và học. XÁC NHẬN CỦA THỦ Khe Sanh, ngày 28 tháng 3 năm 2023 TRƯỞNG ĐƠN VỊ Tôi xin cam đoan đây là Sáng kiến của mình viết, không sao chép nội dung của người khác Trần Thị Lệ Chi
- 15 TÀI LIỆU THAM KHẢO: Quá trình thực hiện đề tài tôi đã tham khảo các tài liệu sau: 1. Ứng dụng công nghệ thông tin trong dạy học 1 số môn ở trường phổ thông, 2011…………………………………………………….. NXB Giáo dục 2. Mạng Internet. - Một số lỗi cú pháp thường gặp trong Pascal: https://thuviendethi.com/mot-so-loi-cu-phap-thuong-gap-cua-pascal-3279/ - Các mã lỗi trong Pascal: https://phaleco.com/san-pham/cac-ma-loi-trong- pascal-907.html - Trang web Vioet.vn 3. Sách giáo khoa và sách bài tập Tin học quyển 3…NXB giáo dục Việt Nam Biên soạn : Phạm Thế Long Bùi Việt Hà Bùi Văn Thanh 4. Tài liệu bồi dưỡng thường xuyên cho giáo viên THCS chu kì III (2004 – 2007) – quyển 1 ........................................................................ NXB giáo dục Biên soạn : Trịnh Thị Hải Yến Nguyễn Phương Hồng Bùi Thu Hà 5. Tài liệu bồi dưỡng thường xuyên cho giáo viên THCS chu kì III (2004 – 2007) – quyển 2 ............................................................................ NXB giáo dục Biên soạn: Nguyễn Hải Châu; Nguyễn Phương Hồng Hồ Tuấn Hùng; Trần Thị Nhung 6. Những vấn đề chung về đổi mới giáo dục THCS ................ NXB giáo dục Biên soạn: Nguyễn Hải Châu Nguyễn Trọng Sửu
- 16
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Sáng kiến kinh nghiệm THCS: Một số biện pháp nhằm nâng cao chất lượng học tập phân môn Hát ở lớp 6
13 p | 328 | 31
-
Sáng kiến kinh nghiệm THCS: Đổi mới phương pháp quản lý hồ sơ sổ sách trong trường THCS
16 p | 333 | 22
-
Sáng kiến kinh nghiệm THCS: Một số biện pháp nâng cao hiệu quả sử dụng thiết bị dạy học và sửa chữa đồ dùng dạy học bộ môn Vật lí ở trường THCS
16 p | 27 | 11
-
Sáng kiến kinh nghiệm THCS: Vận dụng kiến thức thực tiễn vào dạy học Địa lý 6
13 p | 43 | 11
-
Sáng kiến kinh nghiệm THCS: Một số biện pháp trong việc bảo quản vốn tài liệu tại thư viện trường THCS Nguyễn Lân
15 p | 97 | 10
-
Sáng kiến kinh nghiệm THCS: Những biện pháp phát huy vai trò tự quản của tập thể lớp tại lớp 8a2 trường THCS Nguyễn Lân
19 p | 39 | 10
-
Sáng kiến kinh nghiệm THCS: Tạo hứng thú, phát huy tính tích cực và chủ động của học sinh trong các giờ học Tiếng Anh bằng hoạt động cặp, nhóm
20 p | 41 | 8
-
Sáng kiến kinh nghiệm THCS: Phát triển kĩ năng nghe với học sinh THCS
15 p | 25 | 7
-
Sáng kiến kinh nghiệm THCS: Giải pháp nâng cao chất lượng chủ nhiệm lớp ở cấp THCS
17 p | 56 | 7
-
Sáng kiến kinh nghiệm THCS: Giáo dục kỹ năng sống cho học sinh THCS
19 p | 26 | 7
-
Sáng kiến kinh nghiệm THCS: Phát huy tính tích cực cho học sinh lớp 8 và học sinh tham gia thi Tin học trẻ trong khi giảng dạy Pascal
9 p | 28 | 7
-
Sáng kiến kinh nghiệm THCS: Một số biện pháp giúp giáo viên chủ nhiệm quản lí tốt lớp học trực tuyến
16 p | 99 | 7
-
Sáng kiến kinh nghiệm THCS: Một số biện pháp tạo hứng thú cho học sinh lớp 8 khi học Hình học
19 p | 24 | 6
-
Sáng kiến kinh nghiệm THCS: Biện pháp nâng cao chất lượng học tập học sinh qua tiết ôn tập môn Công Nghệ 8
5 p | 17 | 6
-
Sáng kiến kinh nghiệm THCS: Một số kiến thức cơ bản khi tìm hiểu Nhân vật trong tác phẩm văn học
16 p | 28 | 6
-
Sáng kiến kinh nghiệm THCS: Một số biện pháp khắc phục những sai sót khi giải toán liên quan đến bội và ước lớp 6
14 p | 25 | 5
-
Sáng kiến kinh nghiệm THCS: Phương pháp dạy một bài viết hiệu quả
15 p | 19 | 5
-
Sáng kiến kinh nghiệm THCS: Biện pháp hướng dẫn học sinh học tập theo nhóm trong giảng dạy môn Ngữ văn
8 p | 14 | 5
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn