Tải bản đầy đủ (.docx) (19 trang)

SKKN tin hoc THPT

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 (369.45 KB, 19 trang )

I. ĐẶT VẤN ĐỀ
Đã có hàng nghìn ngơn ngữ lập trình được thiết kế và mỗi năm lại có
thêm nhiều ngơn ngữ lập trình mới xuất hiện. Sự phát triển của ngơn ngữ lập
trình gắn liền với sự phát triển của tin học. Mỗi loại ngôn ngữ phù hợp hơn với
bài tốn nhất định.
Pascal là một ngơn ngữ lập trình cấp cao do Niklaus Wirth, giáo sư điện
toán trường đại học kỹ thuật Zurich thiết kế và công bố vào năm 1971 và đặt
tên là Pascal để tưởng niệm nhà toán học và triết học nổi tiếng Blaise Pascal.
Đây là một ngơn ngữ lập trình có cấu trúc đơn giản, rõ ràng, cấu trúc chặt chẽ,
dễ viết, dễ hiểu cũng như dễ sửa chữa, cải tiến. Do đó Pascal được nhiều quốc
gia trong đó có Việt Nam đưa vào chương trình giảng dạy tin học ở các trường
phổ thơng và đại học như một môn học cơ sở, đại cương. Ngày nay bộ mơn lập
trình tin học Pascal được bộ giáo dục đưa vào thành mơn học chính thức trong
chương trình tin học trung học cơ sở và trung học phổ thông.
Là giáo viên giảng dạy môn tin học tại trường THPT Trung Nghĩa, tôi
nhận thấy nhiều em học sinh ln cảm thấy khó khăn trong việc học lập trình
Pascal. Lập trình Pascal được học trong chương trình tin học lớp 11. Trường
THPT Trung Nghĩa có 8 lớp 11. Lớp 11A1 và 11A2 (ban khoa học tự nhiên),
đa phần các em hiểu và vận dụng làm được các bài tập. Lớp 11A3, 11A4,
11A5, 11A6, 11A7, 11A8 (ban khoa học xã hội) các em cảm thấy “lập trình”
rất khó, việc tìm ra thuật toán, nhớ cấu trúc và vận dụng các câu lệnh để lập
trình đối với các em rất khó khăn.
Lớp 10 các em học những thao tác sử dụng như: cách sử dụng internet,
sử dụng hệ điều hành windows, chương trình soạn thảo văn bản microsoft
office word… Đây là những phần học khơng cần địi hỏi tư duy, mà chỉ cần
học kĩ và nhớ thao tác, thực hành nhiều lần thì sẽ thành thạo.
Nhưng khi lên lớp 11 thì hầu như các em cảm thấy mơn học khá khó và
cách học cũng “mới”. Học những thao tác và thực hành nhiều khơng cịn tác
dụng, học thuộc bài cũng khơng còn ổn nữa. Lúc này các em cần phải học cách



