SKKN THCS: Một số giải pháp giúp học sinh lớp 8, nắm vững các thuật toán và mô tả thuật toán, qua bài “Từ bài toán đến chương trình - Pdf 40

MỘT SỐ GIẢI PHÁP GIÚP HỌC SINH LỚP 8
NẮM VỮNG CÁC THUẬT TOÁN VÀ MÔ TẢ THUẬT TOÁN
QUA BÀI: “TỪ BÀI TOÁN ĐẾN CHƯƠNG TRÌNH”
A. ĐẶT VẤN ĐỀ
Để học tốt lập trình, dù là ngôn ngữ nào thì xác định bài toán và mô tả thuật
toán là điều đầu tiên học sinh cần phải nắm vững. Việc xác định bài toán và xây
dựng thuật toán là những nội dung quan trọng, nếu không nói là quan trọng nhất.
Nếu học sinh nắm vững được những kiến thức này thì sẽ dễ dàng hơn rất nhiều trong
việc tiếp thu kiến thức ở các bài sau, để viết được chương trình tốt. Tuy rằng ngôn
ngữ lập trình Pascal là một ngôn ngữ có cấu trúc trong sáng, có tính sư phạm cao,
phổ biến, phù hợp với giáo viên và học sinh, thường được dạy trong nhà trường và
dành cho cho người mới học lập trình. Nhưng việc học lập trình đang còn khá mới
mẻ và tương đối khó với đa số học sinh lớp 8. Việc nắm được thuật toán và mô tả
thuật toán của từng bài toán nhiều học sinh không làm được và tỏ ra khá lúng túng.
Trong quá trình dạy học, tôi nhận thấy việc tiếp cận với lập trình của học
sinh còn rất khó khăn, nhất là kỹ năng trong xây dựng thuật toán và mô tả bài toán
để tiến tới viết chương trình. Bản chất thuật toán là sáng tạo, tư duy của con người,
không phải của máy tính, nếu học sinh không nắm được thuật toán sẽ rất khó để
viết được chương trình. Một số chương trình các em viết xong khi chạy chương
trình kết quả không như mong muốn vì thuật toán không đúng hoặc không tối ưu.
Chính vì vậy để học sinh có thể nắm vững được thuật toán và biết cách mô tả
thuật toán đối với một số bài toán trong yêu cầu chuẩn kiến thức, kỹ năng tạo điều
kiện để các em có thể thành thạo viết chương trình tốt, tôi đã mạnh dạn ứng dụng
Sáng kiến kinh nghiệm “Một số giải pháp giúp học sinh lớp 8, nắm vững các
thuật toán và mô tả thuật toán, qua bài “Từ bài toán đến chương trình” .
B. GIẢI QUYẾT VẤN ĐỀ
I. CƠ SỞ LÝ LUẬN CỦA VẤN ĐỀ:
THUẬT TOÁN (algorithm) để giải một bài toán là một dãy hữu hạn các thao
tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác
ấy, từ Input của bài toán, ta nhận được Output cần tìm.
Thuật toán được mô tả theo rất nhiều cách: trong ngôn ngữ tự nhiên (natural

vấn đề, gây quá tải cho học sinh dẫn đến việc tiếp thu kiến thức không sâu và
nhanh quên.
1.2. Thực trạng việc học nội dung “Từ bài toán đến chương trình”
Bài toán và thuật toán để giải quyết bài toán là những nội dung rất quan
trọng trong lập trình. Học sinh nắm vững được những kiến thức này thì sẽ dễ dàng
hơn rất nhiều trong việc tiếp thu kiến thức trong các bài sau.
Tuy nhiên, rất nhiều học sinh do lần đầu tiên được học lập trình nên trước
một bài toán các em tỏ ra lúng túng và rất khó khăn để tìm ra thuật toán hay còn gọi
cách giải một bài toán. Đa số các em còn rất bỡ ngỡ và cảm thấy xa lạ với môn học
lập trình và đặc biệt là việc tìm ra thuật toán ở các bài toán cụ thể.
Trong chương trình Tin học 8 các em bước đầu làm quen với lập trình bằng
ngôn ngữ Pascal. Nhưng việc nắm về kiến thức lập trình và đặc biệt là các thuật
toán được giới thiệu trong bài 5 còn rất yếu, nhiều học sinh không nắm được các
thuật toán hoặc nắm một cách máy móc nên rất dễ quên. Chính vì vậy dẫn đến
nhiều em không biết áp dụng các câu lệnh đã học để viết chương trình cụ thể trong
các bài tập ở những bài học sau.

2


2. Kết quả:
Rất ít học sinh tìm được các bước để giải một bài toán, nếu có tìm được các
em cũng không nhớ được lâu dẫn đến số lượng học sinh nắm thuật toán và mô tả
thuật toán còn thấp, làm cho kết quả môn học không cao. Qua khảo sát ở khối lớp 8
năm học 2013-2014 khi chưa áp dụng những giải pháp sau khi học xong bài 5, với
đề kiểm tra 15 phút câu hỏi như sau:
Câu 1: Hãy chỉ ra INPUT và OUTPUT của các bài toán sau:
a) Xác định số học sinh trong lớp cùng mang họ Trần
b) Tìm số các số có giá trị nhỏ nhất trong n số đã cho
Câu 2: Hãy mô tả thuật toán tìm số lớn nhất trong ba số a, b, c

