Tải bản đầy đủ (.pdf) (17 trang)

SKKN một số cải tiến về phương pháp giải bài toán trên máy tính

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 (266.28 KB, 17 trang )

SÁNG KIẾN KINH NGHIỆM

ĐỀ TÀI:
"MỘT SỐ CẢI TIẾN VỀ PHƯƠNG PHÁP GIẢI BÀI TỐN TRÊN
MÁY TÍNH"

1


I. ĐẶT VẤN ĐỀ
1. Tên đề tài
MỘT SỐ CẢI TIẾN VỀ PHƯƠNG PHÁP GIẢI BÀI TỐN TRÊN MÁY TÍNH
2. Lí do chọn đề tài.
Hiện nay trong lý luận dạy học nói chung và lý luận dạy học mơn Tin Học nói riêng đề
cập khá nhiều phương pháp và kĩ thuật dạy học: phương pháp thảo luận, phương pháp đặt
câu hỏi, phương pháp chia nhóm, phương pháp gợi mở vấn đề,…
- Mục đích là nhằm áp dụng phương pháp hiện đại để bồi dưỡng cho học sinh năng lực
ham muốn học hỏi, tự giải quyết vấn đề, rèn luyện và phát triển năng lực tự học, nghiên
cứu và làm việc một cách tự chủ. Đồng thời để thích ứng với sự phát triển tư duy của học
sinh trong xã hội mới, tiếp cận với các công nghệ tiên tiến trong xã hội và trên thế giới.
Bên cạnh đó, trong các kĩ thuật dạy học mới, vai trị của người thầy có sự thay đổi là:
“hướng dẫn học sinh biết tự mình tìm ra hướng giải quyết những vấn đề nảy sinh trong
quá trình học tập, biết cách làm việc độc lập, làm việc tập thể. Thầy là người định hướng,
là người cố vấn giúp học sinh tự đánh giá, cũng như giúp học sinh ln đi đúng con
đường tìm hiểu, lĩnh hội kiến thức…”.
Trong thời đại công nghệ thông tin bùng nổ ngày nay, việc lập được các chương trình tự
hoạt động cho máy tính là cần thiết. Và để làm được việc đó cần có một q trình nghiên
cứu, học tập về ngơn ngữ lập trình lâu dài, qua đó nhà lập trình có thể chọn một ngơn ngữ
lập trình thích hợp. Tuy nhiên mọi thứ điều có điểm khởi đầu của nó, với học sinh việc
học Pascal là khởi đầu cho việc tiếp cận ngơn ngữ lập trình bậc cao, qua đó giúp các em
hình dung được sự ra đời, cấu tạo, hoạt động cũng như ích lợi của các chương trình hoạt


động trong máy tính, giúp các em có thêm một định hướng, niềm đam mê về tin học, về
nghề nghiệp lựa chọn sau này.
Khi thực hiện giảng dạy môn Tin Học lớp 11 tại Trường THPT Ba Vì, tơi thấy rằng, việc
học sinh lập trình giải các bài tốn trên máy tính thường gặp rất nhiều khó khăn và
thường khơng có hệ thống phương pháp cụ thể để thực hiện như: khơng xác định được
bài tốn, lựa chọn thuật tốn khơng phù hợp với bài tốn, khi viết chương trình thì khơng
khai báo được biến hoặc khai báo được biến nhưng còn thiếu…
Xuất phát từ cơ sở trên, tôi đã chọn đề tài “Một số cải tiến về phương pháp giải bài tốn
trên máy tính”, nhằm giúp các em học sinh khối 11 có thể thực hiện giải các bài tốn trên
máy tính để hạn chế sai sót cũng như tăng tính hiệu quả, tính đúng đắn của bài tốn. Q
đó hình thành tích cách, thói quen và cách tư duy hệ thống khi lập trình trên máy tính cho
các em.
2


3. Cơ sở khoa học của đề tài:
3.1.

Cơ sở lí luận:

Các bước giải bài tốn trên máy tính là một khâu rất quan trọng có thể được sử dụng hầu
hết trong các tiết học đối với học sinh khối 11. Nó được áp dụng trong các bài tập và giúp
cho học sinh có cơ hội thực hành nhiều hơn.
Để giải dược một bài tốn trên máy tính đối với ngơn ngữ lập trình là bài tốn khó với
nhiều học sinh, kể cả học sinh khá, giỏi. Với mong muốn giúp các em học sinh hiểu được
những bài cơ bản và thấy u thích ngơn ngữ lập trình hơn, bản thân người giáo viên ln
cố gắng tìm tịi những phương pháp dạy học phù hợp với nội dung kiến thức, với từng đối
tượng học sinh, đặc biệt là những đối tượng học sinh trung bình, yếu, kém. Đồng thời
giáo dục tư tưởng, ý thức, thái độ và lòng ham muốn học ngơn ngữ lập trình nói riêng và
mơn tin học nói chung của các em.

