Tải bản đầy đủ (.doc) (24 trang)

SKKN 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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.35 MB, 24 trang )

MỤ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

1




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ọc
phổ thông. Định hướng đổi mới phương pháp dạy học đã được cụ thể hóa
trong 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ọc
sinh 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ến
thứ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ách
nhiệ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ầu
kiế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ốt
nghiệ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ách
giáo khoa, cũng như trong thực tế dạy học Tin học chưa được quan tâm một
cách đúng mức và thường xuyên. Trong các sách giáo khoa môn Tin và các tài
liệu tham khảo về Tin học thường chỉ tập trung chú ý những vấn đề, những
bà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ới
giá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 trong
Chươ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ện
thoại, hãy học lập trình ở đó”. Mang đến cho trẻ em cơ hội học lập trình trong

chương trình Tin học phổ thông không chỉ giúp chúng thành công trong tương
lai 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.

2


Vì 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ọc
sinh 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ội
dung 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ạy
họ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ức
Tin 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ệc
lự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.


3


2. Nội dung
2.1. Cơ sở lý luận
2.1.1. Kỹ năng là gì?
Theo L. Đ.Lêvitôv nhà tâm lý học Liên Xô cho rằng: “Kỹ năng là sự
thực hiện có kết quả một động tác nào đó hay một hoạt động phức tạp hơn
bằng cách lựa chọn và áp dụng những cách thức đúng đắn, có tính đến những
điều kiện nhất định” . Theo ông, người có kỹ năng hành động là người phải
nắm được và vận dụng đúng đắn các cách thức hành động nhằm thực hiện
hành động có kết quả. Ông còn nói thêm, con người có kỹ năng không chỉ
nắm lý thuyết về hành động mà phải vận dụng vào thực tế.
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ọc
sinh 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 xu
hướ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úng
và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.
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
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ới
chủ ý 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 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 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 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:
Bậc
Số sử dụng (hộ/tháng)
Giá bán (đồng/kWh)
Bậc 1
Bậc 2
Bậc 3
Bậc 4
Bậc 5
Bậc 6

Cho kWh từ 0 – 50
Cho kWh từ 51 – 100
Cho kWh từ 101 – 200
Cho kWh từ 201 – 300
Cho kWh từ 301 – 400
Cho kWh từ 401 trở lên

1.678
1.734
2.014
2.536
2.834
2.927

Tính số tiền phải trả cho công ty điện lực của một hộ gia đình trong một
5



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ăng
chí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ện
cho 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ệm
lại, chứ nếu chỉ có tuyên truyền thì không hiệu có quả.
Chương trình
Program tien_dien;
Var N, G,v,kq:qword;
BEGIN
writeln(' nhap vao so dien '); readln(N);
if N<=50 then G:=N*1678 else
if N<=100 then G:=50*1678+(N-50)*1734 else
if N<=200 then G:=50*1678+50*1734+(N-100)*2014
else If N<=300 then G:=50*1678+50*1734+100*2014+(n-200)*2536
else if N<=400 then G:=50*1678+50*1734+100*2014+200*2536+ (n300)*2834

else G:=50*1678+50*1734+100*2014+200*2536+ 300*2834+ (n400)*2927;
writeln(G);
v:= (G div 100) *10;
writeln(v);
kq:= G +v;
writeln(kq);
readln
END.
Bài tập 2. Ngày, tháng, năm
6


Nhập vào ngày, tháng, năm sinh dương lịch của em rồi cho biết em được sinh
và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:
- Nếu tháng <3 thì tháng:=tháng + 12 và năm:=năm – 1;
- Thứ:=abs(ngày+2.tháng+3(tháng+1) div 5 + năm+năm div 4) mod 7;
- Thứ=0 thì in ra chủ nhật
Chương trình
Progam thu;
var thu,ngay,thang:byte; nam:integer;
begin
readln(ngay,thang,nam); nam:=1900+ nam mod 1900;
if thang<3 then
begin
thang:=thang+12; nam:=nam-1;
end;

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;
7