tư duy logic, tìm thuật tốn, và viết những dịng lệnh máy tính chính xác đến
từng đấu chấm, dấu phẩy.
Với tâm lí thơng thường các em học sinh coi tin học là môn phụ không
quan trọng nên nhiều em chủ quan không dành đủ thời gian để học nên không
hiểu bài và dần bị mất căn bản. Đây cũng là lí do mà nhiều em bị điểm yếu,
mặc dù có thể các em học rất giỏi các môn học khác.
Ở trường phổ thông chúng ta không chú trọng học chuyên sâu về ngơn
ngữ lập trình để tạo ra các phần mềm máy tính mà tập trung rèn luyện kĩ năng
tư duy logic, tư duy hệ thống và sáng tạo không chỉ để giải quyết những vấn đề
trong tin học mà đây cịn là những kĩ năng vơ cùng quan trọng để giải quyết
nhiều vấn đề trong cuộc sống.
Học Pascal giúp cho ta hiểu được cách làm việc của máy tính, cách giao
tiếp để ra lệnh cho máy tính làm việc theo sự điều khiển của con người thông
qua ngôn ngữ lập trình. Các em có thể tạo ra các chương trình thú vị bằng cách
sử dụng các câu lệnh Pascal. Cũng giống như những mơn học khác như tốn
học, vật lý, hóa học … khi các em đã thực sự hiểu và u thích bộ mơn tin học
các em sẽ tìm thấy nhiều niềm vui, sự đam mê khi tìm hiểu và khám phá những
điều mới mẻ nhưng đầy hấp dẫn trong bộ môn tưởng chừng như khô khan này.
Định lí Bohn Jacopini (Bon Ja-co-pi-ni): Mọi q trình tính tốn đều có
thể mơ tả và thực hiện dựa trên ba cấu trúc cơ bản là cấu trúc tuần tự, cấu trúc rẽ
nhánh và lặp.
Mọi q trình tính tốn gần đúng đều dựa trên các cấu trúc lặp với tham
số xác định. Tất cả các cơng thức tốn học gần đúng đều dựa trên nguyên tắc
lặp. Nghĩa là quá trình hình thành lời giải sẽ đi qua nhiều bước, số bước càng
tăng thì q trình tính tốn càng tiến gần đến lời giải. Sức mạnh của phép lặp
thể hiện ở điểm, chỉ cần định nghĩa trạng thái của vấn đề - bài toán tịa một
trường hợp tổng quát, dựa theo một số tham số nào đó. Sau đó, chỉ cần biến đổi
các tham số này theo một quy luật nhất định thì ta sẽ có được vơ số trạng thái



mới. Chỉ cần một phép toán cộng và phép lặp, máy tính đã có thể thực hiện mọi
phép tốn khác, từ nhân, chia cho đến luỹ thừa, rút căn, sin, cos…
Trong một số thuật tốn có những thao tác phải thực hiện lặp đi lặp lại
một số lần. Một trong các đặc trưng của máy tính là có khả năng thực hiện hiệu
quả các thao tác lặp. Cấu trúc lặp mô tả thao tác lặp và được phân biệt hai loại là
lặp với số lần biết trước và lặp với số lần chưa biết trước.
Câu lệnh lặp tưởng chừng áp dụng rất đơn giản. Vì chỉ cần phân biệt lặp
với số lần biết trước và lặp với số lần chưa biết trước. Nhưng vẫn còn nhiều học
sinh chưa hiểu và phân tích được dữ liệu đầu vào (input) của bài tốn, chưa tìm
ra được thuật tốn hoặc áp dụng sai câu lệnh lặp và làm cho chương trình khơng
chạy được. Hoặc chương trình vẫn chạy được nhưng cho kết quả sai.
Nhiều học sinh chưa nắm vững khi nào sử dụng cấu trúc lặp: for - do,
while - do, repeat - until. Chưa biết chuyển đổi giữa các cấu trúc lặp. Gặp
nhiều bài tốn các em vẫn băn khoăn: khơng biết dùng câu lệnh lặp nào là thích
hợp và đúng? Có những bài tốn thì có thể dùng được câu lệnh for- do hay có
thể dùng while – do thì bài toán vẫn chạy được và kết quả vẫn đúng. Nhưng có
những bài tốn nếu khơng xác định đúng nên dùng cấu trúc lặp nào cho đúng,
mặc dù chương trình có chạy được nhưng sẽ cho kết quả sai. Hay có một số bài
toán phải kết hợp các cấu trúc lặp để giải bài tốn.
Chính vì vậy mà tơi đưa ra sáng kiến: “Sử dụng cấu trúc lặp phù hợp
trong các bài tốn lập trình tin học” để giúp các em hiểu rõ cấu trúc của câu
lệnh lặp. Giúp các em biết khi nào dùng cấu trúc for - do, khi nào dùng cấu trúc
while - do, khi nào dùng cấu trúc repat - until cho đúng. Từ đó giúp các em u
thích mơn học, tìm ra được những thuật tốn tối ưu và thấy câu lệnh lặp thật đơn
giản và dễ áp dụng trong các bài tốn lập trình.