3.2. Cơ sở thực tiễn
Khi làm các bài tốn về lập trình học sinh phải nắm vững được những kiến thức cơ
bản về các bước giải bài tốn trên máy tính. Tuy nhiên trong q trình giảng dạy và trao
đổi với các đồng nghiệp khác trong tổ chuyên môn khi dạy phần kiến thức này, tôi nhận
thấy rất nhiều các học sinh ở những lớp khác nhau thường mắc những sai lầm giống nhau
khi giải các bài tốn liên quan tới lập trình thậm chí có cả học sinh khá, giỏi.
Những lỗi mà học sinh thường gặp phải như :
- Khơng xác định được bài tốn: ví dụ như khơng xác định được bài tốn cho cái gì, điều
kiện là gì, khơng xác định được bài tốn cần những biến nào, có bao nhiêu biến phát sinh
khi viết chương trình.
- Lựa chon thuật tốn khơng đúng hoặc trong q trình viết thường diễn đạt thuật tốn
chưa đầy đủ.
- Những ví dụ mẫu trong sách giáo khoa cịn rất ít để hỗ trợ cho phần bài tập về nhà cho
học sinh.
- Thời lượng các tiết học trên lớp cịn hạn chế.
3.3. Mục đích của sáng kiến kinh nghiệm.
Với mong muốn giúp học sinh nhận ra và khắc phục những sai lầm hay mắc phải trong
quá trình lập trình, giúp các em nắm vững, nắm chắc những kiến thức cơ bản về lập trình,
có thể tự mình giải quyết những bài tập cơ bản trong sách giáo khoa và sách bài tập hoặc
những bài tập nâng cao hơn một chút cho đối tượng học sinh trung bình, yếu là chính để
các em thấy say mê hơn với ngơn ngữ lập trình tơi mạnh dạn viết sáng kiến kinh nghiệm :
3


”MỘT SỐ CẢI TIẾN VỀ PHƯƠNG PHÁP GIẢI BÀI TOÁN TRÊN MÁY TÍNH” áp
dụng cho khối 11 ở trường THPT Ba Vì trong hai năm học 2010 - 2011 và 2011 - 2012
với đối tượng chủ yếu là các học sinh khá, trung bình, yếu, hy vọng phần nào các em sẽ
làm được những bài toán cơ bản, hiểu tường tận các bước trong q trình giải tốn mà
khơng mắc phải những sai lầm nêu ở trên.
3.4. Đối tượng nghiên cứu:

Học sinh khối 11 của trường THPT Ba Vì trong hai năm liên tiếp
NĂM HỌC
2010 - 2011

2011 - 2012

LỚP

SĨ SỐ

11A5

44

11A6

45

11A3

46

11A4

46

4. Phương pháp nghiên cứu:
- Đọc kỹ tài liệu sách giáo khoa, sách giáo viên Tin Học 11 và một số tài liệu tham khảo
khác.
- Dạy học và trắc nghiệm trên các đối tượng: Giỏi - Khá - Trung bình, yếu, kém trong đó

nội dung dạy học, phương pháp thực hiện và kết quả thu được đánh giá chủ yếu đối với
đối tượng học sinh khá, trung bình, yếu, kém.
- Đưa ra bàn luận trước tổ, nhóm chun mơn để tham khảo ý kiến và cùng thực hiện.
- Tham khảo ý kiến các trường bạn, ý kiến đóng góp của các thầy cơ dạy lâu năm đã có
nhiều kinh nghiệm.
- Dự giờ, kiểm tra, đánh giá chất lượng của học sinh.
- Dạy thực nghiệm trên 2 lớp 11 của trường là: 11A3, 11A4.
5. Phạm vi nghiên cứu và thời gian nghiên cứu:
- Nghiên cứu về chương trình Tin học 11.
- Thời gian làm trắc nghiệm trong thời gian hai năm.
- Kinh nghiệm của bản thân trong quá trình giảng dạy.

4


II. Q TRÌNH THỰC HIỆN ĐỀ TÀI.
1. Tình trạng thực tế khi chưa thực hiện đề tài.
Đa số học sinh trong các lớp này khi thực hiện việc lập trình giải các bài tốn trên máy
tính đều thực hiện khơng đúng phương pháp, khơng có trình tự lơgíc hệ thống của
chương trình. Đây lại là điều rất cần thiết trong lập trình điều đó dẫn tới các em hiểu
khơng đúng về bài toán, tư duy sai về thuật toán như: khơng xác định Input và Output
bài tốn, sử dụng thuật tốn khơng phù hợp với bài tốn…, cũng như việc các em sử
dụng ngơn ngữ lập trình chưa phù hợp để diễn đạt thuật tốn. Điều đó thường dẫn tới
nhiều khả năng chương trình bị lỗi (error), hoặc bài tốn bị bế tắc về thuật tốn mà khơng
có hướng giải quyết, khi đó các em thường lại phải làm lại bài toán từ đầu dẫn đến việc
mất thời gian, một số em thì “bất lực” khơng thực hiện được bài tốn dẫn tới tâm lí e
ngại, nhàm chán đối với học sinh
2. Điều tra cơ bản ban đầu.
-


Phân loại về học lực:
NĂM
HỌC

LỚP

2010