8B

38

12

31.5

26

68.5

Từ thực trạng trên để học sinh nắm vững được thuật toán và mô tả thuật toán,
mà cụ thể là những thuật toán trong bài 5 “Từ bài toán đến chương trình” Tin học 8
tôi sử dụng một số giải pháp và đã có kết quả.
III. GIẢI PHÁP VÀ TỔ CHỨC THỰC HIỆN:
Để học sinh có thể nắm được thuật toán và mô tả thuật toán thì việc đầu tiên
giáo viên cần quan tâm là làm sao học sinh xác định được bài toán. Để dẫn dắt đến
khái niệm xác định bài toán, giáo viên có thể dựa vào giả thiết và kết luận của một
bài toán trong môn Toán để dẫn dắt học sinh xác định Input, Output của bài toán
trong Tin học. Trong môn Toán, thường trước khi bắt đầu giải một bài toán các em
đã quen với việc tìm giả thiết và kết luận của bài toán. Trong Tin học, phần giả
thiết là các điều kiện cho trước (Input), phần kết luận là kết quả cần thu được
(Output).
Có thể sử dụng một bài toán đơn giản, quen thuộc với học sinh để học sinh
dễ dàng tìm ra được điều kiện cho trước (giả thiết) và kết quả cần thu được (kết
luận) của bài toán này (không nhất thiết cứ phải lấy ví dụ trong SGK).
Sau đó giáo viên dẫn dắt học sinh đến khái niệm thuật toán và mô tả thuật
toán. Bước đầu để học sinh nắm được thuật toán chính là các bước để giải một bài
toán. Việc mô tả thuật toán có thể bằng cách liệt kê các bước hoặc mô tả bằng sơ

OUTPUT: Trứng tráng
Mô tả thuật toán:
Bước 1: Đập trứng, tách vỏ và cho trứng vào bát
Bước 2: Cho một chút muối và hành tươi thái nhỏ vào bát trứng. Dùng đũa
quấy mạnh cho đến khi đều.
Bước 3: Cho một thìa dầu ăn vào chảo, đung nóng đều rồi đổ trứng đun tiếp
trong khoảng 1 phút
Bước 4: Lật mặt trên của miếng trứng úp xuống dưới. Đun tiếp trong khoảng
1 phút
Bước 5: Lấy trứng ra đĩa
Rõ ràng, bất kì ai hiểu biết một chút về làm bếp theo đúng trình tự và chỉ dẫn
ở các bước trong thuật toán nêu trên đều có thể tự làm cho mình món trứng tráng.
Đối với học sinh đó là những bước làm khá quen thuộc, giáo viên hướng dẫn cho
học sinh những thao thác các em thực hiện lần lượt để “Làm món trứng tráng” đó
chính là thuật toán của bài toán mà chúng ta cần phải mô tả.
4


Ví dụ 2: Bài toán “Pha trà mời khách”
INPUT: Trà, nước sôi, ấm và chén
OUTPUT: Chén trà đã pha mời khách
Mô tả thuật toán:
Bước 1: Tráng ấm, chén bằng nước sôi
Bước 2: Cho trà vào ấm
Bước 3: Rót nước sôi vào ấm và đợi khoảng 3 đến 4 phút
Bước 4: Rót trà ra chén để mời khách
Từ Ví dụ 1 và Ví dụ 2 ta thấy những bài toán trên có thuật toán gần gũi,
quen thuộc với học sinh. Nên các em có thể dễ dàng liệt kê các bước như trên và đó
chính là cách thường dùng để mô tả thuật toán.Từ đó sẽ giúp các em dễ hiểu hơn về
cách tìm ra thuật toán và mô tả thuật toán cho bài toán được yêu cầu.Qua đó giáo