II. GIẢI QUYẾT VẤN ĐỀ
1. Thực trạng của vấn đề
Là giáo viên giảng dạy môn tin học tại trường THPT Trung Nghĩa, tôi

nhận thấy nhiều em học sinh luôn cảm thấy khó khăn trong việc học lập trình
Pascal. Lập trình Pascal được học trong tin học lớp 11. Trường THPT Trung
Nghĩa có 8 lớp 11. Lớp 11A1 và 11A2 (ban khoa học tự nhiên), đa phần các
em hiểu và vận dụng làm được các bài tập. Lớp 11A3, 11A4, 11A5, 11A6,
11A7, 11A8 (ban khoa học xã hội) các em cảm thấy học “lập trình” rất khó,
việc tìm ra thuật tốn hay nhớ cấu trúc và vận dụng các câu lệnh để lập trình
đối với các em rất khó khăn.
Trường THPT Trung Nghĩa là một trường thuộc trung du miền núi phía
Bắc, nên đại bộ phận dân cư sống chủ yếu bằng nghề nơng, điều kiện kinh tế
cịn khó khăn. Nên rất ít gia đình có máy tính. Ngồi được thực hành trên
trường, thì về nhà các em chỉ có thể lập trình trên “giấy”. Chính vì thế các em
khó để kiểm tra xem thuật tốn của mình đã chính xác chưa? Kết quả đã đúng
chưa? Nếu có máy tính thì sẽ giúp các em dễ dàng phát hiện lỗi và sửa câu lệnh
hay thuật toán cho đúng yêu cầu của đề bài. Trên internet có rất nhiều tài liệu và
có rất nhiều bài tập minh hoạ về cấu trúc lặp, nhưng do nhà chưa có máy tính
nên các em chưa có điều kiện để tham khảo thêm.
Nhiều học sinh chưa nắm vững khi nào sử dụng cấu trúc lặp: for - do,
while - do, repeat - until. Chưa biết chuyển đổi giữa các cấu trúc lặp. Gặp
nhiều bài toán các em vẫn băn khoăn: không biết dùng câu lệnh lặp nào là thích
hợp và đúng? Có những bài tốn thì có thể dùng được câu lệnh for - do hay có
thể dùng while - do thì bài tốn vẫn chạy được và kết quả vẫn đúng. Nhưng có
những bài tốn nếu không xác định đúng nên dùng cấu trúc lặp nào cho đúng,
mặc dù chương trình có chạy được nhưng sẽ cho kết quả sai.
Tôi tiến hành khảo sát cho học sinh khối 11 trường. Khối 11 trường
THPT Trung Nghĩa có 8 lớp:
Lớp 11A1 sĩ số: 43 học sinh (Ban khoa học tự nhiên)


Lớp 11A2 sĩ số: 41 học sinh (Ban khoa học tự nhiên)
Lớp 11A3 sĩ số: 42 học sinh (Ban khoa học xã hội)

Lớp 11A4 sĩ số: 38 học sinh (Ban khoa học xã hội)
Lớp 11A5 sĩ số: 35 học sinh (Ban khoa học xã hội)
Lớp 11A6 sĩ số: 36 học sinh (Ban khoa học xã hội)
Lớp 11A7 sĩ số: 36 học sinh (Ban khoa học xã hội)
Lớp 11A8 sĩ số: 37 học sinh (Ban khoa học xã hội)
Tổng số học sinh khối 11 là: 308 học sinh
Bảng đánh giá về khả năng sử dụng đúng các câu lệnh lặp
Điểm số

Mức độ

Số lượng học sinh

Tỉ lệ %

Từ 0 đến dưới 5

Yếu

50

16,2

Từ 5 đến 6,5

Trung bình

150

48,7


Từ 6,5 đến dưới 8

Khá

85

27,6

Từ 8 đến 10

Giỏi

23

7,5

