Chính vì lí do trên, tôi đã chọn đề tài “Một số biện pháp giúp học sinh học tốt lập trình Python – Tin học 10” để góp phần nâng cao chất lượng dạy môn Tin học nói chung và giảng dạy ngôn
Trang 1MỤC LỤC
1 Mở đầu 1
1.1 Lí do chọn đề tài 1
1.2 Mục đích nghiên cứu 1
1.3 Đối tượng nghiên cứu 2
1.4 Phương pháp nghiên cứu 2
1.5 Những điểm mới của SKKN 2
2 Nội dung sáng kiến kinh nghiệm 2
2.1 Cơ sở lí luận của sáng kiến kinh nghiệm 2
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm 2
2.3 Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để giải quyết vấn đề 4
2.3.1 Biện pháp 1: Gợi động cơ học lập trình Python cho học sinh 4
2.3.2 Biện pháp 2: Đưa ra hệ thống các bài tập dạng nhận biết, thông hiểu và vận dụng 9
2.3.3 Biện pháp 3: Hướng dẫn học sinh cách tạo các bộ Test để kiểm tra kết quả chương trình 13
2.3.4 Biện pháp 4: Tận dụng tối đa các giờ học tại phòng máy 13
2.3.5 Biện pháp 5: Tạo hứng thú trong giờ học lập trình 15
2.4 Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản thân, đồng nghiệp và nhà trường 19
3 Kết luận, kiến nghị 20
3.1 Kết luận 20
3.2 Kiến nghị 20
Tài liệu tham khảo 21
Trang 2MỘT SỐ BIỆN PHÁP GIÚP HỌC SINH HỌC TỐT LẬP TRÌNH
vì thế chúng ta hi vọng sớm có thể hòa nhập với khu vực trên thế giới
Hiện nay, Bộ giáo dục và đào tạo đã thiết kế lại Chương trình đổi mớigiáo dục phổ thông (bắt đầu áp dụng trong năm học 2019 – 2020) Trong đó:Giáo dục phổ thông nước ta đang thực hiện bước chuyển từ chương trình giáodục tiếp cận nội dung sang chương trình giáo dục “định hướng năng lực” Trongchương trình giáo dục phổ thông mới, bộ môn Tin học có rất nhiều điểm mới,trong đó Bộ GD – ĐT đã ban hành hướng điều chỉnh nội dung dạy học cho phép
và khuyến khích các cơ sở giáo dục dần loại bỏ ngôn ngữ lập trình Pascal, lựachọn giảng dạy các ngôn ngữ lập trình có tính cập nhật, hiện đại, thông dụngnhư C++, Python…
Python là ngôn ngữ lập trình mới được đưa vào chương trình phổ thông
Là ngôn ngữ lập trình hướng đối tượng, đơn giản, dễ học Python là ngôn ngữlập trình đang được sử dụng rộng rãi để tạo ra các ứng dụng Trí tuệ nhân tạo(AI), phân tích dữ liệu lớn (Big data), học máy (machine leaning)…Tuy nhiên,muốn học tốt lập trình thì người học cần phải có tư duy, có khả năng phân tích
và tổng hợp, mà ở lứa tuổi học sinh lớp 10 khả năng đó của các em còn hạn chếnên gây không ít khó khăn cho học sinh khi học lập trình Python Đặc biệt vớinhững học sinh yếu kém thì việc học lập trình càng khó khăn hơn nhiều
Vậy làm thế nào để học sinh học tốt lập trình Python? Là một giáo viên,tôi luôn trăn trở tìm cách truyền đạt kiến thức và các biện pháp giúp các em họcsinh học tốt ngôn ngữ lập trình Python Chính vì lí do trên, tôi đã chọn đề tài
“Một số biện pháp giúp học sinh học tốt lập trình Python – Tin học 10” để góp
phần nâng cao chất lượng dạy môn Tin học nói chung và giảng dạy ngôn ngữlập trình Python nói riêng
1.2 Mục đích nghiên cứu.
- Đưa ra một số biện pháp để học sinh học tốt lập trình Python, giúp họcsinh hiểu bài nhanh chóng, nắm vững kiến thức và vận dụng vào làm bài tập
- Bước đầu hình thành cho các em các kiến thức về ngôn ngữ lập trình
- Hình thành cho học sinh một số phẩm chất và năng lực cần thiết chongười lao động hiện đại như có ý thức và thói quen sử dụng máy tính trong hoạtđộng học tập, lao động
Trang 31.3 Đối tượng nghiên cứu.
- Nghiên cứu cơ sở lí luận và thực tiễn của đề tài
- Các biện pháp giúp học sinh học tốt lập trình Python 10
- Đối tượng thực nghiệm: Học sinh lớp 10 trường THPT Thường Xuân 2
1.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, tổng hợp dữ liêu
- Phương pháp nghiên cứu thực tiễn.
+ Phương pháp điều tra
+ Phương pháp tổng kết kinh nghiệm giáo dục
+ Phương pháp khảo nghiệm, thực nghiệm
1.5 Những điểm mới của SKKN
- Giúp học sinh học lập trình Python chủ động, tích cực và huy động đượctất cả học sinh tham gia xây dựng bài một cách hào hứng
- Sáng kiến góp phần đổi mới hình thức dạy học, kiểm tra đánh giá chấtlượng của HS theo hướng phát huy năng lực tự học, tự khám phá tri thức chohọc sinh, chuyển từ chương trình giáo dục tiếp cận nội dung sang tiếp cận nănglực của người học Xuất phát từ việc “Xây dựng trường học thân thiện, học sinhtích cực”
- Sáng kiến giúp học sinh biết vận dụng sáng tạo kiến thức để giải quyếtcác bài toán trong thực tế
2 Nội dung sáng kiến kinh nghiệm
2.1 Cơ sở lí luận của sáng kiến kinh nghiệm.
Đảng và Nhà nước ta đã nhận thấy được tầm quan trọng của công nghệthông tin và đưa vào giảng dạy trong nhà trường ở các cấp từ tiểu học đến trunghọc phổ thông
Muốn học tập đạt kết quả tốt ngoài sự nỗ lực, tự giác của học sinh, vai tròdẫn dắt của giáo viên bộ môn là vô cùng quan trọng và cần thiết
Để giúp học sinh lập trình với Python được dễ dàng hơn, đồng thời thựchiện tinh thần của toàn ngành hiện nay là phát huy tính tích cực, tự giác, sángtạo, độc lập của học sinh, nâng cao năng lực phát hiện và giải quyết vấn đề đểđem lại hứng thú học tập cho học sinh Vì vậy với nội dung trong đề tài này, họcsinh có thể học tốt lập trình Python
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm.
*Thực trạng dạy học ngôn ngữ Python ở các trường THPT.
Ngôn ngữ lập trình Python là ngôn ngữ định hướng dạy học trong chươngtrình GDPT 2018 và được khuyến khích dạy học trong giai đoạn chuyển tiếphiện nay nhưng việc thực hiện còn một số khó khăn nhất định:
Trang 4+ Tài liệu tham khảo về lập trình Python chưa phổ biến như ngôn ngữPascal ít nên việc tìm kiếm tài liệu dạy học phù hợp với trình độ học sinh rất vấtvả.
+ Đối với giáo viên việc trao đổi, chia sẻ, học hỏi kinh nghiệm gặp nhiềukhó khăn do hầu hết đều quen với ngôn ngữ lập trình Pascal
+ Kiến thức về lập trình không nằm trong nội dung thi THPT quốc gianên hầu hết học sinh không coi trọng, ít học bài và làm bài tập chỉ những họcsinh yêu thích, đam mê mới đầu tư thời gian học lập trình Vì thế lượng giáoviên đam mê chuyên môn, đầu tư thời gian nghiên cứu tài liệu, cải tiến cách dạy,cách học không nhiều
Đầu năm học, tôi đã tiến hành khảo sát 100 học sinh lớp 10 về mức độyêu thích học lập trình cùng kết quả học tập của học sinh khi chưa áp dụng sángkiến và kết quả thu được như sau:
- Mức độ yêu thích môn học lập trình
- Kết quả học tập của học sinh
Ngoài ra, do môn Tin không nằm trong chương trình thi tốt nghiệp THPT,một số giáo viên giảng bài còn sơ sài chưa có sự đầu tư chuyên môn Giáo viênkhông tạo không khí học tập gần gũi, thoải mái cho học sinh
Để khắc phục tình trạng trên, tôi đã tìm tòi nghiên cứu và đưa ra một sốbiện pháp giúp các em yêu thích và học tốt lập trình Python
*Thuận lợi và khó khăn khi dạy học lập trình Python cho học sinh.
Thuận lợi:
Tuy môn Tin học là một môn học tự chọn nhưng nhà trường đã trang bịkhá đầy đủ cơ sở vật chất như phòng máy tính, máy chiều để phục vụ cho việcdạy và học
Giáo viên được đào tạo những kiến thức cơ bản về Tin học để đáp ứng
Trang 5Nội dung sách nhẹ nhàng, phù hợp với học sinh phổ thông.
Môn Tin học là môn học tự chọn nên học sinh tiếp thu kiến thức một cáchthoải mái, không bị gò ép
Đa số học sinh có máy tính nên kĩ năng thực hành của học sinh tương đốitốt
Một số học sinh còn xem nhẹ môn học, coi đó là môn phụ, không có thái
độ học tập tích cực, không chịu suy nghĩ và động não khi làm bài tập
2.3 Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để giải quyết vấn đề.
Trong đề tài này, tôi sẽ chia sẻ những kinh nghiệm và giải pháp giúp họcsinh học tốt lập trình Python, biết vận dụng kiến thức của mình vào cuộc sống,hoàn thiện và thành thạo các thao tác khi tương tác với phần mềm Python, linhhoạt khi sử dụng các câu lệnh để giải quyết bài toán một cách chính xác và khoahọc
2.3.1 Biện pháp 1: Gợi động cơ học lập trình Python cho học sinh
Việc học tập tự giác, tích cực, chủ động và sáng tạo trong ngôn ngữ lậptrình Python đòi hỏi học sinh phải có ý thức về những mục tiêu đặt ra và tạođược động lực bên trong để học sinh đạt được mục tiêu Điều này được thựchiện trong dạy học không chỉ đơn giản bằng việc nêu mục tiêu mà quan trọnghơn còn là gợi động cơ
Gợi động cơ là làm cho học sinh có ý thức về ý nghĩa của những hoạtđộng và của đối tượng hoạt động Sau đây là một trong những cách gợi động cơxuất phát từ nội dung môn Tin học theo từng giai đoạn như sau:
a Gợi động cơ mở đầu:
Có thể gợi động cơ mở đầu xuất phát từ thực tế hoặc nội bộ môn Tin học.Việc xuất phát từ thực tế không những có tác dụng gợi động cơ mà gópphần hình thành thế giới quan duy vật biện chứng Nhờ đó, giúp học sinh nhậnthức rõ nội dung bài học
Mặc dù Tin học phản ánh thực tế một cách toàn bộ và nhiều tầng Tuynhiên không phải bất cứ nội dung nào, hoạt động nào cũng có thể gợi động cơxuất phát từ thực tế Gợi động cơ từ nội bộ Tin học là nêu vấn đề Tin học xuấtphát từ nhu cầu Tin học, từ những phương thức tư duy và hoạt động Tin học.Gợi động cơ theo cách này là cần thiết vì: Việc xuất phát từ thực tế không phảibao giờ cũng thực hiện được
Trang 6Thông thường khi bắt đầu nội dung lớn, chẳng hạn như một phân mônhay một chương chúng ta nên cố gắng xuất phát từ thực tế Còn đối với từng bàihay từng phần của thì tính tới khả năng gợi động cơ từ nội bộ Tin học Sau đây
là một số ví dụ:
VD1: Khi dạy về Câu lệnh rẽ nhánh [1].
Để mô tả cấu trúc rẽ nhánh, Python dùng câu lệnh if có 2 dạng:
- Dạng thiếu: if <điều kiện>:
Và cấu trúc dùng để mô tả mệnh đề trên là cấu trúc dạng thiếu Python dùng câulệnh If dạng thiếu để mô tả, câu lệnh như sau:
if <điều kiện>:
<Khối lệnh>
Ngoài ra, có thể gợi động cơ xuất phát từ nội bộ môn Tin học, chẳng hạnnêu ra tình huống sau: Nhập vào máy từ bàn phím số nguyên a bất kì Thông báo
ra màn hình a là số chẵn Ta giải thích cho học sinh một số là số chẵn nếu nó
chia hết cho 2: a % 2 == 0 đó chính là điều kiện Vậy nếu điều kiện a % 2 == 0 đúng thì thông báo ra màn hình a là số chẵn bằng lệnh print (“a la so chan”).
Còn nếu điều kiện a % 2 = = 0 sai thì không thực hiện câu lệnh nào? Cách diễnđạt như trên gọi là dạng thiếu
VD2: Khi dạy về Câu lệnh lặp [1]
Sau khi trình bày xong câu lệnh lặp với số lần biết trước, tôi đưa ra ví dụyêu cầu học sinh viết chương trình in ra màn hình các số chẵn trong phạm vi từ
1 đến 10
Tôi đưa ra cách gợi động cơ xuất phát từ nội bộ môn Tin học: Để thựchiện được yêu cầu trên, ta phải kiểm tra các số từ 1 đến 10 Nếu số nào chia hếtcho 2 thì viết ra màn hình số đó Vậy ta cần bao nhiêu câu lệnh để kiểm tra?Như vậy, ta phải viết lặp đi lặp lại 10 câu lệnh Giả sử bài toán trên yêu cầu viết
ra các số chẵn trong phạm vi từ 1 đến 100 thì cần bao nhiêu câu lệnh? 100 câu
Trang 7lệnh Vậy để xóa bỏ sự hạn chế này, ta chỉ cần sử dụng câu lệnh lặp với số lần
biết trước for
b Gợi động cơ trung gian [2].
Gợi động cơ trung gian là gợi động cơ cho những bước trung gian hoặccho những hoạt động tiến hành trong những bước đó để đạt được mục tiêu Gợiđộng cơ trung gian có ý nghĩa to lớn đối với sự phát triển năng lực độc lập giảiquyết vấn đề Sau đây là những cách để gợi động cơ trung gian:
- Hướng đích cho học sinh
- Quy lạ về quen
- Xét tính tương tự
- Khái quát hóa
*Hướng đích cho học sinh:
Hướng đích cho học sinh là hướng vào những mục tiêu đề ra, vào hiệuquả dự kiến của những hoạt động của họ nhằm đạt được mục tiêu đó
Hướng đích là làm sao cho đối với tất cả những gì học sinh nói và làm,các em đều biết rằng những cái đó nhằm mục tiêu gì trong quá trình tìm hiểu và
mô tả con đường đi đến đích, luôn biết hướng tới những quyết định và hoạt độngcủa mình vào mục đích đã đặt ra
VD: Khi hướng dẫn học sinh viết thuật toán giải phương trình bậc nhất dạngtổng quát:
bx + c = 0
Tôi hướng cho học sinh các bước thực hiện như sau:
Bước 1: Xác định bài toán:
- Input: các số b, c
- Output: Nghiệm của pt bậc nhất
Bước 2: Nêu ý tưởng giải bài toán (các trường hợp của b và c)
- b = 0 và c =0 phương trình có vô số nghiệm
+ c ≠ 0 phương trình vô nghiệm
- B ≠ 0 phương trình có một nghiệm x -c/b
Bước 3: Viết thuật toán
B1: Nếu b =0 thì chuyển tới B3
B2: Tính nghiệm pt x -c/b rồi chuyển tới B4
Trang 8B3: Nếu c≠0 thì thông báo phương trình vô nghiệm, ngược lại thì thôngbáo phương trình có vô số nghiệm.
B4: Kết thúc
*Quy lạ về quen:
Gợi động cơ trung gian với các quy lạ về quen là một yếu tố quan trọng vìkhi đưa ra vấn đề nào đó dựa trên cơ sở của kiến thức đã học để học sinh có suynghĩ logic và cuối cùng là đưa ra được vấn đề mới này về dạng quen thuộc đểhọc sinh nhận dạng Khi đó kiến thức mới này sẽ được học sinh tiếp thu mộtcách dễ dàng
VD: Xét bài toán: Viết chương trình tính Cnk
- Học sinh đã biết công thức: C n k= n !
VD1: Khi học sinh viết được chương trình tính n! thì tương tự ta yêu cầu học
sinh viết chương trình tính an
VD2: Sau khi học sinh đã biết cách viết chương trình tìm giá trị lớn nhất của
dãy số nguyên A cho trước thì học sinh có thể giải được các bài tập tương tựnhư tìm giá trị nhỏ nhất của dãy số nguyên A cho trước
* Khái quát hóa:
VD1: Xuất phát từ bài toán: Viết chương trình nhập 2 số nguyên a, b khác nhau
Trang 9print (“so lon nhat la:”, b)
Tiếp theo yêu cầu học sinh viết chương trình in ra màn hình số lớn nhấttrong 3 số a, b, c khác nhau nhập từ bàn phím
Để giải bài toán trên tôi hướng dẫn học sinh như sau:
+ Ta sử dụng thêm biến Max để lưu số lớn nhất
+ Ban đầu Max gán bằng a
+ Sử dụng lệnh If dạng đủ để kiểm tra 2 số còn lại Nếu số nào lớn hơnthì biến Max nhận giá trị mới
+ Đoạn chương trình:
max = a
if b > c:
max = b else:
max:= c print (“so lon nhat la: “, max)
Sau khi thực hiện được chương trình tìm số lớn nhất trong 3 số thànhcông Khái quát: yêu cầu học sinh giải bài toán: Viết chương trình nhập dãy gồm
N số nguyên: A1, A2, An In ra màn hình số lớn nhất trong dãy đó
Để thực hiện bài toán trên, tôi hướng dẫn học sinh cách làm:
+ Sử dụng biến mảng để lưu dãy gồm N số nguyên: A1, A2,….An
+ Áp dụng cách làm tương tự như đối với 3 số: Ban đầu Max = A[1];Dùng vòng lặp For để duyệt các phần tử còn lại từ A2 đến An Thực hiện phép
so sánh: Max với A[i] Nếu A[i] > Max thì Max nhận giá trị mới Cuối cùng, tatìm được số lớn nhất
+ Đoạn chương trình như sau:
max= A[1]
for i in range(2, n):
if A[i] > max:
max:=A[i]
print (“so lon nhat la:”, max)
VD2: Bài toán: Viết chương trình đếm xem có bao nhiêu số lẻ trong phạm vi từ
Sau đó, yêu cầu học sinh viết chương trình đếm có bao nhiêu số lẻ trongphạm vi từ n đến m (n < m), với n, m là 2 số nguyên nhập từ bàn phím
Trang 10Để làm bài này, ta phải nhập n và m, sau đó dùng vòng lặp tiến với chỉ sốđầu là n và chỉ số cuối là m:
c Gợi động cơ kết thúc.
Nhiều khi ngay từ đầu hay trong khi giải quyết vấn đề, ta chưa thể làm rõtại sao lại học nội dung này, tại sao thực hiện hoạt động kia? Những câu hỏi nàyphải đợi mãi về sau mới được giải đáp trọn vẹn Như vậy, ta đã gợi động cơ kếtthúc, nhấn mạnh hiệu quả của nội dung hoặc hoạt động đó với việc giải quyếtvấn đề đặt ra
Cũng như gợi động cơ mở đầu và gợi động cơ trung gian, gợi động cơ kếtthúc cũng có tác dụng phát huy tính tích cực, chủ động, sáng tạo, tự giác tronghoạt động học tập
VD: Sau khi học xong bài Câu lệnh lặp, tôi cho học sinh quan sát 2 chương trìnhsau:
- Chương trình in ra màn hình 5 dòng chữ “Xin chào”
+ Ta sử dụng 5 câu lệnh: print (“Xin chao”)
print (“Xin chao”) print (“Xin chao”) print (“Xin chao”) print (“Xin chao”) Chương trình có sử dụng câu lệnh lặp For
For i in range(1, 5): print (“Xin chao”)
Sau đó, tôi nhấn mạnh cho học sinh thấy được sự tiện lợi của việc sử dụng
câu lệnh lặp For có thể hợp lý hóa, tiết kiệm công sức lập trình Đồng thời giúp
cho người lập trình dễ kiểm tra, dễ sửa chữa
2.3.2 Biện pháp 2: Đưa ra hệ thống các bài tập dạng nhận biết, thông hiểu
và vận dụng [4].
Để học tốt lập trình, học sinh phải bắt đầu từ dễ đến khó, từ những bài tậpđơn giản, những điều cơ bản dễ hiểu nhất rồi mới đến những bài toán phức tạphơn, lớn hơn
Sau đây là một số dạng bài tập từ nhận biết đến vận dụng mà tôi đã ápdụng để rèn kĩ năng viết chương trình trên Python cho học sinh:
Trang 11 Bài tập dạng nhận biết.
Đây là dạng bài tập cơ bản để học sinh hình dung ra cách viết câu lệnh vàthực hiện lệnh trong chương trình Python
Ví dụ 1: Sắp xếp các câu lệnh cho sẵn để được một chương trình hoàn chỉnh.
Cho các câu lệnh sau Yêu cầu học sinh sắp xếp lại các câu lệnh để đượcchương trình tính chu vi và diện tích hình chữ nhật (với a, b nguyên là 2 cạnhhình chữ nhật)
2: Bài tập điền vào chỗ chấm đề được chương trình hoàn chỉnh.
Điền vào chỗ chấm để được chương trình đưa ra màn hình tổng các sốchẵn trong phạm vi từ 1 đến 10
Bài tập dạng thông hiểu.
Ví dụ 1: Bài tập về đọc hiểu chương trình:
Dạng bài tập này sẽ giúp phát triển tư duy, giúp học sinh hiểu bài, nhất làkhi dạy các cấu trúc lệnh Đối với dạng bài này, học sinh phải hiểu ý nghĩa từngcâu lệnh trong chương trình, thực hiện từng câu lệnh trong chương trình (khôngchạy trên máy, thực hiện bằng tay trên giấy)
Cách thực hiện:
Giáo viên chia lớp làm 4 nhóm cùng tham gia trò chơi “Ai nhanh nhất”.Yêu cầu: Học các nhóm làm bài vào phiếu học tập Nhóm nào có kết quả nhanhnhất sẽ giành chiến thắng
a=int(input(“Nhap canh a:”))b= int(input(“Nhap canh b:”))
s = a * bcv= (a+b)*2print(s)print(cv)