1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Skkn 2023) sử dụng ngôn ngữ lập trình c++ và python để giải quyết lớp bài toán dạng số trong bồi dưỡng học sinh giỏi

54 8 0

Đ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

SỞ GIÁO DỤC & ĐÀO TẠO NGHỆ AN TRƯỜNG THPT ĐÔ LƯƠNG ……………………………… SÁNG KIẾN KINH NGHIỆM Đề tài: “SỬ DỤNG NGƠN NGỮ LẬP TRÌNH C++ VÀ PYTHON ĐỂ GIẢI QUYẾT LỚP BÀI TOÁN DẠNG SỐ TRONG BỒI DƯỠNG HỌC SINH GIỎI” Lĩnh vực: Tin học Người thực hiện: Nguyễn Thị Hà (Giáo viên 1) Hoàng Thị Hương (Giáo viên 2) Tổ mơn: Tốn - Tin Đơn vị: Trường THPT Đô Lương Số điện thoại: 0855974950 0983666458 Email: thuhadl1@gmail.com NĂM HỌC: 2022 – 2023 DANH MỤC CÁC TỪ VIẾT TẮT Viết tắt Viết đầy đủ HSG Học sinh giỏi GV Giáo viên THPT Trung học phổ thông THCS Trung học sở MỤC LỤC PHẦN I ĐẶT VẤN ĐỀ Lý chọn đề tài 2 Mục đích nghiên cứu 3 Nhiệm vụ phạm vi nghiên cứu 3.1 Nhiệm vụ nghiên cứu 3.2 Phạm vi nghiên cứu Đối tượng nghiên cứu Phương pháp nghiên cứu 5.1 Nhóm phương pháp nghiên cứu lý luận 5.2 Nhóm phương pháp nghiên cứu thực tiễn 5.3 Phương pháp thực nghiệm Tính đóng góp đề tài PHẦN II NỘI DUNG Cơ sở lý luận 1.1 Lý luận chương trình phổ thơng 1.2 Lý luận dạy học dạy học lập trình C++ 1.3 Lý luận dạy học dạy học lập trình Python Cơ sở thực tiễn 2.1 Thực trạng trước thực giải pháp sáng kiến 2.2 Thực trạng giáo viên học sinh dạy học đội tuyển học sinh giỏi 2.3 Thực trạng dạy lập trình ngơn ngữ C++ Python giáo viên 2.4 Thực trạng học tin lập trình học sinh trường trung học phổ thông Giải pháp thực 3.1 Một số kiến thức toán dạng số 3.2 Lớp toán dạng số 10 Khảo sát cấp thiết tính khả thi giải pháp đề xuất 44 4.1 Mục đích khảo sát 44 4.2 Nội dung phương pháp khảo sát 45 4.3 Đối tượng khảo sát 45 4.4 Kết khảo sát tính cấp thiết tính khả thi giải pháp đề xuất 45 Kết đạt 49 5.1 Đối với học sinh 49 5.2 Đối với giáo viên 49 5.3 Khả mang lại lợi ích thiết thực sáng kiến 49 PHẦN 3: KẾT LUẬN 50 Kết luận 50 Đề xuất phạm vi 50 Những kiến nghị đề xuất 50 PHẦN IV TÀI LIỆU THAM KHẢO 51 PHẦN I ĐẶT VẤN ĐỀ Lý chọn đề tài Bồi dưỡng học sinh giỏi quan tâm hàng đầu trường trung học sơ sở trung học phổ thông Đối với môn tin học, trước thường sử dụng ngôn ngữ lập trình Passcal để bồi dưỡng học sinh giỏi nội dung sách giáo khoa đưa ngơn ngữ lập trình Passcal Tuy nhiên nhiều năm gần công tác bồi dưỡng học sinh giỏi hầu hết tất trường giải tốn lập trình ngơn ngữ C++ Do ngơn ngữ có nhiều điểm mạnh từ kiểu diệu, thư viện hàm có sẵn tốc độ xử lý phù hợp đáp ứng thi học sinh giỏi tỉnh Chương trình giáo dục phổ thơng 2018 có nhiều thay đổi nội dung phương pháp dạy học Nhưng thay đổi phải nói đến môn tin học Môn tin học môn bắt buộc bậc tiểu học bậc trung học sở Đối bậc trung học phổ thông giai đoạn giáo dục định hướng nghề nghiệp nên từ lớp 10 đưa vào Chủ đề F: “Giải vấn đề với trợ giúp máy tính” có đưa ngơn ngữ lập trình Python để học sinh làm quen với cách lập trình ngơn ngữ Python ngơn ngữ lập trình bậc cao có nhiều ưu điểm lập trình xây dựng thư viện đồ họa Nó hồn tồn sử dụng để giải tốn khó Tuy nhiên băn khăn giáo viên bồi dưỡng học sinh giỏi trường tỉnh môn tin giải tốn lập trình khơng giải tốn mà cịn phải ràng buộc thời gian chạy test lúc có khả ăn điểm tối đa Với ngơn ngữ Python tốc độ xử lý nào? Khi xử lý tốn thuật tốn để ăn điểm tối đa Nhưng vấn đề học sinh khối 10 học chương trình với sách giáo khoa ngôn ngữ Python Vậy bạn học lập trình ngơn ngữ Python tham gia học sinh giỏi trường, tỉnh bạn giải tốn lập trình ngơn ngữ để thuật tốn đảm bảo thời gian chạy giây cho test? Đây nỗi bận tâm nhiều giáo viên khác Trong trình giảng dạy chúng tơi ln cố gắng tìm tịi, học hỏi, đúc rút kinh nghiệm để giúp học sinh tiếp cận nội dung cách dễ dàng hơn, tạo nhiều đam mê cho học sinh Với cố gắng không ngừng nhiều năm qua công tác bồi dưỡng học sinh giỏi thân có thành tích đáng ghi nhận Cụ thể năm học 2021-2022 mạnh dạn bồi dưỡng em dự thi cấp tỉnh đạt 2, có em đạt 17/20 Năm học 2022 – 2023 có em dự thi đạt kết quả: giải ba giải khuyến khích Với nhiều năm nghiên cứu cấu trúc đề thi học sinh giỏi tỉnh Nghệ An tỉnh thành khác, thấy hầu hết tất đề thi có đến dạng số học với độ phức tạp khác Với mong muốn giúp học sinh có thêm tài liệu để bồi dưỡng, biết điểm mạnh yếu ngơn ngữ lập trình C++ Python từ học sinh giáo viên xác định lựa chọn ngôn ngữ phù hợp tham gia ôn thi học sinh giỏi tỉnh Chúng tơi giải lớp tốn dạng số với hai loại ngôn ngữ Với lý đưa đề tài “Sử dụng ngơn ngữ lập trình C++ Python để giải lớp toán dạng số bồi dưỡng học sinh giỏi” Mục đích nghiên cứu - Thứ nhất, Tìm điểm khác biệt ngôn ngữ C++ Python giải toán - Thứ 2, Trao đổi với đồng nghiệp việc vận dụng ngơn ngữ C++ Python việc lập trình sau đưa quan điểm nhân vấn đề lựa chọn ngôn ngữ bồi dưỡng học sinh giỏi - Thứ 3, Giải lớp toán dạng số với hai ngôn ngữ C++ Python cách tối ưu - Thứ tư, Đề tài làm tài liệu cho giáo viên phục vụ giảng dạy, bồi dưỡng HSG Nhiệm vụ phạm vi nghiên cứu 3.1 Nhiệm vụ nghiên cứu - Nghiên cứu sâu loại ngơn ngữ lập trình C++ Python - Đề tài nghiên cứu hệ thống lớp toán dạng số - Giải đánh giá tốn dạng số theo ngơn ngữ C++ Python 3.2 Phạm vi nghiên cứu Đề tài nghiên cứu trình dạy đội tuyển học sinh giỏi tỉnh học trường THPT Đơ Lương Đề tài có khả áp dụng rộng rãi vào giảng dạy, bồi dưỡng học sinh giỏi Tin học cho giáo viên học sinh THCS, THPT địa bàn toàn tỉnh Nghệ An Đối tượng nghiên cứu - Chương trình giáo dục phổ thơng - Ngơn ngữ lập trình C++ - Ngơn ngữ lập trình Python - Cấu trúc đề thi học sinh giỏi tỉnh môn tin tỉnh Nghệ An - Đối tượng học sinh đội tuyển tin học sinh giỏi trường tỉnh Phương pháp nghiên cứu 5.1 Nhóm phương pháp nghiên cứu lý luận - Nghiên cứu Nghị Đảng, Nhà nước, Bộ giáo dục đào tạo, Sở giáo dục đào tạo tỉnh liên quan đến đề tài nghiên cứu - Các tài liệu lý luận dạy học Tin học, tài liệu hướng dẫn chuyên môn - Các tài liệu dạy lập trình 5.2 Nhóm phương pháp nghiên cứu thực tiễn - Phân tích tổng hợp rút kinh nghiệm từ thực tiễn 5.3 Phương pháp thực nghiệm - Thực nghiệm nhóm học sinh giỏi trường THPT nơi chúng tơi cơng tác giảng dạy Tính đóng góp đề tài - Giúp học sinh tiếp dạng tập làm rõ loại ngôn ngữ C++ Python, đáp ứng phần yêu cầu kiến thức luyện thi học sinh giỏi - Đánh giá, so sánh hai ngôn ngữ C++ Python lập trình thi học sinh giỏi - Giúp giáo viên đa dạng hóa việc áp dụng loại ngơn ngữ lập trình để giải tốn phù hợp với tình hình thực tế - Nâng cao kiến thức mơn, đóng góp phần nhỏ bé vào việc nâng cao chất lượng dạy học bồi dưỡng học sinh giỏi - Giúp học sinh đam mê học môn Tin học PHẦN II NỘI DUNG Cơ sở lý luận 1.1 Lý luận chương trình phổ thơng Mục tiêu cấp trung học phổ thơng: Chương trình mơn Tin học cấp trung học phổ thông giúp học sinh củng cố nâng cao lực tin học hình thành, phát triển giai đoạn giáo dục bản, đồng thời cung cấp cho học sinh tri thức mang tính định hướng nghề nghiệp thuộc lĩnh vực tin học ứng dụng tin học, cụ thể là: - Giúp học sinh có hiểu biết hệ thống máy tính, số kĩ thuật thiết kế thuật tốn, tổ chức liệu lập trình; củng cố phát triển cho học sinh tư giải vấn đề, khả đưa ý tưởng chuyển giao nhiệm vụ cho máy tính thực - Giúp học sinh có khả ứng dụng tin học, tạo sản phẩm số phục vụ cộng đồng nâng cao hiệu cơng việc; có khả lựa chọn, sử dụng, kết nối thiết bị số, dịch vụ mạng truyền thông, phần mềm tài nguyên số khác - Giúp học sinh có khả hồ nhập thích ứng với phát triển xã hội số, ứng dụng công nghệ thông tin truyền thơng học tự học; tìm kiếm trao đổi thông tin theo cách phù hợp, tuân thủ pháp luật, có đạo đức, ứng xử văn hố có trách nhiệm; có hiểu biết thêm số ngành nghề thuộc lĩnh vực tin học, chủ động tự tin việc định hướng nghề nghiệp tương lai thân 1.2 Lý luận dạy học dạy học lập trình C++ - Học lập trình C++ xu hướng ngành lập trình Bởi C++ ngơn ngữ phổ biến đứng thứ Có nhiều ứng dụng phổ biến viết loại ngôn ngữ Photoshop, Chrome, Cho nên có sức ảnh hưởng lớn xu hướng ngơn ngữ lập trình - Điểm mạnh C++ với ngôn ngữ lập trình khác + Ngơn ngữ C++ ngơn ngữ cấp trung Nó có kết hợp tính ngôn ngữ cấp cao thấp C++ sử dụng cho lập trình để giúp người dùng thâm nhập vào phần cứng Hỗ trợ chức ngơn ngữ lập trình bậc cao + C++ ngơn ngữ lập trình có cấu trúc cho phép chương trình phức tạp chia thành chương trình đơn giản nhỏ Đó gọi hàm Nó cịn cho phép di chuyển liệu dễ dàng hàm Mà bạn thường xuyên thấy ngôn ngữ lập trình đại ngày + Có nhiều tính khác Nó cho phép người dùng truy cập trực tiếp vào API phần cứng máy, xuất phiên dịch Đặc biệt sử dụng tài nguyên máy cấp phát nhớ Đó tối ưu ứng dụng trình điều khiển hệ thống nhúng Ngơn ngữ lập trình vơ hiệu tiện dụng Nó sử dụng cho hệ thống Nó nằm hệ thống lớn hệ điều hành Windows, Unix,… + Là ngôn ngữ lập trình đa mục đích Có thể ứng dụng trực tiếp vào ứng dụng doanh nghiệp, game, đồ họa,… - Ngơn ngữ lập trình C++ nhanh hầu hết ngơn ngữ khác Python, Java Đó lý mà người dùng thường thích sử dụng ngôn ngữ so với ngôn ngữ khác Vậy việc học lập trình C++ ln điều mà người lập trình muốn hướng tới 1.3 Lý luận dạy học dạy học lập trình Python - Python ngơn ngữ lập trình kịch (scripting language) Guido van Rossum tạo năm 1990 Python ngơn ngữ lập trình cấp cao, linh hoạt, sử dụng cho hầu hết thứ mà không yêu cầu ngôn ngữ cụ thể Một số tính khiến Python trở nên thông dụng bao gồm: + Cú pháp Python đơn giản mà dễ sử dụng Một số người cho cách tốt để học Python bắt đầu viết chương trình Hầu hết cú pháp Python có tính logic cao đủ để giúp bạn bắt đầu viết chương trình + Hầu hết nhà lập trình viên cho Python ngơn ngữ dễ học giảng dạy phổ biến trường học tồn giới Những tính khiến Python trở nên phổ biến tồn giới Nó sử dụng nhiều lĩnh vực khác như:  Phát triển trang web Back-end  Phát triển trò chơi  Khoa học liệu phân tích  Phát triển ứng dụng di động  Robot AI (Trí tuệ nhân tạo) Cùng với số ưu điểm Python có số hạn chế lĩnh vực hiệu suất Sau nhược điểm Python + Tốc độ thực thi chậm: Python ngơn ngữ thơng dịch, có nghĩa hoạt động với trình thơng dịch, khơng phải với trình biên dịch Do đó, thực thi tương đối chậm C, C++, Java nhiều ngôn ngữ khác + Tiêu thụ nhớ lớn: Các cấu trúc Python địi hỏi nhiều khơng gian nhớ Ngơn ngữ khơng thích hợp để sử dụng cho phát triển điều kiện nhớ hạn chế + Khó kiểm tra: Vì ngơn ngữ dựa trình thơng dịch, khó để chạy kiểm tra mã viết Python Tất lỗi xuất thời gian chạy, điều khiến việc kiểm tra đoạn mã viết Python khó khăn Cơ sở thực tiễn 2.1 Thực trạng trước thực giải pháp sáng kiến Học sinh khối 10 áp dụng dạy học theo chương trình giáo dục phổ thơng 2018 với mơn tin có chủ đề F “’Giải tốn với trợ giúp máy tính” lập trình ngơn ngữ lập trình Python Chương trình giáo dục phổ thông khối THPT môn tin em học lập trình ngơn ngữ lập trình Python Như em học ngơn ngữ biết đến ngơn ngữ Do học sinh khơng biết ngôn ngữ ưu việt giải tốn em tiếp cận ngơn ngữ học Vì em tham gia đội tuyển học sinh giỏi em biết giải tốn ngơn ngữ học Python Nhưng thi học sinh giỏi ngồi giải tốn cịn phải đảm bảo thời gian xử lý liệu (1 test/ giây) 2.2 Thực trạng giáo viên học sinh dạy học đội tuyển học sinh giỏi - Ơ cấp THCS em học chương trình cũ nên số trường có dạy tin học cho lớp lớp với ngôn ngữ lập trình Pascal C++ Tuy nhiên số trường sở vật chất hạn chế nên lớp lớp không lựa chọn học môn tin nên em đến ngôn ngữ lập trình bậc cao Học sinh khối 10 học chương trình em đa số làm quen với ngôn ngữ Python Vậy với học sinh biết số ngôn ngữ Pascal hay C++ tiếp cận ngôn ngũ Python em thường đặt câu hỏi giải tốn nên lựa chọn ngơn ngữ để dễ viết, dễ sử dụng Còn học sinh đội tuyển em lại băn khoăn ngơn ngữ ngơn ngữ giải toán thời gian nhanh Đây băn khoăn nhiều giáo viên - Giáo viên dạy đội tuyển đầu tư tìm tịi Tuy nhiên việc tiếp cận ngơn ngữ Python hay C++ giáo viên chưa nhiều nên gặp khó khăn - Dựa vào cấu trúc đề thi học sinh giỏi cấp huyện, cấp tỉnh Có nhiều chuyên đề giáo viên cần bồi dưỡng cho học sinh Một chuyên đề thường có đề thi học sinh giỏi môn tin chuyên đề dạng số Đó lớp tốn dạng số đề thi - Tài liệu ôn thi đội tuyển thật khó tìm để phù hợp học sinh giáo viên 2.3 Thực trạng dạy lập trình ngơn ngữ C++ Python giáo viên Hiện đa số giáo viên tiếp cận với ngơn ngữ lập trình C++ Tuy nhiên để tìm hiểu sâu ngơn ngữ ít, giáo viên tham gia bồi dưỡng đội tuyển tìm hiểu nhiều Mặt khác qua thi học sinh giỏi cấp huyện, cấp tỉnh giáo viên hướng dẫn cho học sinh giải toán lập trình ngơn ngữ Pascal Bởi chương trình cũ chủ yếu dạy ngơn ngữ Pascal Chương trình phổ thơng lựa chọn ngơn ngữ lập trình Python để dạy học lập trình Nên giáo viên dạy tiếp cận với ngôn ngữ Tuy nhiên giáo viên trình vừa dạy, vừa tìm hiểu ngơn ngữ 2.4 Thực trạng học tin lập trình học sinh trường trung học phổ thơng - Các em học sinh có cách nhìn chung mơn tin lập trình khó Vừa phải biết ngơn ngữ, vừa phải hiểu chất toán học Đồng thời biết tìm thuật tốn tối ưu cho tốn - Môn tin học không áp dụng thi tốt nghiệp hay đại học nên em theo xu hướng thi học Nên chọn học sinh vào đội tuyển để em dành thời gian học nghiên cứu mơn tin lập trình khó khăn Muốn đạt kết cao kì thi học sinh giỏi tỉnh cấp huyện giáo viên ngồi cần phải trang bị đầy đủ, chi tiết kiến thức phần lí thuyết Cịn phải đưa tập phù hợp để cố, trang bị kiến thức, nâng cao kĩ vận dụng cụ thể Nhất tìm lợi điểm mạnh ngôn ngữ lựa chọn để dạy đội tuyển Giải pháp thực 3.1 Một số kiến thức tốn dạng số Trong ngơn ngữ lập trình tốn dạng số có số dạng sau: Số nguyên tố, số Fibonaxi, số phương, só cá tính, số tiêu chuẩn, số hồn hảo, ước số, bội tích M thành tích thừa số nguyên tố Yêu cầu: Em giúp Hiếu vượt qua thử thách Dữ liệu vào từ tệp văn NTO.INP gồm: - Dòng thứ ghi số T (T≤5 x 104) - T dòng tiếp theo, dòng ghi số nguyên dương M(1 1): 37 cin>>n; ans *= 2; long long h=n; prime.append(s) for(int i=2;i*i0): t -= } n = int(fi.readline()) s*=(mp[i]+1); phantich(n); } fo.write('\n') if(n>1) fi.close() { fo.close() s*=2; mp[n]++; } cout

Ngày đăng: 27/07/2023, 08:44

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w