Sau khi thống kế về số khả năng sử dụng các câu lệnh lặp trong lập trình để
nắm được tình hình hiểu biết và áp dụng các câu lệnh lập. Tôi đã tiến hành hai
biện pháp:
- Phỏng vấn trực tiếp về cách sử dụng đúng các câu lệnh lặp trong lập
trình.
- Điền vào phiếu trả lời trắc nghiệm khách quan về cách sử dụng đúng câu
lệnh lặp.
Sau khi tiến hành hai biện pháp trên, kết quả thu được như sau:
* Về phỏng vấn trực tiếp: tôi thu được các câu trả lời chân thật, khách quan từ
các em học sinh lớp 11:


+ Em Trần Thị Kim Liên, học sinh lớp 11A1(ban khoa học tự nhiên), trường

THPT Trung Nghĩa nói: “Em rất thích học mơn tin học 11, về sử dụng các câu
lệnh lặp thì em đã áp dụng được vào các bài toán. Em đã chuyển đổi thành thạo
giữa cấu trúc lặp: for – do, while –do, repeat –until”.
+ Em Nguyễn Huy Hoàng, học sinh lớp 11A2 (Ban khoa học tự nhiên), trường
nói: “Một số bài tốn đơn giản em có thể chuyển đổi thành thạo giữa các cấu
trúc lặp. Nhưng có một số bài tốn khó thì em vẫn cịn phân vân không biết nên
sử dụng cấu trúc lặp: for-do hay while – do hay repeat thì mới đúng?”
+ Em Vũ Thị Phương Thảo, học sinh lớp 11A5 (ban khoa học xã hội) nói: “Học
tin học 11, học về lập trình Pascal cần phải có tư duy tốt về tốn. Phải phân tích
được dữ liệu đầu vào và dữ liệu đầu ra, từ đó tìm ra được thuật tốn. Do em
chuyên về ban khoa học xã hội nên việc học về lập trình em thấy rất khó. Những
cấu trúc rẽ nhánh hay cấu trúc lặp em vẫn còn chưa áp dụng được vào những bài
toán”.
+ Em Nguyễn Văn Tuấn, lớp 11A6 nói: “Bố mẹ em đều là nơng dân, kinh tế cịn
khó khăn nên chưa có điều kiện mua máy tính. Ngồi những giờ thực hành trên
trường, cịn về nhà thì em lập trình trên giấy. Nên nhiều lúc khơng biết là có vận
dụng đúng câu lệnh lặp vào bài tốn hay khơng?”
* Về phương pháp dùng phiếu trắc nghiệm khách quan để trả lời, sau khi tông
hợp 30 phiếu trả lời, tôi thu được kết quả như sau:
Bảng 2. Khảo sát về mức độ sử dụng đúng câu lệnh lặp trong lập trình
Mức độ

Số lượng HS

Đã hiểu về cấu trúc lặp, biết chuyển đổi giữa 120

Tỉ lệ %
39

các câu lệnh lặp: for – do, while – do, repeat –

until.
Biết vận dụng và sử dụng đúng câu lệnh lặp 50

16,2

theo yêu cầu của bài toán.
Chưa hiểu về cấu trúc lặp, chưa biết chuyển đồi 40

13


giữa các câu lệnh lặp
Chưa biết vận dụng và sử dụng đúng câu lệnh 98

31,8

lặp theo yêu cầu của bài tốn.
Thơng qua kết quả của hai phương pháp trên, tơi đi đến kết luận:
- Các em học sinh ở lớp 11A1 và 11A2 (ban khoa học tự nhiên) đa phần
là đã hiểu biết về cấu trúc trúc lặp, biết chuyển đổi giữa các câu lệnh lặp: for –
do, while – do, repeat – until. Biết vận dụng và sử dụng đúng câu lệnh lặp theo
yêu cầu của bài toán.
- Các em học sinh ở lớp 11A3, 11A4,11A5, 11A6, 11A7, 11A8 (ban khoa
học xã hội) gần như vẫn cịn nhiều khó khăn, các em chưa hiểu biết về cấu trúc
trúc lặp, chưa biết chuyển đổi giữa các câu lệnh lặp: for – do, while – do, repeat
– until. Chưa biết vận dụng và sử dụng đúng câu lệnh lặp theo yêu cầu của bài
toán.
Qua bảng trên đại đa phần học sinh chưa nắm vững khi nào sử dụng cấu
trúc lặp: for - do, while - do, repeat - until. Chưa biết chuyển đổi giữa các cấu
trúc lặp. Gặp nhiều bài toán các em vẫn băn khoăn: không biết dùng câu lệnh lặp

