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

Một số kỹ năng vận dụng thuật toán để giải các bài toán cơ bản trong tin học 10 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 (117.77 KB, 20 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ
TRƯỜNG THPT NGUYỄN TRÃI

SÁNG KIẾN KINH NGHIỆM

MỘT SỐ KỸ NĂNG VẬN DỤNG THUẬT TOÁN ĐỂ GIẢI CÁC
BÀI TOÁN CƠ BẢN TRONG TIN HỌC 10

Người thực hiện: Lê Văn Hùng
Chức vụ: Giáo viên
SKKN thuộc lĩnh vực: Tin học

THANH HÓA, NĂM 2016


MỤC LỤC
A. MỞ ĐẦU
1. Lý do chọn đề tài
2. Mục đích nghiên cứu
3. Đối tượng nghiên cứu
4. Phương pháp nghiên cứu
B. NỘI DUNG
1. Cơ sở lí luận
2. Thực trạng của vấn đề trước khi áp dụng SKKN
3. Các giải pháp thực hiện
3.1. Các bước tiến hành
3.2. Các biện pháp để tổ chức thực hiện
a. Tìm hiểu và phân biệt "Bài toán" trong Tự nhiên và "Bài

1
1


2
2
2
3
3
3
3
3
4
4

toán" trong Tin học:
b. Tìm hiểu khái niệm "Thuật toán" và tầm quan trọng của việc

5

lựa chọn thuật toán để giải quyết các bài toán trong Tin học.
c. Một số ví dụ minh họa.
4. Hiệu quả của SKKN đối với hoạt động giáo dục, với bản thân, đồng

6
15

nghiệp và nhà trường
C. KẾT LUẬN VÀ KIẾN NGHỊ
1. Kết luận
2. Kiến nghị
Tài liệu tham khảo

17

17
17
18


A. MỞ ĐẦU
1. Lý do chọn đề tài
Với sự phát triển ngày càng lớn mạnh của khoa học kỹ thuật và công nghệ,
Công nghệ thông tin chính là chiếc cầu nối để người học, người lao động tiếp cận
với những sự thay đổi ấy. Yêu cầu đã được đặt ra cho ngành giáo dục để đáp ứng
được sự đòi hỏi cấp thiết của công cuộc công nghiệp hóa, hiện đại hóa đất nước,
nhất thiết phải đổi mới phương pháp dạy học theo hướng vận dụng công nghệ thông
tin và sử dụng các thiết bị dạy học hiện đại vào quá trình dạy - học để phát huy
mạnh mẽ tư duy sáng tạo, kỹ năng thực hành và tạo hứng thú cho học sinh từ đó
góp phần nâng cao chất lượng giáo dục, chất lượng nguồn lao động.
Thực tế giảng dạy cho thấy học sinh ngày nay chủ yếu là cố gắng hướng tới
những điều thực sự thu hút và liên quan tới mình, tới trào lưu chung của xã hội. Đặc
biệt là học sinh THPT là những chủ nhân tương lai thực sự của đất nước, trong quá
trình học cùng với những ước mơ, hoài bảo của mình trước khi rời ghế nhà trường
sẽ có những câu hỏi đặt ra cho các em như sẽ chọn ngành gì, nghề gì, và trường gì
để học và sau khi học thì sẽ tìm việc làm ở đâu?...Nói cách khác các em đang tìm
nhiều cách để giải quyết một vấn đề chưa rõ ràng. Khi đã xác định một công việc cụ
thể, thực hiện các bước giải quyết nó để đạt được mục đích đó là lập trình một việc
không dễ dàng đối với tất cả các học sinh nói chung. Xuất phát từ tình hình thực tế
giảng dạy trong những năm qua tại trường với đặc điểm tình hình học sinh Thành
Phố nhưng phần lớn là học sinh thuộc các xã của các huyện mới xác nhập vào
Thành Phố, điều kiện kinh tế gia đình còn khó khăn, chất lượng đầu vào tương đối
thấp việc học và ứng dụng công nghệ thông tin vào thực tế cuộc sống là việc không
dễ chút nào bởi vì phần lớn các em chưa có điều kiện được tiếp xúc với máy tính,
điều kiện cơ sở vật chất, máy móc, thiết bị phục vụ giảng dạy và học tập của học

sinh tại trường cũng còn nhiều hạn chế.
Các giáo viên trong quá trình giảng dạy đều hướng dẫn cho học sinh biết một
bài toán có thể được giải với nhiều cách (thuật toán) khác nhau và mỗi thuật toán
chỉ giải được một bài toán hoặc một lớp bài toán. Nhưng thực tế cho thấy đứng
trước một bài toán trong tin học học sinh thường lúng túng khi xác định thuật toán
hoặc không xác định được thuật toán. Từ đó dẫn đến khó khăn trong việc giải quyết
các bài toán, việc này cũng có thể do nhiều nguyên nhân, chẳng hạn do điều kiện
kinh tế gia đình chưa có máy vi tính để học, thực hành, vốn tiếng anh còn hạn chế,
1


một số phần trong chương trình của môn Tin học 10, 11 tương đối khó nên các em
chưa chú tâm, đầu tư học tập bộ môn…. Nên khi cho một bài toán tin học có dạng
tương tự một bài toán cơ bản có trong sách giáo khoa, thì các em học khá, giỏi có
thể hình dung và tìm được thuật toán cho bài toán, còn phần lớn các đối tượng học
sinh còn lại thì gặp khó khăn trong việc xác định thuật toán để giải quyết bài toán
đặt ra. Vì vậy việc vận dụng, hình thành kỹ năng xây dựng thuật toán là công việc
rất quan trọng để giải quyết các bài toán nói chung và trong tin học 10 nói riêng.
Đây là nội dung kiến thức có trong chương trình Tin học 10, liên hệ chặt chẽ và là
tiền đề để các em học tốt chương trình môn Tin học 11 và học lập trình sau này, vì
vậy việc giúp học sinh vận dụng và xây dựng được thuật toán để giải các bài toán
như thế nào để học sinh có sự đam mê, gây được hứng thú học tập là điều đáng
quan tâm, trăn trở và mặc dù có nhiều đề tài tương tự đề cập đến nhưng với tình
hình thực tế giảng dạy, chất lượng học sinh và cơ sở vật chất tại trường bản thân tôi
mạnh dạn lựa chọn đề tài “ Một số kỹ năng vận dụng thuật toán để giải các bài
toán cơ bản trong Tin học 10” với mong muốn có thể nâng cao chất lượng học tập
bộ môn Tin học trong nhà trường và cùng chia sẻ kinh nghiệm trong giảng dạy với
các đồng nghiệp đặc biệt là các đồng nghiệp ở những trường có điều kiện cơ sở vật
chất và chất lượng học sinh còn thấp.
2. Mục đích nghiên cứu

Xác định tầm quan trọng của việc xây dựng thuật toán để giải quyết các bài
toàn trong tin học, thông qua các ví dụ cụ thể để học sinh nắm được tầm quan trọng
của thuật toán, các bước, trình tự thực hiện của thuật toán để vận dụng vào việc giải
các bài toán tương tự từ đó tạo cho các em học sinh có thêm định hướng, niềm đam
mê về lập trình và nghề nghiệp mà các em sẽ lựa chọn sau này.
3. Đối tượng nghiên cứu
- Học sinh khối 10 tại trường THPT Nguyễn Trãi, Thành phố Thanh Hóa.
- Sử dụng các bài toán cơ bản để thực hiện thuật toán.
4. Phương pháp nghiên cứu
- Kết hợp giữa giảng dạy và học tập của học sinh tại trường THPT Nguyễn
Trãi, Thành Phố Thanh Hóa.
- Tham khảo các tài liệu tin học về cấu trúc dữ liệu và giải thuật, về lập trình
Pascal và các tài liệu khác có liên quan.

2


B. NỘI DUNG
1. Cơ sở lí luận
Khi học sinh học đến bài Bài 4. “BÀI TOÁN VÀ THUẬT TOÁN” SGK Tin
học 10. Việc xác định bài toán (2 thành phần Input và Output) sau khi tham khảo
các ví dụ và sự hướng dẫn của giáo viên thì hầu hết các em học sinh đều nắm được
kiến thức này. Nhưng việc tìm ra Output từ Input ban đầu đó chính là thuật toán của
bài toán thì hầu hết học sinh lại gặp nhiều khó khăn trong việc hình dung ra thuật
toán và hay nhầm lẫn trong việc thực hiện các bước của thuật toán hoặc chưa xác
định được khi nào thuật toán dừng.
2. Thực trạng của vấn đề trước khi áp dụng
Khi đặt ra một bài toán cơ bản cụ thể theo ngôn ngữ tự nhiên thì với kiến
thức đã học, học sinh chỉ sau một số thao tác tính toán là có thể trả lời kết quả của
bài toán đó có thể đúng hoặc sai. Nhưng khi bài toán đó ở dạng tổng quát và đặt ra

tình huống giải quyết bài toán trong tin học thì phần lớn học sinh thường lúng túng
và khó khăn trong việc tìm lời giải của bài toán từ đâu và bắt đầu như thế nào? điều
đó gây tâm lý chán nản, thiếu tự tin đối với môn học cho các em. Trên cơ sở đó để
giúp học sinh định hướng tốt trong quá trình vận dụng để lựa chọn và xây dựng
thuật toán thì thầy, cô giáo cần tạo cho học sinh thói quen tìm thuật toán cho bài
toán đặt ra từ các các bài toán cơ bản quen thuộc mà các em đã biết theo ngôn ngữ
tự nhiên hoặc các thuật toán tương tự đã có, khai thác các yếu tố đặc trưng của bài
toán để tìm thuật toán áp dụng cho các bài toán mới tương tự. Việc áp dụng thuật
toán của các bài toán để xây dựng thuật toán cho các bài toán tương tự là một quá
trình giúp học sinh rèn luyện kỹ năng xây dựng thuật toán để giải các bài toán trong
tin học 10, 11.
3. Các giải pháp thực hiện
3.1.

Các bước tiến hành
1. Lựa chọn và xây dựng hệ thống bài toán cơ bản, phù hợp để thực hiện và

rèn luyện kỹ năng xây dựng thuật toán thông qua các buổi học, mỗi buổi học nên
chọn một đến hai bài toán cơ bản để mở rộng và phát triển kỹ năng lựa chọn và xác
định thuật toán cho các bài toán khác.

3


2. Củng cố khái niệm Thuật toán và 2 phương pháp để diễn tả thuật toán đó là
Liệt kê và dùng Sơ đồ khối
Mỗi buổi học nên xây dựng hệ thống bài tập như sau:
- Trên cơ sở các nội dung trong SGK, lưa họn bài toán cơ bản hoặc bài toán
quen thuộc với học sinh để hướng dẫn học sinh lựa chọn và xác định thuật toán.
- Mở rộng bài toán tương tự vẫn giữ nguyên thuật toán ở của các ví dụ đã có

để học sinh thông qua đó mà vận dụng.
- Gợi ý học sinh tự đặt ra một bài toán cơ bản trong thực tế để các em tự lựa
chọn và xây dựng thuật toán cho phù hợp.
- Mở rộng bài toán để học sinh tự rèn luyện kỹ năng xây dựng thuật toán ở
nhà trên giấy sau đó nộp lại để giáo viên kiểm tra đánh giá.
3. Tổ chức cho học sinh hình thành kỹ năng lựa chọn và vận dụng thuật toán
thông qua các buổi học có sự hướng dẫn của giáo viên.
4. Cần có hệ thống máy vi tính, máy chiếu. Hệ thống các bài toán và thuật
toán để giải quyết các bài toán đó được soạn thảo kỹ lưỡng trên các phần mềm hỗ
trợ giảng dạy và học tập.
5. Tổ chức kiểm tra để thu thập thông tin về khả năng vận dụng, khả năng tư
duy thuật toán, lập trình của học sinh.
3.2.

Các biện pháp để tổ chức thực hiện

a. Tìm hiểu và phân biệt "Bài toán" trong Tự nhiên và "Bài toán" trong Tin học.
- Bài toán trong tự nhiên phần lớn học sinh đã từng học và trả lời được đó là
việc từ giả thiết đã cho tìm ra kết luận của bài toán.
- Bài toán trong tin học nói chung là một việc nào đó ta muốn máy tính thực
hiện, thường được giải ở dạng tổng quát vì vậy việc xác định bài toán chính là xác
định 2 thành phần Input và Output của bài toán, việc chỉ ra được cách để tìm ra
Output đó chính là thuật toán của bài toán đã cho.
4


b. Tìm hiểu khái niệm "Thuật toán" và tầm quan trọng của việc lựa chọn thuật toán
để giải quyết các bài toán trong Tin học.
Máy tính ra đời nhằm mục đích giúp con người trong việc xử lý, lưu trữ
thông tin theo những yêu cầu riêng. Khi sử dụng máy tính người dùng chỉ quan tâm

đến hai yếu tố: đưa vào máy thông tin gì (Input) và nhận được thông tin gì (Output).
Muốn máy tính làm được công việc này ta cần chỉ ra cho máy dãy các thao tác mà
máy có thể thực hiện được. Đó chính là thuật toán để giải bài toán.
“Thuật toán để 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 các thao tác ấy, từ
Input của bài toán ta nhận được Output cần tìm”.
Các tính chất của một thuật toán:
- Tính dừng
- Tính xác định
- Tính đúng đắn
Từ định nghĩa và tính chất của thuật toán ta thấy thuật toán có các đặc điểm:
- Dãy hữu hạn các thao tác;
- Sắp xếp có thứ tự;
- Từ Input cho ra Output.
Ví dụ: Đi học về để có cơm cho chúng ta ăn bố mẹ chúng ta phải làm những
công việc: Lấy gạo đem vo, cho vào nồi, đổ nước, cắm điện, bật công tắc... GV
(Giáo viên) có thể đặt ra câu hỏi? Trình tự các công việc này có thể thay đổi được
hay không?khi thay đổi có ảnh hướng gì đến các công việc còn lại? Với câu hỏi này
Hs sẽ khẳng định rằng thứ tự thự hiện các công việc trên là không thể thay đổi và
nếu thay đổi thì công việc thực hiện sẽ không hiệu quả hoặc không thể thực hiện
được. Từ đó GV nhấn mạnh tầm quan trọng của thuật toán đó là phải đảm bảo các
tính chất và có những đặc điểm như đã nêu.
GV cho Hs vận dụng để trả lời câu hỏi và bài tập số 2, SGK Tin học 10 Tr 44.
Dãy thao tác sau:
Bước 1: Xóa bảng;
Bước 2: Vẽ đường tròn;
Bước 3: Quay lại bước 1.
Có phải là thuật toán không? Tại sao?
5



Một số học sinh chủ quan, chưa khắc sâu khái niệm và tính chất của thuật toán
sẽ trả lời dãy thao tác trên là thuật toán vì nó được biểu diễn theo các bước của thuật
toán. Một số học sinh khác sẽ trả lời mặc dù là dãy thao tác chỉ gồm có 3 bước
nhưng theo khái niệm và các tính chất của thuật toán dãy thao tác trên lặp đi lặp lại
vô hạn không có tính dừng nên không phải là thuật toán.
GV giới thiệu hai cách diễn tả thuật toán: Cách diễn tả cho con người (liệt kê
các bước và dùng sơ đồ khối) và cách diễn tả cho máy tính (chương trình). Trong
phạm vi kiến thức cách thứ hai sẽ được giới thiệu trong các bài sau, GV giới thiệu
kỹ cách thứ nhất:
GV đưa ra ví dụ tìm giá trị lớn nhất của một dãy số nguyên trong Sgk Tin học
10 Tr 33 trên màn chiếu để Hs cùng quan sát và giới thiệu đây là 2 cách diễn tả
thuật toán.
Liệt kê các bước: Là việc dùng ngôn ngữ tự nhiên để diễn tả các bước cần
làm khi giải một bài toán bằng máy tính.
Dùng sơ đồ khối: Một số qui ước, ký hiệu.
Ký hiệu

Mô tả
Thao tác nhập, xuất dữ liệu.
Thể hiện các phép tính toán.
Thể hiện các thao tác so sánh.
Trình tự thực hiện các thao tác

c. Một số ví dụ minh họa.
Ví dụ 1: Xây dựng thuật toán giải phương trình bậc nhất: ax + b = 0
GV đặt câu hỏi khi giải một phương trình bậc nhất theo toán học ở dạng tổng
quát có thể xảy ra những trường hợp nào?
HS dễ dàng trả lời một phương trình bậc nhất theo toán học có thể xảy ra 1
trong 3 trường hợp (TH):

6


TH1: Có nghiệm duy nhất khi a≠0.
TH2: Vô nghiệm khi a=0 và b≠0.
TH3: Vô số nghiệm khi a=0; b=0.
Từ đó GV đi đến hướng dẫn Hs diễn tả thuật toán của bài toán ứng với các
TH nêu trên.
Cách 1. Liệt kê các bước:
- Bước 1: Nhập vào 2 số a và b.
- Bước 2: Xét điều kiện a = 0 ?
- Đúng thì chuyển sang bước 3.
- Sai thì thông báo phương trình có nghiệm là x = - b/a và kết thúc;
- Bước 3: Xét điều kiện b = 0 ?
- Nếu b = 0, thì thông báo phương trình có vô số nghiệm và kết thúc;
- Nếu b ≠ 0, thì thông báo phương trình vô nghiệm và kết thúc;
Cách 2. Dùng sơ đồ khối:
Nhập a, b

S

a=0
?

Thông báo nghiệm
x=-b/a và kết thúc

Đ

S


b=
0?

Thông báo vô
nghiệm và kết thúc

Đ

Thông báo vô số
nghiệm và kết thúc

Thông qua ví dụ trên GV phát vấn học sinh về ưu nhược điểm của từng cách
diễn tả thuật toán? Sau khi Hs trả lời GV nhấn mạnh.

7


. Phương pháp liệt kê: Là phương pháp biểu diễn thuật giải theo ngôn ngữ tự
nhiên, không yêu cầu người viết hay người đọc nắm vững các quy tắc. Nhược điểm
dài dòng, không thể hiện rõ cấu trúc thuật toán gây khó hiểu cho người đọc dễ dẫn
đến nhầm lẫn hoặc xét thiếu các trường hợp.
. Phương pháp dùng sơ đồ khối: Là công cụ trực quan để diễn đạt các thuật
toán, giúp người đọc theo dõi được sự phân cấp các trường hợp, quét hết được các
trường hợp còn thiếu và dễ hiểu trình tự quá trình xử lý của thuật toán.
GV gợi ý và yêu cầu học sinh về nhà vận dụng ví dụ 1, phát triển và diễn tả
thuật toán cho bài tập 5 SGK Tin học 10 Trang 44 và tìm hiểu các ví dụ SGK.
Ví dụ 2: Thuật toán tìm nghiệm của phương trình bậc hai tổng quát: ax2 +
bx + c = 0.
Với một phương trình bậc 2 cụ thể học sinh có thể vận dụng nhiều kiến thức

toán học để giải như: đưa về hằng đẳng thức đáng nhớ, phân tích đa thức thành
nhân tử, tính delta.. nhưng ở dạng tổng quát thường các phương pháp trên Hs khó
áp dụng được ngoại trừ phương pháp tính delta.
Với ngôn ngữ toán học tự nhiên các em vừa học xong cấp 2 thì một phương
trình bậc 2 tổng quát với phương pháp tính delta học sinh có thể dễ dàng tìm ra
nghiệm của phương trình là một trong 3 trường hợp: Vô nghiệm hoặc có nghiệm
kép hoặc có 2 nghiệm phân biệt. Dựa vào tính chất này GV hướng dẫn học sinh
diễn tả thuật toán và nhấn mạnh thuật toán kết thúc khi 1 trong 3 trường hợp trên
xảy ra.
*. Phương pháp liệt kê:
- Bước 1: Nhập vào 3 hệ số a, b và c.
- Bước 2: Tính delta = b*b – 4*a*c.
- Bước 3: Xét điều kiện nếu delta < 0, thì thông báo phương trình vô nghiệm
và kết thúc.
- Bước 4: Nếu delta = 0, thì thông báo phương trình có nghiệm kép –b/(2*a)
và kết thúc.

8


- Bước 5: Ngược lại delta > 0, thì thông báo phương trình có hai nghiệm
phân biệt x1= (-b + sqrt(delta))/(2*a) và x2=(-b – sqrt(delta))/(2*a) và kết thúc.
*. Dùng sơ đồ khối như sau:
Nhập a, b, c (a≠ 0)

delta b2- 4ac

Đ

delta>

0?

Thông báo 2 nghiệm
x1,x2=(-b±sqrt(delta)/(2*a)
và kết thúc

S
Đ

delta=
0?

Thông báo nghiệm kép
x=-b/(2*a) và kết thúc

S
Thông báo vô nghiệm
và kết thúc

 . Sau khi hướng dẫn các cách biểu diễn thuật toán để giải bài toán trên:
- Giáo viên mô phỏng thuật toán với các giá trị cụ thể khác nhau của a, b, c để
học sinh khắc sâu tính chất của thuật toán.
- Nêu ra các ứng dụng của bài toán này trong thực tế: dùng để giải các
phương trình bậc 2 trên máy tính cá nhân, tích hợp vào máy tính bỏ túi như: Casio
FX 500A, Casio FX 500MS,....yêu cầu học sinh kiểm nghiệm kết quả bằng cách
dùng một trong các loại máy tính bỏ túi trên để nhập 3 hệ số a,b,c vào máy là ngay
lập tức máy tính sẽ cho nghiệm chính xác của bài toán từ đó tạo cho các em hứng
thú tìm tòi cái mới của môn học và hăng say hơn.
Ví dụ 3: Tìm giá trị bé nhất của một dãy số gồm N phần tử a 1, a2,…, an.
(Bài tập 4 SKG Tin học 10 Trang 44).

9


GV quay trở lại ví dụ Tìm giá trị lớn nhất của một dãy số nguyên SGK Tin
học 10 Trang 33 trong phần giới thiệu thuật toán (Trên màn chiếu) để học sinh quan
sát, tìm ra điểm giống và khác nhau của hai ví dụ này từ đó hình thành ý tưởng để
vận dụng xây dựng được thuật toán của bài toán. Với ví dụ này sau khi được quan
sát thuật toán tìm giá trị lớn nhất học sinh thường chủ quan rất dễ mắc sai lầm trong
việc áp dụng xây dựng thuật toán cho bài toàn tìm giá trị bé nhất vì cho rằng từ bài
toán tìm Max chỉ cần đổi các dấu lớn (>) thành dấu bé (<) trong thuật toán tìm Max
là được. Từ đó dẫn đến thuật toán sai ngay từ bước 3, vì vậy GV cần lưu ý chỉ ra
cho HS sự sai lầm này từ đó định hướng cho Hs hình thành ý tưởng để vận dụng và
xác định đúng thuật toán cho bài toán tìm Min
 Ý tưởng:
- Khởi tạo Min là a1.
- lần lượt với i từ 2 đến N, so sánh Min với a i, nếu ai trị mới là ai, cuối cùng sẽ tìm được Min của dãy số cần tìm.
Với học sinh việc dãy số đã được sắp xếp thì việc chỉ ra giá trị Min là rất đơn
giản. Nhưng với dãy số bất kỳ thì có thể có ý tưởng khác khi khởi tạo giá trị ban
đầu có thể ở giữa hoặc bất kỳ vị trí nào trong dãy chứ không nhất thiết là giá trị đầu
tiên. Tuy nhiên với việc khởi tạo giá trị ban đầu là a 1 và với cách duyệt dãy số lần
lượt từ đầu đến cuối dãy thì giá trị Min sẽ lần lượt được so sánh với các a i còn lại và
như vậy sẽ không bị nhầm lẫn và bỏ sót các trường hợp khi so sánh. Thông qua khái
niệm duyệt để học sinh làm quen dần với cách thay đổi giá trị các biến.
Cách 1: Liệt kê các bước
- Bước 1: Nhập N và dãy a1, a2,…, an.
- Bước 2: Min  a1, i 2.
- Bước 3: Nếu i > N thì đưa ra giá trị Min rồi kết thúc.
- Bước 4: 4.1: Nếu ai < Min thì Min ai
4.2: i i+1 rồi quay lại bước 3

10


Cách 2: Dùng sơ đồ khối
Nhập N và dãy a1 ...aN

Mina1 , i 2

i>N?

Đ

Đưa ra Min và
kết thúc

S
S

ai?
Đ

Minai

i i + 1
Để thể hiện và khẳng định rõ hơn các tính chất của thuật toán với ví dụ này
GV cần đưa một hoặc hai dãy số bất kỳ để mô phỏng với các hiệu ứng thể hiện từng
bước của thuật toán cho HS quan sát.
Trên cơ sở của ví dụ này GV yêu cầu học sinh vận dụng vào việc diễn tả
thuật toán cho bài toán sắp xếp.

Ví dụ 4: Cho N và dãy số a 1,a2,…,an hãy sắp xếp dãy số đó thành dãy số
không tăng( Bài tập 6 SGK tin học 10 trang 44).

Bài toán sắp xếp là dạng bài toán rất phổ biến và quen thuộc trong cuộc sống
hàng ngày đặc biệt là lứa tuổi học sinh như: sắp xếp đội hình nghi thức thiếu nhi từ

11


thấp đếp cao, sắp xếp danh sách HS của lớp...theo một tiêu chí nào đó như tăng dần
hoặc giảm dần điểm trung bình chung các môn…
Đối với bài toán này yêu cầu sắp xếp dãy số theo thứ tự không tăng (giảm
dần) có nhiều ý tưởng khác nhau để diễn tả thuật toán này như sắp xếp chọn, sắp
xếp tuần tự, sắp xếp chèn…tuy nhiên để đa số HS có thể tiếp thu được nội dung
thuật toán GV cần cho Hs quan sát lại Ví dụ 2: Bài toán sắp xếp dãy tăng dần SGK
Tin học 10 trang 37 trên cơ sở đó hướng dẫn HS vận dụng xây dựng thuật toán sắp
xếp bằng tráo đổi hay gọi là sắp xếp nổi bọt (bubble sort) tương tự như Sgk.
Hs tìm ra sự khác biệt giữa 2 ví dụ này và mấu chốt của vấn đề để giải quyết
bài toán này, sẽ có nhiều HS nhầm lẫn hoặc chưa nắm kỹ thuật toán sửa các bước
thuật toán trên như ở bước 3 (M>2), bước 6 (inày. Vì vậy GV cần nhấn mạnh và khẳng định với Hs rằng về mặt thuật toán thì sắp
xếp tăng hay giảm các bước đều giống nhau chỉ khác ở bước 7 dấu của phép so sánh
được tráo đổi ai >ai+1 thành ai Giáo viên trình chiếu và hướng dẫn học sinh 2 cách biểu diễn thuật toán.
Cách 1: Liệt kê các bước
- Bước 1: Nhập N và các số hạng a1,a2,…,an.
- Bước 2: MN ;
- Bước 3: Nếu M< 2 đưa ra dãy A đã được sắp xếp và kết thúc.
- Bước 4: MM-1, i0;
- Bước 5: ii+1;

- Bước 6: Nếu i>M quay lại bước 3;
- Bước 7: Nếu ai - Bước 8: Quay lại bước 5.

12


Cách 2: Biểu diễn bằng sơ đồ khối
Nhập N và a1,a2,…,aN
MN
Đ

M<2
?

Đưa ra dãy A được
sắp xếp và kết thúc

S
MM-1; i 0
ii+1
Đ

i>M?
S

Đ
Tráo đổi ai và ai+1

ai


S

Nhận xét: Học sinh dễ nhận thấy về cơ bản thì cách diễn tả thuật toán của bài
này cũng tương tự bài 3 và ví dụ 2 của SGK như đã nêu, đều phải duyệt hết các
phần tử có trong danh sách với biến đếm i tăng lần lượt từ 0 đến M+1 và thực hiện
các thao tác so sánh, gán, đổi chỗ...tuy nhiên với bài này HS có thể hỏi tại sao lại
dùng biến M trong thuật toán? Và không dùng biến M có được không?
GV: Có thể không dùng biến M nhưng vì mỗi lần đổi chỗ khi a i nhất của dãy A được chuyển dần về cuối dãy và sau lượt thứ nhất giá trị bé nhất
được xếp đúng vị trí của nó ở cuối dãy. Lần duyệt thứ hai thì giá trị đó không tham
gia vào so sánh và đổi chỗ nữa mà giá trị bé thứ hai của dãy sẽ được xếp ngay sau
đó... Vì vậy sử dụng biến M để mỗi lần duyệt số phần tử được so sánh giảm đi một
(MM-1) và để tiết kiệm số lượng phép toán so sánh trong thuật toán.

13


Ngoài ra còn có các câu hỏi khác như tại sao lại khởi tạo giá trị i=0? Trong
khi chỉ số đếm lại bắt đầu từ 1? Khi giải quyết được những băn khoăn này thì về cơ
bản các em đã nắm được các bước và quá trình thực hiện của thuật toán. Nhưng để
tường minh hơn GV nên chuẩn bị một đến hai dãy hữa hạn để có thể mô phỏng quá
trình thực hiện của thuật toán trên màn chiếu để HS khắc sâu và ghi nhớ, đồng thời
làm quen với các khái niệm lặp.
Bài tập vận dụng, củng cố:
1. Mô phỏng thuât toán sắp xếp theo thứ tự giảm dần với dãy A gồm 5 phần
tử: 3, 7, 4, 5, 8?
2. Bài toán tìm kiếm (bài tập 7) Sgk tin học 10 Tr 44?
Hướng dẫn:

Bài 1: Mô phỏng tương tự GV yêu cầu Hs về nhà thực hiện.
Bài 2: Tìm kiếm là công việc thường gặp trong cuộc sống hàng ngày, có tìm
kiếm phức tạp như: tìm kiếm máy bay MH370 mất tích... có những tìm kiếm đơn
giản như: Tìm trong danh sách học sinh của lớp học sinh có điểm trung bình chung
cao nhất....
Yêu cầu của bài toán là: Cho N và dãy số : a 1, a2,...aN hãy cho biết có bao
nhiêu số hạng trong dãy có giá trị bằng 0.
Có nhiều ý tưởng tìm kiếm vấn đề là với cách nào việc tìm kiếm nhanh hơn,
thuận lợi hơn điều này phụ thuộc vào dãy số đã được sắp xếp hay chưa? thường thì
khi cho dãy ban đầu là chưa sắp xếp theo một trình tự nào thì ta nên sử dụng thuật
toán tìm kiếm tuần tự. Tức là đi kiểm tra lần lượt từng phần tử của dãy, nếu tìm thấy
một phần tử có giá trị bằng phần tử 0 cần tìm thì ta dùng biến đếm để lưu số lượng
giá trị tìm được. Nếu so sánh đến cuối dãy mà không có phần tử a i nào bằng số 0
cần tìm thì thông báo không có số hạng nào trong dãy bằng 0. Đây là ví dụ rất đơn
giản việc xây dựng thuật toán cũng tương đối dễ GV nên yêu cầu HS về nhà thực
hiện việc xây dựng và mô phỏng thuật toán này tương tự thuật toán sắp xếp nhưng
có sử dụng thêm biến đếm d để mỗi lần so sánh có giá trị phần tử trong dãy bằng 0
thì d d+1…
14


Nhận xét chung:
Trên đây là một số kỹ năng vận dụng để xây dựng thuật toán cho các dạng bài
cơ bản có trong Sgk Tin học 10 và phù hợp với kiến thức và đối tượng học sinh lớp
10, làm cơ sở để Hs học tốt môn Tin học 11. Nhưng những nội dung trên khi giảng
dạy muốn đạt được mục đích yêu cầu và mang lại kết quả như mong muốn GV cần:
- Kiểm tra khả năng tư duy thuật toán của học sinh bằng cách yêu cầu HS nhớ
lại các kiến thức toán học đã học có liên quan đến bài toán từ đó vận dụng nêu ra ý
tưởng giải cho từng bài toán.
- Gọi học sinh lên áp dụng viết thuật toán sau khi giáo viên đã hướng dẫn một

dạng ( liệt kê các bước hay dùng sơ đồ) từ các bài toán tương tự.
- Yêu cầu học sinh mô phỏng thuật toán để hiểu rõ tính chất của thuật toán và
rút ra ưu điểm, nhược điểm của từng cách từ đó dần dần nhận ra tầm quan trọng của
việc lựa chọn hoặc thiết kế thuật toán để giải các bài toán trong Tin học 10 và 11.
4. Hiệu quả của SKKN đối với hoạt động giáo dục, với bản thân, đồng nghiệp
và nhà trường:
Trong quá trình giảng dạy tại trường THPT Hoằng Hóa 3 và hiện nay tại
Trường THPT Nguyễn Trãi những năm đầu dạy học theo phương pháp cũ là dạy lý
thuyết theo tài liệu sách giáo khoa đưa ra, sau đó cho học sinh thực hành kết quả thu
được của các lớp không đáp ứng được yêu cầu bài học và sự kỳ vọng của giáo viên
đa số học sinh không có hứng thú học vì cho rằng môn học khó quá, sau những băn
khoăn trăn trở cùng với việc tham khảo các tài liệu bộ môn đã có và ý kiến của
đồng nghiệp tôi đã có những ý tưởng như đã trình bày và áp dụng vào giảng dạy
trong những năm gần đây. Kết quả thu được cho thấy, đại đa số Hs các lớp đã hình
dung được các bước xây dựng thuật toán và tích cực phát biểu, có những ý tưởng
hay trong việc áp dụng để xây dựng thuật toán và khi được mô phỏng bằng những
giá trị cụ thể, được kiểm chứng bằng máy tính cầm tay các em thấy tự tin hơn với
những gì mình đã làm được và có hứng thú, say sưa với môn học hơn và kết quả
học tập được nâng lên rõ rệt. Điều đó cho thấy hiệu quả của cả quá trình rèn luyện
15


kỹ năng vận dụng thuật toán bằng việc mở rộng bài toán cơ bản tương tự. Thầy, cô
có thể áp dụng cách làm này với nhiều dạng bài tập khác nhau đặc biệt áp dụng đối
với đối tượng học sinh có học lực trung bình để thấy được hiệu quả.
Bên cạnh đó, những tiết dạy dự giờ, rút kinh nghiệm tôi được các đồng
nghiệp đóng góp nhiều ý kiến tích cực và chỉ ra những hạn chế tồn tại, tôi đã lắng
nghe chân thành và khắc phục sửa chữa để phương pháp ngày càng hoàn thiện hơn.
Với phạm vi chương trình và đối tượng nghiên cứu áp dụng đó là các em học
sinh có học lực trung bình nhằm mục đích giúp các em nắm các dạng bài cơ bản

một cách tốt nhất, tạo cảm hứng yêu thích môn học hơn và phục vụ cho khả năng tư
duy thuật toán và hiểu được tầm quan trọng của việc xây dựng, vận dụng thuật toán
trong quá trình học lập trình sau này.

C. KẾT LUẬN VÀ KIẾN NGHỊ
16


1. Kết luận
SKKN này chỉ là kinh nghiệm của bản thân đúc rút trong quá trình giảng dạy
tại trường nên chưa thể đầy đủ và sâu sắc và còn nhiều thiếu sót chưa thể áp dụng
rộng rãi đề tài vào giảng dạy tại các trường. Vì vậy rất mong được sự quan tâm,
đóng góp ý kiến, phản hồi của các đồng nghiệp để bản thân sẽ hoàn thiện hơn
SKKN của mình.
2. Kiến nghị
- Mong rằng cách làm này sẽ được các đồng nghiệp nghiên cứu và áp dụng
vào thực tiễn dạy học để rút ra những điều bổ ích cho bản thân, học sinh và nhà
trường.
- Mong nhà trường quan tâm, tạo điều kiện về trang thiết bị giảng dạy đầy đủ
để ngoài phòng thực hành mỗi phòng học có được 01 bộ máy chiếu, máy tính nối
mạng để việc giảng dạy và học tập bộ môn đạt được kết quả cao.
- Đề nghị các em học sinh học ngoài việc học tập các môn chính cần phải xác
định rõ vai trò và tầm quan trọng của môn học cũng như những ứng dụng của nó
trong cuộc sống để bắt đầu làm quen và có niềm đam mê nghiên cứu môn học hơn.
XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ

Thanh Hoá, ngày

tháng


năm

2016
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

Lê Văn Hùng

17


TÀI LIỆU THAM KHẢO
- Sách giáo khoa, sách giáo viên, sách bài tập Tin học 10 và 11.
- Cấu trúc và giải thuật tác giả Đỗ Xuân Lôi.
- Các tài liệu lập trình của các trường Đại học.
- Các SKKN bộ môn của các đồng nghiệp.
- Một số trang web để tìm kiếm tài liệu.




18



×