Trong các sách giáo khoa môn Tin và cáctài liệu tham khảo về Tin học thường chỉ tập trung chú ý những vấn đề, nhữngbài toán trong toán học; số lượng ví dụ, bài tập có nội dung liên môn v
Trang 1MỤC LỤC
MỤC LỤC……….……… 1
1 Mở đầu ……….……2
1.1 Lí do chọn đề tài……… 2
1.2 Mục đích nghiên cứu………3
1.3 Đối tượng nghiên cứu……… ….3
1.4 Phương pháp nghiên cứu……… 3
2 Nội dung……….……4
2.1 Cơ sở lí luận …… … ……….….4
2.2 Những quan điểm cá nhân về vấn đề xây dựng hệ thống bài tập có nội dung thực tiễn …… …… ……… 5
2.3 Các giải pháp giải quyết vấn đề…… ………… 5
2.3.1 Hệ thống bài tập có nội dung thực tiễn ………… 5
Bài tập 1….……….5
Bài tập 2….……….7
Bài tập 3….……….7
Bài tập 4….……….9
Bài tập 5….……… 10
Bài tập 6….……… 11
Bài tập 7….……… 13
Bài tập 8….……… 15
2.3.2 Một số gợi ý về phương pháp dạy học sử dụng hệ thống bài tập đã được xây dựng ……….16
2.4 Hiệu quả của sáng kiến kinh nghiệm … 17
3 Kết luận và kiến nghị… ….……… 21
3.1 Kết luận…….……….21
3.2 Kiến nghị… …… ……….……… …… 21
TÀI LIỆU THAM KHẢO ……….23
DANH MỤC SÁNG KIẾN……… ….24
Trang 2
1 Mở đầu
1.1 Lí do chọn đề tài
Do yêu cầu đổi mới về phương pháp dạy học và chương trình Tin họcphổ thông Định hướng đổi mới phương pháp dạy học đã được cụ thể hóatrong chỉ thị của Bộ giáo dục và đào tạo đã nêu: “ Phải phát huy tính tích cực,
tự giác, chủ động, sáng tạo của học sinh, phù hợp với đặc trưng của môn học,đặc điểm đối tượng học sinh, điều kiện của từng lớp học; bồi dưỡng cho họcsinh phương pháp tự học, khả năng hợp tác; rèn luyện kĩ năng vận dụng kiếnthức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú và tráchnhiệm học tập cho học sinh
Môn Tin học phổ thông hiện nay trong trường phổ thông thì yêu cầukiến thức, kỹ năng trong phần lập trình là rất ít Bản thân môn Tin học phổthông không được coi trọng và không có trong danh sách các môn thi tốtnghiệp hay thi vào các trường đại học, cao đẳng
Những ứng dụng của Tin học vào thực tiễn trong chương trình và sáchgiáo khoa, cũng như trong thực tế dạy học Tin học chưa được quan tâm mộtcách đúng mức và thường xuyên Trong các sách giáo khoa môn Tin và cáctài liệu tham khảo về Tin học thường chỉ tập trung chú ý những vấn đề, nhữngbài toán trong toán học; số lượng ví dụ, bài tập có nội dung liên môn và thực
tế trong các sách giáo khoa để học sinh học và rèn luyện còn rất ít
Hiện nay Bộ giáo dục vào đà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 đó
có môn Tin học sẽ là môn học bắt buộc trong nhà trường từ lớp 3 đến lớp 12.Trong đó mảng kiến thức khoa học máy tính (Computer Science – CS) sẽđóng vai trò trung tâm, vì vậy kỹ năng lập trình sẽ đóng vai trò rất lớn trongChương trình Tin học phổ thông mới
Tổng thống Mỹ Barack Obama từng nói: “Đừng chỉ chơi game trên điệnthoại, hãy học lập trình ở đó” Mang đến cho trẻ em cơ hội học lập trình trongchương trình Tin học phổ thông không chỉ giúp chúng thành công trong tươnglai nhờ được học những thứ cần thiết mà còn khiến trẻ có kỹ năng tất cả vấn
đề tốt hơn
Trang 3Vì những lí do trên tôi chọn đề tài nghiên cứu của sáng kiến là: 'Phát huy tính tích cực, yêu thích lập trình của học sinh thông qua một số bài tập
có nội dung thực tiễn trong chương trình Tin học 11"
1.2 Mục đích nghiên cứu
Nghiên cứu cơ sở lý luận và thực tiễn của vấn đề rèn luyện cho họcsinh năng lực vận dụng kiến thức Tin học để giải quyết một số bài toán có nộidung thực tiễn; xây dựng hệ thống bài tập có nội dung thực tiễn trong dạyhọc Tin học 11 ở trường THPT, đồng thời đưa ra những gợi ý, lưu ý vềphương pháp dạy học hệ thống bài tập đó
1.3 Nhiệm vụ nghiên cứu
Sáng kiến có nhiệm vụ giải đáp những câu hỏi khoa học sau đây:
- Vai trò và ý nghĩa của việc rèn luyện cho học sinh năng lực vận dụng
kiến thức Tin học để giải quyết các bài toán có nội dung thực tiễn như thếnào
- Nghiên cứu việc xây dựng một hệ thống bài tập có nội dung thực tiễn,
nhằm đáp ứng yêu cầu rèn luyện cho học sinh năng lực vận dụng kiến thứcTin học để giải quyết một số bài toán có nội dung thực tiễn
- Thực nghiệm sư phạm để minh họa tính khả thi và hiệu quả của việclựa chọn Hệ thống bài tập có nội dung thực tiễn
1.4 Phương pháp nghiên cứu
- Nghiên cứu lý luận;
- Điều tra thực tế;
- Thực nghiệm sư phạm
Trang 4
2.1.2 Tại sao nên áp dụng kỹ năng lập trình để giải quyết các bài toán thực tế?
Giáo sư Niklaus Wirth- Cha đẻ của Pascal đã nói rằng:
‘‘ Có người cho rằng Pascal được thiết kế như một ngôn ngữ để giảng dạy Mặc dù điều này là đúng, nhưng việc sử dụng nó để giảng dạy không phải là mục đích duy nhất Thực tế, tôi không tin vào sự thành công của việc
áp dụng trong khi học các công cụ và phương pháp mà không thể sử dụng để giải quyết các bài toán thực tế” [1]
2.1.3 Vai trò của việc rèn luyện cho học sinh năng lực vận dụng kiến thức Tin học vào thực tiễn
- Lập trình là một kỹ năng quan trọng trong thế kỷ 21 Rèn luyện cho họcsinh năng lực vận dụng kiến thức Tin học vào thực tiễn là phù hợp với xuhướng phát triển chung của thế giới và thực tiễn Việt Nam ; là một yêu cầu cótính nguyên tắc góp phần phản ánh được tinh thần và sự phát triển theo hướngứng dụng cao của Tin học
Để thực hiện nguyên tắc kết hợp lí luận với thực tiễn trong việc dạy học Tin học,cần:
+ Đảm bảo cho học sinh nắm vững kiến thức Tin học để có thể vận dụng chúngvào thực tiễn;
+ Chú trọng nêu các ứng dụng của Tin học vào thực tiễn, rèn luyện cho học sinh
có những kỹ năng lập trình vững chắc;
+ Chú trọng công tác thực hành tin học trong nội khóa cũng như ngoại khóa
- Rèn luyện năng lực vận dụng kiến thức Tin học vào thực tiễn, giúp học
sinh có kỹ năng thực hành và làm quen dần các tình huống thực tiễn
Trang 52.2 Những quan điểm cá nhân về vấn đề xây dựng hệ thống bài tập
có nội dung thực tiễn
Hệ thống bài tập có nội dung thực tiễn trong giảng dạy Tin học 11 vớichủ ý làm đậm nét hơn nữa các ứng dụng của Tin học vào thực tiễn Sáng
kiến đưa ra sẽ 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
- 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 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 chohọ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àytrong thực tế dạy học ở trường THPT 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ạotrong 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àocác tình huống trong học tập, lao động sản xuất và trong đời sống
2.3 Các giải pháp giải quyết vấn đề
2.3.1 Hệ thống bài tập có nội dung thực tiễn
Bài tập 1 Trả tiền điện
Cho bảng giá tiền điện sinh hoạt được tính theo giá bán lẻ theo các bậc sau:
Trang 6một tháng Biết rằng thuế VAT là 10%.
Dữ liệu: Nhập từ bàn phím số nguyên dương là số kW điện
mà một hộ gia đình dùng trong một tháng
Kết quả: In ra màn hình ba giá trị tương ứng trên ba dòng, mỗi số gồm hai
chữ số thập phân
Dòng 1: Số tiền tương ứng với giá bán điện của công ty.
Dòng 2: Số tiền tương ứng với thuế VAT
Dòng 3:Tổng số đ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, liên quan
đến quyền lợi, ý thức, trách nhiệm, nghĩa vụ của mối gia đình Hiện nay, giá
tiền điện sinh hoạt mà mỗi hộ gia đình hải trả hàng tháng được tính giá điện bậc thang, lũy tiến, dùng nhiều trả nhiều.
Thông qua bài này giáo viên cũng giáo dục cho học sinh rằng: chức năngchính của biểu giá điện bậc thang ta thấy chi phí trả tiền điện là rất lớn, quađây giáo dục cho học sinh ý thức tiết kiệm điện trong tiêu dùng để dành điệncho sản xuất vì điện năng là nguồn năng lượng quý và luôn luôn bị thiếu hụt
Do phải trả tiền nhiều hơn gấp bội khi dùng nhiều thì buộc lòng phải tiết kiệmlại, chứ nếu chỉ có tuyên truyền thì không hiệu có quả
else G:=50*1678+50*1734+100*2014+200*2536+ 300*2834+ 400)*2927;
Trang 7Nhập vào ngày, tháng, năm sinh dương lịch của em rồi cho biết em được sinhvào ngày thứ mấy trong tuần.
Nhận xét: Tôi nghĩ đây là bài toán rất tạo hứng thú lập trình cho học sinh Ai
cũng muốn biết mình hoặc người bạn của mình được sinh khi nào, vào thứmấy
Tôi cung cấp cho học sinh cách tính thứ trong tuần như sau:
thu:=abs(ngay+2*thang+3*(thang+1) div 5+nam+nam div 4) mod 7;
if thu=0 then writeln('chu nhat') else writeln( thu+1);
readln
end
Bài tập 3 Đọc số
Cho trước một số nguyên dương N( N<1000) Hãy đưa ra cách đọc số đó
Dữ liệu vào: File văn bản DOCSO.INT chứa một số nguyên dương N.
Dữ liệu ra: File văn bản DOCSO.OUT chứa xâu đọc tương ứng.
Ví dụ: 145 đọc là : mot tram bon muoi lam
Nhận xét: Bài toán này xuất phát từ thực tế các em đã được học trong toán rất
cơ bản, và ai cũng biết cách đọc và quy luật đọc Tạo hứng thú các em vận dụng kiến thức môn tin học vào lập trình để giải quyết bài toán
Chương trình
program bai3;
Trang 8if x mod 10 =5 then s:= s+'lam '
else s:= s+' '+ a[x mod 10] end
else
begin
s:= s+' '+a[ x div 10] +' muoi';
if x mod 10= 4 then s:= s+' tu' else
if x mod 10 = 5 then s:= s+' lam' else
Trang 9Theo dương lịch năm được biểu diễn bằng một số nguyên Theo âm lịch năm
được gọi theo can và chi Ví dụ năm dương lịch 2019 được gọi là năm Kỉ Hợi Trong đó Kỉ là can và Hợi là chi.
Có tất cả 10 can: Giáp, Ất, Bính, Đinh, Mậu, Kỉ, Canh, Tân, Nhâm, Quý
Có tất cả 12 chi: Tí, Sửu, Dần, Mão, Thìn, Tỵ, Ngọ, Mùi, Thân, Dậu, Tuất,Hợi
Yêu cầu: Hãy nhập vào một năm dương lịch và đưa ra màn hình tên gọi năm
âm lịch tương ứng ( dưới dạng tiếng Việt không dấu)
Nhận xét: Đây là một bài toán xem ra vô cùng đơn giản Tuy nhiên, nó chỉ dễ
với một số người, đặc biệt là người lớn Các bạn trẻ hiện nay hầu như chỉ biết
đến 12 con giáp, tương ứng với 12 Chi, chứ để tính Can thì hầu như các bạn
không để ý tới Để gợi ý cho học sinh biết làm bài này thì tôi gợi ý để các emhọc sinh tìm ra quy luật gán mảng hằng tương ứng với các chỉ số
Ví dụ: Năm 2019 là năm Kỉ Hợi
Can=2019 mod 10 -> 9 -> Kỉ Nên ta sẽ đánh dấu mảng Can vớiCan[0]= ‘Canh’;
Chi=2019 mod 12 -> 3 -> Hợi Nên ta sẽ đánh dấu mảng Chi vớiChi[0]= ‘Than’;
Chương trình
Trang 10Bài tập 5 Chuẩn hóa xâu họ tên
Nhập từ bàn phím xâu hoten họ và tên đầy đủ của một người dưới dạng chữ
in thường Thực hiện chuẩn hóa xâu trên và in kết quả ra màn hình
Nhận xét: Giáo viên nhắc lại cho học sinh xâu họ tên được chuẩn hóa theo
Tiếng Việt là xâu: mỗi từ được phân cách nhau bởi một khoảng trắng và các
kí tự đầu từ của tên người hải được viết hoa Như vậy việc đầu tiên là ta thựchiện xóa các khoảng trắng không hợp lệ ở đầu xâu, cuối xâu, giữa xâu rốithực hiện chuyển các kí tự đầu từ sang in hoa
Chương trình:
Program chuan_hoa_xau;
Var hoten:string; i,n:byte;
begin
Writeln(' nhap xau ho ten'); readln(hoten);
while hoten[1]=' ' do delete(hoten,1,1);
while hoten[length(hoten)]=' ' do delete(hoten,length(hoten),1);
while pos(' ',hoten)<>0 do delete(hoten,pos(' ',hoten),1);
hoten[1]:=upcase(hoten[1]);
for i:=2 to length(hoten)-1 do
if hoten[i]=' ' then hoten[i+1]:=upcase(hoten[i+1]);
writeln( ' xau chuan hoa la: ', hoten);
Trang 11readln
end
Bài tập 6 Bán hàng qua mạng[6]
Trang là một học sinh THPT trường X Là một học sinh nhưng em có
sở thích và niềm đam mê trong lĩnh vực kinh doanh qua mạng Mặt hàng embán là bút bi Qua một thời gian kinh doanh, đơn hàng ngày càng tăng, sốlượng bút bi nhập về ngày càng nhiều Để có thể nhanh chóng giao hàng chokhách, Trang muốn sắp xếp những chiếc bút theo màu sắc Trang có dãy bút
bi gồm các màu Xanh, Tím, Hồng Vì số lượng bút là rất lớn và không cónhiều thời gian nên Trang muốn nhờ các bạn học sinh giỏi bộ môn Tin thamgia kỳ thi chọn Học sinh giỏi cấp tỉnh năm 2018 sắp xếp giúp Em hãy giúpTrang sắp xếp lại dãy bút bi theo quy luật Xanh - Hồng - Tím
Dữ liệu vào: cho bởi file SORT.INP gồm 2 dòng:
Dòng 1: Ghi số N là số lượng bút bi (1 ≤ N ≤ 106)
Dòng 2: Gồm N kí tự mô tả dãy bút bi ( X – Xanh, T – Tím, H –
Hồng), các màu được phân cách nhau bởi một dấu cách
Dữ liệu ra: Ghi ra file SORT.OUT kết quả của dãy sau khi đã được sắp xếp đúng thứ tự, các kí tự được phân cách bởi một dấu cách.
10
X H X X X H X X X X
X X X X X X X X H H
Nhận xét: Ớ bài tập này học sinh bắt đầu làm quen với dạng bài tập khó hơn,
kết hợp thuật toán sắp xếp và dữ liệu kiểu tệp Mỗi loại màu bút bi nhập vào
sẽ được lưu vào một giá trị của mảng B Sắp xếp mảng B rồi in ra theo thứ tự
Trang 12if B[i]=1 then write(f2,'X ')
else if B[i]=2 then write(f2,'H ')
else if B[i]=3 then write(f2,'T ');
Trang 13một dãy gồm 4 chữ số Do phần lớn dùng vân tay nên mật mã bằng số Namgần như không sử dụng đến Để không bị quên mật mã này Nam phải mã hóadãy số đó và ghi vào sổ cất giữ.
Cách thức mã hóa của Nam như sau Nam lấy lần lượt 4 chữ cái bất kỳ
từ A Z trong bảng chữ cái tiếng Anh đại diện lần lượt cho 4 chữ số trongmật mã Chữ cái nhỏ nhất đại diện cho chữ số đầu tiên, chữ cái lớn tiếp theođại điện cho chữ số thứ 2, cứ như thế chữ cái lớn nhất sẽ đại diện cho chữ sốcuối cùng Số lượng các chữ cái này đúng bằng độ lớn của số mà nó đại diện
Để gây nhiểu và tăng bảo mật Nam còn dùng thêm nhiều chữ cái khác nhau,các chữ cái gây nhiểu luôn luôn có số lượng lớn hơn 9
Sau đó Nam ghi ngẫu nhiên các chữ cái trên vào sổ và cất giữ chúng
Yêu cầu: Hãy xây dựng chương trình giúp Nam giải ra mật mã của Iphone mà
Nam đã lưu trong sổ Biết rằng các chữ số trong mật mã luôn lớn hơn 0, tổng
số lượng các chữ cái gây nhiễu luôn nhỏ hơn hoặc bằng 104
Dữ liệu: Vào từ file văn bản MATMA.INP có nhiều dòng chứa các chữ cái từ
ZZCZPAPPAMMAQCQPPPPZAZZQMMQQMZZ
PYZCZZAYYDCDQPACFFG
2431
Nhận xét: Trong bài tập này khi mới nhìn vào học sinh sẽ cảm thấy khó hiểu.
Giáo viên gợi ý dùng đếm phân phối đếm từng kí tự nhập vào Rồi in ra sốlượng 4 kí tự xuất hiện ít nhất theo yêu cầu của đề bài
Chương trình
Trang 14if (dem[j]>= 1) and (dem[j]<=9)then begin write(f2,dem[j]);
inc(d);end; if d=4 then break;
vị trí trên con đường này Đầu con đường được đánh tọa độ bắt đầu từ 0 Tại
vị trí có tọa độ X (đơn vị chiều dài) có số lượng người sẽ sử dụng dịch vụ là
Y Trước mắt, nhà cung cấp dịch vụ cần đặt một trạm phát sóng có bán kính
Trang 15phủ sóng là K đơn vị chiều dài để phủ sóng cho một số người sử dụng dịch vụtrên con đường này.
Yêu cầu: Bạn hãy xác định vị trí đặt trạm phát sóng sao cho trạm có thể phục
vụ được số lượng người sử dụng nhiều nhất có thể
Dữ liệu: cho trong file văn bản MOBI.INP có cấu trúc như sau:
Dòng đầu tiên ghi hai số nguyên N và K (0<N ≤106, 0<K≤2*106), trong
đó N là số điểm dân cư đã được đánh dấu, K là bán kính phủ sóng củatrạm
Trong N dòng tiếp theo, dòng thứ i (i=1 N) ghi hai số nguyên X[i] vàY[i] cho biết tại vị trí X[i] có số lượng người dùng là Y[i] (0≤ X[i]
≤106, 0≤Y[i] ≤104) Các số trên cùng dòng viết cách nhau ít nhất mộtdấu cách
Kết quả: Ghi ra file văn bản MOBI.OUT một số nguyên cho biết số người
Nhận xét: Đọc file vào mảng Y, với Y[i] là số lượng người dùng tại tọa độ i.
tạo biến S, là tổng của Y[1]->Y[2*k] Cập nhập kết quả Dần dần tịnh tiến sang bên phảỉ Tại vị trí nào tổng số người phục vụ là nhiều nhất thì ta lấy tổng đó
Chương trình:
Const fi='MOBI.INP'; fo='MOBI.OUT'; nmax=1000000;
Var f:text; Y:array[0 4*nmax+2] of longint; x,n,k,S,res,i:longint;begin
assign(f,fi); reset(f); readln(f,n,k); fillchar(y,sizeof(y),0);
for i:=1 to n do readln(f,x,y[x]); s:=0;
for i:=0 to 2*k d s:=s+y[i];
res:=s;