nào là thích hợp và đúng? Có những bài tốn thì có thể dùng được câu lệnh fordo hay có thể dùng while – do thì bài tốn vẫn chạy được và kết quả vẫn đúng.
Nhưng có những bài tốn nếu không xác định đúng nên dùng cấu trúc lặp nào
cho đúng, mặc dù chương trình có chạy được nhưng sẽ cho kết quả sai. Hay có
một số bài tốn phải kết hợp các cấu trúc lặp để giải bài tốn. Xuất phát từ đó
nên tơi đã viết sáng kiến kinh nghiệm này để giúp các em có thể hiểu rõ các vấn
đề nêu trên và áp dụng đúng vào các bài toán.

2. Các biện pháp để giải quyết vấn đề


Đề giải quyết một số khó khăn nêu trên. Sau đây là một số giải pháp tôi đưa ra
như sau:
2.1. Nắm vững cấu trúc lặp
“ Đánh răng mỗi ngày hai lần, học môn tin học mỗi tuần 2 tiết, mỗi ngày tắm
một lần...Học cho đến khi thuộc bài, rửa tách trà cho đến khi sạch...”
Trong cuộc sống, những hành động trên được gọi là lặp đi lặp lặp lại nhiều.
Trong Pascal, cách mô tả công việc (hoạt động) được lặp lại nhiều lần gọi là cấu
trúc lặp. Có 3 loại cấu trúc vòng lặp như sau: vòng lặp for..do, while..do,
repeat..until. Lặp với số lần biết trước (câu lệnh for..do), lặp với số lần chưa biết
trước (while..do và repeat…until).
a) Lặp với số lần biết trước và câu lệnh for - do
*Dạng lặp tiến
for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>;
* Dạng lặp lùi
for <biến đếm>:=<giá trị cuối> downto <giá trị đầu> do <câu lệnh>
b) Lặp với số lần chưa biết trước (câu lệnh while - do và repeat –until)
* Câu lệnh while – do có dạng:
while <điều kiện> do <câu lệnh>;
Trong đó
+ Điều kiện là biểu thức logic

+ Câu lệnh là một câu lệnh đơn hoặc ghép
- Câu lệnh sẽ được lặp lại nhiều lần cho đến khi nào điều kiện cịn đúng (nếu
điều kiện sai thì các lệnh này sẽ không thực hiện nữa). Đối với lệnh này điều
kiện sẽ được kiểm tra trước khi thực hiện lệnh nên nên điều kiện sai thì khơng
có lệnh nào được thực hiện.
* Cấu lệnh repeat..until


Câu lệnh này dùng để tổ chức lặp với số lần lặp không biết trước. Khác với câu
lên while –do, điều kiện kết thúc lặp trong câu lệnh repeat – until được kiểm tra
sau và có dạng:
repeat
<câu lệnh>;
until <điều kiện>;
Trong đó điều kiện là biểu thức quan hệ hoặc lơgic.
- Câu lệnh giữa repeat và until sẽ được lặp lại nhiều lần khi nào điều kiện sai,
nếu điều kiện đúng thì ngưng (ngược với vịng lặp while). Đối với lệnh này điều
kiện sẽ được kiểm tra sau khi thực hiện các lệnh giữa repeat và until nên ít nhất
các lệnh sẽ được thực hiện trước 1 lần rồi mới kiểm tra điều kiện đúng hay sai
(nếu sai thì thực hiện tiếp vịng lặp, đúng thì ngưng).
2.2. Với một số bài toán, phải biết chuyển đổi thành thạo giữa cấu trúc lặp
for - do, while - do, repeat - until.
Bài toán: Viết chương trình tính tổng S = 1 +2 +…+N
Với bài tốn này các em có thể dùng cấu trúc lặp for – do hay while – do hay
repeat – until đều được. Đều cho ra cùng một kết quả đúng.
* Cách 1: Dùng vòng lặp for - do


