PHÁT HIỆN, SỬA MỘT SỐ LỖI THƯỜNG GẶP CỦA HỌC SINH ĐỘI TUYỂN TIN HỌC KHI DẠY LẬP TRÌNH PASCAL ĐIỂM CAO

19 2 0
PHÁT HIỆN, SỬA MỘT SỐ LỖI THƯỜNG GẶP CỦA HỌC SINH ĐỘI TUYỂN TIN HỌC KHI DẠY LẬP TRÌNH PASCAL ĐIỂM CAO

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Luận văn, báo cáo, luận án, đồ án, tiểu luận, đề tài khoa học, đề tài nghiên cứu, đề tài báo cáo - Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công nghệ thông tin PHÒNG GIÁO DỤC VÀ ĐÀO TẠO HUYỆN HIỆP HÒA TRƯỜNG THCS ĐỨC THẮNG --------------------------------- SÁNG KIẾN KINH NGHIỆM “PHÁT HIỆN, SỬA MỘT SỐ LỖI THƯỜNG GẶP CỦA HỌC SINH ĐỘI TUYỂN TIN HỌC KHI DẠY LẬP TRÌNH PASCAL” Lĩnh vực áp dụng: Giáo dục và đào tạo Họ tên GV: Bùi Đức Thịnh Chức vụ: Tổ trưởng chuyên môn Đơn vị công tác: Trường THCS Đức thắng Hiệp Hoà – Bắc Giang. Hiệp Hòa, tháng 4 năm 2023 1 MỤC LỤC PHẦN I. MỞ ĐẦU...................................................................................... 2 I. LÍ DO VIẾT SÁNG KIẾN ...................................................................... 3 II. MỤC ĐÍCH NGHIÊN CỨU .................................................................. 3 III. ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU............................................ 3 1. Đối tượng................................................................................................. 3 2. Phạm vi. ................................................................................................... 4 IV. NHIỆM VỤ NGHIÊN CỨU ................................................................. 4 V. PHƯƠNG PHÁP NGHIÊN CỨU .......................................................... 4 VI. NHỮNG ĐÓNG GÓP MỚI CỦA SÁNG KIẾN.................................. 4 PHẦN II. NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU ............................. 5 I. CƠ SỞ LÍ LUẬN VÀ THỰC TIỄN ........................................................ 5 1. CƠ SỞ LÍ LUẬN .................................................................................... 5 2. CƠ SỞ THỰC TIỄN ............................................................................... 6 II. THỰC TRẠNG CỦA SÁNG KIẾN ...................................................... 6 III. CÁC GIẢI PHÁP THỰC HIỆN ........................................................... 6 Giải pháp 1: ................................................................................................. 6 Giải pháp 2: ................................................................................................. 8 Giải pháp 3: ................................................................................................. 9 Giải pháp 4: ................................................................................................. 10 Giải pháp 5: ................................................................................................. 11 Giải pháp 6: ................................................................................................. 13 Giải pháp 7: ................................................................................................. 14 Giải pháp 8: ................................................................................................. 15 IV. HIỆU QUẢ CỦA SÁNG KIẾN KINH NGHIỆM ............................... 16 PHẦN III. KẾT LUẬN, KIẾN NGHỊ ........................................................ 17 I. KẾT LUẬN .............................................................................................. 17 II. KIẾN NGHỊ ............................................................................................ 18 2 PHẦN I. MỞ ĐẦU I. LÝ DO VIẾT SÁNG KIẾN.` Chuyển đổi số là xu hướng phát triển tất yếu, mở ra nhiều cơ hội, tác động mạnh mẽ đến mọi mặt của đời sống kinh tế, xã hội, song cũng đặt ra không ít thách thức đối với các cấp, các ngành, địa phương. Những năm qua, tỉnh Bắc Giang đã có sự quan tâm đẩy mạnh ứng dụng công nghệ thông tin (CNTT), xây dựng chính quyền điện tử. Ban Thường vụ Tỉnh ủy đã ban hành Nghị quyết số 433-NQTƯ ngày 0452019 về phát triển CNTT trên địa bàn tỉnh giai đoạn 2019- 2025 trên ba trụ cột là phát triển kết cấu hạ tầng CNTT, xây dựng các hệ thống phần mềm CNTT đồng bộ và nâng cao chất lượng nguồn nhân lực CNTT. - Trong 9 lĩnh vực nghi quyết ưu tiên thực hiện thì lĩnh vực giáo dục là một trong những ưu tiên hàng đầu để xây dựng các hệ thống phần mềm CNTT đồng bộ và nâng cao chất lượng nguồn nhân lực CNTT. Cụ thể là phát triển nền tảng hỗ trợ dạy và học từ xa, ứng dụng triệt để công nghệ số trong công tác quản lý, giảng dạy và học tập; số hóa tài liệu, giáo trình; xây dựng nền tảng chia sẻ tài nguyên giảng dạy và học tập theo cả hình thức trực tiếp và trực tuyến; phát triển công nghệ phục vụ giáo dục, hướng tới đào tạo cá thể hóa; ứng dụng công nghệ số để giao bài tập về nhà và kiểm tra sự chuẩn bị của học sinh trước khi đến lớp học. (Trích nghị quyết số 111NQ-TƯ ngày 11062021 của Ban Chấp Hành Đảng Bộ Tỉnh về chuyển đổi số tỉnh Bắc Giang giai đoạn 2021-2025, định hướng đến 2030) Trên tinh thần đó hàng năm Phòng GD ĐT Hiệp Hòa tổ chức hội thi Olympic Tin học cho học sinh THCS. Các em dự thi sẽ phải tham gia thi hai vòng: Vòng thứ nhất: Thi trắc nghiệm (thời gian 30 phút) – Kiến thức chung về máy tính, tin học văn phòng, internet và lập trình Pascal. Với những kiến thức này thì các em đã được tiếp thu trên lớp qua các bài học. Đồng thời các em cũng có thể thu thập thêm những kiến thức đó qua sách báo, qua các phương tiện thông tin, qua truy cập Internet. Vì đó chỉ là những kiến thức thông qua: Đọc, nghe và quan 3 sát… là các em có thể hiểu và ghi nhớ được. Do vậy, ở vòng thi này đa số các em làm được và đạt điểm khá cao. Còn vòng thi thứ hai: Thi lập trình (thời gian 90 phút) – Viết chương trình bằng ngôn ngữ Pascal (Free Pascal). Với phần thi này các em phải lập trình dể giải các bài toán bằng ngôn ngữ Pascal. Trong khi đó, những kiến thức để các em có thể dự thi phần này lại được học theo chương trình môn tự chọn cho học sinh khối 8. Vậy để học sinh có thể tự tin khi thi phần thực hành là một giáo viên Tin học tôi phải suy nghĩ và trăn trở rất nhiều là làm thế nào cho các em phải nắm chắc cú pháp các câu lệnh, phát huy được tính tích cực, chủ động, tự lực, sáng tạo của học sinh; rèn được kỹ năng thực hành thành thạo, biết vận dụng kiến thức, kỹ năng giải quyết các bài toán thực tiễn và nhất là nâng cao được chất lượng học sinh giỏi tin học cấp Huyện. Với những lý do trên khiến tôi quyết định chọn giải pháp: “Phát hiện, sửa một số lỗi thường gặp của học sinh đội tuyển tin học khi dạy lập trình Pascal”. II. MỤC ĐÍCH NGHIÊN CỨU. Với nhiều năm bồi dưỡng đội tuyển học sinh giỏi tin học, tôi nhận thấy rằng trong vòng thi thực hành của hội thi Olympic tin học THCS dạng đề thi có sử dụng ngôn ngữ lập trình Pascal để giải các bài toán là không thể thiếu. Đây là một dạng bài khó. Gặp dạng toán này, phần lớn học sinh rất lúng túng và mất nhiều thời gian để cố nhớ xem bài này đã được thầy, cô giáo làm như thế nào, học sinh rất khó hình dung ra cách giải (thuật toán) cũng như cách trình bày đúng. Với phần lập trình viết trên ngôn ngữ lập trình Pascal chỉ cần sơ xuất nhỏ như: thiếu dấu phẩy, dấu chấm, dấu mở ngoặc hoặc dấu chấm phẩy… chứ chưa nói đến thuật toán có đúng hay không thì cũng sinh ra lỗi và máy không chạy được. Như vậy, với vòng thi lý thuyết các em đạt điểm cao nhưng vòng thi thực hành để đạt được điểm cao là rất khó. Mục tiêu đặt ra là: “Phát hiện, sửa một số lỗi thường gặp của học sinh đội tuyển tin học khi dạy lập trình Pascal”. III. ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU 1. Đối tượng - Một số lỗi trong bài toán lập trình pascal của học sinh đội tuyển tin học. 4 2. Phạm vi. - Sáng kiến được nghiên cứu ở các đội tuyển tin học của nhà trường và đội tuyển tin học trẻ của huyện năm học 2022-2023. IV. NHIỆM VỤ NGHIÊN CỨU. Nhằm giúp học sinh tìm ra được lỗi sai thường gặp khi viết chương trình trên ngôn ngữ lập trình pascal và biết sửa các lỗi này, nâng cao thêm về mặt kiến thức, kỹ năng thực hành, vận dụng giải quyết được các bài toán hướng đến đạt kết quả cao nhất trong các kỳ thi Olympic Tin học. Nâng cao chất lượng và hiệu quả đối với công tác bồi dưỡng học sinh giỏi tin học cấp huyện và cấp tỉnh. V. PHƯƠNG PHÁP NGHIÊN CỨU. - Phương pháp thực hành VI. NHỮNG ĐÓNG GÓP MỚI CỦA SÁNG KIẾN. “Phát hiện, sửa một số lỗi thường gặp của học sinh đội tuyển tin học khi dạy lập trình Pascal”. PHẦN II. NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU. I. CƠ SỞ LÍ LUẬN VÀ THỰC TIỄN. 1. CƠ SỞ LÍ LUẬN. Phương pháp được hiểu là con đường, là cách thức để đạt những mục tiêu nhất định. Phương pháp dạy học là cách thức hoạt động và giao lưu của thầy gây nên những hoạt động và giao lưu cần thiết của trò nhằm đạt được mục tiêu dạy học. Phương pháp nâng cao chất lượng là cách thức tiến hành các hoạt động dạy học để nâng cao quá trình tiếp thu bài của học sinh. 2. CƠ SỞ THỰC TIỄN. - Lập trình Pascal là nội dung khó, tư duy trừu tượng để học sinh học tập 5 tốt cần người giáo viên phải có những phương pháp dạy học tích cực, đổi mới phù hợp với đối tượng học sinh, điều kiện, phương tiện, thiết bị dạy và học của nhà trường, giáo viên và học sinh. II. THỰC TRẠNG CỦA SÁNG KIẾN. 1. Ưu Điểm. - Về phía nhà trường: Cán bộ quản lý nhà trường quan tâm, tạo điều kiện thuận lợi cho giáo viên và học sinh về cơ sở vật chất – thiết bị dạy học, chỉ đạo chuyên môn sát sao, kịp thời triển khai các văn bản chỉ đạo, hướng dẫn về công tác bồi dưỡng học sinh giỏi (BDHSG) cấp huyện. Luôn quan tâm, giúp đỡ, động viên khuyến khích giáo viên thực hiện các giải pháp đổi mới nâng cao chất lượng BDHSG. - Về cơ sở vật chất: Có các thiết bị tương đối đảm bảo cho dạy bồi dưỡng các đội tuyển tin học (Máy chiếu, Smart TV, máy tính có kết nối internet…). Nhà trường có 2 phòng máy tính phục vụ cho dạy và học tin học. - Về học sinh đối với đối tượng học sinh khá giỏi, đa phần các em rất hào hứng với việc lập trình, cụ thể là ngôn ngữ lập trình Pascal. Với những đề thi đã được học và luyện nhiều lần các em làm bài rất tốt và nhanh. Những bài các em đã học thuộc thì bài làm đúng như đáp án đến từng dấu, chấm dấu phẩy. Nhất là các em đội tuyển tin 6 được thầy cho học thuộc các hàm như hàm kiểm tra số nguyên tố, hàm đếm số các số, hàm tính tổng các chữ số của một số…. để giải quyết một số bài toán, do được học thuộc nhiều dạng bài và đề thi cũng tương tự nên qua một số kì thi học sinh các đội tuyển đạt được kết quả khá cao. 2. Hạn chế và nguyên nhân hạn chế. 2.1. Giáo viên - Biện pháp cũ thường làm là cho học sinh học thuộc các bài mà thầy cô đã dạy và luyện lại các đề thi nhiều lần. - Bản thân giáo viên còn chưa nhận thức được môn học lập trình Pascal đòi hỏi người thầy phải hướng học sinh đến tư duy, sáng tạo và đặc biệt là khả năng tự học tự nghiên cứu. Chưa hướng dẫn học sinh vẫn dụng kiến thức đã học giải quyết những bài toán phát triển từ bài toán đã có, đồng thời phát hiện và sửa các lỗi của chương trình. 2.2. Học sinh 6 - Chú trọng học thuộc các bài thầy cô đã dạy từ dấu chấm, dấu phẩy nên không biết dịch và sửa lỗi. Khi đi thi các em mất nhiều thời gian để nhớ lại xem những bài nào đã được học thuộc. - Khả năng tư duy, sáng tạo bị hạn chế do cách học thụ động dẫn dến sai thuật toán. - Với học sinh đội tuyển tin, nội dung học lập trình Pascal là một nội dung lạ với nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu mà học sinh tiếp xúc lần đầu. Chính vì vậy mà học sinh dễ mắc sai lầm khi lập trình giải quyết các bài toán. Nguyên nhân dẫn đến những khó khăn mà học sinh thường gặp là rất phong phú nhưng có thể thấy một số nguyên nhân chính sau đây: + Học sinh 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. + Thụ động, chỉ học thuộc các bài giải sẵn. + Không nhận biết được lỗi xảy ra hoặc không biết cách sửa lỗi. => Yêu cầu đặt ra: Tìm ra một số lỗi phổ biến các em thường mắc phải và cách sửa các lỗi này. III. CÁC GIẢI PHÁP THỰC HIỆN Dựa trên nhưng thuận lợi có được, tôi đã xây dựng và thực hiện các giải pháp để hướng tới giải quyết mục tiêu đã đặt ra ban đầu: Hướng dẫn học sinh đội tuyển tin học phát hiện và sửa “Một số lỗi sai thường gặp trong lập trình Pascal”. 1. Biện pháp 1: Chưa hiểu thứ tự ưu tiên phép toán. Trong một biểu thức pascal, thứ tự ưu tiên của các phép toán được liệt kê theo thứ tự sau: Lời gọi hàm. Dấu ngoặc () Phép toán một ngôi (NOT, -). Phép toán , , DIV, MOD, AND. Phép toán +, -, OR, XOR Phép toán so sánh =, , =, , IN Ví dụ 1: Viết chương trình nhập vào một số nguyên dương n từ bàn phím sao cho 4 < n ≤1000000, tính tổng S và in kết quả ra màn hình (lấy đến 3 chữ số phần thập phân). 7( ) ( )( ) 11.2 2.3 3.4 ... 3.4 4.5 5.6 2 3 N N S N N + = + + + + + + Ví dụ: Input Output N = 6 S = 2.462 - Khi chạy chương trình của học sinh không báo lỗi sai mà cho ra kết quả của bài toán sai. Các em mắc lỗi sai khi chuyển từ biểu thức toán học sang biểu thức Pascal không thực hiện đúng thứ tự ưu tiên các phép toán trong pascal ở phép chia của tử số cho mẫu số (tử số chỉ chia cho (i+2), không chia cho (i+3)), do chủ quan từ việc máy đã tính ra kết quả và học sinh không kiểm tra lại bằng máy tính cầm tay. Để sửa lỗi sai này, giáo viên yêu cầu các em thực hiện đúng thứ tự ưu tiên các phép toán trong pascal, sau đó dùng máy tính cầm tay để tính kết quả trên giấy bút đối chiếu với kết quả của chương trình từ đó sửa lại thứ tự thực hiện các phép toán trong pascal cho đúng. Chương trình lỗi Chương trình đúng Program bai1; Uses crt; Var N,i:word; S:real; Begin Clrscr; Repeat Write(‘Nhap n=’); readln(n); Until (n>4) and (n4) and (n0, và b, c là các số nguyên dương). Hãy viết chương trình (với b, c được nhập từ bàn phím) để kiểm tra xem tuổi cha có gấp đôi tuổi con hay không? Nếu đúng thì đưa ra màn hình thông báo “hiện nay ...

PHÒNG GIÁO DỤC VÀ ĐÀO TẠO HUYỆN HIỆP HÒA TRƯỜNG THCS ĐỨC THẮNG *** - SÁNG KIẾN KINH NGHIỆM “PHÁT HIỆN, SỬA MỘT SỐ LỖI THƯỜNG GẶP CỦA HỌC SINH ĐỘI TUYỂN TIN HỌC KHI DẠY LẬP TRÌNH PASCAL” Lĩnh vực áp dụng: Giáo dục và đào tạo Họ tên GV: Bùi Đức Thịnh Chức vụ: Tổ trưởng chuyên môn Đơn vị công tác: Trường THCS Đức thắng Hiệp Hoà – Bắc Giang Hiệp Hòa, tháng 4 năm 2023 MỤC LỤC PHẦN I MỞ ĐẦU 2 I LÍ DO VIẾT SÁNG KIẾN 3 II MỤC ĐÍCH NGHIÊN CỨU 3 III ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU 3 1 Đối tượng 3 2 Phạm vi 4 IV NHIỆM VỤ NGHIÊN CỨU 4 V PHƯƠNG PHÁP NGHIÊN CỨU 4 VI NHỮNG ĐÓNG GÓP MỚI CỦA SÁNG KIẾN 4 PHẦN II NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 5 I CƠ SỞ LÍ LUẬN VÀ THỰC TIỄN 5 1 CƠ SỞ LÍ LUẬN 5 2 CƠ SỞ THỰC TIỄN 6 II THỰC TRẠNG CỦA SÁNG KIẾN 6 III CÁC GIẢI PHÁP THỰC HIỆN 6 Giải pháp 1: 6 Giải pháp 2: 8 Giải pháp 3: 9 Giải pháp 4: 10 Giải pháp 5: 11 Giải pháp 6: 13 Giải pháp 7: 14 Giải pháp 8: 15 IV HIỆU QUẢ CỦA SÁNG KIẾN KINH NGHIỆM 16 PHẦN III KẾT LUẬN, KIẾN NGHỊ 17 I KẾT LUẬN 17 II KIẾN NGHỊ 18 1 PHẦN I MỞ ĐẦU I LÝ DO VIẾT SÁNG KIẾN.` Chuyển đổi số là xu hướng phát triển tất yếu, mở ra nhiều cơ hội, tác động mạnh mẽ đến mọi mặt của đời sống kinh tế, xã hội, song cũng đặt ra không ít thách thức đối với các cấp, các ngành, địa phương Những năm qua, tỉnh Bắc Giang đã có sự quan tâm đẩy mạnh ứng dụng công nghệ thông tin (CNTT), xây dựng chính quyền điện tử Ban Thường vụ Tỉnh ủy đã ban hành Nghị quyết số 433-NQ/TƯ ngày 04/5/2019 về phát triển CNTT trên địa bàn tỉnh giai đoạn 2019- 2025 trên ba trụ cột là phát triển kết cấu hạ tầng CNTT, xây dựng các hệ thống phần mềm CNTT đồng bộ và nâng cao chất lượng nguồn nhân lực CNTT - Trong 9 lĩnh vực nghi quyết ưu tiên thực hiện thì lĩnh vực giáo dục là một trong những ưu tiên hàng đầu để xây dựng các hệ thống phần mềm CNTT đồng bộ và nâng cao chất lượng nguồn nhân lực CNTT Cụ thể là phát triển nền tảng hỗ trợ dạy và học từ xa, ứng dụng triệt để công nghệ số trong công tác quản lý, giảng dạy và học tập; số hóa tài liệu, giáo trình; xây dựng nền tảng chia sẻ tài nguyên giảng dạy và học tập theo cả hình thức trực tiếp và trực tuyến; phát triển công nghệ phục vụ giáo dục, hướng tới đào tạo cá thể hóa; ứng dụng công nghệ số để giao bài tập về nhà và kiểm tra sự chuẩn bị của học sinh trước khi đến lớp học (Trích nghị quyết số 111/NQ-TƯ ngày 11/06/2021 của Ban Chấp Hành Đảng Bộ Tỉnh về chuyển đổi số tỉnh Bắc Giang giai đoạn 2021-2025, định hướng đến 2030) Trên tinh thần đó hàng năm Phòng GD & ĐT Hiệp Hòa tổ chức hội thi Olympic Tin học cho học sinh THCS Các em dự thi sẽ phải tham gia thi hai vòng: Vòng thứ nhất: Thi trắc nghiệm (thời gian 30 phút) – Kiến thức chung về máy tính, tin học văn phòng, internet và lập trình Pascal Với những kiến thức này thì các em đã được tiếp thu trên lớp qua các bài học Đồng thời các em cũng có thể thu thập thêm những kiến thức đó qua sách báo, qua các phương tiện thông tin, qua truy cập Internet Vì đó chỉ là những kiến thức thông qua: Đọc, nghe và quan 2 sát… là các em có thể hiểu và ghi nhớ được Do vậy, ở vòng thi này đa số các em làm được và đạt điểm khá cao Còn vòng thi thứ hai: Thi lập trình (thời gian 90 phút) – Viết chương trình bằng ngôn ngữ Pascal (Free Pascal) Với phần thi này các em phải lập trình dể giải các bài toán bằng ngôn ngữ Pascal Trong khi đó, những kiến thức để các em có thể dự thi phần này lại được học theo chương trình môn tự chọn cho học sinh khối 8 Vậy để học sinh có thể tự tin khi thi phần thực hành là một giáo viên Tin học tôi phải suy nghĩ và trăn trở rất nhiều là làm thế nào cho các em phải nắm chắc cú pháp các câu lệnh, phát huy được tính tích cực, chủ động, tự lực, sáng tạo của học sinh; rèn được kỹ năng thực hành thành thạo, biết vận dụng kiến thức, kỹ năng giải quyết các bài toán thực tiễn và nhất là nâng cao được chất lượng học sinh giỏi tin học cấp Huyện Với những lý do trên khiến tôi quyết định chọn giải pháp: “Phát hiện, sửa một số lỗi thường gặp của học sinh đội tuyển tin học khi dạy lập trình Pascal” II MỤC ĐÍCH NGHIÊN CỨU Với nhiều năm bồi dưỡng đội tuyển học sinh giỏi tin học, tôi nhận thấy rằng trong vòng thi thực hành của hội thi Olympic tin học THCS dạng đề thi có sử dụng ngôn ngữ lập trình Pascal để giải các bài toán là không thể thiếu Đây là một dạng bài khó Gặp dạng toán này, phần lớn học sinh rất lúng túng và mất nhiều thời gian để cố nhớ xem bài này đã được thầy, cô giáo làm như thế nào, học sinh rất khó hình dung ra cách giải (thuật toán) cũng như cách trình bày đúng Với phần lập trình viết trên ngôn ngữ lập trình Pascal chỉ cần sơ xuất nhỏ như: thiếu dấu phẩy, dấu chấm, dấu mở ngoặc hoặc dấu chấm phẩy… chứ chưa nói đến thuật toán có đúng hay không thì cũng sinh ra lỗi và máy không chạy được Như vậy, với vòng thi lý thuyết các em đạt điểm cao nhưng vòng thi thực hành để đạt được điểm cao là rất khó Mục tiêu đặt ra là: “Phát hiện, sửa một số lỗi thường gặp của học sinh đội tuyển tin học khi dạy lập trình Pascal” III ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU 1 Đối tượng - Một số lỗi trong bài toán lập trình pascal của học sinh đội tuyển tin học 3 2 Phạm vi - Sáng kiến được nghiên cứu ở các đội tuyển tin học của nhà trường và đội tuyển tin học trẻ của huyện năm học 2022-2023 IV NHIỆM VỤ NGHIÊN CỨU Nhằm giúp học sinh tìm ra được lỗi sai thường gặp khi viết chương trình trên ngôn ngữ lập trình pascal và biết sửa các lỗi này, nâng cao thêm về mặt kiến thức, kỹ năng thực hành, vận dụng giải quyết được các bài toán hướng đến đạt kết quả cao nhất trong các kỳ thi Olympic Tin học Nâng cao chất lượng và hiệu quả đối với công tác bồi dưỡng học sinh giỏi tin học cấp huyện và cấp tỉnh V PHƯƠNG PHÁP NGHIÊN CỨU - Phương pháp thực hành VI NHỮNG ĐÓNG GÓP MỚI CỦA SÁNG KIẾN “Phát hiện, sửa một số lỗi thường gặp của học sinh đội tuyển tin học khi dạy lập trình Pascal” PHẦN II NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU I CƠ SỞ LÍ LUẬN VÀ THỰC TIỄN 1 CƠ SỞ LÍ LUẬN Phương pháp được hiểu là con đường, là cách thức để đạt những mục tiêu nhất định Phương pháp dạy học là cách thức hoạt động và giao lưu của thầy gây nên những hoạt động và giao lưu cần thiết của trò nhằm đạt được mục tiêu dạy học Phương pháp nâng cao chất lượng là cách thức tiến hành các hoạt động dạy học để nâng cao quá trình tiếp thu bài của học sinh 2 CƠ SỞ THỰC TIỄN - Lập trình Pascal là nội dung khó, tư duy trừu tượng để học sinh học tập 4 tốt cần người giáo viên phải có những phương pháp dạy học tích cực, đổi mới phù hợp với đối tượng học sinh, điều kiện, phương tiện, thiết bị dạy và học của nhà trường, giáo viên và học sinh II THỰC TRẠNG CỦA SÁNG KIẾN 1 Ưu Điểm - Về phía nhà trường: Cán bộ quản lý nhà trường quan tâm, tạo điều kiện thuận lợi cho giáo viên và học sinh về cơ sở vật chất – thiết bị dạy học, chỉ đạo chuyên môn sát sao, kịp thời triển khai các văn bản chỉ đạo, hướng dẫn về công tác bồi dưỡng học sinh giỏi (BDHSG) cấp huyện Luôn quan tâm, giúp đỡ, động viên khuyến khích giáo viên thực hiện các giải pháp đổi mới nâng cao chất lượng BDHSG - Về cơ sở vật chất: Có các thiết bị tương đối đảm bảo cho dạy bồi dưỡng các đội tuyển tin học (Máy chiếu, Smart TV, máy tính có kết nối internet…) Nhà trường có 2 phòng máy tính phục vụ cho dạy và học tin học - Về học sinh đối với đối tượng học sinh khá giỏi, đa phần các em rất hào hứng với việc lập trình, cụ thể là ngôn ngữ lập trình Pascal Với những đề thi đã được học và luyện nhiều lần các em làm bài rất tốt và nhanh Những bài các em đã học thuộc thì bài làm đúng như đáp án đến từng dấu, chấm dấu phẩy Nhất là các em đội tuyển tin 6 được thầy cho học thuộc các hàm như hàm kiểm tra số nguyên tố, hàm đếm số các số, hàm tính tổng các chữ số của một số… để giải quyết một số bài toán, do được học thuộc nhiều dạng bài và đề thi cũng tương tự nên qua một số kì thi học sinh các đội tuyển đạt được kết quả khá cao 2 Hạn chế và nguyên nhân hạn chế 2.1 Giáo viên - Biện pháp cũ thường làm là cho học sinh học thuộc các bài mà thầy cô đã dạy và luyện lại các đề thi nhiều lần - Bản thân giáo viên còn chưa nhận thức được môn học lập trình Pascal đòi hỏi người thầy phải hướng học sinh đến tư duy, sáng tạo và đặc biệt là khả năng tự học tự nghiên cứu Chưa hướng dẫn học sinh vẫn dụng kiến thức đã học giải quyết những bài toán phát triển từ bài toán đã có, đồng thời phát hiện và sửa các lỗi của chương trình 2.2 Học sinh 5 - Chú trọng học thuộc các bài thầy cô đã dạy từ dấu chấm, dấu phẩy nên không biết dịch và sửa lỗi Khi đi thi các em mất nhiều thời gian để nhớ lại xem những bài nào đã được học thuộc - Khả năng tư duy, sáng tạo bị hạn chế do cách học thụ động dẫn dến sai thuật toán - Với học sinh đội tuyển tin, nội dung học lập trình Pascal là một nội dung lạ với nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu mà học sinh tiếp xúc lần đầu Chính vì vậy mà học sinh dễ mắc sai lầm khi lập trình giải quyết các bài toán Nguyên nhân dẫn đến những khó khăn mà học sinh thường gặp là rất phong phú nhưng có thể thấy một số nguyên nhân chính sau đây: + Học sinh 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 + Thụ động, chỉ học thuộc các bài giải sẵn + Không nhận biết được lỗi xảy ra hoặc không biết cách sửa lỗi => Yêu cầu đặt ra: Tìm ra một số lỗi phổ biến các em thường mắc phải và cách sửa các lỗi này III CÁC GIẢI PHÁP THỰC HIỆN Dựa trên nhưng thuận lợi có được, tôi đã xây dựng và thực hiện các giải pháp để hướng tới giải quyết mục tiêu đã đặt ra ban đầu: Hướng dẫn học sinh đội tuyển tin học phát hiện và sửa “Một số lỗi sai thường gặp trong lập trình Pascal” 1 Biện pháp 1: Chưa hiểu thứ tự ưu tiên phép toán *Trong một biểu thức pascal, thứ tự ưu tiên của các phép toán được liệt kê theo thứ tự sau: • Lời gọi hàm • Dấu ngoặc () • Phép toán một ngôi (NOT, -) • Phép toán *, /, DIV, MOD, AND • Phép toán +, -, OR, XOR • Phép toán so sánh =, , =, , IN Ví dụ 1: Viết chương trình nhập vào một số nguyên dương n từ bàn phím sao cho 4 < n ≤1000000, tính tổng S và in kết quả ra màn hình (lấy đến 3 chữ số phần thập phân) 6 S = 1.2 + 2.3 + 3.4 + + N ( N +1) 3.4 4.5 5.6 ( N + 2)( N + 3) Ví dụ: Input S = 2.462 Output N = 6 - Khi chạy chương trình của học sinh không báo lỗi sai mà cho ra kết quả của bài toán sai Các em mắc lỗi sai khi chuyển từ biểu thức toán học sang biểu thức Pascal không thực hiện đúng thứ tự ưu tiên các phép toán trong pascal ở phép chia của tử số cho mẫu số (tử số chỉ chia cho (i+2), không chia cho (i+3)), do chủ quan từ việc máy đã tính ra kết quả và học sinh không kiểm tra lại bằng máy tính cầm tay Để sửa lỗi sai này, giáo viên yêu cầu các em thực hiện đúng thứ tự ưu tiên các phép toán trong pascal, sau đó dùng máy tính cầm tay để tính kết quả trên giấy bút đối chiếu với kết quả của chương trình từ đó sửa lại thứ tự thực hiện các phép toán trong pascal cho đúng Chương trình lỗi Chương trình đúng Program bai1; Program bai1; Uses crt; Uses crt; Var Var N,i:word; N,i:word; S:real; S:real; Begin Begin Clrscr; Clrscr; Repeat Repeat Write(‘Nhap n=’); readln(n); Write(‘Nhap n=’); readln(n); Until (n>4) and (n4) and (n0, và b, c là các số nguyên dương) Hãy viết chương trình (với b, c được nhập từ bàn phím) để kiểm tra xem tuổi cha có gấp đôi tuổi con hay không? Nếu đúng thì đưa ra màn hình thông báo “hiện nay tuổi cha gấp đôi tuổi con”; trường hợp ngược lại, hãy tính số năm (trước đó hoặc sau đó) tuổi cha gấp đôi tuổi con và đưa ra thông báo “số năm trước đây tuổi cha gấp đôi tuổi con” hay “số năm sau tuổi cha sẽ gấp đôi tuổi con” - Khi viết chương trình giải bài toán trên học sinh sẽ mắc lỗi với dấu “ ; ” trước Else - Giáo viên: hướng dẫn học sinh phát hiện lỗi sai sau khi chạy chương trình Vị trí con trỏ báo lỗi trước “Else” và cách khắc phục xoá dấu “ ; ” trước Else Chương trình như sau: Chương trình lỗi Chương trình đúng Program so_sanh_tuoi; Program so_sanh_tuoi; Uses crt; Uses crt; Var b,c: Integer; Var b,c: Integer; Begin Begin Clrscr; Clrscr; Repeat Repeat Write(‘Nhap tuoi cha:’); Write(‘Nhap tuoi cha:’); Readln(b); Readln(b); Write(‘Nhap tuoi con:’); Write(‘Nhap tuoi con:’); Readln(c); Readln(c); If (b-c18)); If b=2*c then writeln(‘hien nay If b=2*c then writeln(‘hien nay tuoi cha gap doi tuoi con’); tuoi cha gap doi tuoi con’) Else Else If b>2*c then writeln(‘sau’,b-2*c, ‘nam tuoi cha gap doi tuoi con’) 8 If b>2*c then writeln(‘sau’, b- Else 2*c, ‘nam tuoi cha gap doi tuoi Writeln(2*c-b,’ nam truoc day con’); tuoi cha gap doi tuoi con’); Else Readln Writeln(2*c-b,’ nam truoc day End tuoi cha gap doi tuoi con’); Readln End 3 Biện pháp 3: Không phân biệt được hằng xâu và biến - Đến đây thì các em học sinh đã không mắc lỗi với dấu “;” trước Else, tuy nhiên trong chương trình học sinh cần phải chú ý hằng xâu đặt trong cặp nháy đơn còn biến thì không cần đặt trong cặp nháy đơn Ví dụ 3: Viết chương trình nhập vào họ tên, điểm văn, điểm toán, điểm anh văn của 1 học sinh Sau đó in ra màn hình: họ tên, điểm trung bình, xếp lọai của học sinh đó (trên 1 dòng) Cho biết: - Điểm trung bình = (điểm văn + điểm toán + điểm anh văn) / 3 - Xếp loại: + Giỏi, nếu điểm trung bình >= 9.0 và không có điểm dưới 6.5; + Khá, nếu 7.0 a then min:=a; If min>v then min:=v; if (dtb>=9) and (min>=6.5) If min>a then min:=a; then xl:=Gioi if (dtb>=9) and (min>=6.5) then else if (dtb>=7) and (min>=5) xl:='Gioi' then xl:=kha else if (dtb>=7 and (min>=5) else if (dtb>=5) and then xl:='kha' (min>=3.5) else if (dtb>=5) and (min>=3.5) then xl:=Trung binh else then xl:='Trung binh' else xl:=yeu; xl:='yeu'; write(‘Ho va ten ’, hoten,' write(‘Ho va ten ’, hoten,' Diem Diem trung binh: ',dtb:0:1,' Xep loai: trung binh: ',dtb:0:1,' Xep loai: ',xl); ',xl); readln; readln; end end 4 Biện pháp 4: Sử dụng tên hàm làm biến cục bộ - Do lệnh trả kết quả cho tên hàm rất giống một lệnh gán bình thường nên học sinh thường nhầm tên hàm là biến cục bộ Vì vậy khi viết chương trình để tiết kiệm biến cục bộ học sinh đã sử dụng tên hàm làm biến cục bộ - Để tránh lỗi này cần lưu ý với học sinh: để trả kết quả cho hàm, tốt nhất nên tính kết quả hàm vào một biến cục bộ, trước khi kết thúc ta mới gán tên hàm bằng giá trị biến này để trả giá trị cho hàm Ví dụ 4: Tính tổng các chữ số của n (n là số nguyên dương nhập từ bàn phím) Chương trình lỗi Chương trình đúng Program Tong_chu_so; Program Tong_chu_so; Uses crt; Uses crt; Var n: int64; Var n: int64; Function tong(n:int64):int64; Function tong(n:int64):int64; Begin Var t:int64; Begin repeat tong:=tong+ n mod 10; t:=0; n:=n div 10; repeat Until n=0; t:=t+ n mod 10; End; n:=n div 10; Begin Until n=0; 10 Clrscr; tong:=t; Repeat End; Write('nhap n='); Readln(n); Begin Until n>0; Writeln('Tong cac chu so cua Clrscr; ',n,' la :',tong(n):5); Repeat Readln; Write('nhap n='); Readln(n); End Until n>0; Writeln('Tong cac chu so cua ',n,' la :',tong(n):5); Readln; End 5 Biện pháp 5: Tràn số do kết quả phép tính vượt quá giới hạn Ví dụ 5.1: Tính tổng s = 1! + 2! + 3! +…+n! Với n là số nguyên dương - Chương trình đòi hỏi biến gt và s phải có miền giá trị rất lớn Trong chương trình của học sinh thường báo lỗi do miền giá trị của biến tham gia không đủ lớn Lỗi này do khai báo hàm trả về số nguyên (integer) nên miền giá trị tối đa là 32767 Có hai cách khắc phục là : * Cách 1: Tăng miền giá trị của các biến tham gia CT (giữ nguyên vòng for): Chương trình lỗi Chương trình đúng Program Tong_giai_thua; Program Tong_giai_thua; Uses crt; Uses crt; Var i,n,s: integer; Var s:extended; i,n:longint; Function gt(n:integer):integer; Function gt(n:int64):extended; Var i,t:integer; Var i:longint; t:extended; Begin Begin T:=1; T:=1; For i:=1 to n do t:=t*i; For i:=1 to n do t:=t*i; Gt:=t; Gt:=t; End; End; Begin Begin Clrscr; Clrscr; Repeat Repeat Write(‘nhap n = '); Readln(n); Write(‘nhap n = '); Readln(n); Until n>0; Until n>0; S:=0; S:=0; For i:=1 to n do s:=s+gt(i); For i:=1 to n do s:=s+gt(i); Writeln(‘Tong s=’, s:5); Writeln(‘Tong s=’, s:5); Readln; Readln; End End 11 * Cách 2: Thay vòng for …do bằng While do đồng thời tăng miền giá trị của các biến tham gia CT Chương trình lỗi Chương trình đúng Program Tong_giai_thua; Program Tong_giai_thua; Uses crt; Var i, n :int64; S: extended; Uses crt; Function gt(n:int64):extended; Var s,n,i: integer; Var T:extended; i:int64; Begin Function gt(n:integer):integer; T:=1; i:=1; Var i,T:integer; While i0; S:=0; i:=1; Clrscr; While i0; Readln; End S:=0; For i:=1 to n do s:=s+gt(i); Writeln(‘Tong s=’, s:5); Readln; End Ví dụ 5.2: Viết chương trình tìm bội chung nhỏ nhất của hai số a và b (a, b là hai số nguyên dương nhập từ bàn phím) - Chương trình của học sinh bị lỗi tràn bộ nhớ (exitcode = 215) khi chương trình tính tích a*b Khắc phục lỗi này bằng cách dùng dấu ngoặc () ưu tiên phép chia lấy phần nguyên (lấy a hoặc b div ucln(a,)) trước sau đó thực hiện phép nhân Chương trình lỗi Chương trình đúng 12 Program boi_chung_nn; Program boi_chung_nn; Uses crt; Uses crt; Var a,b:word; Var a,b:word; Function ucln(a,b:longint):longint; Function ucln(a,b:longint):longint; Var r:longint; Var r:longint; Begin Begin while b0 do while b0 do begin begin r:=a mod b; r:=a mod b; a:=b; a:=b; b:=r; b:=r; end; end; ucln:=a; ucln:=a; end; end; Function bcnn(a,b:longint):longint; Function bcnn(a,b:longint):longint; Begin Begin bcnn:=a*b div ucln(a,b); bcnn:=a*(b div ucln(a,b)); end; end; Begin Begin Clrscr; Clrscr; Write('nhap a= '); readln(a); Write('nhap a= '); readln(a); Write('nhap b= '); readln(b); Write('nhap b= '); readln(b); Write('bcnn cua hai so a va b Write('bcnn cua hai so a va b la:',bcnn(a,b):5); la:',bcnn(a,b):5); Readln; Readln; End End 6 Biện pháp 6: Khai báo sai miền chỉ số cho dữ liệu mảng Ví dụ 6: Nhập vào một mảng n số nguyên gồm các số lớn hơn 100 và nhỏ hơn 500 In mảng vừa nhập - Học sinh được học thuộc các bài tập về mảng nên sẽ làm bài giống như các dạng đó mà không biết tư duy để giải quyết yêu cầu của bài toán là giá trị của các phần tử phải lớn hơn 100 và nhỏ hơn 500 Chương trình thường dùng For do để nhập mảng (biến i không chạy được từ 1) và không can thiệp được vào biến đếm i để nhập lại giá trị của a[i] - Học sinh mắc lỗi khai báo mảng như sau: Var a:array[100 500] of integer; - Học sinh nhập mảng bằng for …do như sau: 13 write('nhap n='); readln(n); for i:=1 to n do begin Write('a[',i,']='); Readln(a[i]); end; - Để sửa lỗi trên cho học sinh thì giáo viên hướng dẫn các em khai báo lại biến mảng và dùng vòng lặp Repeat…Until để nhập mảng Chương trình như sau: Chương trình lỗi Chương trình đúng Program nhap_mang; Program nhap_mang; uses crt; uses crt; var a:array[100 500] of longint; var a:array[1 100] of longint; n,i:longint; n,i:longint; begin begin clrscr; clrscr; write('nhap n='); readln(n); write('nhap n='); readln(n); for i:=1 to n do i:=0; begin repeat i:=i+1; write('a[',i,']='); write('a[',i,']='); Readln(a[i]); Readln(a[i]); if (a[i]=500) end; then i:=i-1;{khong thoa man nhap Write(‘Cac phan tu cua lại} mang:’); until i=n; for i:=1 to n do write(a[i],' '); Readln end for i:=1 to n do write(a[i],' '); Readln end 7 Biện pháp 7: Giá trị biến điều khiển vượt quá miền chỉ số của mảng Ví dụ 7: Viết chương trình nhập vào mảng gồm n phần tử (na[j] then if a[i]>a[j] then Begin Begin tg:=a[i]; tg:=a[i]; a[i]:=a[j]; a[i]:=a[j]; a[j]:=tg; a[j]:=tg; End; End; writeln(' day sau khi sap xep la writeln(' day sau khi sap xep la '); '); for i:=1 to n do write( a[i]: 4); for i:=1 to n do write( a[i]: 4); readln; readln; End End - Chương trình của học sinh mắc lỗi trong vòng For khi gán i:=0 không nằm trong miền chỉ số của biến mảng ta cần gán lại i:=1 8 Biện pháp 8: Không hiển thị kết quả khi chương trình không tìm được giá trị thoả mãn đề bài Ví dụ 8: Viết chương trình tìm các số có ba chữ số sao cho số đó bằng n lần tổng các chữ số của nó (n nguyên dương được nhập từ bàn phím) 15 - Chương trình chỉ in ra kết quả khi tìm được số thoả mãn (với n>10), khi không tìm được số thoả mãn (0

Ngày đăng: 11/03/2024, 10:21

Tài liệu cùng người dùng

Tài liệu liên quan