SKKN Phát huy tính tích cực của học sinh thông qua một số bài tập có nội dung thực tiễn bằng ngôn ngữ Python

Đề tài được nghiên cứu dựa trên thực tế các tiết dạy về lập trình Tin học 11 với chủ ý làm đậm nét hơn các ứng dụng của Tin học vào thực tiễn. Sáng kiến kinh nghiệm đưa ra nhằm vào tính mục đích, tính khả thi, tính hiệu quả của việc xây dựng hệ thống bài tập có nội dung thực tiễn.

- Tính mục đích của hệ thống bài tập có nội dung thực tiễn được xác định dựa trên cơ sở những mục đích chung của giáo dục đó là hệ thống các bài tập có nội dung thực tiễn với ý nghĩa ứng dụng rõ rệt, thông qua quá trình rèn luyện cho học sinh khả năng và ý thức sẵn sàng ứng dụng Tin học vào thực tiễn.

- Tính khả thi của hệ thống bài tập có nội dung thực tiễn được hiểu là khả năng thực hiện được (xây dựng được, sử dụng được) hệ thống bài tập này trong thực tế dạy học ở trường THPT Diễn Châu 5 hiện nay.

- Tính hiệu quả của việc xây dựng hệ thống bài tập có nội dung thực tiễn trong dạy học Tin học được hiểu là sự tiến bộ vững chắc, mức độ thành thạo trong việc giải các bài tập có nội dung thực tiễn của học sinh, hình thành và phát triển ở học sinh thói quen và hứng thú vận dụng kiến thức Tin học vào các tình huống trong học tập, lao động và sản xuất trong đời sống.

 

docx 29 trang Nhật Nam 03/10/2024 480
Bạn đang xem 20 trang mẫu của tài liệu "SKKN Phát huy tính tích cực của học sinh thông qua một số bài tập có nội dung thực tiễn bằng ngôn ngữ Python", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: SKKN Phát huy tính tích cực của học sinh thông qua một số bài tập có nội dung thực tiễn bằng ngôn ngữ Python