SỐ

GIỎI

KHÁ

TB

YẾU

KÉM

SL %

SL

% SL % SL %

11A3

45


3

6

7

15 31 69 4

10 0

0

- 2011

11A4

44

2

5

7

16 30 68 5

11 0

0


2011

11A3

46

2

4

9

19 32 69 4

8

0

0

- 2012

11A4

46

3

7


8

17 30 65 5

11 0

0

SL %

Đây là 2 lớp của khối 11 mà đối tượng học sinh chủ yếu là khá, trung bình, yếu, học sinh
giỏi rất ít. Vì thế u cầu kiến thức đưa ra cũng phải phù hợp với nhận thức và khả năng
của các em, không gây sự chán nản, học chống đối để các em có thể nắm chắc kiến thức
cơ bản trong sách giáo khoa, lập trình thành thạo một số dạng về ngơn ngữ lập trình.
Giúp học sinh ngày càng say mê, hứng thú với lập trình hơn.
- Chuẩn bị sách giáo khoa và sách bài tập: tất cả học sinh có đủ.

5


- Trong quá trình thực hiện khảo sát rất nhiều học sinh khi thực hiện lập trình giải bài
tốn trên máy tính tỷ lệ thành cơng lần chạy thử đầu tiên rất thấp. Khi đó các em phải sửa
chữa lại chương trình rất là nhiều lần đặc biệt là về thuật tốn thì chương trình thực hiện
được, có trường hợp do sử dụng sai thuật toán nên bài toán bế tắc khơng thực hiện được
thậm chí dẫn tới hiện tượng máy tính bị “treo”. Số liệu trên cũng đã phản ánh phần nào
tình trạng chung đó.
3. Nội dung của đề tài.
Nội dung chủ yếu của đề tài là giới thiệu cho học sinh một cải tiến mới về phương pháp
giải bài tốn trên máy tính. Phương pháp này thể hiện tính khoa học hệ thống, tính lơgíc

chặt chẽ khi giải các bài tốn trên máy tính, giúp học sinh có tư duy hệ thống, sáng tạo
hơn và kết quả sẽ tốt hơn khi lập trình thực hiện giải các bài tốn trên máy tính.
3.1. Xác định Input và Output của bài toán.
Mỗi bài toán được đặc tả bởi hai thành phần: Input và Output, việc xác định bài tốn
chính là xác định rõ hai thành phần này và mỗi quan hệ giữa chúng. Các thơng tin đó cần
được nghiên cứu cẩn thận để có thể lựa chọn thuật tốn, cách thể hiện các đại lượng đã
cho, các đại lượng phát sinh trong q trình giải bài tốn và ngơn ngữ lập trình thích hợp.
Việc định hướng cho học sinh xác định được Input và Output của bài toán là bước hết sức
quan trọng. Vì thơng qua việc xác định hai thành phần này giáo viên cũng nên yêu cầu
học sinh xác định luôn số lượng biến và kiểu dữ liệu cần sử dụng trong bài tốn khi lập
trình, cũng như các biến cần sử dụng phát sinh trong quá trình thực hiện bài toán, đây là
vấn đề các em hầu như chưa bao giờ thực hiện nên gặp rất nhiều khó khăn khi khai báo
biến cho chương trình, có thể hiểu đơn giản rằng.
Input chính là dữ liệu đầu vào của bài toán (giả thiết).
Output là dữ liệu đầu ra của bài tốn (kết luận).
Ví dụ 1:
Lập chương trình tìm ước chung lớn nhất của hai số nguyên dương M, N.
Qua bài tốn này có thể xác định được ngay dữ liệu đầu vào của bài toán đã cho là M, N
nguyên dương, và dữ liệu đầu ra là ước chung lớn nhất (ƯCLN) của hai số đã cho.
- Input: M, N nguyên dương.
- Output: ƯCLN(M, N).
Như vậy xác định được ngay các biến khi tham gia vào viết chương trình là hai biến đơn
M và N thuộc kiểu dữ liệu số nguyên.

6


Ví dụ 2:
Cho dãy A gồm N số nguyên a1, a2,…,an. tính và hiển thị tổng các số dương trong dãy.
- Input: Dãy A gồm N số nguyên a1, a2,…,an.