uses crt;
const a:array[1..9] of string =('mot','hai','ba','bon','nam','sau','bay','tam','chin');
var st: string;i,n: longint; f1,f2:text;
function chuc(x: byte): string;
var s:string;
begin
s:= '';
if x <10 then s:= s+'linh'+ ' '+a[x mod 10]
else
begin
if (x < 20) or (x=10) then begin
s:= 'muoi ';
if 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
s:= s+ ' '+a[x mod 10];
end;end;
chuc:=s;
end;
begin
assign(f1,'docso.inp'); reset(f1);
assign(f2,'docso.out');; rewrite(f2);
readln(f1,n); st:='';
if n<10 then writeln(f2,a[n])
else
begin
if n >= 100 then
begin
if n mod 100 =0 then st:= st+ a[n div 100]+' tram'
else
st:= st+a[n div 100]+ ' tram'+chuc(n mod 100) ;end
else
8


st:= chuc(n);
writeln(f2,st); end;
close(f1); close(f2);
end.

Bài tập 4. Can-Chi
Theo 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 em
họ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ới
Can[0]= ‘Canh’;
Chi=2019 mod 12-----> 3------> Hợi. Nên ta sẽ đánh dấu mảng Chi với
Chi[0]= ‘Than’;
Chương trình
9


program bai1;
uses crt;
const can:array[0..9] of
string=('Canh','Tan','Nham','Quy','Giap','At','Binh','Dinh','Mau','Ki');
chi:array[0..11] of
string=('Than','Dau','Tuat','Hoi','Ti','Suu','Dau','Mao','Thin','Ty','Ngo','Mui');

var n:longint;
begin
readln(n);
if n > 0 then
writeln(can[n mod 10],' ',chi[n mod 12]);
readln
end.
Bà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ực
hiệ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ối
thự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);
10



readln
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 em
bá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 cho
khá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 tham
gia 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úp
Trang 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.

SORT.INP
10

SORT.OUT
XXXXXXXXHH

XHXXXHXXXX
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ự.
Chương trình

Const fi='sort.inp';
fo='sort.out';
maxxx=1000005;
var i,x:int32; S:array[1..maxxx] of char;
f1,f2:text; ch:char;
m,n,j,tg:longint; B:array[1..maxxx] of byte;
procedure doc;
begin
assign(f1,fi); reset(f1); assign(f2,fo); rewrite(f2);
readln(f1,n); m:=n*2;
for i:=1 to m do read(f1,S[i]);
end;
11


procedure xuli;
begin
x:=0;
for i:=1 to m do
begin
if S[i] = 'X' then
begin
x:=x+1;
B[x]:=1;
end else
if S[i] ='H' then
begin
x:=x+1;
B[x]:=2;
end else

if S[i] ='T' then
begin
x:=x+1;B[x]:=3;
end;
end;
for i:=1 to n do
for j:=i+1 to n do
if B[i]>B[j] then
begin
tg:=B[j];
B[j]:= B[i];
B[i]:=tg;
end;
for i:=1 to n do
if 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 ');
end;
begin
doc; xuli;
close(f1);close(f2);
end.
Bài tập 7. Mật mã
Nam có một chiếc điện thoại Iphone 7, để sử dụng bảo mật bằng vân
tay Nam phải khai báo thêm mật mã bằng số. Mật mã bằng số của Iphone là
12


mộ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ố Nam
gần như không sử dụng đến. Để không bị quên mật mã này Nam phải mã hóa

dã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ố trong
mậ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ừ
A Z.
Kết quả: Đưa ra file văn bản MATMA.OUT mật mã bằng chữ số của Nam trước
khi mã hóa.

MATMA.INP
MAMCM

MATMA.OUT
2431

MCDAYCYYY
ZZCZYYYC
YYAYQCQQAQQMAQQ
QQDBBCFPPP
ZZCZPAPPAMMAQCQPPP
PZAZZQMMQQMZZ
PYZCZZAYYDCDQPACFFG

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
13