* Cách 2: Dùng vòng lặp while – do


* Cách 3: Dùng vịng lặp repeat - until

Với bài tốn này, các em có thể áp dùng cấu trúc lặp nào cũng được, vẫn cho ra
một kết quả duy nhất. Ví dụ: nhập n = 100, kết quả tổng S = 5050.
2.3. Vận dụng đúng câu lệnh lặp trong các bài toán


Mỗi thuật tốn chỉ giải một bài tốn nào đó, nhưng có thể có nhiều thuật
tốn khác nhau cùng giải một bài toán. Việc xác định thuật toán và sử dụng
đúng câu lệnh sẽ cho kết quả đúng. Ngoài thuộc cấu trúc của câu lệnh lặp, đã
biết chuyển đổi từ câu lệnh for – do sang while – do hay sang repeat – until, thì
các em phải biết vận dụng đúng câu lệnh lặp trong bài tốn. Có những bài toán
khi bạn sử dụng câu lệnh lặp while – do thì cho kết quả đúng, cịn khi bạn sử
dụng câu lệnh lặp for – do thì chương trình vẫn chạy nhưng cho kết quả khơng
đúng. Hay có một số bài nên dùng repeat – until thì mới cho kết quả đúng. Hay
một số bài toán áp dụng cả 3 cấu trúc lặp. Sau đây tôi xin giới thiệu một bài toán
tiêu biểu để các em hiểu thêm về cấu trúc lặp và phải biết vận dụng hay sử dụng
đúng câu lệnh lặp for – do hay while – do hay repeat – until thì bài tốn mới cho
kết quả đúng. Các em cùng tham khảo các bài toán sau:
Bài toán 1: Viết chương trình nhập vào các số nguyên cho đến khi gặp số
thì kết thúc. Hãy đếm xem có bao nhiêu số chẵn vừa được nhập vào.
Ý tưởng: Bài tốn này khơng biết chính xác số lần lặp nên các em khơng
thể dùng vịng lặp for..do. Vì phải nhập vào số nguyên N trước, sau đó mới kiểm
tra xem N = 0?. Do đó với bài tốn này các em nên dùng vịng lặp repeat..until.

Giải bài tốn bằng câu lệnh repeat..until
Bài tốn 2: Chữ số khơng (Kỳ thi chọn đội tuyển dự thi học sinh giỏi quốc


gia lớp 12 THPT năm học 2015 – 2016, Sở giáo dục và đào tạo Phú Thọ)

Hôm nay, sau khi học xong tiết học về giai thừa của một số, Thắng rất
thích thú. Vốn là một cậu bé thích các con số khơng, Thắng quyết tâm sẽ tìm
hiểu về giai thừa để khoe các bạn. Cụ thể là: nếu cho một số nguyên n (n >= 0)
thì trong kết quả n! sẽ có bao nhiêu chữ số khơng liên tiếp tính từ phải qua trái
bắt đầu từ hàng đơn vị. Ví dụ:
Với n = 8 thì 8! = 1.2.3.4.5.6.7.8= 40320 có 1 chữ số khơng liên tiếp tính
từ phải qua trái bắt đầu từ hàng đơn vị.
Với n = 10 thì 10! = 1.2.3.4.5.6.7.8.9.10 = 3628800 có 2 chữ số khơng
liên tiếp tính từ phải qua trái bắt đầu từ hàng đơn vị.
Yêu cầu: Với số n cho trước hãy tính số chữ số khơng liên tiếp tính từ phải qua
trái bắt đầu từ hàng đơn vị của n!
Dữ liệu: Vào từ file văn bản CAU1.INP gồm 1 dòng chứa số nguyên dương n.
Kết quả: Đưa ra file văn bản CAU1.OUT gồm 1 dịng chứa số khơng liên tiếp
tính từ phải qua trái bắt đầu từ hàng đơn vị của n!
Ví dụ:

CAU1.INP
8

CAU1.OUT
1
Nhiều học sinh sau khi đọc đề, phân tích dữ liệu đầu vào và dữ liệu đầu ra. Sau
đó các em lên ý tưởng tìm thuật tốn.
Qua q trình giảng dạy tơi nhận thấy:
+ Với bài tốn có rất nhiều thuật tốn để giải. Có một số em sau khi phân tích
bài tốn: các em đã biết sử dụng lệnh lặp while - do. Và kết quả là đúng với bộ


test của đề đã cho.


Giải bài toán bằng câu lệnh lặp: while – do
+ Với bài tốn : có một số em sau khi phân tích bài tốn và dùng câu lệnh lặp
for – do thì chương trình vẫn chạy, nhưng cho kết quả khơng đúng u cầu của
bài tốn.

Giải bài toán bằng cau lệnh lặp: for – do
3. Hiệu quả của sáng kiến kinh nghiệm


Sau khi sáng kiến được thực hiện và triển khai tại trường THPT Trung
Nghĩa, học sinh rất vui và hợp tác thực hiện. Các em đã hiểu về cấu trúc lặp, biết
chuyển đổi giữa các cấu trúc lặp và biết vận dụng đúng câu lệnh lặp while – do
hay for – do hay repeat – until hay kết hợp các câu lệnh lặp vào từng bài toán cụ
thể.
* Bài toán: Viết chương trình tính tổng S = 1 +2 +…+N
Với bài tốn này các em có thể dùng cấu trúc lặp for – do hay while – do hay
repeat – until đều được. Đều cho ra cùng một kết quả đúng.

Khi nhập N =100, tổng S = 5050.
* Bài toán: Viết chương trình nhập vào các số nguyên cho đến khi gặp số
thì kết thúc. Hãy đếm xem có bao nhiêu số chẵn vừa được nhập vào.

Với bài toán này khơng biết chính xác số lần lặp nên các em không thể dùng


vịng lặp for..do. Vì phải nhập vào số ngun N trước, sau đó mới kiểm tra xem
N = 0?. Do đó với bài tốn này các em nên dùng vịng lặp repeat..until.
* Bài tốn: Chữ số khơng (Kỳ thi chọn đội tuyển dự thi học sinh giỏi quốc
gia lớp 12 THPT năm học 2015 – 2016, Sở giáo dục và đào tạo Phú Thọ).
Yêu cầu: Với số n cho trước hãy tính số chữ số khơng liên tiếp tính từ phải qua

trái bắt đầu từ hàng đơn vị của n!
* Đây là kết quả bài tính giai thừa khi tính bằng lệnh while – do. Với N = 8 thì
kết quả số chữ số 0 tận cùng của 8! là 1. Và đúng với yêu cầu và bộ test của bài
tốn.

* Đây là kết quả bài tính giai thừa khi tính bằng lệnh for – do. Với N = 8 thì kết
quả số chữ số 0 tận cùng của 8! là 2. Chương trình vẫn chạy và vẫn cho kết quả.
Nhưng kết quả không đúng với yêu cầu và bộ test của bài tốn.
Chính vì vậy trong một bài tốn ngồi phân tích kỹ dữ liệu đầu vào
(input) và dữ liệu đầu ra (output) thì việc tìm ra thuật tốn tối ưu hay vận dụng
đúng các cấu trúc lệnh như rẽ nhánh hay cấu trúc lặp là điều rất quan trọng.