- Output: Tổng các số dương trong dãy.
Sau khi xác định được hai thành phần Input và Output ta phải xác định luôn số lượng
biến và kiểu dữ liệu của biến cần sử dụng trong chương trình dựa vào Input và Output đã
xác định được.
Với Input và Output đã xác định có thể nhận ra ngay cần phải khai báo biến N dùng để
xác định số lượng số hạng của dãy và một biến mảng để chứa các số hạng trong dãy, hai
biến này phải thuộc kiểu dữ liệu số nguyên.
Nhưng với hai biến này thì chưa thể giải bài tốn được trong bài này cần phát sinh thêm
biến thì mới giải được, đây là đặc điểm khác với bài toán trên.
Để tính được tổng các số dương trong dãy số ta phải sử dụng vịng lặp do đó phải sử dụng
biến đếm, thực hiện tính tổng phải có biến để chứa tổng. Các biến này thuộc kiểu số
nguyên.
Tóm lại bài tốn tính tổng các số dương trong dãy số cần có các biến sau.
Biến N: xác định số lượng số hạng.
Biến mảng: chứa số hạng.
Biến đếm: dùng cho vòng lặp (biến phát sinh).
Biến tổng: dùng để chứa tổng các số dương trong dãy số.
Như vậy xác định bài tốn chính là khâu giúp học sinh biết được bài toán cho cái
gì? Và cần tìn cái gì? để từ đó khai báo các biến trong chương trình.
3.2. Thiết kế thuật tốn.
Có thể nói khi lập trình giải một bài tốn trên máy tính thì đây là bước quan trọng nhất.
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 tốn vì vậy cần thiết kế hoặc chọn một thuật toán tối ưu để giải bài
toán.
Khi thực hiện thiết kế hoặc lựa chọn thuật tốn người lập trình thường quan tâm đến các
tài nguyên như: thời gian thực hiện chương trình (chương trình thực hiện nhanh hay
chậm), số lượng ơ nhớ (chương trình chiếm dụng bao nhiêu bộ nhớ trên máy tính)…

7



Trong các loại tài nguyên thì thường người ta quan tâm nhiều nhất đến tài ngun thời
gian vì đó là dạng tài nguyên không tái tạo được.
Khi thiết kế thuật toán để giải một bài toán cụ thể cần căn cứ vào lượng tài ngun mà
thuật tốn địi hỏi và lượng tài nguyên thực tế cho phép.
Để mô tả được thuật toán trước tiên học sinh phải đưa ra được ý tưởng của thuật tốn, rồi
mới mơ tả, thiết kế thuật tốn theo ý tưởng đó. Trong khi mơ tả thuật toán cần chú ý về
áp dụng số lượng biến cho chương trình.
Như ví dụ trên: Tìm ước chung lớn nhất của hai số nguyên dương M, N.
Để giải được bài tốn này có nhiều thuật tốn có thể thực hiện được, ở đây tơi sử dụng
thuật tốn tìm ƯCLN bằng phương pháp hiệu.
* Ý tưởng thuật toán:
- Nếu M = N thì giá trị chung đó là ƯCLN của M và N;
- Nếu M >N thì ƯCLN(M, N) = ƯCLN(M-N, N);
- Nếu M > N thì ƯCLN(M, N) = ƯCLN(M, N-M);
* Thuật toán:
Sử dụng phương pháp liệt kê.
Bước 1: Nhập M, N
Bước 2: Nếu M = N thì ƯCLN là M hoặc N, chuyển đến Bước 5;
Bước 3: Nếu M > N thì M  M - N ngược lại N  N - M;
Bước 4: Quay lại Bước 2;
Bước 5: Đưa ra kết quả ƯCLN rồi kết thúc.
* Nhận xét thuật tốn:
Đây là thuật tốn tìm ƯCLN của hai số nguyên dương bằng phương pháp hiệu, thuật toán
đơn giản và dễ hiểu và tối ưu. Mục đích của thuật toán này là so sánh hai số với nhau sau
đó lấy số lớn trừ số bé, q trình này lặp đi lặp lại nhiều lần và thực hiện phép trừ cho
đến khi nào hai số bằng nhau thì đó chính là ƯCLN của bài tốn lúc này M = N.
Nhược điểm của thuật toán này là nếu hai số M và N có sự chênh lệch lớn thì số lần lặp
sẽ lớn. Ngồi ra có thể tham khảo và yêu cầu học sinh trình bày thêm một số thuật toán
khác rồi so sánh với thuật toán này để nhận biết thuật toán tối ưu hơn.


8


Tóm lại khâu lựa chon và thiết kế thuật tốn là khâu rât quan trọng. Như trên đã nói một
bài tốn có thể có nhiều thuật tốn để giải do đó phải biết lựa chọn thuật tốn tối ưu để áp
dụng cho bài toán. Thuật toán tối ưu là thuật tốn phải đáp ứng được các tiêu chí như:
thời gian chạy chương trình, chiếm dụng bộ nhớ của chương trình, rõ ràng, dễ hiểu…
thuật toán nào thời gian chạy chương trình nhanh nhất và chiếm dụng ít bộ nhớ trên máy
tính nhất đồng thời đảm bảo tính đúng đắn của bài tốn, phù hợp với chương trình thì đó
là thuật tốn tối ưu. Thuật tốn phải có tính khả dụng và có hướng phát triển với chương
trình lớn hơn. Nhưng thơng thường học sinh khơng lựa chọn thuật tốn mà biết thuật tốn
nào thì làm, khơng tìm xem bài tốn này có cịn thuật tốn nào tối ưu để giải cho phù
hợp. vì vậy học sinh thường có những kết quả khơng mong muốn mặc dù chương trình
vẫn chạy.
3.3 Viết chương trình.
Việc viết chương trình là tổng hợp giữa việc lựa chọn cách tổ chức dữ liệu và sử dụng
ngôn ngữ lập trình để diễn đạt đúng thuật tốn.
Khi viết chương trình ta nên chọn một ngơn ngữ lập trình hoặc một phần mềm chuyên
dụng với thuật toán. Viết chương trình trong ngơn ngữ nào thì cần phải tn theo đúng
qui định ngữ pháp của ngơn ngữ đó.
Chương trình dịch chỉ có thể phát hiện và thống báo các lỗi cú pháp, cịn lỗi ngữ nghĩa thì
được phát hiện khi thực hiện chương trình.
Khi viết chương trình cần chú ý về bố cục chương trình, trang trí trình bày chương trình
phải gọn gàng tạo điều kiện thuận lợi cho quá trình sửa chữa và phát triển chương trình
sau này. Một thao tác quan trọng khi viết chương trình đó là các em phải lưu chương
trình, học sinh rất hay quên thao tác này nên dẫn đến mất chương trình khơng khơi phục
được.
* Chương trình bài tốn tìm UCLN của hai số ngun dương M và N.
- Phân tích chương trình: Học sinh cần bám sát vào phần Input và Output của bài toán

cũng như thuật toán đã thiết kế để thực hiện. Với chương trình cần phải khai báo 2 biến
đơn: M và N. Biến M và N dùng để lưu trữ 2 số hạng được nhập vào từ bàn phím. Hai
biến đơn này đều thuộc kiểu dữ liệu số ngun.
- Về thuật tốn: Mục đích của thuật tốn là biến đổi M và N bằng hiệu của số lớn trừ số
bé, trừ cho đến khi nào M =N thì dừng, đây cũng chính là kết quả ƯCLN của bài tốn.
Như vậy thuật tốn này có sử dụng cấu trúc lặp với số lần chưa biết trước để mô tả hành
động lặp M - N hoặc N - M đến khi nào M = N thì dừng. Các câu lệnh trong vòng lặp

9


thường được lặp lại nhiều lần, vì vậy để tăng hiệu quả của chương trình thì những thao
tác khơng cần lặp lại nên đưa ra ngồi vịng lặp.
- Phương pháp thực hiện:
+ Mở chương trình ngơn ngữ lập trình Pascal.
+ Lưu chương trình với tên UCLN.
+ Soạn chương trình.
Program UCLN;
Uses crt;
Var M, N: Word;
Begin
Clrscr;
Write(‘Nhap M: ’); Readln(M);
Write(‘Nhap N: ’); Readln(N);
While M <> N do
if M > N then M:= M-N else N:= N-M;
Write (‘UCLN = ’ , M);
Readln
End.


+ Nhấn phím F9 để dịch chương trình. Thao tác này sẽ kiểm tra lỗi cú pháp của
chương trình.
+ Nhấn tổ hợp phím Ctrl + F9: Dịch và chạy chương trình.
Vậy khâu viết chương trinh cũng là dùng ngơn ngữ lập trình để mơ tả lại các thao tác của
thuật tốn, trong ngơn ngữ lập trình chúng ta có rất nhiều ngơn ngữ lập trình khác nhau.
Nên phải chọn lựa ngơn ngữ lập trình sao cho phù hợp với thuật tốn, với thuật tốn tìm
ƯCLN nên sử dụng ngơn ngữ lập trình Pascal để viết bởi đây là ngôn ngữ dể hiểu và
thông dụng đối với học sinh khối 11. Trong bước này học sinh thường mắc phải sai lầm
như: các em chon ngôn ngữ rồi nhưng khi viết lại không tuân thủ quy tắc của ngơn ngữ
đó hoặc là bỏ qua một số bước trong thuật tốn. Chính vì thế mà khi chạy chương trình
báo sai rất nhiều.
3.4 Chạy thử chương trình (Test).
10


Sau khi được viết xong, chương trình vẫn cịn có thể có nhiều lỗi khác chưa phát hiện
được (lỗi ngữ nghĩa) nên có thể khơng cho kết quả đúng.
Vì vậy, cần phải thử chương trình bằng cách thực hiện nó với một số bộ Input tiêu biểu
phụ thuộc vào đặc thù của bài tốn và bằng cách nào đó ta biết trước được Output. Tức là
khi ta đưa bộ Input để thử bài tốn thì bộ Input đó ta có thể nhẩm tính hoặc tính nhanh
được kết quả của bài tốn rồi cho máy thực hiện chương trình với bộ Input đó để thử kết
quả. Q trình này người ta gọi là chạy thử chương trình (Test). Nếu có sai sót, phải
chỉnh sửa chương trình rồi thử lại, nếu kết quả thử nghiệm vẫn chưa đúng thì cho thấy
thuật tốn khơng phù hợp với bài tốn, phải hiệu chỉnh lại.
Thực chất thao tác này chúng ta chạy thử chương trình bằng các bộ Input. Đây là bước rất
quan trọng để kiểm định lại các thao tác mình làm đã chính xác chưa đặc biệt là về thuật
tốn. Ngồi những việc như chỉnh sửa câu lệnh, thuật tốn cịn thao tác khơng kém phần
quan trọng nữa là định dạng chương trình về thẩm mỹ cho đẹp mắt, cách bố trí nội dung
của chương trình làm sao ngắn gọn tạo cảm giác gần gũi và thân thiện với người sử dụng.
Với bài tốn tìm ƯCLN của hai số ngun dương M và N thì ta có thể đưa vào một số bộ