nhật, b là chiều dài của hình chữ nhật.
OUTPUT: Diện tích hình A
Để các em có thể hình dung ra thuật toán của bài toán này, giáo viên chuẩn
bị một hình chữ nhật, một hình bán nguyệt được cắt bằng giấy màu dán lên bảng
cho học sinh quan sát:
b
2a

2a

Học sinh quan sát và dễ dàng nhận thấy diện tích của hình A chính là diện
tích của hình chữ nhật cộng với diện tích của hình bán nguyệt.
Như vậy học sinh sẽ biết ngay tính diện tích hình chữ nhật, diện tích hình
bán nguyệt (diện tích hình tròn chia 2) bằng công thức đã học ở Toán học và đó
chính là thuật toán của bài toán này. Cụ thể giáo viên có thể sử dụng kí hiệu phép
gán trong ngôn ngữ lập trình Pascal để hướng dẫn học sinh mô tả thuật toán cụ thể
sau đó đưa ra dạng tổng quát.
S1:= 2ab { tính diện tích hình chữ nhật}
S2:= ∏a2/2 { tính diện tích bán nguyệt}
S:=S1 + S2 { tính diện tích hình A}
Mô tả thuật toán:
Bước 1: S1 ← 2ab { tính diện tích hình chữ nhật}
Bước 2: S2← ∏a2/2 { tính diện tích bán nguyệt}
Bước 3: S← S1 + S2 và kết thúc
Lưu ý: Trong biểu diễn thuật toán người ta thường dùng kí hiệu ← để chỉ
phép gán giá trị của một biểu thức cho một biến. Giáo viên có thể giới thiệu từ
ngôn ngữ lập trình cụ thể Pascal rồi khái quát lên thành những kiến thức, kĩ năng
lập trình nói chung. Cách tiếp cận từ cụ thể đến khái quát sẽ phù hợp hơn với phần
lớn học sinh THCS.
Ví dụ 4 : Đổi giá trị của hai biến x và y

3

Y

X

Y

Sau khi thực hiện như trên nước trong hai cốc đã được tráo sang nhau.
Như vậy học sinh dễ dàng nhận thấy việc tráo đổi giá trị của hai biến cũng
tương tự, trong chương trình phải sử dụng biến z làm biến trung gian để lưu giữ giá
trị ban đầu của biến x. Cụ thể giáo viên có thể sử dụng kí hiệu phép gán trong ngôn
7


ngữ lập trình Pascal để hướng dẫn học sinh mô tả thuật toán cụ thể sau đó đưa ra
dạng tổng quát.
z:=x; {Lưu giá trị của biến x vào biến z}
x:=y; {Giá trị của biến x được thay bằng giá trị của biến y}
y:=z; { Giá trị của biến y được thay bằng giá trị của biến z, giá trị của biến z
lúc này chính bằng giá trị của biết x ban đầu}
Đây chính là thuật toán tráo đổi giá trị của hai biến x và y và lúc này việc mô tả
thuật toán là dễ dàng với học sinh vì thuật toán tráo đổi đã được học sinh nắm rất rõ:
INPUT: Hai biến có giá trị tương ứng là a và b
OUTPUT: Hai biến có giá trị tương ứng là b và a
Mô tả thuật toán:
Bước 1: z ← x { Sau bước này giá trị của z sẽ bằng a}
Bước 2: x ← y { Sau bước này giá trị của x sẽ bằng b}
Bước 3: y ← z { Sau bước này giá trị của y sẽ bằng giá trị của z, chính là a,
giá trị ban đầu của biến x}