SKKN Phát huy tính tích cực của học sinh thông qua một số bài tập có nội dung thực tiễn bằng ngôn ngữ Python
trình có 1 nghiệm x = 0") else:
x = -c / b
print ("Phương trình có 1 nghiệm x = ", x) else:
delta = b ** 2 - 4 * a * c if delta <0:
print ("Phương trình vô nghiệm.") elif delta == 0:
x = -b / (2 * a)
print ("Phương trình có 1 nghiệm kép x = ", round(x,2)) else:
print ("Phương trình có 2 nghiệm phân biệt.")
x1 = float ((-b - sqrt ( delta )) / (2 * a)) x2 = float ((-b + sqrt ( delta )) / (2 * a))
print ("x1 = ", round(x1,2))
print ("x2 = ", round(x2,2))
Kết quả của bộ test a = 3; b = 4; c = -7
Bài tập 2: Trả tiền điện thắp sáng
Cho bảng giá tính tiền điện sinh hoạt hàng tháng theo giá bán lẻ của của tổng công ty điện lực EVN sau:
TT
Nhóm đối tượng khách hàng
(Giá bán lẻ điện sinh hoạt)
Giá bán điện (đồng/kWh)
1
Bậc 1: Cho kWh từ 0 – 50
1.678
2
Bậc 2: Cho kWh từ 51 – 100
1.734
3
Bậc 3: Cho kWh từ 101 – 200
2.014
4
Bậc 4: Cho kWh từ 201 – 300
2.536
5
Bậc 5: Cho kWh từ 301 – 400
2.834
6
Bậc 1: Cho kWh từ 0 – 50
1.678
Yêu cầu: Tính số tiền điện phải trả cho công ty điện lực của 1 hộ gia đình trong một tháng, biết rằng ngoài tiện điện phải trả, người dùng còn phải trả thế giá trị gia tăng (VAT) là 8%
Dữ liệu: Nhập vào từ bàn phím số nguyên dượng N (0 < N ≤ 10000) là số kW điện mà hộ gia đình đó sử dụng trong một tháng.
Kết quả: In ra màn hình 3 giá trị tương ứng với 3 dòng có cấu trúc như sau:
Dòng 1: Số tiền tương ứng với giá bán điện của EVN.
Dòng 2:Số tiền tương ứng với thuế VAT.
Dòng 3: Tổng số tiền điện mà hộ gia đình đó phải trả trong tháng.
Nhận xét: Đây là một bài toán rất thực tế, gắn liền với thực tiễn cuộc sống, liên quan đến quyền lợi, ý thức trách nhiệm và nghĩa vụ của mỗi gia đình. Hiện nay, giá tiền điện sinh hoạt của mỗi hộ gia đình phải trả hàng tháng được tính theo giá điện bậc thang lũy tiến, dùng nhiều trả tiền nhiều.
Thông qua bải toán này cũng có thể giáo dục học sinh thấy được biểu giá điện bậc thang và chi phí phải trả tiền điện hàng tháng lớn như thế nào, qua đó nhằm giáo dục học sinh ý thức tiết kiệm điện trong tiêu dùng vì điện là nguồn năng lượng quý giá và luôn thiếu hụt trong sản xuất, đặc biệt vào dịp hè điện luôn yếu và thiếu thường xuyên. Tiết kiệm điện cũng là tiết kiệm kinh tế cho gia đình vì dùng nhiều điện thì phải trả nhiều tiền.
Chương trình được viết bằng Python như sau:
a=int(input("Nhập vào số kWh điện tiêu thụ trong tháng:"))
if a<=50: x=a*1678
elif a<=100: x=50*1678 +(a-50)*1734
elif a<=200: x= 50*1678 + 50*1734 + (a-100)*2014 elif a<=300: x=50*1678 + 50*1734 + 100*2014 + (a- 200)*2536
elif a<=400: x=50*1678 + 50*1734 + 100*2014 + 100*2536 + (a-300)*2536
else: x=50*1678 + 50*1734 + 100*2014 + 100*2536 +
100*2536 +(a-400)*2927
v=round(x*8/100) tong=x+v
print()
print("Số tiền tiêu thụ điện là:",x,"VNĐ") print("Thuế VAT:	",v ,"VNĐ") print("Tổng tiền phải trả:	",tong,"VNĐ")
Kết quả của bộ test a = 10000
Bài tập 3: Em sinh ngày thứ mấy trong tuần?
Nhập vào ngày, tháng, năm sinh dương lịch của một em học sinh. Rồi cho biết em đó sinh vào ngày thứ mấy trong tuần.
Yêu cầu: Nhập vào 3 số nguyên dd (dd ≤ 31), mm (mm ≤ 12) và yy, tương ứng của 3 giá trị ngày – tháng – năm (Dương lịch)
Kết quả: In ra dòng thông báo ngày – tháng – năm tương ứng với ngày thứ mấy trong tuần.
Nhận xét: Đây là bài toán rất thực tế và tạo hứng thú học tập cho học sinh vì ngày sinh nhật chúng ta có thể nhớ, song mình được sinh ra ngày thứ mấy trong tuần thì ít ai biết được. Vì vậy, hầu như học sinh nào cũng muốn biết mình hay bạn mình được sinh vào thứ mấy, qua đó lớp học được sôi nổi, tạo động lực học lập trình hơn cho học sinh.
Với bài toán này, tôi hướng dẫn và cung cấp cho học sinh cách tính thứ trong tuần như sau:
Năm = 1900 + năm %1900 (% phép toán chia lấy dư trong Python)
Nếu tháng < 3 thì tháng = tháng + 12 và năm = năm – 1;
Thứ = ABS(ngày + 2x tháng +3x(tháng +1) // 5 + năm + năm //4)%7 (// phép toán chia lấy nguyên trong Python)
Nếu Thứ = 0 thì in ra Chủ nhật
Chương trình được viết bằng Python như sau:
print()
print('Nhập vào ngày tháng năm Dương lịch:') dd=int(input("Ngày:"))
mm=int(input("Tháng:"))
yy=int(input("Năm:"))
print() print("ngày",dd,"tháng",mm,"năm",yy) yy=1900 + yy % 1900
if mm<3:
mm=mm+12 yy=yy-1
thu=abs(dd + 2*mm + 3*(mm+1) // 5 + yy + yy // 4) % 7 if thu<=0: print("là ngày chủ nhật")
else: print("là ngày thứ",thu+1)
Kết quả của bộ test: ngày 30 tháng 4 năm 2022
Bài tập 4: Năm Âm lịch được tính như thế nào?
Cũng là bài toán liên quan đến ngày tháng năm, tuy nhiên bài toán lần này đơn giản hơn nhiều nhưng không phải học sinh nào cũng biết về quy tắc này. Đó là chuyển năm Dương lịch sang năm Âm lịch (Can – Chi). Xuất phát từ bài tập
4.23 trang 36 sách bài tập Tin học 11. Bài toán như sau:
Theo năm Dương lịch được biểu diễn bằng một số nguyên ứng với năm Âm lịch lại được gọi là Can và Chi.
Có tất cả 10 can: Canh, Tân, Nhâm, Quý, Giáp, Ất,Bính, Đinh, Mậu, Kỷ Có tất cả 12 chi: Thân, Dậu, Tuất, Hợi, Tý, Sửu, Dần, Mão, Thìn, Tỵ, Ngọ,
Mùi
Hướng dẫn: Can và chi được lấy lần lượt theo chiều kim đồng hồ. Ví dụ, năm 2021 là Tân Sửu, năm 2022 là Nhâm Dần, năm 2023 là Quý Mãotrong đó, từ đứng trước là can, từ đứng sau là chi.
Can = năm % 10 (VD: 2022 % 10 = 2 → “Nhâm”)
Can[0] =”Canh”
Chi = năm % 12 (VD: 2022 % 12 = 6 → “Dần”)
Chi[0] = “Canh”
Yêu cầu: Nhập vào từ bàn phím một số nguyên dương N là năm Dương lịch, đưa ra màn hình dòng thông báo tên gọi năm Âm lịch tương ứng.
Nhận xét: Đây là bài toán khá đơn giản, tuy nhiên nó chỉ đơn giản đối với một số người đã biết về quy tắc này đặc biệt là người lớn tuổi, với các bạn trẻ như học sinh ngày nay hầu như chỉ biết đến 12 con giáp (tương ứng với 12 chi). Để tính can của năm âm lịch thì hầu hết học sinh không hề để ý đến; Qua bài toán này muốn gợi ý cho học sinh hiểu biết cách đổi năm Dương lịch sang năm Âm lịch theo cách gọi truyền thống của ông cha ta xưa nay.
Chương trình được viết bằng Python như sau:
print() Chi=["Thân","Dậu","Tuất","Hợi","Tý","Sửu","Dần","Mão", "Thìn","Tỵ","Ngọ","Mùi"] Can=["Canh","Tân","Nhâm","Quý","Giáp","Ất","Bính", “Đinh”,”Mậu”,”Kỷ”]
n=int(input(“Nhập vào số năm Dương lịch: “)) if n>0:
print(“Năm”,n,”là năm”,Can[n%10],Chi[n%12])
Kết quả của bộ test: năm 2022
Bài tập 5: Chọn vị trí để đường chạy ngắn nhất?
Trong một buổi học trải nghiệm của trường THPT Diễn Châu 5, giáo viên tổ chức cuộc thi chạy trên bãi biển với điều kiện sau: các học sinh xuất phát từ điểm A và đích đến là điểm B, nhưng trước khi đến B phải nhúng mình vào nước biển tại điểm M. Bài toán đặt ra là lựa chọn điểm M ở đâu để tổng chiều dài đường chạy là ngắn
nhất (tức là AM + MB nhỏ nhất)
Với bài toán này, giáo viên có thể yêu cầu học sinh mô hình hóa bài toán hoặc giáo viên mô hình hóa bài toán thực tế này thành bài toán hình học như sau:Giả sử, mép nước biển là một đường thẳng, khi đó: ta quy về bài toán hệ trục toạ độ Oxy như sau: cho hai điểm A(xA,yA) và B(xB,yB) nằm về một phía của trục hoành (y ≥ 0). Hãy xác định điểm M trên trục Ox sao cho MA + MB bé nhất.
Hướng dẫn:
Lấy A’ đối xứng A qua Ox; Khi đó A’(xA,-yA) và MA =MA’.
=>MA + MB = MA’ + MB
Ta có: MA’ + MB ≥ A’B
Dấu ‘=’ xẩy ra khi M thuộc A,B hay A’B ∩ Ox = M.
ptđt(A’B): 𝑥−𝑥𝐴′ = 𝑦−𝑦𝐴 
𝑥𝐵−𝑥𝐴′	𝑦𝐵−𝑦𝐴′
Với M thuộc Ox => M(x,0).
Từ đó ta tìm được tọa độ điểm M
Yêu cầu: Nhập vào từ bàn phím tọa độ 2 điểm A và B là các số thực với điều kiện tung độ của các điểm phải lớn hơn 0; nếu nhỏ hơn hay bằng không thì yêu cầu nhập lại (yA> 0 và yB> 0). In ra màn hình tọa độ điểm M thỏa mãn yêu cầu của bài toán.
Nhận xét: Thực ra đây là một bài toán hình học, tuy nhiên nó được xuất phát từ một trò chơi thực tiễn. Qua đó, tạo hứng thú cho học sinh trong học tập đồng thời khơi dậy niềm đam mê tìm tòi, khám phá kiến thức bởi trong thực tế có những hoạt động hay công việc ta có thể sử dụng toán học để giải quyết vấn đề và ngược lại các bài toán chúng ta cũng có thể vận dụng đượcvào các hoạt động thường ngày.
Chương trình được viết bằng Python như sau:
import fractions print()
xa=float(input("Nhập vào hoành độ điểm A: xA=")) ya=float(input("Nhập vào tung độ điểm A: yA=")) xb=float(input("Nhập vào hoành độ điểm B: xB=")) yb=float(input("Nhập vào tung độ điểm B: yB=")) print("A(",xa,";",ya,")")
print("B(",xb,";",yb,")")
if ya<=0: print("Tung độ điểm A không hợp lệ! Mời nhập lại.")
elif yb<=0: print("Tung độ điểm B không hợp lệ! Mời
nhập lại") else:
print("Tọa độ điểm M để MA+MB nhỏ nhất:") x=((0-(-ya))*(xb-xa)/(yb-(-ya))+xa)
#tạo phân số trong trường hợp x là số thực print("M(",fractions.Fraction(x),";",0.0,")")
Kết quả của bộ test: A(1,2) và B(4,4)
Bài tập 6: Tìm mật khẩu cho tài liệu
Lý là một học sinh ham học thường tìm kiếm tài liệu trên mạng để tham khảo, nhưng một số tài liệu hay lại thường được người cung cấp đặt mật khẩu bảo mật. Tuy nhiên, người cung cấp tài liệu lại cấp cho mỗi tài liệu một mã số N là một số nguyên dương không quá 1000 chữ số sau khi downloand xong, tùy theo giá trị của tài liệu mà mã số nhỏ hay lớn.
Để mở được tài liệu, Lý phải tìm cách nhập mật khẩu vào tài liệu đó. Mật khẩu là một dãy 4 ký tự được tạo ra bằng cách tính tổng giá trị của các chữ số có trong N, nếu tổng chác chữ số ít hơn 4 ký tự thì thêm vào phía trước các số 0 sao cho mật khẩu đủ 4 ký tự.
Yêu cầu: Nhập vào từ bàn phím 1 số nguyên dương N ( số chữ số của N không vượt quá 1000). Hãy tìm ra dãy số có 4 chữ số là mật khẩu cần tìm.
Ví dụ:
Dữ liệu vào
Dữ liệu ra
123456789987654321
0090
Nhận xét: Đây là một tình hướng thực tiễn mà ta thường gặp khi downloand tài liệu dạng nén trên mạng Internet. Với dạng bài toán này chỉ đơn giản là ta chỉ việc cộng các con số lại, nhưng độ phức tạp ở đây là không phải là các số nguyên nhỏ mà là một số có thể rất lớn, có thể lên đến hàng trăm, thậm chí là cả nghìn chữ số thì việc đếm rồi cộng lại thì mất rất nhiều thời gian. Vậy, bài toán đưa ra là cho phép chúng ta Copy số N và Paste vào chương trình Python thì ngay lập tức sẽ có được yêu cầu mình cần.
Chương trình được viết bằng Python như sau:
s=str(input("Nhập vào số nguyên N:")) n=l

File đính kèm:

  • docxskkn_phat_huy_tinh_tich_cuc_cua_hoc_sinh_thong_qua_mot_so_ba.docx
  • pdfLê Hồng Sơn - THPT Diễn Châu 5 - Tin học.pdf