Sáng kiến kinh nghiệm Hướng dẫn các phương pháp giải bài tập Python trong Tin học 10 Kết nối tri thức
Năm học 2022-2023 chương trình giáo dục phổ thông 2018 chính thức áp dụng cho khối 10. Với định hướng ngay từ chương trình lớp 10 học sinh đã được học về ngôn ngữ lập trình, cụ thể là định hướng sử dụng ngôn ngữ lập trình Python. Nhưng hầu hết chúng ta đã quá quen với việc sử dụng ngôn ngữ lập trình Pascal và gần đây đã bắt đầu tiếp cận với ngôn ngữ lập trình C/C++. Tuy nhiên, sách giáo khoa mới thì ngôn ngữ lập trình Python lại được đưa vào chương trình giáo dục môn Tin học ngay từ lớp 10. Điều này làm cho đội ngũ giáo viên Tin học phải tự tìm hiểu và nghiên cứu thêm ngôn ngữ mới, nhằm phục vụ cho công các giảng dạy của bản thân.
Xuất phát từ thực tiễn giảng dạy tại trường THPT 1-5 tôi thấy rằng, để đạt hiệu quả cao trong mỗi phần học, tiết học cần có cách thiết kế bài giảng cho phù hợp với nội dung kiến thức; phương pháp, phương tiện dạy học phải phù hợp với từng bài dạy, từng đối tượng học sinh. Để qua mỗi phần học, tiết học học sinh thích thú với kiến thức mới, qua đó hiểu được kiến thức đã học trên lớp, đồng thời học sinh thấy được tầm quan trọng của vấn đề và việc ứng dụng của kiến thức trước hết để đáp ứng những yêu cầu của môn học, sau đó là việc ứng dụng của nó vào các công việc thực tiễn trong đời sống xã hội.
Tuy nhiên làm cách nào để giúp học sinh tiếp thu kiến thức mới tốt nhất cũng là vấn đề mà tôi nhận thấy bản thân cũng như các đồng nghiệp của mình trăn trở. Trong chương trình Tin học 10 “chủ đề 5: Giải quyết vấn đề với sự trợ giúp của máy tính”. Kiến thức học sinh được giới thiệu về ngôn ngữ lập trình bậc cao nói chung và cụ thể ngôn ngữ lập trình Python. Python là ngôn ngữ lập trình bậc cao có thế mạnh là rất gần gũi với ngôn ngữ tự nhiên, hiện nay là ngôn ngữ lập trình phổ biến rộng rãi ở Châu Âu, châu Mỹ và được coi như ngôn ngữ lập trình trường học. Dù là ngôn ngữ có cấu trúc rõ ràng, dễ đọc, dễ học nhưng đối với học sinh lớp 10 các em còn nhiều khó khăn khi bắt đầu học. Python là ngôn ngữ được dùng để phát triển các ứng dụng web, game, khoa học dữ liệu (tính toán, phân tích, khai thác dữ liệu), trí tuệ nhân tạo… Nên việc tìm ra những phương pháp dạy giúp các em học tốt phần kiến thức này tôi thấy là vấn đề cần thiết. Sau khi nghiên cứu phần kiến thức của chủ đề 5 tôi đưa ra sáng kiến với đề tài: “Hướng dẫn các phương pháp giải bài tập Python trong Tin học 10”.
Tóm tắt nội dung tài liệu: Sáng kiến kinh nghiệm Hướng dẫn các phương pháp giải bài tập Python trong Tin học 10 Kết nối tri thức
SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN TRƯỜNG THPT 1-5 ĐỀ TÀI: HƯỚNG DẪN CÁC PHƯƠNG PHÁP GIẢI BÀI TẬP PYTHON TRONG TIN HỌC 10 Lĩnh vực: Tin học Tên tác giả 1: Nguyễn Trí Quyền Số điện thoại: 0989922226 Tác giả 2: Nguyễn Thị Thu Huyền Số điện thoại: 0986155995 Tổ chuyên môn: Toán – Tin Năm thực hiện: 2022 – 2023 Nghĩa Đàn, tháng 04 năm 2023 TÀI LIỆU THAM KHẢO [1]- Sách Giáo khoa Tin học10 (Kết nối tri thức với cuộc sống). NXB Giáo dục Việt Nam. [2]- Sách bài tập Tin học10 (Kết nối tri thức với cuộc sống). NXB Giáo dục Việt Nam. [3]- Sách giáo viên Tin học10 (Kết nối tri thức với cuộc sống). NXB Giáo dục Việt Nam. [4]- Các nguồn tài liệu khác từ mạng Internet. 2. TÍNH MỚI CỦA ĐỀ TÀI Python là ngôn ngữ lập trình lần đầu tiên được đưa vào giảng dạy tại trường THPT 1- 5, nên học sinh còn nhiều bỡ ngỡ khi mới được làm quen với ngôn ngữ lập trình Python. Những phương pháp mà tôi đưa ra giúp học sinh giải bài tập là mới. Nó góp phần giúp các em yêu thích môn học và có thành tích cao hơn với môn học, là tiền đề giúp các em yêu thích lập trình và tham dự các kỳ thi học sinh giỏi Tin học các cấp. Giúp các đồng nghiệp có thêm những phương pháp để vận dụng vào giảng dạy khi cần. PHẦN II. NỘI DUNG NGHIÊN CỨU 1. CƠ SỞ KHOA HỌC 1.1. Cơ sở lý luận Phương pháp dạy học chính là cách thức hoạt động giữa thầy và trò để nhằm đạt được mục tiêu dạy học xác định đồng thời phù hợp với nội dung và các điều kiện dạy học cụ thể. Một số phương pháp dạy học cụ thể: a. Phương pháp dạy học gợi mở - vấn đáp Là quá trình tương tác giữa giáo viên và học sinh được thực hiện thông qua hệ thống câu hỏi và câu trả lời tương ứng về một chủ đề nhất định được giáo viên đặt ra. Qua việc trả lời hệ thống câu hỏi dẫn dắt của giáo viên, học sinh thể hiện được suy nghĩ, ý tưởng của mình, từ đó khám phá và lĩnh hội đối tượng học tập. b. Phương pháp dạy học phát hiện và giải quyết vấn đề Là giáo viên tạo ra những tình huống có vấn đề, điều khiển học sinh phát hiện vấn đề, hoạt động tự giác, tích cực, chủ động, sáng tạo để giải quyết vấn đề và thông qua đó chiếm lĩnh tri thức, rèn luyện kĩ năng và đạt được những mục đích học tập khác. c. Phương pháp dạy học hợp tác trong nhóm nhỏ Là “Học sinh được phân chia thành từng nhóm nhỏ riêng biệt, chịu trách nhiệm về một mục tiêu duy nhất, được thực hiện thông qua nhiệm vụ riêng biệt của từng người. Các hoạt động cá nhân riêng biệt được tổ chức lại, liên kết hữu cơ với nhau nhằm thực hiện một mục tiêu chung”. Phương pháp hợp tác nhóm nhỏ được sử dụng nhằm giúp cho mọi người có thể tham gia chủ động vào quá trình học tập, tạo cơ hội cho các em có thể chia sẻ kiến thức, - Xây dựng hệ thống bài tập từ dễ đến khó, luyện tập được hết các mục tiêu của từng bài học. 2.2. Giải pháp cụ thể Trong quá trình giảng dạy tôi thấy với cấu trúc lặp for, cách sử dụng hàm trong Python là học sinh khó hiểu bài và vận dụng để làm tốt các bài tập. Tôi đã đưa các phương pháp dạy học đa dạng vào từng nội dung kiến thức để giúp các em dễ dàng tiếp thu kiến thức, đạt được mục tiêu bài học. 2.2.1 Một số ví dụ phương pháp hướng dẫn bài tập sử dụng “Câu lệnh lặp for” trong Python. Hoạt động 1: lệnh for, lệnh range - Mục Tiêu: Biết viết và sử dụng câu lệnh for - Nội dung: Lệnh range (n) trả lại vùng giá trị gồm n số từ 0 đến n-1 Cú pháp của lệnh lặp với số lần biết trước For trong Python như sau: For in range (n): - Sản phẩm: HS hoàn thành tìm hiểu kiến thức - Tổ chức thực hiện: Phương pháp: Hợp tác nhóm nhỏ, trò chơi (Trò chơi ô số may mắn) + GV: Giới thiệu trò chơi: Trò chơi gồm có nhiều ô số; trong các ô số có thể chứa câu hỏi hoặc những phần quà hấp dẫn. Lần lượt các nhóm sẽ được chọn một ô số bất kỳ. + HS: Tham gia trò chơi theo sự hướng dẫn của giáo viên. Phương pháp hoạt động nhóm và trò chơi giúp học sinh hứng thú trong tiết học, dễ ghi nhớ kiến thức và yêu thích môn học hơn. Để hoàn thành được mục tiêu bài học giáo viên cần chuẩn bị chu đáo về nội dung, cách thực hiện, quản lý và dẫn dắt các em. Hoạt động 2: Luyện tập lệnh lặp for và lệnh range () a) Mục tiêu: rèn luyện kĩ năng lập trình b) Nội dung: Hướng dẫn học sinh làm các bài tập sau: Bài 1: Viết chương trình tính tổng các số từ 1 đến 100 Bài 2: Viết chương trình tính tổng các số chẵn từ 1 đến 100 Bài 3: Viết chương trình nhập từ bàn phím số tự nhiên n và in ra kết quả là tổng sau: S = 13 + 23 +... + 푛3 Bài 4: Viết đoạn chương trình tính tích 1× 2 × 3 ×...× n với n được nhập vào từ bàn phím. Bài 5: Nhập số tự nhiên n từ bàn phím và đếm số các ước số thực sự của n. Ước số thực sự của n là số tự nhiên k < n và là ước của n. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức, làm thực hành được các bài tập d) Tổ chức thực hiện: Phương pháp: Dạy học trực quan, luyện tập thực hành Bài 1: Viết chương trình tính tổng các số từ 1 đến 100 Qua bài toán này giúp học sinh hiểu rõ hơn về cấu trúc lặp với số lần biết trước. Nắm vững cú pháp câu lệnh for. Bài 2: Viết chương trình tính tổng các số chẵn từ 1 đến 100 Cách 1: Bài 5: Nhập số tự nhiên n từ bàn phím và đếm số các ước số thực sự của n. Ước số thực sự của n là số tự nhiên k < n và là ước của n. Cách 1: (SGK) Hướng dẫn. Tương tự như chương trình ở nhiệm vụ 1, điểm khác là cần đếm số các ước số này và không tính n. Tạo một biển có tên count để đếm số các ước số thực sự của n. Cách 2: Thuật toán tối ưu hơn. Đếm các ước chỉ cần kiểm tra từ 1 đến phần nguyên căn bậc 2 của số đó. 2.2.2 Một số ví dụ phương pháp hướng dẫn bài tập sử dụng “dữ liệu kiểu xâu” trong Python. - Phép toán a in b: cho kết quả = True nếu a là xâu con của b, ngược lại thì kết quả là False - Thao tác cắt trích: s[start : end : step] lần lượt duyệt và trích các phần tử thuộc phạm vi từ vị trí start đến vị trí end-1 sau mỗi lần lấy một phần tử trong phạm vi thì di chuyển con trỏ với bước nhảy có độ rộng step. Các tham số trên có thể vắng mặt: nếu thiếu start thì mặc định là bắt đầu từ đầu xâu, thiếu end thì mặc định đến hết xâu, thiếu step thì mặc định là 1 - Hàm lấy độ dài xâu s: len(s); - Sao chép trong xâu s: ta sử dụng thao tác cắt trích xâu để gán cho biến khác. - Chèn và xóa xâu: Trong Python không cho phép chèn vào xâu. Ta có thể sử dụng hàm replace() hoặc thao tác cắt trích kết hợp ghép nối để xử lý. - Hàm tìm kiếm: tìm vị trí đầu tiên xuất hiện xâu x trong xâu s: s.find(x). Nếu xâu x không có trong xâu S thì kết quả = -1 - Hàm tìm kiếm ngược: tìm vị trí cuối cùng xuất hiện xâu x trong xâu s: s.rfind (x). Nếu xâu x không có trong xâu S thì kết quả = -1 - Hàm thay thế: s.replace (s1, s2) thay thế xâu con s1 của xâu s bởi xâu s2 trả về một xâu mới. - Hàm ord(ch): cho mã ASCII thập phân của ký tự ch. - Hàm chr(x): cho ký tự có mã ASCII là x - Hàm tạo xâu in hoa từ xâu s: s.upper() - Hàm tạo xâu in thường từ xâu s: s.lower() * Một số thao tác mở rộng với xâu trong Python: - Hàm tìm kiếm: s.find sub, [start], [end]), với ý nghĩa tìm xâu con sub trong xâu s, vị trí bắt đầu tìm kiếm là start và vị trí kết thúc tìm kiếm là end, nếu vắng start thì mặc định bắt đầu tìm là vị trí 0 (cận trái) và nếu vắng end thì mặc định vị trí kết thúc tìm kiếm là cuối xâu. Nếu không tìm thấy thì kết quả = -1 - s.rfind(x, [start], [end]): Tìm kiếm vị trí cuối cùng xuất hiện xâu x trong xâu s bắt đầu từ vị trí end-1, trở về vị trí start. - Hàm thay thế: s.replace(s1, s2) để thay thế phần xâu con s1 bằng một xâu s2, trả về một xâu mới. - Hàm capitalize() viết hoa ký tự đầu tiên trong xâu, các chữ còn lại viết thường Duyệt lần lượt các chỉ số của xâu ghép nối vào xâu kq (việc duyệt và ghép nối có thể có rất nhiều cách diễn đạt) Cách 2: Sử dụng phép toán ghép nối (+): Khởi tạo biến kq= “” Duyệt lần lượt các ký tự của xâu ghép nối vào xâu kq Cách 3: Sử dụng hàm đảo Xâu: dùng thao tác cắt trích s[start : end : step] Chương trình tham khảo viết bằng Python: * Ý tưởng: Thông qua các chương trình nhấn mạnh cho học sinh các thao tác đã được vận dụng trong bài toán này và ý nghĩa, kỹ thuật sử dụng các thao tác trong Python. - Hàm len (): lấy độ dài xâu s. - Phép cộng (+): Ghép nối xâu. - Thao tác Cắt trích: s[start : end : step] Ý nghĩa là, lần lượt duyệt và trích các phần tử thuộc phạm vi từ vị trí start đến vị trí end-1 sau mỗi lần lấy một phần tử trong phạm vi thì di chuyển con trỏ với bước nhảy có độ rộng step. Các tham số trên có thể vắng mặt: nếu thiếu start thì mặc định là bắt đầu từ đầu xâu, nếu thiếu end thì mặc định đến hết xâu, nếu thiếu step thì mặc định là 1. Bài 2: Thông qua bài tập này nhấn mạnh, khắc sâu ý nghĩa, kỹ thuật sử dụng các thao tác xử lý xâu như phép ghép nối xâu, cắt trích xâu và hàm tìm kiếm, thay thế: - Hàm tìm kiếm: + s.find(x, [start], [end]): Tìm kiếm vị trí đầu tiên xuất hiện xâu x trong xâu s. bắt đầu từ vị trí start, kết thúc ở vị trí end-1, nếu vắng start thì mặc định bắt đầu tìm là vị trí 0 và nếu vắng end thì mặc định vị trí kết thúc tìm kiếm là cuối xâu. Nếu việc tìm kiếm không có kết quả thì hàm trả về giá trị -1 + s.rfind(x, [start], [end]): Tìm kiếm vị trí cuối cùng xuất hiện xâu x trong xâu s bắt đầu từ vị trí end-1, trở về vị trí start. - Hàm thay thế: + s.replace(s1, s2) để thay thế phần xâu con s1 bằng một xâu mới s2. Bài 3: Viết chương trình nhập vào từ bàn phím xâu ký tự s, tìm và thay thế tất cả các cụm ký tự s1 thành s2. Ví dụ: Xâu nhập vào: s = “anh oi, anh dang o đau” Xâu kết quả: s1= “anh”; s2= “em”; S = “em oi, em dang o đau” Ý tưởng giải thuật: Cách 1: Sử dụng thao tác cắt trích, so sánh và ghép nối để thực hiện ý tưởng trên. Cách 2: Dùng hàm replace để thực hiện. Chương trình tham khảo bằng Python: Ngoài ra, trong Python ta có thể sử dụng lệnh count để đếm số lần xuất hiện không chồng lấn của một ký tự hay xâu con bên tròn xâu lớn. Chương trình tham khảo trong Python (cách 2) sau được viết với ý tưởng này. Chương trình tham khảo: Chương trình viết bằng Python (cách 1) Chương trình viết bằng Python (cách 2) Ý tưởng: Thông qua bài tập này nhấn mạnh cách thức sử dụng bảng mã ASCII, cách chuyển đổi qua lại giữa mã thập phân và ký tự, kỹ thuật đếm phân phối trên mảng với kiểu chỉ số tương ứng các ký tự. Ngoài ra, cần nhấn mạnh lệnh khởi tạo toàn bộ phần tử của mảng = 0. Lưu ý thêm lệnh ý nghĩa và cách sử dụng lệnh count trong Python. 2.2.3 Một số ví dụ phương pháp hướng dẫn bài tập sử dụng “Hàm trong Python” trong Python. Để các em biết được chương trình con dạng hàm; biết cách tạo hàm; biết viết chương trình có sử dụng chương trình con tôi chú trọng các hoạt động chính và phương pháp như sau: Hoạt động 1: Tìm hiểu kiến thức cơ bản về hàm: - Mục Tiêu: Biết cú pháp chương trình con dạng hàm trong Python (Hình ảnh thực tế dạy trên lớp là sản phẩm các em đã hoàn thành) Hoạt động 2: Biết cách tạo hàm: - Mục Tiêu: Biết viết hàm trong Python - Nội dung: Hướng dẫn các bài tập: Bài 1: Viết hàm yêu cầu người dùng nhập họ tên rồi đưa ra lời chào? Bài 2: Viết hàm tính luỹ thừa của 2 số ab (0<a,b<=106) Bài 3: Viết hàm prime(n) với tham số là số tự nhiên n và trả lại true nếu n là số nguyên tố, trả lại false nếu n không phải là số nguyên tố. Bài 4: Viết hàm cp(n) với tham số là số tự nhiên n và trả về true nếu n là số chính phương, trả lại false nếu n không phải số chính phương. Bài 5: Viết hàm tonguoc(n) trả về tổng ước của số nguyên n. (Ví dụ n=6 có tổng ước là 1+2+3+6=12) - Sản phẩm: Hs hoàn thành tìm hiều kiến thức, biết tạo các hàm đơn giản. - Tổ chức thực hiện: Cách 2: Hướng dẫn: Số nguyên tố là số tự nhiên lớn hơn 1, không có ước nào ngoài 1 và chính nó. Để thiết lập hàm prime(n) chúng ta cần tính số ước thực sự của n. Thực tế để tính ước của n ta chỉ cần tính số ước thực sự của n từ 1 đến phần nguyên căn bậc 2 của n. Bài 4: Viết hàm cp(n) với tham số là số tự nhiên n và trả về true nếu n là số chính phương, trả lại false nếu n không phải số chính phương. Hướng dẫn: Số chính phương là căn bậc 2 của số đó là số nguyên Bài 5: Viết hàm tonguoc(n) trả về tổng ước của số nguyên n. (Ví dụ n=6 có tổng ước là 1+2+3+6=12) Cách 1: Cách 2: Giáo viên hướng dẫn thuật toán tối ưu hơn cách 1: 10A6 - 43 43 % 42 % 9 % 6% học sinh Thông qua 2 bài kiểm tra trên cho thấy rằng sau khi áp dụng sáng kiến chất lượng học sinh được nâng lên rõ rệt. Đặc biệt kết quả này được thể hiện rõ ràng hơn ở hai lớp 10A1 và 10A8 với chất lượng đầu vào tương đương nhau, tỉ lệ học sinh đạt điểm cao chênh lệch rất lớn giữa lớp thực nghiệm 10A1, 10A8 với lớp đối chứng 10A3, 10A6. PHẦN III. KẾT LUẬN VÀ KIẾN NGHỊ 1. QUÁ TRÌNH NGHIÊN CỨU Từ thực tiễn dạy học tại trường, từ những băn khoăn trăn trở để đưa ra những phương pháp dạy học dễ hiểu nhất cho học sinh. Tôi đã nghiên cứu kỹ sách giáo khoa Tin học 10, sách bài tập Tin học 10, sách giáo viên tin học 10 (bộ sách kết nối tri thức); các sách hướng dẫn về dạy lập trình Python. Vận dụng kiến thức được tập huấn về phương pháp giảng dạy mới. Tôi đã xây dựng sáng kiến “Hướng dẫn các phương pháp giải bài tập Python trong Tin học 10”. 2. Ý NGHĨA CỦA ĐỀ TÀI Đề tài đã giúp tôi giải quyết những băn khoăn và khó khăn khi bắt đầu dạy chương trình mới cho học sinh. Giúp giáo viên tin học có thêm những phương pháp trong các bài dạy lập trình ngôn ngữ lập trình bậc cao. Các em học sinh dễ tiếp cận kiến thức, yêu thích môn học và có kết quả tốt. Chất lượng bộ môn Tin học được nâng cao, là tiền đề giúp các em yêu thích lập trình hơn có thể tham các kỳ thi chọn học sinh giỏi Tin học. 3. ĐỀ XUẤT VÀ KIẾN NGHỊ Tôi sẽ cố gắng hoàn thiện đề tài để có thể ứng dụng rộng rãi, sử dụng đưa vào giáo án giảng dạy chung cho nhóm chuyên môn. Để góp phần nâng cao chất lượng giảng dạy môn Tin ở trường THPT tôi xin đề xuất một số ý kiến như sau: * Đối với nhà trường: Cần quan tâm hơn đối với bộ môn Tin học, tạo mọi điều kiện về cơ sở vật chất và phương tiện dạy học đáp ứng đầy đủ điều kiện để giáo viên có thể áp dụng các
File đính kèm:
- sang_kien_kinh_nghiem_huong_dan_cac_phuong_phap_giai_bai_tap.docx
- Sáng kiến kinh nghiệm Hướng dẫn các phương pháp giải bài tập Python trong Tin học 10 Kết nối tri thứ.pdf