program matkhau;
uses crt;
var dem:array['A'..'Z'] of longint;
a:array [1..10000] of char;
i,d: longint; j: char; s:string; f1,f2:text;
begin
clrscr;
assign(f1,'matma.inp'); reset(f1);
assign(f2,'matma.out'); rewrite(f2);
fillchar(dem,sizeof(dem),0); i:=0;
while not eof(f1) do
begin
while not eoln(f1)do
begin
inc(i); read(f1,a[i]);
inc(dem[a[i]]); end; readln(f1);
end;d:=0;
for j:='A' to 'Z' do
begin
if (dem[j]>= 1) and (dem[j]<=9)then begin write(f2,dem[j]);
inc(d);end; if d=4 then break;
end;
close(f1); close(f2);

end.

Bài tập 8. Trạm phát sóng
Nhà cung cấp dịch vụ viễn thông Mobi đã khảo sát số lượng người sẽ dùng
dịch vụ trên một con đường thẳng mới được xây dựng và đánh dấu lại những
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
14


phủ 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 là số điểm dân cư đã được đánh dấu, K là bán kính phủ sóng của
trạ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ột
dấ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
dùng nhiều nhất sẽ được phục vụ.

Ví dụ:
MOBI.INP
43
74
15 10
22
15

MOBI.OUT
11

Giải thích
Chọn vị trí trạm tại X=4. Như vậy
có thể phủ sóng đến các vị trí có
toạ độ 1, 2, 7. Số lượng người sử
dụng lớn nhất là 11.

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';
Var

fo='MOBI.OUT';

f:text; Y:array[0..4*nmax+2] of longint;

nmax=1000000;

x,n,k,S,res,i:longint;

begin
assign(f,fi); reset(f); readln(f,n,k);
for i:=1 to n do readln(f,x,y[x]);

fillchar(y,sizeof(y),0);
s:=0;

for i:=0 to 2*k d s:=s+y[i];
res:=s;
15


for i:=1 to nmax-2*k do
begin
s:=s-Y[i-1];
s:=s+y[i+2*k];
if resend;
assign(f,fo); rewrite(f); writeln(f,res);
close(f);
end.
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
Hệ thống bài tập được xem là cơ sở quan trọng trong việc lồng ghép
những bài toán thực tiễn vào dạy học. Tuỳ vào từng chương, từng bài hay
từng mục, từng chi tiết cụ thể mà ta có kế hoạch dạy họ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 một cách phù hợp
nhất. Có những bài có thể chỉ vận dụng vào bài dạy mang tính chất điểm tựa,

để bài dạy thêm sinh động. Trong nhiều trường hợp ta cần sáng tạo thêm một
số bài toán khác đơn giản hơn, cụ thể hơn, sát thực đời sống thực tế hơn
nhưng không phức tạp trong việc giải chúng. Cụ thể khi sử dụng và giảng dạy
hệ thống bài tập cần chú ý những điểm sau đây:
Thứ nhất: Về việc khai thác hệ thống bài tập trong giảng dạy. Mặc dù
Hệ thống bài tập có nội dung thực tiễn được lựa chọn, cân nhắc một cách thận
trọng về nội dung cũng như hình thức và số lượng theo từng chủ đề kiến thức
Tin học; nhưng trong quá trình giảng dạy cần chú ý vận dụng linh hoạt vào
từng trường hợp cụ thể, chẳng hạn:
+) Đối với những chủ đề chưa có bài tập trong Hệ thống, ta có thể sáng
tạo các bài toán có lời văn mang nội dung thực tiễn hoặc các bài toán khác
làm ví dụ minh họa cho học sinh:
+) Đối với học sinh trung bình, yếu ta cần bổ sung những bài toán ở mức
độ thấp hơn những bài tập trong Hệ thống hoặc sử dụng vừa phải những bài
tập trong Hệ thống, có sự chỉ dẫn, gợi ý giúp các em hoàn thành được bài tập
ở nhà.
16


