6 Chương II: MỘT SỐ GIẢI PHÁP ÁP DỤNG BÀI TẬP TRÒ CHƠI TRONG GIẢNG DẠY LẬP TRÌNH PYTHON ĐỂ PHÁT TRIỂN TƯ DUY THUẬT TOÁN VÀ NÂNG CAO HỨNG THÚ HỌC TẬP CHO HỌC SINH .... Xuất phát từ những
Trang 1SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN
_
SÁNG KIẾN KINH NGHIỆM
ỨNG DỤNG BÀI TẬP TRÒ CHƠI TRONG GIẢNG DẠY LẬP TRÌNH PYTHON ĐỂ PHÁT TRIỂN TƯ DUY THUẬT TOÁN VÀ NÂNG CAO HỨNG THÚ HỌC TẬP
CHO HỌC SINH
LĨNH VỰC: TIN HỌC
Năm học 2024 - 2025
Trang 2
SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN TRƯỜNG THPT YÊN THÀNH 2 _
SÁNG KIẾN KINH NGHIỆM
ỨNG DỤNG BÀI TẬP TRÒ CHƠI TRONG GIẢNG DẠY LẬP TRÌNH PYTHON ĐỂ PHÁT TRIỂN TƯ DUY THUẬT TOÁN VÀ NÂNG CAO HỨNG THÚ HỌC TẬP
CHO HỌC SINH
LĨNH VỰC: TIN HỌC
Tác giả: Nguyễn Thị Thủy - 0978412473
Trang 3Năm học 2024 - 2025
Trang 4PHỤ LỤC
Phần I: ĐẶT VẤN ĐỀ 1
1.Lý do chọn đề tài: 1
2 Mục tiêu nghiên cứu 2
3 Đối tượng và phạm vi nghiên cứu 2
3.1 Đối tượng nghiên cứu 2
3.2 Phạm vi nghiên cứu 3
4 Phương pháp nghiên cứu 3
5 Tính mới của đề tài 3
Phần II: NỘI DUNG NGHIÊN CỨU 5
Chương I: CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN CỦA ĐỀ TÀI 5
1 Cơ sở lý luận và thực tiễn 5
1.1 Cơ sở lý luận 5
1.2Cơ sở thực tiễn 6
Chương II: MỘT SỐ GIẢI PHÁP ÁP DỤNG BÀI TẬP TRÒ CHƠI TRONG GIẢNG DẠY LẬP TRÌNH PYTHON ĐỂ PHÁT TRIỂN TƯ DUY THUẬT TOÁN VÀ NÂNG CAO HỨNG THÚ HỌC TẬP CHO HỌC SINH 8
I Xây dựng bài tập trò chơi theo từng khái niệm 8
1 Trò chơi đoán số với câu lệnh rẽ nhánh 8
2 Trò chơi vẽ hình đa giác với vòng lặp for 10
3 Trò chơi thử thách đoán số với vòng lặp while 13
4 Trò chơi mô phỏng giỏ hàng với kiểu dữ liệu danh sách 17
5 Trò chơi đoán từ gốc với kiểu xâu kí tự 21
II Tổ chức làm bài tập theo nhóm tại lớp và giao bài tập về nhà 24
1 Tổ chức làm bài tập theo nhóm tại lớp 24
1.1 Hoạt động nhóm với trò chơi vẽ hình kim tự tháp 24
1.2 Hoạt động nhóm với trò chơi máy ATM ảo 26
1.3 Hoạt động nhóm với trò chơi vẽ bông hoa sáng tạo 28
2 Giao bài tập về nhà 30
Trang 52.1 Trò chơi đoán số với câu lệnh rẽ nhánh mở rộng 30
2.2 Trò chơi phiêu lưu hang động 31
2.3 Trò chơi vẽ hình sáng tạo với thư viện Turtle 35
III.Ứng dụng công nghệ học lập trình trực tuyến qua các trò chơi thử thách CodinGame…… 38
3.1 Giới thiệu về ứng dụng học lập trình trực tuyến CodinGame 38
3.2 Cách CodinGame hỗ trợ học tập 38
3.3 Lợi ích khi sử dụng CodinGame trong giảng dạy 38
3.4 Ứng dụng trong lớp học 40
Chương III: THỰC NGHIỆM SƯ PHẠM 44
3.1 Mục đích thực nghiệm 44
3.2 Đối tượng thực nghiệm 44
3.3 Nội dung thực nghiệm 45
3.4 Phương pháp thực nghiệm 45
3.5 Kết quả thực nghiệm 45
Phần III: KẾT LUẬN 50
1 Kết luận 50
2 Kiến nghị 50
Trang 61
Phần I ĐẶT VẤN ĐỀ
1 Lí do chọn đề tài
Python là một trong những ngôn ngữ lập trình phổ biến và dễ tiếp cận nhất, phù hợp để giảng dạy trong nhà trường Tuy nhiên, hầu hết học sinh đều mới làm quen với lập trình trên máy tính nên gặp rất nhiều khó khăn trong việc tiếp cận lập trình
do cảm thấy khô khan, trừu tượng và khó hiểu Học sinh thường chưa có kỹ năng phân tích vấn đề và chưa biết cách xây dựng các bước giải quyết bài toán một cách logic nhiều học sinh dễ nản khi gặp lỗi hoặc không hiểu cách chương trình hoạt động Học sinh thường học Python qua các bài tập đơn giản như tính toán, nhập xuất
dữ liệu, nhưng chưa có cơ hội để vận dụng kiến thức vào các bài toán thực tế hoặc các dự án thú vị
Bên cạnh đó, cách dạy lập trình truyền thống, chủ yếu dựa vào bài tập lý thuyết
và hướng dẫn trực tiếp, chưa thực sự tạo được sự hứng thú và tính chủ động trong học tập Do đó, cần có một phương pháp dạy học sáng tạo hơn để giúp học sinh tiếp cận lập trình một cách tự nhiên, hứng thú và hiệu quả hơn
Trong thời đại công nghệ số, lập trình trở thành một kỹ năng quan trọng, không chỉ dành cho các chuyên gia công nghệ mà còn là công cụ phát triển tư duy logic và sáng tạo cho học sinh Theo nhiều báo cáo về thị trường lao động, ngành Công nghệ Thông tin (CNTT) đang có nhu cầu tuyển dụng rất cao với mức lương hấp dẫn Các doanh nghiệp hiện nay không chỉ tìm kiếm nhân sự có kỹ năng lập trình mà còn ưu tiên những người có tư duy thuật toán tốt, khả năng sáng tạo và giải quyết vấn đề một cách linh hoạt Nhận thức được cơ hội nghề nghiệp rộng mở này, nhiều học sinh
đã định hướng theo ngành CNTT ngay từ sớm, đặc biệt là lựa chọn học lập trình để
có nền tảng vững chắc khi thi vào các ngành như Khoa học Máy tính, Kỹ thuật phần mềm, Trí tuệ nhân tạo (AI) và Phân tích dữ liệu (Data Science) Python là một trong những ngôn ngữ lập trình phổ biến nhất hiện nay, được sử dụng rộng rãi trong nhiều lĩnh vực như lập trình web, khoa học dữ liệu, trí tuệ nhân tạo và tự động hóa Do đó, việc trang bị kiến thức lập trình Python cho học sinh ngay từ khi còn ngồi trên ghế nhà trường là một bước đi cần thiết để giúp các em có lợi thế trong tương lai
Xuất phát từ những lí do trên, tôi chọn đề tài: “Ứng dụng bài tập trò chơi trong giảng dạy lập trình Python để phát triển tư duy thuật toán và nâng cao hứng thú học tập cho học sinh”
Khi học lập trình thông qua các bài tập trò chơi, học sinh không chỉ rèn luyện
tư duy thuật toán mà còn có cơ hội áp dụng kiến thức vào các tình huống thực tế, từ
đó nâng cao khả năng giải quyết vấn đề
Phương pháp này mang lại nhiều lợi ích, bao gồm:
Trang 72
- Giúp học sinh học lập trình một cách tự nhiên: Thay vì chỉ học cú pháp, học sinh
có thể áp dụng kiến thức về biến, vòng lặp, hàm, danh sách…vào việc tạo ra các trò chơi đơn giản, từ đó nâng cao tư duy thuật toán
- Tăng tính tương tác và hứng thú học tập: Khi lập trình một trò chơi, học sinh sẽ thấy ngay kết quả của mình trên màn hình, từ đó có động lực để thử nghiệm và sáng tạo hơn Học sinh sẽ hào hứng hơn khi có thể lập trình các trò chơi của riêng mình, thay vì chỉ làm các bài tập lý thuyết khô khan
- Phát triển tư duy thuật toán: Trò chơi yêu cầu học sinh phân tích, thiết kế và tối ưu hóa thuật toán để tạo ra một sản phẩm hoàn chỉnh Trò chơi viết ra có thể phản hồi ngay lập tức về kết quả bài làm, giúp học sinh nhanh chóng nhận ra các sai sót và tìm cách sửa chữa ngay tức thì, như thế học sinh sẽ học hỏi được nhiều kiến thức hơn trong quá trình tìm tòi, sửa lỗi và hiểu sâu hơn về vấn đề gặp phải
- Xây dựng kỹ năng làm việc nhóm: Một số trò chơi có thể lập trình theo nhóm, giúp học sinh học cách giao tiếp, hợp tác và chia sẻ ý tưởng
Tính cấp thiết của đề tài:
Việc ứng dụng bài tập trò chơi vào giảng dạy Python không chỉ giúp học sinh tiếp thu kiến thức lập trình một cách dễ dàng hơn mà còn nâng cao tư duy thuật toán – một kỹ năng quan trọng không chỉ trong lập trình mà còn trong nhiều lĩnh vực khác Đề tài này không chỉ có ý nghĩa thực tiễn mà còn góp phần thúc đẩy đổi mới phương pháp dạy học lập trình trong nhà trường, giúp học sinh chuẩn bị tốt hơn cho những thách thức trong tương lai
Chính vì những lý do trên, việc nghiên cứu và ứng dụng bài tập trò chơi trong giảng dạy Python để phát triển tư duy thuật toán và nâng cao hứng thú học tập cho học sinh là một hướng đi cần thiết và có ý nghĩa quan trọng
2 Mục tiêu nghiên cứu
Đề tài nhằm nghiên cứu và đề xuất phương pháp giảng dạy lập trình Python
thông qua bài tập trò chơi, giúp học sinh phát triển tư duy thuật toán và nâng cao hứng thú học tập Đề tài hướng đến việc giúp học sinh tiếp cận lập trình một cách dễ
hiểu, thực tiễn và sinh động hơn qua các bài tập trò chơi, từ đó nâng cao hiệu quả học tập và phát triển khả năng tư duy logic, sáng tạo
3 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
- Chương trình giáo dục phổ thông mới 2018
- Học sinh lớp 10A3, 10A4 trường THPT Yên Thành 2
- Phương pháp giảng dạy lập trình Python thông qua bài tập trò chơi nhằm phát triển tư duy thuật toán và nâng cao hứng thú học tập cho học sinh
Trang 83
3.2 Phạm vi nghiên cứu
- Về nội dung: Chủ đề 5 giải quyết bài toán với sự trợ giúp của máy tính sách tin học lớp 10 – Kết nối tri thức
- Về đối tượng: Học sinh lớp 10 đang học lập trình Python
- Về thời gian: Nghiên cứu được thực hiện trong năm học 2023- 2024
4 Phương pháp nghiên cứu
Để đạt được mục tiêu nghiên cứu, đề tài sử dụng các phương pháp sau:
4.1 Phương pháp nghiên cứu lý thuyết
- Tìm hiểu các tài liệu, giáo trình về lập trình Python, tư duy thuật toán và phương pháp giảng dạy Tin học
- Nghiên cứu các tài liệu khoa học về ứng dụng trò chơi trong giáo dục
- Phân tích các nghiên cứu trước đây liên quan đến dạy học lập trình bằng phương pháp trò chơi
4.2 Phương pháp khảo sát, điều tra
- Xây dựng bảng câu hỏi khảo sát học sinh về mức độ hứng thú, khó khăn khi học lập trình Python
- Thu thập ý kiến phản hồi của học sinh về hiệu quả của phương pháp giảng dạy thông qua trò chơi
- Xây dựng bảng câu hỏi khảo sát giáo viên về những khó khăn khi dạy lập trình
Python
4.3 Phương pháp thực nghiệm sư phạm
- Thiết kế một số bài tập trò chơi trong lập trình Python
- Thử nghiệm giảng dạy trên một lớp học để đánh giá hiệu quả của phương pháp
- So sánh kết quả học tập và mức độ phát triển tư duy thuật toán giữa nhóm học sinh
có sử dụng bài tập trò chơi trong giảng dạy và nhóm học sinh học theo phương pháp thông thường
4.4 Phương pháp phân tích, tổng hợp và đánh giá
- Phân tích dữ liệu thu thập được từ khảo sát, thực nghiệm để rút ra nhận xét
- Đánh giá tác động của phương pháp này đối với tư duy thuật toán và hứng thú học tập của học sinh
- Đề xuất hướng phát triển và hoàn thiện phương pháp giảng dạy này trong tương lai
Trang 94
5 Tính mới của đề tài
- Thay vì chỉ sử dụng các bài tập lập trình thông thường, đề tài tập trung vào thiết
kế và ứng dụng bài tập trò chơi có chủ đích để rèn luyện tư duy thuật toán cho học sinh
- Không chỉ dừng lại ở việc làm cho bài học thú vị hơn, mà còn giúp học sinh rèn luyện khả năng giải quyết vấn đề, tư duy logic và sáng tạo thông qua các trò chơi lập trình
- Đề tài hướng đến việc biến học sinh từ người học thụ động sang chủ động khám phá kiến thức thông qua trò chơi
- Các bài tập trò chơi khuyến khích học sinh tự tìm tòi, thử nghiệm và rút kinh nghiệm, giúp quá trình học lập trình trở nên tự nhiên hơn
- Phương pháp giảng dạy lập trình hiện nay chủ yếu dựa trên bài giảng lý thuyết
và bài tập cơ bản Đề tài này đưa ra cách tiếp cận mới, giúp học sinh tiếp cận lập trình một cách trực quan, dễ hiểu và hấp dẫn hơn
Trang 105
Phần II NỘI DUNG NGHIÊN CỨU Chương I: CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN CỦA ĐỀ TÀI
1 Cơ sở lý luận và thực tiễn
1.1 Cơ sở lý luận
Tư duy thuật toán là khả năng phân tích vấn đề và tìm ra cách giải quyết bằng cách sử dụng các bước logic (thuật toán) để giải quyết vấn đề đó một cách hiệu quả Đây là nền tảng cốt lõi của lập trình, giúp học sinh giải quyết các bài toán phức tạp một cách có hệ thống Tư duy thuật toán không chỉ quan trọng trong lập trình mà còn hữu ích trong nhiều lĩnh vực khác của cuộc sống
Trong giáo dục, tư duy thuật toán giúp học sinh:
- Xây dựng và hiểu các thuật toán từ cơ bản đến nâng cao
- Phát triển khả năng phân tích, suy luận và tối ưu hóa lời giải
- Rèn luyện kỹ năng tư duy logic và sáng tạo
Python là một ngôn ngữ lập trình phổ biến với cú pháp đơn giản, phù hợp cho việc giảng dạy tư duy thuật toán Tuy nhiên, nhiều học sinh gặp khó khăn trong việc tiếp cận và áp dụng các thuật toán Do đó, việc sử dụng bài tập trò chơi để giảng dạy có thể giúp học sinh tiếp thu kiến thức một cách tự nhiên và hứng thú hơn
Theo Malone & Lepper (1987), trò chơi trong giáo dục (game-based learning
- GBL) là phương pháp giảng dạy sử dụng trò chơi để tạo môi trường học tập hấp dẫn, giúp học sinh tiếp thu kiến thức và phát triển kỹ năng một cách tự nhiên.Sự kết hợp giữa lập trình và trò chơi không chỉ giúp học sinh rèn luyện tư duy thuật toán
mà còn tạo động lực học tập mạnh mẽ thông qua các yếu tố như thử thách, phần thưởng và sự tương tác
Các nghiên cứu về phương pháp học tập thông qua trò chơi cho thấy rằng học sinh có thể học tập hiệu quả hơn khi:
- Học qua trải nghiệm: Thay vì học lý thuyết khô khan, học sinh có thể áp dụng kiến thức để giải quyết vấn đề thực tế trong trò chơi
- Nhận phản hồi tức thì: Khi chơi game, học sinh nhận được phản hồi ngay lập tức về kết quả của mình, giúp họ điều chỉnh và cải thiện thuật toán nhanh hơn
- Tăng cường động lực học tập: Trò chơi kích thích sự tò mò, tinh thần cạnh tranh và niềm vui khi chinh phục thử thách, giúp học sinh duy trì động lực học tập
Nhiều nghiên cứu trước đây đã chứng minh tính hiệu quả của phương pháp trò chơi hóa trong giáo dục lập trình:
- Papert (1980) đề xuất phương pháp học lập trình thông qua trò chơi, giúp học
Trang 116
sinh rèn luyện tư duy logic một cách tự nhiên
- Gee (2007) cho rằng trò chơi giúp kích thích tư duy phản biện và cải thiện khả
năng giải quyết vấn đề
Dựa trên những nghiên cứu này, tôi thấy đề tài này có tính khả thi cao và có thể được
áp dụng thực tế trong giảng dạy Python tại trường học
1.2 Cơ sở thực tiễn
a Thực trạng dạy và học lập trình Python ở phổ thông
Hiện nay ngôn ngữ lập trình Python là một trong những ngôn ngữ lập trình phổ biến và được đưa vào giảng dạy tại nhiều trường học trên thế giới cũng như ở Việt Nam Tuy nhiên, thực tế giảng dạy lập trình Python trong môi trường phổ thông còn gặp một số vấn đề:
- Học sinh gặp khó khăn trong tư duy thuật toán: Nhiều học sinh tiếp cận lập trình Python nhưng chưa có tư duy giải quyết vấn đề bài bản, dẫn đến khó khăn trong việc viết thuật toán
- Phương pháp giảng dạy còn nặng lý thuyết: Một số giáo viên giảng dạy Python theo cách truyền thống (giới thiệu cú pháp, giải bài tập theo mẫu), chưa tạo được sự hấp dẫn và khuyến khích học sinh tư duy sáng tạo
- Thiếu động lực học tập: Học sinh dễ chán nản nếu không thấy được ứng dụng thực tế của lập trình, đặc biệt với những em chưa có hứng thú với công nghệ
b Vai trò của trò chơi trong giáo dục và giảng dạy lập trình
- Nhiều nghiên cứu cho thấy rằng trò chơi giúp cải thiện khả năng tiếp thu kiến thức và nâng cao động lực học tập của học sinh
- Trong bối cảnh giáo dục STEM và chuyển đổi số, phương pháp game-based learning (học tập thông qua trò chơi) và gamification (trò chơi hóa) đang ngày càng được áp dụng rộng rãi
- Lập trình và trò chơi có nhiều điểm chung Cả hai đều đòi hỏi tư duy logic, sáng tạo và thử nghiệm liên tục Các trò chơi có thể mô phỏng bài toán thực tế, giúp học sinh hiểu sâu hơn về lập trình.Việc lập trình trò chơi có thể giúp học sinh hiểu
rõ cách thức hoạt động của thuật toán (ví dụ: vòng lặp, điều kiện, danh sách, đệ quy, ) một cách trực quan Nhờ đó, việc sử dụng bài tập trò chơi trong dạy Python không chỉ giúp học sinh nắm bắt kiến thức mà còn rèn luyện tư duy thuật toán hiệu quả hơn
c.Thực tiễn ứng dụng bài tập trò chơi trong giảng dạy Python tại Việt Nam
Trang 127
- Tại Việt Nam, việc dạy lập trình Python trong giáo dục phổ thông mới được triển khai ở một số trường chuyên và các chương trình đào tạo STEM Tuy nhiên, một số trung tâm đào tạo lập trình cho trẻ em như MindX, Teky, Algorithmics đã áp dụng mô hình học lập trình thông qua trò chơi và thu được hiệu quả tích cực Điều này cho thấy việc ứng dụng bài tập trò chơi trong giảng dạy Python hoàn toàn khả thi và có tiềm năng mở rộng trong giáo dục phổ thông
d Nhu cầu thực tiễn
- Kỹ năng lập trình và tư duy thuật toán ngày càng trở nên quan trọng trong thời đại công nghệ số Học sinh cần được trang bị những kỹ năng này để đáp ứng yêu cầu của thị trường lao động
e Sự phù hợp của đề tài với thực tiễn giáo dục
- Học sinh cần một phương pháp học lập trình thú vị hơn thay vì chỉ tiếp cận Python theo cách học thuộc cú pháp
- Việc ứng dụng bài tập trò chơi vào giảng dạy Python là hoàn toàn khả thi, đã được triển khai thành công tại nhiều quốc gia và đang bắt đầu được áp dụng tại Việt Nam
- Python là ngôn ngữ lập trình phù hợp, cung cấp nhiều thư viện có sẵn và công
cụ hỗ trợ lập trình game nên học sinh dễ dàng viết được những trò chơi đơn giản
- Đề tài này sẽ đóng góp vào việc đổi mới phương pháp dạy lập trình trong nhà trường, tạo ra một môi trường học tập sáng tạo, kích thích tư duy và tăng hứng thú học tập cho học sinh
Với sự phát triển mạnh mẽ của giáo dục STEM và lập trình trong nhà trường, đề tài này có tính ứng dụng cao và có thể triển khai rộng rãi trong giảng dạy ngôn ngữ lập trình Python
Trang 138
Chương II MỘT SỐ GIẢI PHÁP ÁP DỤNG BÀI TẬP TRÒ CHƠI
TRONG GIẢNG DẠY LẬP TRÌNH PYTHON ĐỂ PHÁT TRIỂN TƯ DUY THUẬT TOÁN VÀ NÂNG CAO HỨNG THÚ HỌC TẬP CHO HỌC SINH
I Xây dựng bài tập trò chơi theo từng khái niệm
Mục tiêu:
- Giúp học sinh hiểu và vận dụng các khái niệm cơ bản của Python thông qua các bài tập trò chơi Thay vì trình bày lý thuyết một cách khô khan, giáo viên có thể lồng ghép kiến thức vào trò chơi để học sinh tự khám phá quy tắc lập trình
- Phát triển tư duy thuật toán qua việc thực hành và mở rộng trò chơi
- Tăng hứng thú học tập bằng cách biến các bài học khô khan thành các trò chơi thú
vị và gần gũi
1 Trò chơi “đoán số” với câu lệnh rẽ nhánh
Bước 1: Đưa ra tình huống thực tế
Mô tả trò chơi:
Máy tính chọn một số ngẫu nhiên từ 1 đến 100 Người chơi sẽ nhập số để đoán Chương trình cần phản hồi với 3 trường hợp:
1 Nếu số đoán nhỏ hơn số bí mật → báo 'Số bạn đoán nhỏ hơn!'
2 Nếu số đoán lớn hơn số bí mật → báo 'Số bạn đoán lớn hơn!'
3 Nếu đoán đúng → báo 'Chúc mừng! Bạn đã đoán đúng.'
Đặt vấn đề:
Vậy làm sao để chương trình biết được khi nào cần hiển thị thông báo nào?
Bước 2: Khuyến khích học sinh đề xuất giải pháp
Đặt câu hỏi gợi mở:
1 Nếu nhập số 50, làm sao chương trình biết số đó lớn hơn hay nhỏ hơn số bí mật?
2 Chúng ta cần kiểm tra điều kiện gì?
Khuyến khích học sinh thảo luận và đưa ra ý kiến, từ đó gợi mở về việc cần kiểm tra các điều kiện so sánh như <, >, ==
Bước 3: Giới thiệu câu lệnh điều kiện
Trang 149
• Trình bày cú pháp cơ bản của câu lệnh điều kiện
• Giới thiệu thêm elif: Dùng elif để kiểm tra nhiều điều kiện mà không cần phải lồng if, giúp chương trình ngắn gọn hơn
• Thảo luận với học sinh: Khi nào sử dụng if, khi nào sử dụng elif và else để chương trình có thể phản hồi chính xác với mỗi trường hợp
Bước 4: Viết chương trình đơn giản
Cho học sinh quan sát và phân tích đoạn chương trình sau:
Giáo viên giải thích từng điều kiện và cách chương trình kiểm tra theo thứ tự từ if
→ elif → else
Cho học sinh chạy thử chương trình để trải nghiệm kết quả
Bước 5: Mở rộng và xử lý các tình huống đặc biệt
Trang 1510
Đây là hai chương trình của trường hợp mở rộng:
2 Trò chơi “vẽ hình đa giác” với vòng lặp for
2.1 Giới thiệu thư viện turtle:
Thư viện Turtle trong Python là một công cụ hữu ích để vẽ đồ họa cơ bản Các câu lệnh trong thư viện này chủ yếu là các từ tiếng Anh đơn giản, gần gũi với chức năng của chúng, giúp người học dễ nhớ và áp dụng Khi giáo viên giới thiệu một số lệnh cơ bản, học sinh có thể nhanh chóng nắm bắt và sử dụng thư viện Turtle một cách dễ dàng và hiệu quả
Khi lập trình với Turtle, bạn điều khiển "con rùa" này để vẽ các hình dạng khác nhau bằng cách di chuyển, xoay, và điều chỉnh các thuộc tính vẽ Một số lệnh cơ bản
để điều khiển con rùa:
• forward(x): di chuyển rùa về phía trước với khoảng cách x
Trang 1611
• backward(y): di chuyển rùa về phía sau với khoảng cách y
• left( a): quay con rùa sang bên trái 1 góc a độ
• right(b): quay con rùa sang bên phải 1 góc b độ
• goto(x,y): Di chuyển con rùa đến tọa độ x, y
• circle(r, c): Vẽ 1 vòng tròn bán kính r, cung c
Thay đổi kích thước của bút
• pensize(): Tăng giảm độ dày của bút
• penup(): nhấc bút lên dừng vẽ
• pendown(): Hạ bút xuống để vẽ
Thay đổi màu rùa và màu bút
• fillcolor(): thay đổi màu của rùa
• pencolor(): thay đổi màu của bút
• Mở bài bằng câu hỏi:
o Nếu muốn vẽ một hình vuông, bạn cần di chuyển như thế nào?
o Nếu vẽ hình vuông mà lặp lại 4 lần động tác: tiến – quay, liệu có thể dùng vòng lặp không?
Bước 2: Khuyến khích học sinh đề xuất giải pháp
Câu hỏi gợi mở:
1 Nếu muốn vẽ 4 cạnh giống nhau, có cách nào giúp rút ngắn số lệnh không?
2 Nếu mỗi lần đều cần quay 90 độ, làm thế nào để lặp lại thao tác này?
3 Chúng ta cần lặp lại bao nhiêu lần để vẽ xong hình vuông?
Khuyến khích học sinh thử đoán cách sử dụng vòng lặp để lặp lại thao tác
Bước 3: Giới thiệu chương trình vẽ hình vuông với vòng lặp for và thư viện Turtle
Trang 1712
• Giải thích từng câu lệnh:
o turtle.forward(100): Rùa tiến 100 bước
o turtle.right(90): Rùa quay phải 90 độ
o range(4): Lặp 4 lần để vẽ đủ 4 cạnh của hình vuông
• Hỏi học sinh:
o Nếu muốn vẽ hình vuông nhỏ hơn hoặc lớn hơn thì cần sửa chỗ nào?
o Nếu muốn vẽ hình chữ nhật kích thước 170 x 100 thì cần điều chỉnh thế nào?
Dưới đây là chương trình vẽ hình chữ nhật, Nếu muốn tô màu hình chữ nhật, ta thêm lệnh fillcolor
Bước 4: Mở rộng và xử lý các tình huống đặc biệt
Mở rộng vấn đề:
Làm thế nào để vẽ một đa giác có số cạnh do người dùng nhập từ bàn phím? Chúng
ta cần điều chỉnh chương trình như thế nào?
Giáo viên gợi ý để học sinh suy luận về góc quay:
- Vẽ hình chữ nhật quay 360/4 =90 độ
Trang 1813
- Vẽ hình tam giác quay 360/3 = 120 độ
- Vẽ hình ngũ giác quay 360/5 = 72 độ
- Vẽ hình đa giác bất kì thì góc quay = 360/ số cạnh
Chương trình vẽ hình đa giác với số cạnh nhập vào từ bàn phím
Sau khi hoàn thành bài tập, tôi yêu cầu học sinh chia sẻ những gì đã học được, những khó khăn gặp phải và cách giải quyết Hầu hết các em đã áp dụng tốt vòng lặp for để vẽ hình đa giác, tuy nhiên, vẫn cần chú ý hơn đến việc tính toán góc quay sao cho chính xác Tôi sẽ tiếp tục hỗ trợ để giúp học sinh hiểu rõ hơn về cách tính toán góc quay khi vẽ các hình phức tạp hơn
Ngoài vẽ hình đa giác, vòng lặp for còn có thể áp dụng vào nhiều trò chơi khác, giúp học sinh rèn luyện tư duy thuật toán
3 Trò chơi “thử thách đoán số” với vòng lặp while
Bước 1: Đặt vấn đề thực tế
Nhắc lại trò chơi “Đoán số” mà học sinh đã làm trước đó bằng câu lệnh if-else, trong
đó người chơi chỉ đoán được một lần
Đặt câu hỏi gợi mở:
• Nếu đoán sai thì sao?
• Làm thế nào để máy tính tiếp tục yêu cầu đoán số cho đến khi đoán đúng?
• Chúng ta có thể làm cho trò chơi trở nên thú vị hơn không?
Bước 2: Khuyến khích học sinh đề xuất giải pháp
Trang 1914
Giáo viên yêu cầu học sinh suy nghĩ và đưa ra ý tưởng giải quyết bài toán
Thảo luận nhóm hoặc cá nhân về các phương án có thể thực hiện:
▪ Cách 1: Dùng nhiều câu lệnh if nối tiếp nhau
❌ Không hiệu quả vì không biết trước số lần đoán
▪ Cách 2: Sử dụng một vòng lặp để chương trình tự động lặp lại
✅ Đây là hướng đi đúng!
Giáo viên gợi mở để học sinh phát hiện:
• Khi nào chương trình cần dừng lại? → Khi đoán đúng
• Khi nào chương trình cần tiếp tục? → Khi đoán sai
• Cách nào để máy tính thực hiện điều này? → Sử dụng vòng lặp while
Bước 3: Xây dựng và kiểm thử chương trình với vòng lặp while
• Giới thiệu cú pháp vòng lặp while
• Viết chương trình đoán số sử dụng vòng lặp while
- Giáo viên hướng dẫn học sinh cải tiến chương trình từ if-else sang while
- Nếu không có vòng lặp, chương trình sẽ hoạt động thế nào?
• Kiểm thử chương trình
Học sinh chạy chương trình với các tình huống khác nhau:
- Đoán đúng ngay lần đầu
- Đoán sai nhiều lần rồi đoán đúng
Giáo viên đặt câu hỏi:
1 Tại sao cần nhập số trong vòng lặp?
2 Điều gì sẽ xảy ra nếu vòng lặp không có điều kiện dừng?
• Bài làm của 1 số học sinh sau khi được giáo viên hướng dẫn (học sinh gõ chương trình trên Google colab bằng điện thoại hoặc máy tính, đăng nhập bằng tài khoản Google của học sinh)
Trang 2015 Bài làm của học sinh Nguyễn Duy Anh Khoa 10A4
Bài làm của em Nguyễn Xuân Khánh Lớp 10A4
Trang 2116
Bài làm của em Nguyễn Minh Diệp lớp 10A3
Bước 4: Mở rộng và nâng cao bài toán
Sau khi học sinh đã hiểu và thực hành cơ bản về vòng lặp while, giáo viên có thể mở rộng bài toán để giúp học sinh tư duy sâu hơn và phát triển kỹ năng lập trình
1 Thêm gợi ý cho người chơi
• Hiện tại, chương trình chỉ thông báo "Sai rồi! Hãy đoán lại." mà không giúp người chơi biết họ nên đoán cao hơn hay thấp hơn
• Yêu cầu học sinh chỉnh sửa chương trình để:
- Nếu số đoán lớn hơn số bí mật, hiển thị: "Số bạn đoán quá cao! Hãy thử
số nhỏ hơn."
- Nếu số đoán nhỏ hơn số bí mật, hiển thị: "Số bạn đoán quá thấp! Hãy thử
số lớn hơn."
2 Kiểm tra số nhập vào hợp lệ
• Hiện tại, người chơi có thể nhập số ngoài phạm vi 1 đến 100, dẫn đến kết quả không mong muốn
• Yêu cầu học sinh sửa chương trình để:
- Nếu số đoán < 1 hoặc > 100, hiển thị: "Số nhập không hợp lệ! Vui lòng nhập
số trong khoảng 1 - 100."
- Không tính số lần đoán nếu nhập sai phạm vi
Trang 2217 Kết quả hai bài làm ở nhà tốt nhất của học sinh:
Bài làm của em Ngô Phúc Khánh lớp 10A4
Trang 2318
Bài làm của em Nguyễn Duy Hùng lớp 10A3 Thông qua trò chơi đoán số sử dụng vòng lặp while, các em không chỉ nắm bắt được cú pháp lập trình mà còn rèn luyện tư duy logic cùng khả năng xử lý lỗi một cách hiệu quả Trước đó, các em đã được giới thiệu về trò chơi này qua câu lệnh
rẽ nhánh và nắm được vấn đề cơ bản Nhờ vậy, khi chuyển sang học về vòng lặp while, sau những gợi ý ban đầu, tôi đã khuyến khích học sinh tự tay lập trình trên Google Colab bằng điện thoại Kết quả đạt được rất khả quan: các em đã biết cách sửa lỗi, tối ưu câu lệnh để chương trình hoạt động trơn tru, và tự tin khắc phục các vấn đề ngay lập tức Những trải nghiệm này đã càng làm tăng thêm sự hứng thú và
tự tin của các em trong quá trình học lập trình
4 Trò chơi “mô phỏng giỏ hàng” với kiểu dữ liệu danh sách
Bước 1: Đưa ra tình huống thực tế
Mô tả bài toán
• Khi đi siêu thị, chúng ta có một giỏ hàng để đựng sản phẩm
• Trong quá trình mua sắm, người dùng có thể:
o Thêm sản phẩm vào giỏ
o Lấy sản phẩm ra khỏi giỏ nếu không muốn mua nữa
o Kết thúc mua sắm, xem danh sách sản phẩm có trong giỏ hàng Đặt vấn đề: Nếu xây dựng một chương trình máy tính để mô phỏng việc này, ta cần đảm bảo chương trình cho phép người dùng thực hiện các thao tác như:
• Thêm sản phẩm vào giỏ
• Xóa sản phẩm khỏi giỏ
• Xem danh sách sản phẩm hiện tại trong giỏ
• Thoát chương trình khi người dùng không muốn tiếp tục nữa
Làm thế nào để xây dựng được một chương trình như vậy? Chúng ta sẽ sử dụng kiểu
dữ liệu danh sách (list) trong Python để quản lý giỏ hàng
Bước 2: Khuyến khích học sinh đề xuất giải pháp
Câu hỏi gợi mở:
• Nếu muốn thêm sản phẩm, chương trình cần làm gì?
Dùng append() để thêm vào danh sách
• Nếu muốn xóa sản phẩm, cần kiểm tra điều kiện gì?
Kiểm tra xem sản phẩm có trong danh sách trước khi remove()
• Làm sao để chương trình biết khi nào cần kết thúc?
Sử dụng vòng lặp while và kết thúc khi người dùng chọn "3"
Trang 24Bước 3: Xây dựng thuật toán
Học sinh suy nghĩ cách xử lý từng thao tác:
• Thêm sản phẩm: Dùng lệnh gì để thêm vào danh sách? (append())
• Xóa sản phẩm: Dùng lệnh gì để xóa? (remove())
• Chạy liên tục: Dùng vòng lặp nào để chương trình không kết thúc ngay? (while True)
• Xử lý lựa chọn: Dùng câu lệnh nào để phân loại các thao tác? (if-elif-else) Kết luận:
• Cần một danh sách để lưu giỏ hàng
• Cần một vòng lặp while để liên tục hỏi người dùng
• Cần câu lệnh if-elif-else để xử lý các lựa chọn
1 Hiển thị menu thao tác:
o Lựa chọn 1 → Thêm sản phẩm
o Lựa chọn 2 → Xóa sản phẩm
o Lựa chọn 3 → Thoát chương trình
2 Xử lý lựa chọn của người dùng:
o Nếu chọn 1, nhập sản phẩm và thêm vào danh sách
o Nếu chọn 2, kiểm tra sản phẩm trước khi xóa
o Nếu chọn 3, thoát khỏi vòng lặp và in giỏ hàng còn lại
Bước 4: Viết chương trình hoàn chỉnh
Giáo viên hướng dẫn học sinh xây dựng chương trình theo các gợi ý sau:
a, Khởi tạo danh sách giỏ hàng
o Định nghĩa biến cart chứa các sản phẩm có sẵn, ví dụ:
Cart = [“Táo”, “Cam”, “Chuối”, “ Nho”, “Bưởi”]
b, Thêm sản phẩm vào giỏ hàng
Học sinh viết lệnh nhập tên sản phẩm cần thêm và dùng phương thức append()
để thêm sản phẩm đó vào cart
Trang 25d, Xóa sản phẩm khỏi giỏ hàng
Học sinh thực hiện lệnh nhập tên sản phẩm cần xóa và sử dụng remove() để loại bỏ sản phẩm đó khỏi danh sách, đồng thời cần kiểm tra xem sản phẩm có tồn tại trong cart không?
Ví dụ:
e, Xây dựng menu lựa chọn
- Sau khi đã làm quen với các thao tác cơ bản, yêu cầu học sinh tích hợp tất
cả các lệnh trên vào một chương trình hoàn chỉnh sử dụng menu
- Menu cho phép người dùng lựa chọn thao tác: thêm sản phẩm, xóa sản phẩm, xem giỏ hàng và thoát chương trình
Trang 2621
Như vậy, học sinh sẽ hoàn thiện chương trình mô phỏng giỏ hàng bằng cách kết hợp các thao tác cơ bản với vòng lặp và câu lệnh điều kiện, từ đó thực hành và củng cố kiến thức lập trình Python
Bước 5: Mở rộng bài toán
Gợi ý để học sinh phát triển bài toán:
Bổ sung chức năng xem giỏ hàng:
• Nếu giỏ hàng trống, hiển thị thông báo phù hợp
• Nếu có sản phẩm, hiển thị danh sách đầy đủ
Bổ sung chức năng xóa trong giỏ hàng:
• Nếu sản phẩm muốn xóa có trong giỏ hàng thì thực hiện xóa
Trang 2722
• Nếu sản phẩm muốn xóa không có trong giỏ hàng thì hiển thị thông báo
phù hợp
Trò chơi mô phỏng giỏ hàng giúp các em phát triển các kỹ năng sau:
• Phát triển tư duy giải quyết vấn đề:
- Học sinh sẽ phải suy nghĩ và xử lý các tình huống thực tế khi làm việc với
danh sách (list) và xử lý ngoại lệ
- Giúp học sinh hiểu cách kiểm tra điều kiện trước khi thao tác với danh sách,
giúp tránh lỗi và bảo vệ chương trình
• Nâng cao kỹ năng lập trình Python:
- Học sinh làm quen với các thao tác nâng cao với danh sách như duyệt danh
sách, thêm, xóa phần tử và kiểm tra sự tồn tại của phần tử
- Luyện tập sử dụng câu lệnh điều kiện (if-elif-else), giúp học sinh hiểu cách
kiểm tra và xử lý nhiều tình huống khác nhau trong chương trình
• Gắn liền với thực tế, tạo hứng thú học tập:
- Bài toán quản lý giỏ hàng rất gần gũi với cuộc sống thực tế, như khi mua sắm
online, giúp học sinh dễ hình dung và áp dụng
- Tăng tính tương tác: Khi có nhiều lựa chọn như thêm, xóa, xem giỏ hàng, học
sinh sẽ cảm thấy bài toán thú vị và có thể áp dụng ngay lập tức
• Khuyến khích sáng tạo:
Học sinh có thể mở rộng bài toán theo ý tưởng riêng, ví dụ thêm giá tiền, tính
tổng hóa đơn, hoặc cải tiến giao diện người dùng
Những lợi ích này giúp học sinh không chỉ học lập trình mà còn phát triển các kỹ
năng giải quyết vấn đề và tư duy sáng tạo trong quá trình học tập
Trang 2823
5 Trò chơi “đoán từ gốc” với kiểu xâu kí tự
Mục tiêu:
• Giúp học sinh thực hành các phương thức xử lý xâu trong Python, bao gồm:
o split(): Chia xâu thành các phần tử con
o join(): Kết hợp các phần tử con thành một xâu
o Phép nối xâu (+): Nối các chuỗi lại với nhau
• Phát triển tư duy logic và suy luận thông qua việc tìm lại từ gốc từ các chữ cái
bị đảo lộn Trò chơi kích thích khả năng nhận diện và sắp xếp chữ cái hợp lý
• Giúp học sinh hiểu cách hoạt động của các phương thức và phép toán xử lý chuỗi trong Python, đồng thời rèn luyện kỹ năng thao tác với xâu ký tự như tách, đảo và ghép chuỗi theo yêu cầu
Bước 1: Đưa ra tình huống thực tế
Giả sử bạn đang tham gia một trò chơi giải đố trong lớp học Trò chơi này kiểm tra khả năng nhận diện từ vựng của bạn thông qua một thử thách đặc biệt: máy tính sẽ
xáo trộn một từ tiếng Anh và bạn phải tìm ra từ gốc ban đầu
Ví dụ:
- Máy tính hiển thị từ "OTPYHN"
- Bạn cần đoán xem từ gốc là gì Nếu đoán "PYTHON", bạn sẽ chiến thắng! Tuy nhiên, nếu đoán sai, bạn sẽ có tối đa 3 lần thử và máy tính sẽ cung cấp gợi ý để giúp bạn tìm ra từ đúng Nếu hết lượt mà vẫn không đoán được, máy tính sẽ tiết lộ đáp án
Vậy làm sao để máy tính có thể kiểm tra từ bạn nhập vào và quyết định khi nào đưa
ra gợi ý?
Bước 2: Khuyến khích học sinh đề xuất giải pháp
Đặt câu hỏi gợi mở:
1 Nếu máy tính chọn từ "PYTHON" và xáo trộn thành "NTOYHP", làm thế nào chương trình có thể kiểm tra xem người chơi nhập từ đúng hay chưa?
2 Làm sao để máy tính có thể đảo ngẫu nhiên thứ tự các chữ cái trong một từ?
3 Nếu người chơi đoán sai, làm thế nào để máy tính đưa ra gợi ý phù hợp?
4 Chúng ta có thể đặt giới hạn số lần đoán để tăng thử thách không? Nếu có, làm sao để chương trình quản lý số lần thử đó?
Khuyến khích học sinh suy nghĩ và đề xuất giải pháp:
- Máy tính cần có một danh sách từ vựng để chọn từ ngẫu nhiên
Trang 2924
- Sau khi chọn từ, máy tính có thể xáo trộn chữ cái để tạo thử thách
- Khi người chơi nhập từ, chương trình cần so sánh với từ gốc để xác định đúng hay sai
- Nếu đoán sai, chương trình có thể hiển thị gợi ý, ví dụ như số chữ cái, chữ cái đầu tiên…
- Học sinh có thể đề xuất cách giới hạn số lần đoán để làm trò chơi thú vị hơn
Sau khi thảo luận, giáo viên tổng hợp các ý kiến của học sinh và hướng dẫn cách sử dụng các phương thức xử lý xâu, vòng lặp, cũng như câu lệnh điều kiện để kiểm tra
câu trả lời của người chơi
Bước 3: Xây dựng thuật toán
Sau khi học sinh đã thảo luận và đề xuất giải pháp, giáo viên sẽ hướng dẫn học sinh xây dựng thuật toán, bao gồm:
• Khởi tạo danh sách từ vựng: Ta bắt đầu với một danh sách các từ mà người chơi sẽ phải đoán
• Chọn từ ngẫu nhiên: Sử dụng hàm random.choice() để chọn ngẫu nhiên một
từ trong danh sách từ vựng
• Xáo trộn chữ cái của từ: Sử dụng random.shuffle() để đảo ngược các chữ cái trong từ được chọn Sau khi xáo trộn, từ này sẽ được đưa vào dạng chuỗi string
để người chơi có thể nhìn thấy
• Hiển thị từ đã xáo trộn: In ra từ đã được xáo trộn để người chơi có thể nhìn và thử đoán
• Nhận input từ người chơi: Lặp lại việc yêu cầu người chơi nhập câu trả lời qua input()
• Kiểm tra đáp án:
So sánh đáp án người chơi nhập với từ gốc
- Nếu người chơi đoán đúng, thông báo "Chính xác!" và kết thúc trò chơi
- Nếu người chơi đoán sai, thông báo "Sai rồi, thử lại" và yêu cầu nhập lại
• Lặp lại cho đến khi đoán đúng: Trò chơi sẽ tiếp tục cho đến khi người chơi đoán đúng từ gốc
Bước 4: Viết chương trình
Giáo viên đưa ra chương trình, giới thiệu các lệnh và yêu cầu học sinh giải thích Sau khi giải thích các lệnh, giáo viên có thể yêu cầu học sinh thử thay đổi một số phần của chương trình để hiểu rõ hơn về cách hoạt động của các lệnh, ví dụ: