Sáng kiến kinh nghiệm Phương pháp giảng dạy ngôn ngữ lập trình C++ cho đội tuyển học sinh giỏi tin học THPT

doc 23 trang honganh1 15/05/2023 2302
Bạn đang xem 20 trang mẫu của tài liệu "Sáng kiến kinh nghiệm Phương pháp giảng dạy ngôn ngữ lập trình C++ cho đội tuyển học sinh giỏi tin học THPT", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • docsang_kien_kinh_nghiem_phuong_phap_giang_day_ngon_ngu_lap_tri.doc

Nội dung text: Sáng kiến kinh nghiệm Phương pháp giảng dạy ngôn ngữ lập trình C++ cho đội tuyển học sinh giỏi tin học THPT

  1. MỤC LỤC PHẦN MỞ ĐẦU 1 1. Lý do chọn đề tài 1 2. Mục tiêu nghiêu cứu 1 3. Đối tượng nghiên cứu 2 4. Phương pháp nghiên cứu 2 5. Phạm vi nghiên cứu 2 6. Cấu trúc của sáng kiến kinh nghiệm 2 PHẦN NỘI DUNG 3 Chương I. CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN 3 1.1. Ngôn ngữ lập trình C++ 3 1.2. Các phương pháp giảng dạy ngôn ngữ lập trình 3 1.2.1. Phương pháp kết hợp giữa lý thuyết và thực hành. 3 1.2.2. Phương pháp dạy ngôn ngữ lập trình dựa trên sự tương quan và tính kế thừa 3 1.2.3. Phương pháp bàn tay nặn bột 4 1.2.4. Phương pháp hoạt động nhóm và dạy học theo dự án 4 1.3. Dạy lập trình cho đội tuyển học sinh giỏi ở trường THPT hiện nay 4 1.4. Tiểu kết chương 1 5 Chương 2. GIẢNG DẠY NGÔN NGỮ LẬP TRÌNH C++ DỰA TRÊN SỰ TƯƠNG QUAN VÀ KẾ THỪA 6 2.1. Sự tương quan giữa ngôn ngữ Pascal và ngôn ngữ C++ 6 2.2. Hướng dẫn giảng dạy một số phần cụ thể 15 Chương 3. KẾT QUẢ ÁP DỤNG 19 PHẦN KẾT LUẬN 21 1. Kết quả đạt được 21 2. Hạn chế của đề tài 21 3. Hướng phát triển và kiến nghị 21 DANH MỤC CÁC CHỮ VIẾT TẮT HS Học sinh GV Giáo viên HSG Học sinh giỏi CNTT-TT Công nghệ thông tin và truyền thông NNLT Ngôn ngữ lập trình SKKN Sáng kiến kinh nghiệm GDPT Giáo dục phổ thông 0
  2. PHẦN MỞ ĐẦU 1. Lý do chọn đề tài Ứng dụng của tin học trong giai đoạn hiện nay đã trở thành một phần tất yếu của đời sống xã hội hiện đại. Vì có vai trò quan trọng như vậy nên tất cả các nước trên thế giới cũng như nước ta đều có những chính sách đầu tư cho tin học để không bị lạc hậu về công nghệ. Ngày nay tin học không dừng lại ở mục tiêu ứng dụng các sản phẩm phần mềm vào các lĩnh vực mà tin học phải trở thành một thứ hàng hóa, không chỉ sản xuất trong nước mà có thể xuất khẩu đi các nước. Bởi vậy, bộ môn tin học trong nhà trường THPT, đặc biệt là các kiến thức lập trình đang chiếm một vị trí rất quan trọng. Bên cạnh đó, với nhiệm vụ bồi dưỡng nhân tài mà Đảng, nhà nước ta đã giao phó cho giáo dục thì công tác bồi dưỡng học sinh giỏi đã trở thành một nhiệm vụ quan trọng trong các nhà trường. Có thể nói chất lượng học sinh giỏi thể hiện chất lượng chiều sâu của mỗi nhà trường trong quá trình dạy học. Trong những năm gần đây Bộ giáo dục và đào tạo đang có những quyết sách thay đổi mạnh mẽ về chương trình giáo dục, từ giáo dục tiếp cận nội dung nay chú trọng tiếp cận năng lực người học, nghĩa là từ chỗ quan tâm đến việc HS học được cái gì đến chỗ quan tâm HS vận dụng được cái gì qua việc học. Điều này đòi hỏi phương pháp dạy học của GV cũng phải thay đổi theo, người giáo viên phải áp dụng được các phương pháp, kĩ thuật tích cực để xây dựng nên các chuyên đề nhằm giúp HS trở thành chủ thể của quá trình nhận thức, đảm bảo kết quả đầu ra theo yêu cầu. Nhận thức được từ những quan điểm trên nên trong quá quá trình dạy học của mình, trong những năm qua tôi luôn coi nhiệm vụ bồi dưỡng HSG là một nhiệm vụ trọng tâm. Mặt khác, qua tìm hiểu thực tế tại các trường THPT cho thấy, ngoại trừ các trường chuyên ở các trường THPT NNLT đang được sử dụng chủ yếu để dạy cho đội tuyển HSG tin học là ngôn ngữ Pascal. Tuy nhiên trong các kỳ thi học sinh giỏi Tỉnh, Quốc gia thì ngôn ngữ C++ là ngôn ngữ đang được sử dụng thay thế dần ngôn ngữ lập trình Pascal. Vì vậy để các em học sinh trong đội tuyển HSG Tin học của nhà trường tiếp cận NNLT C ++ là một vấn đề rất cấp thiết. Đây là một tiền đề cho các em nếu được chọn vào đội tuyển HSG quốc gia thì không phải bỡ ngỡ để học 1 NNLT mới và đây cũng là 1 thuận lợi cho các em học ngành CNTT ở bậc đại học vì vậy sẽ dễ tạo hứng thú học tập cho các em hơn. Mặt khác, ngôn ngữ lập trình C++ là một ngôn ngữ mạnh, là một ngôn ngữ được các nhà tin học chuyên nghiệp chính thống cũng như các nhà lập trình nghiệp dư sử dụng để lập trình hệ thống, lập trình ứng dụng Vì vậy việc học C ++ là 1 nhu cầu tất yếu, nhất là các kỹ sư, sinh viên chuyên ngành khoa học và kỹ thuật khác và các học sinh phổ thông. Đặc biệt có rất nhiều trang web thi trực tuyến để luyện tập, các chương trình tham khảo viết bằng C++ trên internet cũng có rất nhiều. Từ việc thấy được tầm quan trọng của ngôn ngữ lập trình C ++ để giúp giáo viên và cả học sinh nghiên cứu, học ngôn ngữ lập trình này, tôi chọn đề tài: “Phương pháp giảng dạy ngôn ngữ lập trình C++ cho đội tuyển học sinh giỏi tin học THPT” 2. Mục tiêu nghiêu cứu Mục tiêu chính của đề tài này là: - Xây dựng phương pháp giảng dạy ngôn ngữ lập trình C ++ dựa vào một ngôn ngữ đã biết đó là NNLT Pascal. 1
  3. - Nghiên cứu sự tương đồng của hai ngôn ngữ này giúp cho việc học tập NNLT C++ được thuận lợi hơn. 3. Đối tượng nghiêncứu - Các tài liệu về các phương pháp dạy lập trình. - Các tài liệu về NNLT Pascal và NNLT C++. - Đối tượng khảo sát thực nghiệm là các học sinh thuộc đội tuyển HSG tin học của trường. 4. Phương pháp nghiên cứu - Phương pháp nghiên cứu lý luận. - Phương pháp phân tích, hệ thống hóa tài liệu, tổng kết kinh nghiệm. 5. Phạm vi nghiên cứu - Đề tài chỉ tập tập trung chủ yếu vào việc tìm ra sự tương đồng giữa hai NNLT là NNLT Pascal và NNLT C++ từ đó triển khai vào việc giảng dạy một số nội dung liên quan. Mỗi nội dung sẽ có các ví dụ được viết theo các 2 NNLT này. - Đề tài còn chỉ ra một số phương pháp giảng dạy NNLT sao cho có hiệu quả. - Kế hoạch nghiên cứu: từ tháng 5/2017 đến 5/2019. + Lên kế hoạch, nghiên cứu cơ sở lý luận và thực tiễn của đề tài, soạn hệ thống câu hỏi và bài tập cho chuyên đề liên quan: 5/2017 đến 10/2017 + Tiến hành dạy cho HS giỏi: Năm học 2017-2018: Triển khai từ tháng 10/2017 đến tháng 9/2018 Năm học 2018-2019: Triển khai từ tháng 10/2018 đến tháng 4/2019. + Tiến hành thực nghiệm và đánh giá kết quả: được tiến hành vào 2 đợt cuối các tháng 9/2018 và cuối tháng 4/2019. - Hoàn thành SKKN: 05/2019. 6. Cấu trúc của sáng kiến kinh nghiệm Gồm 3 phần - Phần mở đầu. - Phần nội dung gồm ba chương: + Chương I: Cơ sở lý luận và thực tiễn + Chương II: Giảng dạy NNLT C++ dựa trên sự tương quan và kế thừa + Chương IIII: Kết quả áp dụng. - Phần kết luận 2
  4. PHẦN NỘI DUNG Chương I. CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN 1.1. Ngôn ngữ lập trình C++ C++ là một ngôn ngữ lập trình đa dụng dùng để lập trình cho các hệ thống lớn, lập trình hệ điều hành cho đến các ứng dụng, game hay thậm chí ta có thể dùng C ++ để lập trình web. Với C++ ta có thể thấy được sự mềm dẻo qua việc nó hỗ trợ cho ta các tính năng cao cấp như lập trình hướng đối tượng, cung cấp cho ta khả năng can thiệp sâu vào bên trong bộ nhớ máy tính thông qua con trỏ. C++ là ngôn ngữ biên dịch – tùy thuộc vào các hệ thống khác nhau mà ta có thể có các trình biên dịch tương ứng Ngôn ngữ lập trình C++ này là một trong 5 ngôn ngữ lập trình phổ biến nhất hiện nay, nó được sử dụng bởi hàng triệu lập trình viên trên khắp thế giới. Những điểm mạnh của C++ có thể kể đến như: - Ngôn ngữ C++ là ngôn ngữ cấp trung. Nó có sự kết hợp các tính năng của cả 2 ngôn ngữ cấp cao và thấp. C ++ có thể sử dụng cho lập trình để giúp người dùng có thể thâm nhập được vào phần cứng. Hỗ trợ các chức năng của ngôn ngữ lập trình bậc cao. - C++ là ngôn ngữ lập trình có cấu trúc. Nó cho phép một chương trình phức tạp được chia thành các chương trình đơn giản nhỏ hơn nó. Đó được gọi là các hàm. Nó còn cho phép di chuyển dữ liệu dễ dàng giữa các hàm. Mà bạn vẫn thường xuyên thấy ở các ngôn ngữ lập trình hiện đại ngày nay. - C++ là NNLT thực hiện với nhiều tính năng khác nhau. Nó cho phép người dùng truy cập trực tiếp vào các API phần cứng của máy, sự xuất hiện của phiên dịch. Đặc biệt là sử dụng tài nguyên của máy và cấp phát bộ nhớ. Đó là sự tối ưu của các ứng dụng và trình điều khiển các hệ thống nhúng. - C++ là NNLT vô cùng hiệu quả và tiện dụng. Nó được sử dụng cho các hệ thống. Nó nằm trong hệ thống lớn của hệ điều hành Windows, Unix, - C++ là ngôn ngữ lập trình đa mục đích. Có thể ứng dụng được trực tiếp vào các ứng dụng của doanh nghiệp, game, đồ họa, 1.2. Các phương pháp giảng dạy ngôn ngữ lập trình 1.2.1. Phương pháp kết hợp giữa lý thuyết và thực hành. Đây là phương pháp truyền thống khi dạy NNLT, nó là sự kết hợp giữa nhiều phương pháp [8]. - Phương pháp thuyết trình kết hợp nêu vấn đề. - Phương pháp đặt và giải quyết các tình huống có vấn đề - Phương pháp động não. Quy trình thực hiện mỗi môđun thường theo các bước sau: - Bước 1: Nêu và trình bày lý thuyết về vấn đề cần nghiên cứu - Bước 2: Nêu và giải các ví dụ liên quan đến lý thuyết - Bước 3: Làm các bài tập khái quát - Bước 4: GV Giao bài tập về nhà - Bước 5: HS thực hành lại ví dụ để hiểu lý thuyết, hoàn thành bài tập về nhà, hiểu cách thức thực hiện chuyển sang modun mới 1.2.2. Phương pháp dạy ngôn ngữ lập trình dựa trên sự tương quan và tính kế thừa Đây là phương pháp dựa trên lý thuyết của việc học ngoại ngữ, nếu như ta học được một ngoại ngữ rồi thì các ngoại ngữ tiếp theo cách học sẽ hoàn toàn tương tự và việc học sẽ dễ dàng hơn. 3
  5. Vấn đề cốt yếu của lập trình cũng chính là công thức Cấu trúc dữ liệu + Giải thuật = Chương trình Vì vậy chỉ cần biết cách tổ chức dữ liệu và có giải thuật thì chương trình viết bằng NNLT nào cũng sẽ thực hiện dễ dàng. Các NNLT chỉ khác nhau về từ khóa cũng như cú pháp còn các cấu trúc như rẽ nhánh, lặp, cách thức thực hiện về ý nghĩa thì hoàn toàn giống nhau [8]. Lợi dụng tính chất này, ta sẽ đi so sánh sự tương đồng của các NNLT (ví dụ Pascal và C++) để có thể phát triển ngôn ngữ mới từ một ngôn ngữ đã biết. Công việc này cũng sẽ tiến hành theo các bước: - Bước 1: Xác định vấn đề lý thuyết liên quan và câu hỏi cần giải quyết. - Bước 2: Xây dựng thuật giải. - Bước 3: Giải bằng ngôn ngữ đã biết. - Bước 4: Chuyển đổi sang ngôn ngữ mới dựa vào sự tương đồng Quy trình này sẽ thực hiện theo cấp độ tăng dần, có thể các chương trình đầu sẽ viết ngôn ngữ cũ sau đó sẽ viết theo kiểu tựa ngôn ngữ cũ và phát triển lên thành ngôn ngữ mới. Sau khi đã thành thục ngôn ngữ mới thì lúc đó tính tương đồng đã hoàn thành được “sứ mạng” ban đầu mà nó đề ra đó là học NNLT mới từ sự kế thừa NNLT cũ đã biết trước đây. 1.2.3. Phương pháp bàn tay nặn bột Trong dạy học các bộ môn cũng như dạy học NNLT. Các kiến nội dung kiến thức sẽ được tìm hiểu thông qua kết quả ở Output. Học sinh tìm tòi về thuật toán, viết chương trình, chỉnh sửa lỗi để cho ra kết quả đúng như kết quả được mô tả. Từ đó lĩnh hội tri thức mới [8]. Quá trình này thường thực hiện theo các bước: - Bước 1: Tình huống xuất phát và câu hỏi nêu vấn đề. - Bước 2: Bộc lộ quan niệm ban đầu của học sinh. - Bước 3: Đề xuất câu hỏi hay giả thuyết và thiết kế phương án thực nghiệm. 3.1 Đề xuất câu hỏi. 3.2 Đề xuất phương án thực nghiệm nghiên cứu. - Bước 4: Tiến hành thực nghiệm tìm tòi – nghiên cứu. - Bước 5: Kết luận kiến thức mới 1.2.4. Phương pháp hoạt động nhóm và dạy học theo dự án Giải quyết các vấn đề phát sinh từ thực tiễn. Ở nội dung này, giáo viên yêu cầu HS thực hiện một dự án học tập mà trong đó bài toán đưa ra bắt buộc HS phải vận dụng thuật toán, NNLT theo yêu cầu mới có thể giải quyết được [8]. Thông thường phương pháp này đòi hỏi công việc hoạt động nhóm rất nhiều và sau khi học sinh đã nắm khá chắc về lý thuyết cũng như thực hành trên một NNLT cụ thể. Quá trình này thực hiện theo 3 bước: - Bước 1: GV giao dự án - Bước 2: Triển khai thực hiện dự án - Bước 3: Đánh giá dự án. 1.3. Dạy lập trình cho đội tuyển học sinh giỏi ở trường THPT hiện nay Qua thực tế giảng dạy đội tuyển cũng như tìm hiểu về việc dạy NNLT của các trường THPT trên địa bàn tỉnh cho thấy có rất ít trường thực hiện dạy NNLT C ++. Các trường có tổ chức dạy đều áp dụng theo phương pháp kết hợp giữa lý thuyết và thực hành, chưa chú trọng đến tính kế thừa các NNLT đã được học. 4