Sáng kiến kinh nghiệm Một số lỗi sai của học sinh khi học lập trình Pascal và hướng khắc phục, Tin học 8
2. Mô tả bản chất của sáng kiến:
Trong giai đoạn hiện nay, công nghệ thông tin được ứng dụng vào đời sống như một công cụ không thể thiếu. Nó hỗ trợ đắc lực con người trong mọi khía cạnh như công việc, giải trí, học tập, … Để giải quyết được vấn đề tạo ra các sản phẩm để phục vụ cuộc sống thì một bước rất quan trọng trong quá trình này là lập trình.
Lập trình là quá trình con người tạo ra chương trình máy tính thông qua ngôn ngữ lập trình, 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. 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 đó nhà 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. Hiện nay, có rất nhiều loại ngôn ngữ lập trình khác nhau để tạo nên các sản phẩm ở mỗi lĩnh vực với mục đích giúp học sinh làm quen với ngôn ngữ lập trình, trong đó ngôn ngữ Pascal đã được Bộ Giáo dục và Đào tạo chọn lựa để đưa vào nội dung bộ môn Tin học ở bậc Trung học cơ sở. Tuy nhiên do bước đầu làm quen với ngôn ngữ lập trình nên học sinh sẽ không tránh khỏi những sai sót và để khắc phục được yếu tố này tôi đã đưa ra sáng kiến “Một số lỗi sai của học sinh khi học lập trình Pascal và hướng khắc phục”.
2.1. Các bước và cách thức thực hiện giải pháp:
Từ những thực trạng của học sinh trong quá trình học lập trình Pascal. Tôi đưa ra một số phương án giúp học sinh khắc phục một số lỗi sai trong quá trình học lập trình Pascal. Trong sáng kiến này, tôi thực hiện theo trình tự như sau:
+ Xác định những sai xót mà học sinh thường vấp phải.
+ Đưa ra hướng giải quyết.
+ Đưa ra ví dụ thực tế để học sinh nắm rõ hơn về hướng giải quyết này.
Tóm tắt nội dung tài liệu: Sáng kiến kinh nghiệm Một số lỗi sai của học sinh khi học lập trình Pascal và hướng khắc phục, Tin học 8