nhau, giúp học sinh tiếp thu thuật toán rất nhanh, dễ nhớ.
Thuật toán được mô tả như sau:
INPUT: Dãy A các số a1, a2, …, an (n>=1)
OUTPUT: giá trị MAX=max{ a1, a2, …, an}
Mô tả thuật toán:
Bước 1: MAX ← a1; i ← 1.
Bước 2: i ← i+1.
Bước 3: Nếu i>n, chuyển đến bước 5.
Bước 4: Nếu ai > MAX, MAX ← ai . Quay lại bước 2.
Bước 5: Kết thúc thuật toán.
Rõ ràng với việc dùng những hình ảnh trực quan để minh họa thuật toán,
học sinh có thể tiếp thu thuật toán nhanh và ghi nhớ thuật toán cũng dễ dàng và
sâu sắc hơn.
Giải pháp 3: Mô phỏng thuật toán với một bộ dữ liệu cụ thể
Sau khi xây dựng thuật toán, người ta thường “thực hiện bằng tay” để thử
thuật toán với các bộ dữ liệu INPUT khác nhau. Sau mỗi lần “thực hiện”, kiểm tra
kết quả thu được với yêu cầu của đề bài xem có thỏa mãn không. Quá trình như vậy
được gọi là mô phỏng thuật toán. Để học sinh có thể hiểu và ghi nhớ sâu hơn thuật
toán của bài toán, giáo viên có thể chọn ra những thuật toán mà học sinh còn khó
hiểu, khó nhớ để mô phỏng lại với những bộ dữ liệu cụ thể.
Ví dụ 6: Tính tổng của 100 số tự nhiên đầu tiên
Ý tưởng của giải bài toán trên là dùng một biến SUM để lưu giá trị của tổng.
Việc tính SUM có thể được thực hiện như sau: Đầu tiên gán cho SUM giá trị bằng
0. Tiếp theo lần lượt thêm các giá trị 1, 2, 3,…, 100 vào SUM.
Với thuật toán này giáo viên mô phỏng bộ dữ liệu N=10 (10 số tự nhiên đầu
tiên) cho học sinh quan sát.
+ Mô phỏng thuật toán tính tổng N số tự nhiên đầu tiên, với N = 10 (trong
SGK, N= 100).
Bước
I

8
8
Đúng

9
9
Đúng

10
10
Đúng

SUM
(Tổng)

1

3

6

10

15

21

28

36


c

Số lớn nhất

1
2
3
4
5

3
3
3
3
3

5
5
5
5
5

7
7
7
7
7

3


+ Mô phỏng thuật toán tìm số lớn nhất trong dãy số cho trước:
Dãy số
i
i>n

5
1
Sai

ai> MAX

MAX

5

3
2
Sai

4
3
Sai

7
4
Sai

6
5

Đúng

Đúng

5

5

7

7

7

15

15

15

10
Đúng

Như vậy với việc mô phỏng trực tiếp bằng bộ dữ liệu cụ thể không chỉ làm
cho học sinh được củng cố, hiểu rõ hơn về nội dung lí thuyết vừa học mà còn tạo
hứng thú, củng cố niềm tin cho học sinh để các em tự tin viết chương trình.
Tất cả các thuật toán nêu trên và trong phần câu hỏi và bài tập của Bài 5 đều
được sử dụng làm ví dụ minh họa hoặc để giải các câu hỏi và bài tập trong các bài
học sau. Do vậy việc rèn luyện kĩ với các ví dụ này và giải một số bài tập sẽ tạo
điều kiện thuận lợi để học sinh tiếp thu các nội dung trong các bài học tiếp theo.

30
88.2
29
87.9

Chưa nắm vững thuật toán
SL
%
4
11.8
5
12.1

11


C. KẾT LUẬN VÀ ĐỀ XUẤT
1. Kết luận:
Mục tiêu của các giải pháp trên là rèn luyện kĩ năng xác định Input, Ouput và
mô tả thuật toán bằng cách liệt kê các bước cùng với việc giới thiệu thuật toán. Các
thuật toán này là những thuật toán cơ bản học sinh cần tiếp thu. Trong đó, thuật
toán tìm số lớn nhất của dãy số là thuật toán được yêu cầu cụ thể trong chuẩn kiến
thức kĩ năng. Hơn nữa, các thuật toán trên còn đề cập đến những thuật toán liên
quan đến các cấu trúc rẽ nhánh, cấu trúc lặp và một số bài toán ở các bài sau.
Sau khi áp dụng các giải pháp để giảng dạy trong bài 5 tôi nhận thấy:
Đa số học sinh đã hiểu và nắm rõ được khái niệm bài toán, thuật toán, biết cách
xác định bài toán và mô tả thuật toán bằng phương pháp liệt kê một cách thành thạo.
Học sinh được tiếp cận thuật toán với các bài toán cụ thể bằng việc quan sát
các hình ảnh trực quan không những các em tìm ra thuật toán dễ dàng mà còn nhớ
lâu về các thuật toán vừa được học ví dụ: nhắc đến thuật toán tráo đổi các em hình





Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status