+) Đối với những học sinh khá, giỏi ta có thể lựa chọn những bài tập
nâng cao, ra nhiều bài tập về nhà hơn so với học sinh khác.
Thứ hai: Về việc lựa chọn thời điểm đưa các bài toán có nội dung thực
tiễn vào giảng dạy
Tuỳ thuộc vào từng bài, từng chương mà ta đưa bài toán có nội dung
thực tiễn vào thời điểm nào là phù hợp. Có thể đưa vào bài toán có nội dung
thực tiễn khi mở bài (hay đặt vấn đề), khi khai thác các ví dụ và tình huống
thực tế trong xây dựng và củng cố kiến thức, thay thế bổ sung các ví dụ hoặc
thay thế bổ sung bài tập trong sách giáo khoa sao cho phù hợp với tính chất,
trình độ của học sinh cũng như cơ sở vật chất hiện tại.
Thứ ba: Về phương pháp giảng dạy bài toán có nội dung thực tiễn

Trong giảng dạy các bài toán có nội dung thực tiễn, cần chú ý vận dụng
linh hoạt các bước giải một bài toán có nội dung thực tế:
Bước1: Chuyển bài toán thực tế về dạng ngôn ngữ thích hợp với lý thuyết
Bước 2: Giải bài toán trong khuôn khổ của lý thuyết ;
Bước 3: Chuyển kết quả của lời giải Tin học về ngôn ngữ của lĩnh vực thực
tế.
2.4. Hiệu quả của sáng kiến kinh nghiệm
2.4.1. Tổ chức thực nghiệm
2.4.1.1. Công tác chuẩn bị
Để tiến hành thực nghiệm có hiệu quả, tôi đã tiến hành nghiên cứu kỹ
nội dung, Chương trình, sách giáo khoa, tài liệu bồi dưỡng giáo viên, ... và
khảo sát tình hình thực tế việc dạy học vào thực tiễn cho học sinh lớp 11. Tài
liệu thực nghiệm được đưa ra tham khảo ý kiến nhiều giáo viên có kinh
nghiệm.
2.4.1.2. Tài liệu thực nghiệm
Gồm các bài toán có nội dung thực tiễn mà tôi đã lựa chọn, sắp xếp, hệ
thống hóa, bổ sung theo ý tưởng của đề tài. Khi xây dựng các giáo án thực
nghiệm tôi luôn chú ý tới:
- Lựa chọn thời điểm cụ thể đưa bài toán thực tiễn vào giảng dạy cho học
sinh;

17


- Xác định quỹ thời gian thích hợp dành cho bài toán thực tiễn và sử
dụng hợp lý quỹ thời gian đó;
- Phối hợp chặt chẽ, linh hoạt, mềm dẻo giữa các nội dung khác của bài
dạy với việc dạy học các bài toán có nội dung thực tiễn.
2.4.2. Hiệu quả của sáng kiến kinh nghiệm
2.4.2.1. Một số kết quả định lượng

Việc phân tích định lượng dựa vào kết quả kiểm tra trong đợt thực
nghiệm tại hai lớp thực nghiệm và đối chứng, nhằm minh họa và bước đầu
kiểm nghiệm tính khả thi, hiệu quả của việc lựa chọn hệ thống bài tập có nội
dung thực tiễn.
Trong quá trình thực nghiệm, tôi tiến hành một bài kiểm tra gồm ba bài
tập để đánh giá.
a) Nội dung bài kiểm tra (thời gian làm bài 45 phút)
Bài 1: Trả tiền nước [4]
Công ty TNHH MTV kinh doanh nước sạch trên địa bàn một tỉnh quy định giá bán
nước sạch sinh hoạt cho các hộ dân cư trong địa bàn tỉnh như sau:

Giá bán
(đ/m3)
Từ m3 thứ 1 đến m3 thứ 5
6500
3
3
Từ m thứ 6 đến m thứ 15
7800
3
3
Từ m thứ 16 đến m thứ 25
9200
3
Từ m thứ 26 trở lên
10300
(Giá bán trên chưa bao gồm thuế VAT và phí nước thải)
Tính số tiền phải trả cho công ty nước sạch của một hộ gia đình trong
một tháng, biết rằng thuế VAT và phí nước thải là 12%.
Dữ liệu: Nhập từ bàn phím số nguyên dương

là số m3 nước
sạch 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 nước của công ty.
Dòng 2: Số tiền tương ứng với thuế VAT và phí nước thải.
Dòng 3:Tổng số tiền nước mà hộ gia đình đó phải trả trong tháng đó.
Lượng nước sạch sử dụng (hộ/tháng)