2 S:=0; For i:= 10 to 1 do s:=s+i; Writeln('Tong la ',s); Readln end. Trong bài toán trên, biến đếm sẽ tự động tăng lên sau khi câu lệnh được thực hiện với điều kiện giá trị đầu <= giá trị cuối. Tuy nhiên, với câu lệnh như học sinh viết ở trên thì biến đếm sẽ không tăng lên được do giá trị đầu > giá trị cuối, và khi chạy chương trình thì sẽ cho kết quả là 0. Phương án khắc phục: - Đưa ra chương trình và yêu cầu học sinh nhìn nhận sự thay đổi giá trị của biến đếm trong chương trình. - Đưa ra bài tập về đọc hiểu chương trình. - Đưa ra chương trình chưa đúng, yêu cầu học sinh phát hiện lỗi và chỉnh sửa cho phù hợp. Ví dụ: Giáo viên đưa ra chương trình với câu lệnh đúng như sau: For i := 1 to 10 do S:= S + i; b. Chưa xác định được điều kiện trong câu lệnh lặp với số lần chưa biết trước: Lỗi phát sinh do học sinh chưa nắm được quy trình hoạt động của điều kiện. Từ đó, chưa xác định được điều kiện phù hợp để chương trình hoạt động đúng yêu cầu. Ví dụ: Với bài toán tính giá trị của X là bao nhiêu nếu trước đó giá trị của X bằng 5 If X > 10 then X := X+1; thì học sinh cho kết quả là X=11. Vậy có nghĩa là học sinh chưa nắm rõ được quy trình hoạt động của câu lệnh điều kiện. Phương án khắc phục: - Đưa ra chương và cho học sinh xác định khi nào chương trình cần thực hiện và khi nào chương trình dừng lại. Từ đó đưa ra điều kiện phù hợp. - Đưa ra bài tập đọc hiểu chương trình. - Thảo luận nhóm, đưa ra ý kiến về bài làm của bạn. - Thảo luận nhóm và đưa ra phương án xác định điều kiện. Ví dụ: Giáo viên cần hướng dẫn kỹ cho học sinh về quy trình hoạt động của câu lệnh điều kiện dạng thiếu và đủ. Với câu lệnh trên, đầu tiên ta xét đây là câu lệnh điều kiện dạng thiếu. Tiếp tục xét, trước đó X=5, đem so với điều kiện X > 10 thì không thoả mãn, vì vậy câu lệnh bị bỏ qua. Kết luận, giá trị của X vẫn bằng 5 chứ không phải bằng 11 như học sinh đã đưa ra. c. Chưa nắm được cú pháp của câu lệnh: Lỗi do học sinh chưa nắm được cú pháp câu lệnh, chưa xác định được các thành phần trong câu lệnh. Ví dụ: Câu lệnh lặp với số lần biết trước có cú pháp: For := to do ; 4 Ví dụ: Với lỗi sai ví dụ trên, giáo viên hướng dẫn học sinh đặt lại tên biến và kiểu dữ kiệu của biến như sau: Var a, b: integer; Shcn, Shv: real; g. Tràn số do kết quả tính toán vượt quá giới hạn: Lỗi do học sinh chưa chú ý đến phạm vi giá trị của kiểu dữ kiệu mà mình đặt cho biến. Ví dụ: (Bài này dành cho học sinh giỏi) Function GT(n:integer):integer; Var i,t:integer; Begin t:=1; For i:=2 to n do t:=t*i; GT:=t; End; Begin Write(‘GT(8)=’, GT(8)); Readln; End. Khi thực hiện chương trình GT(8)= -25126 là sai vì thực tế 8!=40320 Lỗi này do khai báo hàm trả về số nguyên nên miền giá trị tối đa là 32767 Phương án khắc phục: Giáo viên hướng dẫn học sinh chú ý đến phạm vi giá trị của kiểu dữ liệu được đặt cho biến đếm. Với ví dụ trên, giáo viên hướng dẫn học sinh đổi kiểu dữ kiệu của biến GT và t từ kiểu integer thành kiểu longint Function GT(n:integer):longint; Var i:integer; t: longint; Begin t:=1; For i:=2 to n do t:=t*i; GT:=t; End; Begin Write(‘GT(8)=’, GT(8)); Readln; End. Như vậy, khi chạy chương trình sẽ cho kết quả đúng là 8!=40320 h. Khai báo sai (không tương thích) kiểu dữ liệu: Lỗi do học sinh chưa chú ý đến sự tương thích của kiểu dữ liệu mà mình đặt cho biến trong chương trình. Ví dụ: Chương trình tính chu vi và diện tích hình chữ nhật; uses crt; var a,b:real; s,cv:integer; Begin clrscr; 6 T:=1; For j:=1 to k do T:=T*x; S:=S+i*T; End; 2.1.1.3. Một số bảng lỗi thường gặp: Một số bảng lỗi sau sẽ giúp học sinh kiểm tra lỗi mình thường gặp phải để có hướng khắc phục phù hợp. MỘT SỐ LỖI THƯỜNG GẶP (LỖI BIÊN DỊCH) MÃ LỖI THÔNG BÁO LỖI Ý NGHĨA 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 8 String constant exceeds line Hằng xâu vượt quá một dòng 26 Type mismatch Sai kiểu (kiểu không thích hợ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 63 Invalid file type Kiểu tệp không hợp lệ 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 “..” 96 Too many variables Quá nhiều biến MỘT SỐ LỖI THƯỜNG GẶP (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 8 - Đưa ra chương trình và cho học sinh phát hiện input và output của chương trình. c. Lỗi chưa xác định được điều kiện để thực hiện yêu cầu: Lỗi này phát sinh do học sinh chưa nhìn nhận được điều kiện để giải quyết vấn đề đưa ra. Phương án khắc phục: - Phân chia một bài toán thành nhiều bài toán nhỏ. - Thảo luận nhóm và kiểm tra chéo các nhóm để nêu nhận xét về phương án của các nhóm. - Đưa ra các bài tập dạng trắc nghiệm, điền vào chỗ trống hay nối các ý đê được một câu hoàn chỉnh. 2.1.2.2. Ví dụ: nêu thuật toán tìm giá trị lớn nhất của một dãy số nguyên. Học sinh thực hiện thuật toán sau: Bước 1. Nhập N và dãy a[1],, a[N]; Bước 2. Max := a[1]; i := 2; Bước 3. Bước 3.1. Nếu a[i] > Max thì Max := a[i]; Bước 3.2. i := i + 1; Lỗi học sinh thường gặp: chưa xác định được điều kiện dừng trong thuật toán. Hướng khắc phục: cho học sinh xác định thao tác tìm giá trị lớn nhất trong một dãy số nguyên sẽ dừng lại khi nào. Từ đó rút ra kết luận về điều kiện dừng của thuật toán. Điều kiện dừng là: i>n. Thuật toán chỉnh sửa: Bước 1. Nhập N và dãy a[1],, a[N]; Bước 2. Max := a1, i := 2; Bước 3. Nếu i > N thì đi đến Bước 5, ngược lại đi đến Bước 4; Bước 4. Bước 4.1. Nếu a[i] > Max thì Max := a[i]; Bước 4.2. i := i + 1 rồi quay lại bước 3; Bước 5. In ra giá trị Max và kết thúc. 2.1.3. Chưa có thói quen xác định và sửa lỗi trong chương trình: 2.1.3.1. Một số vấn đề khi chưa có thói quen xác định và sửa lỗi trong chương trình: - Theo khái niệm thuật toán trong sách giáo khoa Tin học quyển 3, thuật toán là một dãy hữu hạn các thao tác cần thực hiện để giải một bài toán. Nói cách khác, trình bày thuật toán tức là chỉ ra các bước cần thực hiện để đi đến kết quả. - Việc trình bày thuật toán trước khi viết chương trình là hết sức quan trọng. Thuật toán đúng thì chương trình mới có khả năng đúng, còn một thuật toán sai chắc chắn là cho một chương trình sai. Tuy nhiên đối với phần lớn học sinh lớp 8 thường bỏ qua bước này do tâm lý học sinh không thích các loại bài tập như thế. - Trong nhiều trường hợp tưởng như không cần thuật toán cụ thể học sinh vẫn viết được chương trình. Thực tế thuật toán đó không được viết ra nhưng đã hình thành sẵn trong đầu người viết. Điểm này cũng giống như một người viết tập làm văn là lập dàn ý xong rồi viết bài văn hoàn chỉnh từ dàn bài đã lập. 10 - Trình bày cho học sinh một số lỗi thường gặp phải như: khai báo sai kiểu dữ liệu, trong điều kiện là phép so sánh không phải là phép gán, - Cho học sinh thực hiện sửa lỗi chương trình theo hình thức cá nhân và theo nhóm. Ví dụ: Gặp lỗi trong chương trình, giáo viên cần chấn chỉnh thói quen thụ động của học sinh và chỉ cho học sinh tập sửa lỗi. Cho học sinh học bảng lỗi sai cơ bản trong Pascal để học sinh dần thích nghi hơn với lỗi sai trong chương trình và tự chỉnh sửa lỗi trong chương trình. Với lỗi như ví dụ trên, giáo viên chỉ cần hướng dẫn cho học sinh đọc lỗi là gì (Thiếu dấu chấm (.) để kết thúc chương trình), khi học sinh đã biết được lỗi thì hướng cho học sinh sữa lỗi (thêm dấu chấm vào sau End để kết thúc chương trình). b. Thói quen ỷ lại và dựa dẫm vào người khác: Đây là một vấn đề đang xảy ra phổ biến trong các em học sinh. Khi gặp một vấn đề nào đó, các em không có tính chủ động để giải quyết mà thường chỉ chờ hướng dẫn từ thầy cô hoặc bạn bè. Phương án khắc phục: - Cần có những nội dung để các em nhìn nhận và khắc phục vấn đề này. - Tập cho các em tác phong tự giác, không phụ thuộc vào người khác. - Tham gia các phong trào tập thể, nêu ý kiến và thực hiện theo phương án cá nhân. Phát hiện những vấn đề đúng cũng như sai nhằm mục đích phát triển khả năng tư duy của học sinh. Từ đó, sẽ tự giải quyết vấn đề gặp phải. 2.1.3.2. Ví dụ: Chưa nắm được điều kiện trong câu lệnh if ... then ... else là phép so sánh và cú pháp của câu lệnh if ... then ... else Bài tập: Kiểm tra “n” có phải là số nguyên tố hay không? Học sinh lập trình bài toán trên như sau: Write(‘nhap n: ’);readln(n); Dem:=0; For i:=1 to n do If n mod i =0 then dem:=dem+1; If dem:=2 then write(n,‘ la so nguyen to’) else; write(n,‘ khong phai la so nguyen to’); Lỗi học sinh thường gặp: trong điều kiện của câu lệnh if..then..else là phép gán, sau else có dấu; (phần in đậm). Hơn nữa khi viết chương trình gặp lỗi, học sinh thường có xu hướng hạn chế chịu tìm tòi phát hiện vấn đề và không có tính chủ động để giải quyết mà thường chỉ chờ hướng dẫn từ thầy cô hoặc bạn bè. Hướng khắc phục: Trong trường hợp này cần cho học sinh nêu lại cú pháp của câu lệnh if ... then ... else. Xác định được các thành phần trong câu lệnh if ... then ... else có tính chất gì. Từ đó sẽ cho học sinh nhận xét lại bài làm và khắc phục. Đồng thời giáo viên động viên học sinh cố gắng tìm tòi, phát hiện chỗ sai và tự tìm cách khắc phục, không ỷ lại, chờ thầy cô hoặc bạn học giỏi hơn hướng dẫn. Đoạn chương trình chỉnh sửa: Write(‘nhap n: ’);readln(n); Dem:=0; 12 Có rất nhiều nguyên nhân dẫn đến lỗi trong lúc học sinh học lập trình. Sau đây là một số nguyên nhân chính: Một là: Chưa nắm rõ nguyên tắc hoạt động của câu lệnh. Trong đó có một số lỗi cơ bản như: - Chưa nắm được sự thay đổi của biến đếm trong câu lệnh lặp với số lần biết trước. Từ đó, chưa vận dụng sự thay đổi của biến đếm để thực hiện thao tác tính toán. - Chưa nắm được quy trình hoạt động của điều kiện. Từ đó, chưa xác định được điều kiện phù hợp để chương trình hoạt động đúng yêu cầu. - Chưa nắm được cú pháp câu lệnh, chưa xác định được các thành phần trong câu lệnh, đặt sai vị trí của dấu chấm phẩy trong câu lệnh, đặt tên biến sai quy tắc. Từ đó, viết chương trình gây ra rất nhiều lỗi cơ bản về cú pháp và nguyên tắc hoạt động của các câu lệnh trong chương trình. Hai là: Xác định thuật toán chưa phù hợp. - Trong quá trình học sinh xây dựng thuật toán, các bước trong thuật toán không liên kết với nhau xảy ra tình trạng thuật toán không hoàn chỉnh và chương trình thực hiện không đúng theo yêu cầu. - Học sinh chưa xác định được cụ thể yêu cầu của bài toán, dẫn đến không xác định được dữ liệu đầu vào và đầu ra. - Chưa nhìn nhận được điều kiện để giải quyết vấn đề đưa ra. Ba là: Chưa có thói quen xác định lỗi trong chương trình. - Khi chương trình bị lỗi, thì học sinh thường hạn chế chịu tìm tòi phát hiện vấn đề. Đây là một vấn đề đang xảy ra phổ biến trong các em học sinh. Khi gặp một vấn đề nào đó, các em không có tính chủ động để giải quyết mà thường chỉ chờ hướng dẫn từ thầy cô hoặc bạn bè. Những lỗi mà học sinh mắc phải qua các năm học mà bản thân đã hướng dẫn, tôi nhận thấy đa phần các em điều mắc các lỗi tương tự nhau từ đó chất lượng học sinh khá, giỏi chưa đạt hiệu quả đề ra. Từ đây tôi quyết định thực hiện đề tài này nhằm cải thiện kết quả học tập của các em và giúp các em khắc phục các lỗi cơ bản khi lập trình với ngôn ngữ Pascal. 2.3. Nội dung đã cải tiến, sáng tạo để khắc phục những nhược điểm hiện tại: Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phương pháp dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong hoạt động học tập. Như vậy, chúng ta có thể thấy định hướng đổi mới phương pháp dạy học đã được khẳng định, không còn là vấn đề tranh luận. Cốt lõi của việc đổi mới phương pháp dạy học là giúp học sinh hướng tới việc học tập chủ động. Với một số nội dung trong đề tài này, tôi áp dụng các phương pháp dạy học như truy vấn, thảo luận nhóm, học sinh kiểm tra chéo lẫn nhauvới mục đích tạo nên tính chủ động, đẩy mạnh tinh thần thi đua học tập của học sinh. Hạn chế được tính thụ động, ỷ lại. Nêu cao được tinh thần hợp tác, hỗ trợ lẫn nhau trong tập thể. Thông qua tổ chức học nhóm, giáo viên yêu cầu học sinh tìm ra nguyên nhân của lỗi. Từ đó gợi ý cho học sinh vận dụng kiến thức để giải quyết những vấn đề gặp phải. Cụ thể: 14 - Về dạy học đại trà, các em dần tự tin và hứng thú hơn với lập trình. Đa số học sinh hiểu và nhận biết ứng dụng lập trình trong cuộc sống. - Khi thực hiện thực nghiệm qua các đối tượng học sinh đã nêu trên, đa số các em tránh được các lỗi thường gặp khi học lập trình Pascal. - Một số không ít học sinh có tiến bộ rõ rệt khi viết các chương trình có sử dụng lập trình có cấu trúc. - Nâng cao việc yêu thích học tin học đối với một bộ phận học sinh và một số em có định hướng nghề nghiệp sau này. Bảng số liệu kết quả đạt được của học sinh lớp 8 cuối học kì I năm học 2022- 2023 sau khi thực hiện đề tài: Trên trung bình Dưới trung bình STT Lớp Sỉ số SL TL SL TL 1 8/1 37 26 70,3% 11 29,7% 2 8/2 36 24 66,7% 12 33,3% 3 8/3 36 24 66,7% 12 33,3% 4 8/4 36 25 69,4% 11 30,6% 2.5.2. Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng sáng kiến theo ý kiến của tổ chức, cá nhân đã tham gia áp dụng sáng kiến lần đầu, kể cả áp dụng thử (nếu có): Nhà trường và nhóm chuyên môn đánh giá đây là sáng kiến có tính thực tế. Ứng dụng phù hợp cho công tác giảng dạy, hỗ trợ đắc lực cho sự phát triển của học sinh. Trong nội dung của đề tài này, với mong muốn giúp cho việc dạy và học ngôn ngữ lập trình nói chung và Pascal được tốt hơn. + Đa số học sinh dần khắc phục được những lỗi sai và nắm vững kiến thức hơn. + Học sinh hứng thú, say mê hơn khi học, có khả năng hoạt động nhóm tốt. + Học sinh phát huy tính độc lập suy nghĩ, rèn luyện tư duy sáng tạo cho học sinh. + Học sinh được rèn luyện kỹ năng quan sát, phân tích, thực hành, liên hệ thực tế tốt hơn. Qua các nội dung được trình bày, tôi mong nhận được nhiều ý kiến đóng góp từ các thầy cô và đồng nghiệp để càng hoàn thiện hơn. Trên đây là nội dung sáng kiến của bản thân tôi đã triển khai và áp dụng tại trường trong thời gian vừa qua. Kính đề nghị Hội đồng khoa học các cấp xem xét. 3. Những thông tin cần được bảo mật (nếu có): Không 4. Các điều kiện cần thiết để áp dụng sáng kiến: - Đối với nhà trường: có phòng máy hoạt động tốt, kết nối mạng nội bộ, máy chiếu hoặc tivi, - Đối với giáo viên: nắm vững kiến thức, máy tính cá nhân để giảng dạy, phối hợp tốt các phương pháp một cách linh hoạt. - Đối với học sinh: nẵm vững kiến thức, có kĩ năng sử dụng máy tính cơ bản và kĩ năng sử dụng môi trường lập trình FreePascal, tự tin, năng động, sáng tạo. 16 TÀI LIỆU THAM KHẢO 1) Tin học quyển 3 – Bộ Giáo dục và Đào tạo 2) Hướng dẫn Tin học 8 – Bộ Giáo dục và Đào tạo (sách thử nghiệm) 3) Lập trình Pascal – Bùi Việt Hà 4) 100 Bài tập Turbo Pascal lớp 8 – Từ Internet.
File đính kèm:
sang_kien_kinh_nghiem_mot_so_loi_sai_cua_hoc_sinh_khi_hoc_la.docx