Input sau để kiểm tra các điều kiện xảy ra của bài toán.
Bộ Input kiểm tra khả năng điều kiện M = N; M > N; N > M :
- Với M = N: M= 10; N = 10

 Ước chung lớn nhất là 10.

- Với M > N: M = 4; N = 2

 Ước chung lớn nhất là 2.

- Với N > M: M= 6 ; N = 12  Ước chung lớn nhất là 6.
Chúng ta có thể sử dụng các bộ Input này để thử chương trình (test) và xác định kết quả
hiện trên màn hình. Nếu kết quả máy tính hiển thị là đúng thì chắc chắn rằng thuật tốn
trong bài tốn là chính xác. Nếu một kết quả nào bị sai thì quay lại sửa chương trình và
chạy thử lại với bộ Input đó. Ngồi ra học sinh có thể cung cấp thêm nhiều bộ Input khác
nữa nhưng phải đảm bảo tiêu chí kiểm tra các khả năng có thể xảy ra của bài tốn và các
bộ Input đó phải nhẩm tính được kết quả trước khi mang thử chương trình, đồng thời có
những phương án để hồn thiện chương trình hơn.
Nếu kết quả chạy thử chương trình cho thấy ngơn ngữ lập trình hoặc thuật tốn khơng
phù hợp thì phải kiểm tra lại, đơi khi q trình này có thể lặp đi lặp lại nhiều lần, thậm chí
có những bài chúng ta phải thiết kế thuật tốn lại.
Như vậy sau khi viết chương trình xong thì phải kiểm tra xem bài tốn đã đạt yêu cầu
chưa? Khi viết xong chương trinh thông thường học sinh thường mắc phải tình trạng là
kiểm tra chương trình chỉ một hai lần nên dẫn đến tình trạng chương trình chỉ đáp ứng

11


một phần nào của bài toán. Vậy là một người thầy chúng ta phải nhắc học sinh chạy thử
chương trình nhiều lần để khẳng định kết quả đã đạt các yêu cầu của bài toán.

3.5 Tổng kết bài toán.
Đây là bước tổng hợp sau khi bài toán đã được giải thành cơng trên máy tính, sau mỗi bài
ta nên có nhận xét và rút kinh nghiệm về bài tốn đó như về thuật tốn, về chương
trình… để thấy rõ cái được và chưa được trong quá trình giải bài để giúp ích cho những
bài tốn sau cũng như hướng phát triển của chương trình.
Trên đây là phương pháp giải bài tốn trên máy tính mà trong q trình thực nghiệm đã
tạo được những hiệu quả rất rõ rệt với học sinh khi các em làm bài. Trong khuôn khổ bài
viết tơi xin được minh chứng bằng bài tốn đếm các số chẵn trong dãy. Nội dung bài toán
như sau:
Bài toán: Cho dãy A gồm N số nguyên khác nhau a1, a2,…aN , đếm các số chẵn trong
dãy.
Ví dụ: cho dãy A gồm các số: 11, 4, 25, 17, 8, 19, 1, 20, 50.
- Số chẵn là số chia hết cho 2, đầu tiên gán cho biến đếm bằng 0 rồi thực hiện kiểm tra
nếu ai chia hết cho 2 thì cộng vào biến đếm 1 đơn vị. Quá trình này được thực hiện đến
cuối dãy thì kết thúc.
* Xác định Input, Output của bài toán.
Input: Dãy A gồm N số nguyên khác nhau a1, a2,…,aN.
Output: Đếm các số chẵn trong dãy.
Ngay tại bước này chúng ta có thể xác định được kiểu dữ liệu của một số biến trong
chương trình sẽ có như: Các biến đơn N, i, biến mảng để chứa dãy số và một biến (d) để
chứa các số chẵn. Kiểu dữ liệu các biến này là kiểu số nguyên.
* Thiết kế thuật toán.
- Ý tưởng thuật toán.
Đếm là bài toán thường xảy ra trong cuộc sống, chẳng hạn muốn biết một cuốn vở có
bao nhiêu trang, muốn biết trong lớp có bao nhiêu bạn, có bao nhiêu bạn nữ trong tổng số
học sinh của cả lớp.
Với thuật tốn đếm có thể có rất nhiều u cầu mà mỗi u cầu chính là điều kiện của
thuật tốn.
Khi đó chỉ xảy ra một trong hai trường hợp sau:
+ Nếu ai chia hết cho 2 thì cộng vào biến đếm 1 đơn vị.

12