Qua ví dụ trên, sau khi chương trình chạy và xem kết quả đã giúp các em
phân tích và hiểu rõ cấu trúc của câu lệnh lặp. Giúp các em biết khi nào dùng
cấu trúc for – do, khi nào dùng cấu trúc while – do, khi nào dùng cấu trúc repat
– until cho đúng hay phải kết hợp cả 3 cấu trúc lặp. Từ đó giúp các em u
thích mơn học, tìm ra được những thuật tốn tối ưu và thấy câu lệnh lặp thật đơn
giản và dễ áp dụng trong các bài tốn lập trình.
Tơi tiến hành thực nghiệm sáng kiến cho học sinh khối 11 trường THPT
Trung Nghĩa. Tôi chọn lớp 11A3 (lớp đối chứng) và lớp 11A4 (lớp thực
nghiệm). Mỗi lớp em chọn 10 bạn học sinh. Sau đó tơi cho các em tiến hành
thực hiện đề tài ở lớp thực nghiệm. Tôi phân loại kết quả theo mức đánh giá như
sau:
Mức điểm

Mức độ

1 – 3 điểm


Chưa biết vận dụng

4 – 6 điểm

Đã hiểu về cấu trúc lặp

7 – 9 điểm

Đã biết chuyển đổi cấu trúc lặp trong
cùng một bài toán.

10 điểm

Đã biết chuyển đổi cấu trúc lặp trong
cùng một bài toán. Biết vận dụng đúng


cấu trúc lặp.
Kết quả tôi thu được sau khi cho 10 em học sinh lớp thực nghiệm (lớp 11A3)
tiến hành theo các bước so với 10 em ở lớp đối chứng (lớp 11A4) không tiến
hành các bước trên như sau:
Điểm

Lớp đối chứng

Lớp thực nghiệm

(lớp 11A4)

(lớp 11A3)


1 -3 điểm

5

2

4 - 6 điểm

3

2

7 - 9 điểm

2

4

10 điểm

0

2

So sánh kết quả hai lớp:
Sau khi sáng kiến được thực hiện và triển khai tại trường THPT Trung
Nghĩa, học sinh rất vui và hợp tác thực hiện. Kết quả nhiều học sinh đã hiểu rõ
về cấu trúc lặp, biết vận dụng đúng câu lệnh lặp vào từng bài toán. Các em rất
vui vẻ và tự tin hơn trong học tập, hăng hái phát biểu và xây dựng bài.


III. KẾT LUẬN
1. Kết luận


Sáng kiến giúp các em hiểu rõ cấu trúc của câu lệnh lặp. Giúp các em biết
khi nào dùng cấu trúc for - do, khi nào dùng cấu trúc while - do, khi nào dùng
cấu trúc repat - until cho đúng hay biết kết hợp sử dụng các câu lệnh lặp. Từ đó
giúp các em u thích mơn học, tìm ra được những thuật toán tối ưu và thấy câu
lệnh lặp thật đơn giản và dễ áp dụng trong các bài tốn lập trình.
Sáng kiến này mang tính ứng dụng thực tiễn cao giúp học sinh giải quyết
các bài toán khó và lớn, từ đó học sinh u thích mơn học hơn. Trong q trình
thực hiện sáng kiến khơng tránh khỏi những thiếu sót. Mong q thầy cơ góp ý
để lần sau làm tốt hơn. Xin chân thành cảm ơn!
2. Những ý kiến đề xuất
Nhà trường tăng cường xây dựng cơ sở vật chất, mua thêm các trang thiết
bị như: máy tính… phục vụ cho học sinh học thực hành.

Xác nhận của

Thanh Thuỷ, ngày 10 tháng 3 năm 2019

thủ trưởng đơn vị

Tôi xin cam đoan đây là sáng kinh nghiệm của
mình viết, khơng sao chép nội dung của người
khác, khơng lấy từ nguồn internet. Không lấy
sáng kiến kinh nghiệm từ những năm học trước.
Người thực hiện


Nguyễn Thị Kim Thoa




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×