Ví dụ:

Dữ liệu vào
5

Dữ liệu ra
32500.00
3900.00
36400.00

Bài 2. Mật khẩu
18


Cu Tí thường xuyên tham gia thi lập trình trên mạng. Vì đạt được thành
tích cao nên Tí được gửi tặng một phần mềm diệt virus. Nhà sản xuất phần
mềm cung cấp cho Tí một mã số là một số nguyên dương N có không quá
1000 chữ số. Để cài đặt được phần mềm, Tí phải nhập vào mật khẩu của phần
mềm. Mật khẩu là một số nguyên dương M được tạo ra bằng cách tính tổng
giá trị các chữ số của N.
Yêu cầu: Nhập vào từ bàn phím số nguyên dương N. Hãy tìm số nguyên

dương M. Ví dụ:
Dữ liệu vào
84915388247

Dữ liệu ra
59

Bài 3. Đá quý
Người ta xâu N viên đá quý kích thước giống nhau thành một vòng đeo
cổ (5tăng tính độc đáo cho vòng trang sức đá quý này người ta định lắp khóa đeo
vào vị trí sao cho khi mở vòng ta được một dãy đá quý có tính chất: không
phụ thuộc vào việc cầm đầu dây nào bên tay phải và đầu kia bên tay trái, ta
đều được chuỗi hạt giống nhau, tức là viên đá thứ i từ trái sang luôn có màu j
không phụ thuộc vào cách cầm.
Yêu cầu: Xác định số vị trí khác nhau có thể mắc khóa tháo lắp vòng?
Ví dụ
Dữ liệu vào
222222335533

Dữ liệu ra
2

b) Kết quả bài kiểm tra
Điểm
Lớp
Lớp TN
11A1
Lớp ĐC
11A3


Tổng

0

1

2

3

4

5

6

7

8

9

10

0

0

0


0

2

8

11

9

7

4

1

42

0

0

0

3

8

12


8

7

3

1

0

42

số bài

19


Lớp Thực nghiệm: Yếu 4,8%; Trung bình 45,2%; Khá 21,4%; Giỏi 28,6%.
Lớp Đối chứng: Kém 7,1%; Yếu 19,1%; trung bình 47,6%; Khá 16,7%; Giỏi
9,5%.
Căn cứ vào kết quả kiểm tra, có thể bước đầu thấy được hiệu quả của giải
pháp nhằm tăng cường, rèn luyện khả năng giải các bài toán có nội dung thực
tiễn cho học sinh lớp 11 mà tôi đã đề xuất và thực hiện trong quá trình thực
nghiệm.
2.4.2.2. Kết luận chung
Từ kết quả thực nghiệm tôi thấy rằng:
- Việc đưa các bài toán có nội dung thực tiễn vào giảng dạy trên cơ sở
dựa vào những quan điểm, những gợi ý về phương pháp dạy học đã góp phần
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.

- Sự "cài đặt" một cách khéo léo các bài toán có nội dung thực tiễn làm
cho giáo viên thực hiện việc giảng dạy khá tự nhiên, không miễn cưỡng và
không có những khó khăn lớn về mặt thời gian.
- Số lượng và mức độ các bài toán có nội dung thực tiễn được lựa chọn
và cân nhắc thận trọng, được đưa vào giảng dạy một cách phù hợp, có chú ý
nâng cao dần tính tích cực và độc lập của học sinh, nên học sinh tiếp thu tốt,
tích cực tham gia luyện tập và đạt kết quả tốt.
Phương pháp giảng dạy các bài toán có nội dung thực tiễn đã trình bày ở
trên được vận dụng một cách sinh động, không gặp phải những trở ngại gì lớn
và các mục đích dạy học được thực hiện một cách toàn diện, vững chắc.

3. Kết luận và kiến nghị
3.1. Kết luận
Sáng kiến đã thu được những kết quả chính sau đây:
- Làm rõ được vai trò quan trọng 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.
- Xây dựng được một hệ thống bài tập có nội dung thực tiễn trong dạy
học Tin học 11 ở trường THPT.