+ Nếu ai khơng chia hết cho 2 thì khơng cơng vào biến đếm.
Q trình trên sẽ được lặp lại một số lần cho đến cuối dãy thì dừng.
- Thuật toán.
Bước 1: Nhập N, các số hạng a1, a2,…, aN;
Bước 2: i  1, d  0;
Bước 3: Nếu i>N thì đưa ra giá trị d, rồi kết thúc;
Bước 4: Nếu Ai chia hết cho 2 thì d  d + 1; ;
Bước 5: i  i + 1, rồi quay lại bước 3;
Sau khi thiết kế thuật toán xong ta thấy rằng khi đã xác định được các biến N, i, d và biến
mảng ở trên để diễn đạt thuật toán ta chuyển sang bước tiếp theo là.
* Viết chương trình:
- Tơi chọn ngơn ngữ lập trình Pascal để diễn đạt thuật tốn.
- Mở ngơn ngữ lập trình Pascal.
- Lưu chương trình với tên cac_so_chan.
- Soạn chương trình.
Program sochan;
Uses crt;
Var I, d, N: integer;
A : array [1..100] of integer;
Begin
Clrscr;
Write(‘Nhap N: ’); Readln(N);
For i:=1 to N do
begin
write(‘Phan tu thu ’,i, ‘ = ’);
readln(A[i]);
end;

d:=0;
For i:=1 to N do
If a[i] mod 2 = 0 then
D:= d+1;
If d>0 then
writeln(‘so lưong so chan trong day la:’ , d)
else
13
writeln(‘trong day khong co so chan nao:’);
Readln


Sau khi cài đặt chương trình xong thực hiện.
- Nhấp phím F9 để dịch chương trình.
- Nhấn tổ hợp phím Ctrl + F9 dịch và thực hiện chương trình.
* Chạy thử chương trình (Test).
Sau khi chương trình dịch thực hiện biên dịch thành cơng chương trình ta bắt đầu chạy
thử chương trình bằng các bộ Input tiêu biểu để kiểm tra tính đúng đắn của chương trình.
Với bài này ta có thể Test bằng bộ Input sau:
Cho n = 9 và dãy A gồm các số: 11, 4, 25, 17, 8, 19, 1, 20, 50.
- Với 1 = 1: Ta có Ai = 11  d = 0.
- Với 1 = 2: Ta có Ai = 4  d = 1.
- Với 1 = 3: Ta có Ai = 25  d = 1.
- Với 1 = 4: Ta có Ai = 17  d = 1.
- Với 1 = 5: Ta có Ai = 8  d = 2.
- Với 1 = 6: Ta có Ai = 19  d = 2.
- Với 1 = 7: Ta có Ai = 1  d = 2.
- Với 1 = 8: Ta có Ai = 20  d = 3.
- Với 1 = 9: Ta có Ai = 50  d = 4.
Như vậy với các bộ Input đã cho ta có: d = 4 số chẵn.

Ngồi ra chúng ta có thể đưa thêm vào nhiều bộ Input tiêu biểu khác để kiểm tra tính
đúng đắn của chương trình.
* Tổng kết bài toán.
Qua bài toán đến các số chẵn trong dãy số trên có thể nhận thấy rằng, trước khi bắt tay
vào thực hiện lập trình giải một bài tốn nào đó cần phân tích kỹ Input và Out của bài
tốn để lựa chọn thuật toán phù hợp. Với bài toán trên chúng ta hồn tồn có thể áp dụng
cho các bài liên quan tới thuật toán đếm.

14


III. KẾT QUẢ THỰC HIỆN CĨ ĐỐI CHỨNG.
Có thể nói việc thưc hiện đề tài “Một số Cải tiến về phương pháp giải bài tốn trên máy
tính” trong những ngày đầu gặp rất nhiều khó khăn khi mà các em đang quen với cách
hàng ngày mình sử dụng. Để từ thói quen thường sử dụng và vận dụng một phương pháp
mới là một việc làm không dễ, không thể trong ngày một, ngày hai mà thực hiện được,
đặc biết với đối tượng học sinh là các em học sinh dân tộc miền núi khả năng kiến thức
cịn hạn chế. Đó là một q trình lâu dài trong đó có sự kế thừa và cách tân mạnh mẽ. Chỉ
có thế, việc cải tiến phương pháp dạy học mới có thể đạt được chất lượng và hiệu quả.
Trong năm học 2011 - 2012, tôi đã vận dụng sáng kiến kinh nghiệm này vào các tiết dạy
và thu được những kết quả phần nào như mong đợi. Bản thân tôi nhận thấy những kinh
nghiệm này phù hợp với chương trình sách giáo khoa Tin học 11 với những tiết dạy theo
hướng đổi mới. Đa số học sinh khơng cịn bỡ ngỡ với việc lập trình một bài tốn. Các em
hiểu rõ bản chất thế nào là giải bài tốn trên máy tính đặc biệt với ngơn ngữ lập trình
Pascal. Học sinh thấy hứng thú hơn trong học tập, tích cực, chủ động hơn để mở rộng vốn
hiểu biết của mình đồng thời cũng linh hoạt trong việc lĩnh hội kiến thức, khơng khí học
tập trở nên sôi nổi hơn. Các em đã cảm thấy u thích ngơn ngữ lập trình hơn, tỷ lệ học
sinh khá, giỏi tăng lên, tỷ lệ học sinh yếu kém giảm đi.
Cụ thể, qua kiểm tra đánh giá tôi đã thu được kết quả như sau:
NĂM

