SÁNG KIẾN KINH NGHIỆMPHƯƠNG THỨC LÀM VIỆC CỦA VÒNG LẶP FOR TRONG NGÔN NGỮ LẬP TRÌNH PYTHON, HỖ TRỢ GIẢNG DẠY MÔN TIN HỌC 10 THEO CHƯƠNG TRÌNH GIÁO DỤC PHỔ THÔNG 2018 Người thực hiện: Tr
Trang 1SÁNG KIẾN KINH NGHIỆM
PHƯƠNG THỨC LÀM VIỆC CỦA VÒNG LẶP FOR TRONG NGÔN NGỮ LẬP TRÌNH PYTHON, HỖ TRỢ GIẢNG DẠY MÔN TIN HỌC 10 THEO CHƯƠNG TRÌNH
GIÁO DỤC PHỔ THÔNG 2018
Người thực hiện: Trương Văn Phát Chức vụ: Giáo viên
SKKN thuộc lĩnh vực (môn): Tin học
THANH HOÁ, NĂM 2022
Trang 2STT Từ Từ viết tắt Nghĩa từ viết tắt
4 CNTT & TT Công nghệ thông tin và truyền thông
Trang 31 Mở đầu 1
1.1 Lý do chọn đề tài 1
1.2 Phạm vi và đối tượng đề tài 1
1.3 Mục đích đề tài 1
1.4 Điểm mới của sáng kiến 2
1.5 Phương pháp nghiên cứu 2
1.5.1 Phương pháp nghiên cứu lý thuyết 2
1.5.2 Phương pháp tham vấn chuyên gia 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 chất lượng giảng dạy môn tin học tại trường THPT Dân tộc nội trú tỉnh Thanh Hoá (cơ sở thực nghiệm) 3
2.2.1 Đặc điểm tình hình 3
2.2.2 Thực trạng của vấn đề 4
3 Nội dung nghiên cứu 4
3.4 Sử dụng ngôn ngữ Python để tạo vòng lặp với một array 8
3.5 Sử dụng Nested cho vòng lặp trong ngôn ngữ Python 9
4 Hiệu quả của sáng kiến 9
5 Kết luận, kiến nghị 9
5.1 Kết luận 9
5.2 Kiến nghị 10
Trang 41 Mở đầu
1.1 Lý do chọn đề tài
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 Tuy nhiên, rất nhiều trường đã và đang sử dụng ngôn ngữ lập trình pascal, C/C++ như là công cụ để giảng dạy cho học sinh, đặc biệt là học sinh của đội tuyển dự thi học sinh giỏi các cấp môn tin học
Hầu hết chúng ta đã quá quen với việc sử dụng ngôn ngữ lập trình Pascal, gần đây là bắt đầu tiếp cận ngôn ngữ lập trình C/C++ Tuy nhiên, sách giáo khoa mới thì ngôn ngữ 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ụ tốt công tác dạy học của bản thân Python là ngôn ngữ lập trình khá phổ biến hiện nay, được rất nhiều lập trình viên sử dụng Ngôn ngữ này không khó viết, nhưng do tiếp cận mới nên sẽ gặp những khó khăn riêng Xuất phát từ lý do này và qua kiến thức tự học tự nghiên
cứu trong quá trình dạy học Tôi xin đề cập tới đề tài: “Phương thức làm việc
của vòng lặp for trong ngôn ngữ lập trình Python, hỗ trợ giảng dạy môn tin học 10 theo chương trình giáo dục phổ thông 2018”.
1.2 Phạm vi và đối tượng đề tài
- Phạm vi: Nghiên cứu thực tế trong công tác dạy học tại trường THPT Dân tộc nội trú tỉnh Thanh Hóa
- Đối tượng: Nghiên cứu giải pháp nhằm nâng cao chất lượng dạy học bộ môn tin học ở trường THPT theo chương trình giáo dục phổ thông 2018
1.3 Mục đích đề tài
Tìm hiểu và nêu các kiến thức liên quan về “phương thức làm việc của vòng lặp for trong ngôn ngữ lập trình Python, hỗ trợ giảng dạy môn tin học 10 theo chương trình giáo dục phổ thông 2018”
Trang 51.4 Điểm mới của sáng kiến
Đề xuất các kiến thức cơ bản về vòng lặp for trong ngôn ngữ lập trình Python
1.5 Phương pháp nghiên cứu
1.5.1 Phương pháp nghiên cứu lý thuyết
Nghiên cứu tài liệu và các công trình khoa học liên quan đến kiến thức lập trình trong Python
Nghiên cứu cấu trúc, nội dung sách giáo khoa tin học THPT theo chương trình giáo dục phổ thông 2018
1.5.2 Phương pháp tham vấn chuyên gia
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
* Khái quát về ngôn ngữ lập trình Python
Hiện nay với những đặc điểm và tính năng vượt trội thì đa phần lập trình viên chọn lựa Python là ngôn ngữ lập trình chính
2.1.1 ngôn ngữ lập trình Python là gì?
Là ngôn ngữ mã nguồn mở đa mục đích, một loại ngôn ngữ bậc cao, thông dịch và hướng đối tượng
2.1.2 Python có gì đặc biệt?
Đó chính là cú pháp của Python rất dễ hiểu, dễ học Trong việc phát triển ứng dụng thì ngôn ngữ này cũng rất linh hoạt Python hỗ trợ mẫu đa lập trình, bao gồm lập trình hướng đối tượng, lập trình hàm và mệnh lệnh hoặc là những phong cách lập trình theo thủ tục
Python không chỉ làm việc trên lĩnh vực đặc biệt như lập trình Web, 3D CAD… mà còn là ngôn ngữ lập trình động, nên bạn không cần phải sử dụng các kiểu dữ liệu khai báo Ngôn ngữ Python giúp cho việc phát triển ứng dụng và debug trở nên nhanh chóng hơn rất nhiều
2.1.3 Tại sao nên học lập trình Python?
Trang 6• Dễ học
Code của Python dễ đọc, ngắn gọn (ngắn hơn code Java 3-5 lần, và C++ 5-10 lần)
• Bước đệm để học các ngôn ngữ lập trình khác
Python là ngôn ngữ hướng đối tượng được ứng dụng rất đa dạng Vì vậy, những hiểu biết về cấu trúc và kiến trúc Python sẽ là nền tảng tham chiếu rất tốt khi bạn muốn chuyển sang học các ngôn ngữ lập trình khác
• Được trả lương cao
Cùng với Ruby, Python là ngôn ngữ lập trình giúp developer nhận mức lương cao thứ nhì (khoảng $107,000/năm) tại Mỹ
• Thiết thực trong thiết kế web/ứng dụng web
Django, web framework được viết bởi Python sẽ làm cho việc lập trình web trở nên đơn giản hơn, giúp code của bạn nhanh và ổn định hơn nhiều, đồng thời tiết kiệm hàng tấn thời gian lập trình
• Là tương lai của trí tuệ nhân tạo
Nhờ tính linh hoạt của ngôn ngữ, tốc độ xử lý và các tính năng Machine Learning được cung cấp bởi các libraries như scikit-learn, Keras, và TensorFlow Đây thực sự là một ngôn ngữ lập trình có hình thức sáng sủa, cấu trúc rõ ràng,
cú pháp rất ngắn gọn Python với tốc độ xử lý cực nhanh, ngôn ngữ này có thể tạo
ra các chương trình từ những script siêu nhỏ tới những phần mềm cực lớn như Biender 3D
2.2 Thực trạng chất lượng giảng dạy môn tin học tại trường THPT Dân tộc nội trú tỉnh Thanh Hoá (cơ sở thực nghiệm).
2.2.1 Đặc điểm tình hình
Trường THPT Dân tộc nội trú tỉnh Thanh Hóa là một trường chuyên biệt, 100% học sinh là người dân tộc thiểu số, sinh sống tại 11 Huyện miền núi của Tỉnh Thanh Hóa được hưởng chế độ chính sách của nhà nước và của Tỉnh
Trang 7Cơ sở vật chất nhà trường được cấp, cơ quan quản lý trang bị đầy đủ, bao gồm trang bị máy chiếu, máy tính, phòng tin học phục vụ cho công tác dạy và học của nhà trường
Đội ngũ giáo viên tâm huyết, năng động, nhiệt tình trong công tác cùng với hơn 540 học sinh toàn trường được chia làm 18 lớp thuộc 3 khối
Khối 10: 06 lớp với 180 học sinh
Khối 11: 06 lớp với 180 học sinh
Khối 12: 06 lớp với 180 học sinh
2.2.2 Thực trạng của vấn đề
a Thuận lợi:
Được sự quan tâm của Sở Giáo dục & Đào tạo, nhà trường được trang bị 03 phòng máy tính thực hành, 100% phòng học có máy chiếu và phương tiện hỗ trợ ứng dụng CNTT trong giảng dạy
Chương trình giáo dục phổ thông 2018 được thực hiện đồng bộ trên toàn Quốc, phù hợp với sự thay đổi của nền giáo dục nước nhà
b Khó khăn:
Sự đa dạng về trình độ học sinh trong các lớp tại trường THPT Dân tộc nội trú nói riêng và các trường THPT trong tỉnh nói chung có sự phân hoá nhất định Trường THPT Dân tộc nội trú Tỉnh với gần 100% đối tượng học sinh là người dân tộc thiểu số, thuộc các xã đặc biệt khó khăn Trước đây phần đa chưa được tiếp xúc nhiều với bộ môn tin học và các phương tiện CNTT hiện đại, thiếu
kỹ năng sử dụng máy tính
Chính vì vậy mục tiêu của đề tài này là hỗ trợ giáo viên tin học có thêm thông tin, giúp truyền đạt kiến thức đến học sinh tốt nhất, bắt kịp với sự thay đổi của chương trình giáo dục
3 Nội dung nghiên cứu
3.1 Phương thức làm việc của vòng lặp for trong ngôn ngữ lập trình Python
Trang 8Vòng lặp for của Python hoạt động bằng cách lặp qua chuỗi của một mảng (array) Về cơ bản, nó hữu ích khi xử lý các chuỗi, danh sách, từ điển, tập hợp
hoặc bộ giá trị Từ khóa in thường theo sau vòng lặp for trong Python.
Một vòng lặp for có đặc điểm tương tự trong tất cả ngôn ngữ lập trình Ví
dụ, dù có sự khác biệt về cú pháp, đặc điểm vòng lặp for của Java tương tự của Python
Cú pháp Python cho vòng lặp for như sau:
for new_variable in parent_variable:
execute some statements
Như đã nói từ đầu, khác while, vòng lặp for mạnh hơn nên nó cung cấp
nhiều quyền kiểm soát luồng hơn
Cụ thể, một vòng for giống như câu lệnh: “for every male student you meet
in a class, write down one, else, write down it’s a class of females only.”
Câu lệnh này giống như một hướng dẫn đơn giản, cho bạn biết bạn cần viết tên từng nam sinh đã gặp trong một lớp học cụ thể Nó là một vòng lặp liên tục
Tuy nhiên, để bắt đầu vòng lặp for trong trường hợp này, bạn phải gặp một học
sinh nam Nếu không, sau đó, bạn phải viết câu lệnh else (nếu không)
Nếu câu lệnh trên không có điều kiện else, bạn sẽ không cần phải viết thêm
bất cứ điều gì sau đó Điều này đồng nghĩa với việc nó là một mảng trống
3.2 Ví dụ thực tế về cách sử dụng vòng lặp for của ngôn ngữ Python
Giờ hãy xét một số ví dụ thực tế về cách sử dụng vòng lặp for trong
Python Đoạn mã sau đây xuất ra từng mục trong danh sách:
items = ["shoe", "bag", "shirts", "lamp"]
for i in items:
print(i) Bạn cũng có thể chỉnh sửa đoạn code trên để xuất bất kỳ mục có chữ cái
“a” trong danh sách:
items = ["shoe", "bag", "shirts", "lamp"]
for i in items:
Trang 9if "a" in i:
print(i)
Một vòng lặp for trong Python cũng dùng câu lệnh else trực tiếp:
b=[2, 3, 5, 6]
for i in b:
print(i) else:
print("Loop has ended")
Bạn có thể dùng lệnh break để thay đổi quy trình của một vòng lặp:
b=[2, 3, 5, 6]
for i in b:
if i>3:
break print(i)
Bạn cũng có thể sử dụng từ khóa continue với một loop for:
b=[2, 3, 5, 6]
for i in b:
if i>3:
continue print(i)
3.3 Sử dụng vòng lặp for với List và String trong ngôn ngữ Python
Giờ chúng ta hãy quan sát đoạn code dưới đây, đoạn code này cho phép xuất toàn bộ các số nguyên dưới từ 1 tới 100 Để thực hiện việc này, đầu tiên tạo một danh sách các số trong phạm vi từ 1 đến 100 bằng việc sử dụng
hàm range của Python.
for x in range(1, 101):
print(x) Bạn có thể chỉnh sửa khối code bằng cách giới thiệu một lệnh điều kiện để xuất toàn bộ số lẻ giữa 1 và 100
for x in range(1, 101):
Trang 10if x%2==1:
print(x) Hoặc bạn cũng có thể tạo bảng cửu chương nhân 2 theo đầu ra của đoạn mã trên Để làm việc này, bạn chỉ cần thêm một vài câu lệnh đơn giản:
for x in range(1, 101):
if x%2==1:
print(x, "x", 2, "=", x * 2)
Giờ bạn đã biết cách vòng lặp for hoạt động với một danh sách các số nguyên Tiếp theo, chúng ta hãy tìm hiểu cách sử dụng vòng lặp for với các chuỗi.
Đoạn code bên dưới trả về một chuỗi của mỗi string trong một lệnh:
a = "How to use a for loop in Python"
for i in a:
print(i) Chúng ta cũng có thể đếm số của chuỗi (bao gồm khoảng cách) trong
biến a sử dụng vòng lặp for:
a = ["How to use a for loop in Python"]
for i in a:
print(i.count('')) Output: 32
Tuy nhiên, bạn cũng có thể đặt một vòng lặp for trong một biến riêng và
nhận kết quả tương tự bằng cách điều chỉnh đoạn code trên như sau:
a=["How to use a for loop in Python"]
c=[b.count('') for b in a]
print(c) Output: [32]
Chú ý: Để có được số lượng ký tự, đảm bảo không có khoảng cách giữa
các dấu ngoặc kép trong ngoặc đơn theo sau từ khóa count Bạn cũng có thể
chỉnh sửa từng code trong hai đoạn mã gần nhất ở trên để tạo ra một bộ đếm từ
đơn giản bằng vòng lặp for Lúc này, toàn bộ việc bạn cần làm trong trường hợp
này là chèn thêm một khoảng trắng giữa mỗi dấu ngoặc kép trong dấu ngoặc đơn:
Trang 11a=["How to use a for loop in Python"]
for i in a:
print(i.count(' ') + 1) Output: 8
Giống như đã từng làm ở bộ đếm ký tự, bạn cũng có thể chỉnh lại code đếm
từ ở trên bằng cách đặt vòng lặp for trong một biến như sau:
a = ["How to use a for loop in Python"]
c=[b.count(' ') + 1 for b in a]
print(c) Output: [8]
Chú ý tới khoảng trắng duy nhất nằm ở giữa các trích dẫn trong ngoặc đơn
3.4 Sử dụng ngôn ngữ Python để tạo vòng lặp với một array
Bạn cũng có thể dùng vòng lặp for để có một nhân tố cụ thể trong một array Giải sử bạn có một mảng dữ liệu Sheep với các giá trị Yes cho động vật
“healthy” và No cho “unhealthy” Mỗi con cừu đều có tên riêng và bạn muốn
cách ly tất cả những con bị bệnh
Bạn có thể dùng vòng lặp for để xuất toàn bộ cừu bị bệnh, chẳng hạn như
sau:
array = [{"name":"Sheep1", "healthy":"Yes"}, {"name":"Sheep3", "healthy":"No"},
{"name":"Sheep4", "healthy":"Yes"}, {"name":"Sheep5", "healthy":"Yes"}, {"name":"Sheep8", "healthy":"No"}, {"name":"Sheep7", "healthy":"No"}, {"name":"Sheep9", "healthy":"No"}
] for sheeps in array:
if sheeps["healthy"]=="No":
print("Quarantine", sheeps["name"])
Trang 123.5 Sử dụng Nested cho vòng lặp trong ngôn ngữ Python
Một vòng lặp for lồng nhau rất hữu ích khi bạn muốn xuất từng nhân tố
trong một dãy phần tử phức tạp hay được lồng nhau Nó hoạt động bằng cách đặt một vòng lặp bên trong vòng lặp khác
Ví dụ:
nested_list = [[1, 2, 4, 5], {"name":"Python", "method":"write"}]
for dict in nested_list:
for i in dict:
print(i)
Tùy thuộc vào vấn đề, mỗi vòng lặp for và while có tầm ảnh hưởng riêng
trong ngôn ngữ Python
4 Hiệu quả của sáng kiến
Từ thực tế dạy học của bản thân trong những năm học vừa qua Tôi nhận thấy việc dùng ngôn ngữ C/C++ trong dạy học tin học cũng như bồi dưỡng học sinh giỏi vẫn có nhiều ưu điểm Tuy nhiên, với chương trình giáo dục phổ thông
2018 mới thì việc tiếp cận ngôn ngữ Python là cần thiết, không phải bởi được viết trong sách giáo khoa mà còn vì đây là ngôn ngữ đang được ứng dụng rất phổ biến trong lĩnh vực lập trình
Khi đã quen với Python thì việc viết chương trình sẽ trở nên đơn giản hơn rất nhiều so với việc sử dụng các ngôn ngữ khác như Pascal và C/C++
Các kỹ thuật lập trình được hỗ trợ tốt hơn, khả năng phát triển ứng dụng và debug nhanh hơn
Học sinh có thể dễ dàng tiếp cận hơn do Python không cần sử dụng các kiểu dữ liệu khai báo
5 Kết luận, kiến nghị
5.1 Kết luận
Việc ứng dụng ngôn ngữ lập trình nào trong dạy học bộ môn tin học hiện nay đang rất mở, không bắt buộc cụ thể với loại ngôn ngữ nào Tuy nhiên, theo chương trình giáo dục mới và theo Sách giáo khoa mới thì Python là ngôn ngữ
Trang 13được chỉ định Đề tài này đã góp một phần trong việc giúp các trường, Thầy cô giáo và học sinh tiếp cận được với ngôn ngữ lập trình mới, nâng cao chất lượng giảng dạy và phù hợp với sự tiến bộ của lĩnh vực CNTT
5.2 Kiến nghị
Đề tài có thể được viết chuyên sâu hơn nhằm cung cấp tài liệu tham khảo cho các trường THPT trong việc dạy và học bộ môn tin học theo chương trình giáo dục phổ thông 2018
Tôi xin chân thành cảm ơn!
Thanh Hóa, ngày 26 tháng 04 năm 2022
Tôi xin cam đoan đây là SKKN của mình viết, không sao chép nội dung
của người khác
Xác nhận của lãnh đạo nhà trường Tác giả
Trương Văn Phát