20


- Đã bước đầu kiểm nghiệm bằng thực nghiệm sư phạm nhằm minh họa
cho tính khả thi và tính hiệu quả của việc xây dựng và đưa vào giảng dạy các
bài toán có nội dung thực tiễn.
Từ những kết quả trên cho thấy nhiệm vụ nghiên cứu của sáng kiến đã
được hoàn thành.
3.2. Kiến nghị
Đề tài tuy không mới, không lạ, tuy dễ nhưng cũng rất khó đề truyền đạt
cho học sinh hiểu và biết vận dụng vì vậy cần nhiều thời gian và công sức để

nghiên cứu, bổ sung và phát triển thêm. Sau đây tôi xin đề xuất một số hướng
phát triển của đề tài:
-Nghiên cứu đầy đủ và quy mô hơn về các bài toán thực tế cụ thể cho từng
bài, từng chương.
-Nghiên cứu, bổ sung, hoàn thiện các chương trình để các chương trình
được tối ưu, trình bày chi tiết, cụ thể, sâu sắc hơn và để có phương pháp
truyền đạt cho học sinh đạt hiệu quả cao nhất.
Bước đầu nghiên cứu một đề tài với hạn chế của bản thân chắc chắn sẽ
không tránh khỏi những thiếu sót. Tôi rất mong được sự góp ý, xây dựng của
các đồng nghiệp quan tâm đến đề tài này.

Xác nhận của thủ trưởng đơn vị

Thanh Hóa,ngày 20 tháng 05 năm 2019.
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.
(Ký và ghi rõ họ tên)

Phùng Thị Vân
21


22


TÀI LIỆU THAM KHẢO
[1] Sách giáo khoa Tin học 11- Hồ Sĩ Đàm (chủ biên)- Nhà xuất bản Giáo
dục
[2]. Bài tập ngôn ngữ lập trình Pascal- Dương Viết Thắng (chủ biên)- NXB

Đại học Quốc gia Hà Nội.
[3]. Tài liệu tập huấn giáo viên THPT bồi dưỡng học sinh giỏi môn Tin học
tỉnh Thanh Hóa.
[4] />[5] Nguồn />[6] />
23


DANH MỤC
SÁNG KIẾN KINH NGHIỆM ĐÃ ĐƯỢC HỘI ĐỒNG SÁNG KIẾN KINH
NGHIỆM NGÀNH GIÁO DỤC TỈNH XẾP LOẠI TỪ C TRỞ LÊN

Họ và tên tác giả: Phùng Thị Vân
Chức vụ và đơn vị công tác: Tổ phó chuyên môn, Trường THPT 4 Thọ Xuân

TT

Tên đề tài SKKN

Cấp đánh giá xếp
loại

1.

Phát huy tính tích cực của
học sinh trong tiết dạy-học
bài Mảng một chiều- Tin học
11, tiết 1

Sở giáo dục và
đào tạo Thanh

Hóa

2.

3.

4.

5.

Phát huy tính tích cực của
học sinh trong tiết dạy và học
bài Kiểu xâu- Tin học 11.
Áp dụng phương pháp Quy
hoạch động để giải bài toán
trong Tin học có tính chất đệ
quy.

Kết quả
đánh giá
xếp loại

C

Năm học đánh
giá xếp loại

2011 – 2012

2012 - 2013

Sở giáo dục và
đào tạo Thanh
Hóa

C

2014 - 2015
Sở giáo dục và
đào tạo Thanh
Hóa

B

Phát huy tính tích cực của Sở giáo dục và
C
học sinh bằng phương pháp đào tạo Thanh
Hóa
dạy học hợp tác trong bài Bài tập và thực hành 5- Tin
học lớp 11
Áp dụng thuật toán sàng Sở giáo dục và
C
nguyên tố để giải một số bài đào tạo Thanh
Hóa
tập về số nguyên tố trong Tin
học nhằm nâng cao chất
lượng bồi dưỡng học sinh
giỏi ở trường trung học phổ
thông 4 Thọ Xuân
----------------------------------------------------


2016-2017

2017-2018

24