HỌC

2010
- 2011

2011
- 2012

GIỎI

KHÁ


SỐ

SL %

SL

%

S
L

% SL %

SL %

11A3


45

5

11 16

36

2
2

4
9

2

4

0

0

11A4

44

4

9


32

2
3

5
2

3

7

0

0

11A3

46

7

15 31

67 8

4
8

0


0

0

0

11A4

46

5

11 19

41

2
2

4
6

0

0

0

0


LỚP

14

TB

15

YẾU

KÉM


IV. KẾT LUẬN VÀ KIẾN NGHỊ
1. Kết luận
- Giải bài tốn trên máy tính khơng thể thiếu trong chương trình Tin 11 nói riêng và với
ngơn ngữ lập trình nói chung. Với yêu cầu giúp học sinh nắm vững các thao tác trong lập
trình, các đối tượng học sinh trung bình, yếu đã thấy hứng thú hơn với mơn học, học sinh
khá, giỏi cũng thấy mình cịn nhiều sai sót trong q trình lập trình cần khắc phục, khơng
gây tính chủ quan, bỏ qua ở các em. Tuy nhiên, nếu với những đối tượng học sinh khá,
giỏi nhiều hơn, giáo viên phải ln tích cực tự học, tự nghiên cứu, tìm tịi sáng tạo
thường xun bổ sung kiến thức và tích lũy kinh nghiệm về vấn đề này.
- Qua việc nghiên cứu cả về nội dung lẫn phương pháp dạy học ngoài việc giúp cho bản
thân nâng cao nghiệp vụ, quá trình giảng dạy mang lại hiệu quả như mong muốn còn giúp
bản thân người giáo viên nâng cao phương pháp tự học, tự nghiên cứu để có thể tiếp tục
nghiên cứu các vấn đề khác tốt hơn trong suốt quá trình dạy học của mình.
- Trong quá trình giảng dạy và thực hiện sáng kiến kinh nghiệm của mình, bản thân tôi
rút ra một số kinh nghiệm sau:
+ Những ví dụ và bài tập cho học sinh phải thực tế, dễ hiểu, gợi mở giúp kích thích sự

tư duy và tính logic của các em, tránh những ví dụ hay bài tập quá cao siêu hoặc trừu
tượng.
+ Giáo viên nên hướng dẫn, phân tích cho học sinh để tìm nhiều lời giải và các bước
để đi tới lời giải thông minh và tối ưu.
+ Giáo viên nên giao thêm một số bài tập về nhà mang tính chất tương tự hoặc mở
rộng hơn để các em có thể tự viết chương trình ở nhà.
Nếu có được những việc làm trên, tôi tin chắc rằng tất cả các em học sinh sẽ khơng cịn
lúng túng, ngại ngùng khi lập trình.
Do thời gian có hạn và kinh nghiệm cịn nhiều hạn chế nên trong q trình viết khó tránh
khỏi sai sót trong cách trình bày, cũng như hệ thống các ví dụ và bài tập còn chưa nhiều,
phong phú, đa dạng, chưa đầy đủ và khoa học. Tôi rất mong nhận được sự đóng góp ý
kiến của các thầy cơ và đồng nghiệp để sáng kiến kinh nghiệm được hoàn thiện hơn, góp
phần nâng cao chất lượng giảng dạy và học tập của giáo viên và học sinh.
2. Kiến nghị và đề nghị
Đối với nhà trường: Kính mong sự quan tâm giúp đỡ của nhà truờng tiếp tục qua tâm tạo
điều kiện về tài liệu giảng dạy, trang thiết bị máy móc thực hành cho học sinh. Để học
sinh càng ngày càng có điều kiện học tập thuận lợi hơn.
16


Đối với giáo viên: Tôi thấy đây là nhân tố quan trọng nhất, quyết định đến sự thành công
của đề tài với vai trò là đầu tàu hướng dẫn học sinh vận dung phương pháp đúng cách,
khơng ai có thể làm thay cho chúng ta được. Mỗi giáo viên phải có kế hoạch dự giờ đồng
nghiệp, tự rút kinh nghiệm cho bản thân. Với tổ chuyên môn thường xuyên kiểm tra đôn
đốc và tổ chức rút kinh nghiệm một cách nghiêm túc sau mỗi tiết dạy của giáo viên. Chỉ
có thế, chúng ta mới có thể tạo sự chuyển biến mạnh mẽ trong đổi mới phương pháp dạy
học tích cực nhằm phát huy tính sáng tạo của học sinh
Trên thực tế, việc ứng dụng sáng kiến này mới chỉ trong một phạm vi hẹp, vì thế cũng
chưa thể đánh giá được tồn diện và chính xác nhất những ưu điểm và hạn chế của đề tài.
Vì vậy, tơi rất mong nhận được sự ủng hộ động viên cùng những lời góp ý chân thành từ

q thầy cơ đồng nghiệp để sáng kiến ngày một hoàn thiện hơn.

17



×