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

Sáng kiến kinh nghiệm - Phương pháp giảng dạy thuật toán trong TIn học 10

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 (273.6 KB, 25 trang )

I: ĐẶT VẤN ĐÊ
Kính thưa quý thầy cô giáo!
Nếu quý thầy cô đã và đang dạy bộ môn Tin học 10 thì hẳn thầy cô se
có nhận xét ngay rằng: Trong học kỳ I, bài số 4 – Bài toán và thuật toán là
một bài khó dạy và học sinh khó có thể hiểu được các thuật toán mà sách
giáo khoa (SGK) đã đưa ra.
Với thời lượng là 6 tiết (5 tiết lý thuyết + 1 tiết bài tập), giáo viên rất
khó để truyền tải được toàn bộ các thuật toán ở trong SGK. Vậy thì có thể
bỏ bớt một vài thuật toán hay không? Tất nhiên là có thể, bởi vì bản thân
người viết sách cũng không yêu cầu phải truyền đạt hết tất cả những gì có
trong sách. Tuy nhiên, theo nhận định của cá nhân tôi thì những thuật toán
mà người viết sách đưa ra là rất hay và có áp dụng vào học lập trình ở tin
học 11, vấn đề còn lại là làm thế nào để học sinh có thể hiểu được các thuật
toán này? Có le là quý thầy cô se có cùng ý kiến với tôi là: Hãy minh họa
thuật toán với các ví dụ trực quan sinh động và thực tế hơn.
Xuất phát từ thực tế giảng dạy và từ trong nội dung chương trình Tin
học phổ thông. Toàn bộ chương trình Tin học 11 đều nghiên cứu về lập
trình là kiến thức có liên quan mật thiết với các thuật toán. Đó cũng chính
là lý do để tôi viết đề tài “Một số phương pháp giảng dạy thuật toán”.
Tôi rất mong được sự góp ý của quý thầy cô để đề tài ngày càng được
hoàn thiện hơn.
Xin chân thành cảm ơn!

Trang 1


Phần 2: NHỮNG BIỆN PHÁP GIẢI QUYẾT VẤN ĐÊ
I. CƠ SỞ LÝ LUẬN CỦA VẤN ĐÊ:
Như ta đã biết Tin học là một bộ môn mới được đưa vào giảng dạy
chính thức trong nhà trường phổ thông năm học 2006-2007. Đối với các em
học sinh, có thể nói đây là một “hành trang” để giúp các em vững bước đi


tới tương lai, như trong SGK tin hoc 10 có câu “Nếu không có hiểu biết
nhất định về tin học thì khó có thể hòa nhập vào cuộc sống hiện đại”. Tuy
nhiên, với các em học sinh nói chung và các em học sinh ở vùng miền núi
nói riêng, việc tiếp cận với bộ môn Tin học còn nhiều hạn chế. Một mặt dễ
hiểu đó là vì hầu hết các em chưa có điều kiện tiếp xúc với máy tính nhiều,
cũng như lĩnh vực công nghệ thông tin vấn còn khá mới mẻ! Mặt khác ở
địa bàn huyện KBang hầu hết các học sinh tốt nghiệp THCS đều được vào
thẳng lớp 10 – THPT mà không qua một khâu tuyển chọn đầu vào nào. Vì
vậy khả năng tư duy của các em trong các lớp cơ bản còn nhiều hạn chế.
Do đó việc truyền tải các thuật toán trong SGK cho các em là một việc
không dễ.
Xuất phát từ thực tiễn như vậy, tôi đã đưa ra một số phương pháp giúp
cho việc truyền tải kiến thức tới các em một cách dễ dàng hơn:
-

Sử dụng phương pháp thuyết trình kết hợp vấn đáp.

-

Đưa ra các ví dụ sát với thực tế như gọi 6 học sinh lên bảng đứng
làm mẫu khi cần biểu diễn thuật toán sắp xếp hay lấy 4 học sinh
ngồi bàn đầu để biểu diễn trong thuật toán tìm Max.

- Sử dụng các tấm bìa cứng có ghi nội dung để mô phỏng ý tưởng
của thuật toán.
- …
Sự tác động qua lại này se giúp cho tiết học sinh động hơn và quan
trọng là học sinh se hiểu các thuật toán một cách dễ dàng hơn.

Trang 2



II. CÁC BIỆN PHÁP ĐÃ TIẾN HÀNH ĐỂ GIẢI QUYẾT VẤN ĐÊ:
1. BÀI TOÁN THỨ NHẤT: TÌM GIÁ TRỊ LỚN NHẤT CỦA MỘT
DÃY SỐ NGUYÊN
a. Xác định bài toán:
- Input: Số nguyên dương N và dãy N số nguyên a1, a2, ..., aN.
- Output: Giá trị lớn nhất Max của dãy số.
b. Ý tưởng của thuật toán:
- Theo ý tưởng của sách giáo khoa:
+ Khởi tạo giá trị Max=a1.
+ Lần lượt với i từ 2 tới N, so sánh số hạng a i với Max, nếu Maxthì Max nhận giá trị bằng ai.
- Liên hệ thực tế: Lấy ví dụ một dãy bàn học đầu tiền gồm có 4 học sinh
ngồi, mỗi học sinh được gán cho một giá trị tương ứng với trọng lượng cơ
thể của học sinh đó. Tìm học sinh có trọng lượng lớn nhất (Max).
(GV cắt một tấm bìa cứng và ghi lên tấm bìa chữ Max, HS nào mà
Max đang mang giá trị của HS đó thì ghi giá trị cân nặng vào sau tấm bìa
và cầm tấm bìa đứng lên, 3 HS còn lại thì ngồi)
GV mô phỏng ý tưởng:
Qui ước thứ tự các học sinh ngồi trong bàn là 1, 2, 3, 4 tính từ trái qua.
Đầu tiên đặt tấm bìa Max tại bạn học sinh ngồi vị trí số 1, ghi giá trị cân
nặng của học sinh 1 vào mặt sau tấm bìa và nói học sinh đó cầm tấm bìa
đứng lên, sau đó ta so sánh giá trị Max hiện tại với giá trị bạn thứ 2, nếu
bạn thứ 2 có giá trị lớn hơn Max thì tấm bìa Max chuyển qua bạn bạn số 2,
ghi lại giá trị mới và bạn số 2 cầm tấm bìa đứng lên, ngược lại thì vẫn giữ
nguyên giá trị và vị trí tấm bìa Max ở bạn số 1. Tiếp tục so sánh giá trị Max
hiện tại với giá trị của bạn số 3, nếu thấy Max lớn hơn thì giữ nguyên giá trị
và vị trí tấm bìa Max, còn nếu Max nhỏ hơn thì chuyển tấm bìa Max qua
bạn thứ 3, ghi lại giá trị mới và bạn thứ 3 cầm tấm bìa đứng lên. Tiếp tục

như vậy ta so sánh giá trị Max với giá trị của bạn số 4, nếu thấy Max lớn
Trang 3


hơn thì giữ nguyên giá trị và vị trí tấm bìa Max, còn nếu Max nhỏ hơn thì
chuyển tấm bìa Max qua bạn thứ 4, ghi lại giá trị mới và bạn thứ 4 cầm tấm
bìa đứng lên. Sau khi so sánh với bạn số 4 xong thì đã so sánh hết, chúng ta
kết thúc việc so sánh, bạn đang đứng và cầm tấm bìa Max chính là bạn có
trọng lượng lớn nhất cần tìm.
c. Ví dụ trên dãy số cụ thể:
Sử dụng 2 tấm bìa cứng có ghi sẵn nội dung như sau:
Ma
x

5 1 4 7 6 3

Tấm bìa 5 1 4 7 6 3

được gắn cố định trên bảng, tấm bìa Ma

được giáo viên cầm trên tay.

x

Giáo viên mô phỏng việc thực hiện thuật toán:
- Đầu tiên ta đặt tấm bìa Max tại vị trí a1:
Ma
x
5 1 4 7 6 3


- So sánh Max với a2 ta thấy Max>a2 nên ta giữ nguyên vị trí của Max.
Ma
x
5 1 4 7 6 3

- So sánh Max với a3 ta thấy Max>a3 nên ta giữ nguyên vị trí của Max.
Ma
x
5 1 4 7 6 3

- So sánh Max với a4 thấy MaxMa
x
5 1 4 7 6 3

- So sánh Max với a5 ta thấy Max>a5 nên ta giữ nguyên vị trí của Max.
Ma
x
5 1 4 7 6 3

- So sánh Max với a6 ta thấy Max>a6 nên ta giữ nguyên vị trí của Max.
Ma
x
5 1 4 7 6 3
Trang 4


Sau khi so sánh với a6 thì đã hết dãy. Ći cùng ta thu được Max=a 4
(Max=7).
d. Một số câu hỏi vấn đáp:

- GV: Đầu tiên Max nhận giá trị của phần tử thứ mấy trong dãy?
HS: Max đầu tiên nhận giá trị a1.
- GV: Chúng ta đi so sánh Max lần lượt với các phần tử nào?
HS: Chúng ta so sánh Max hiện tại lần lượt với các phần tử từ thứ 2 cho
đến hết dãy.
- GV: Nếu gặp trường hợp MaxHS: Nếu gặp Maxe. Mơ tả bằng liệt kê:
B1: Nhập N và dãy N sớ a1, a2, …, aN .
B2: Maxa1, i2.
B3: Nếu i>N thì đưa ra giá trị Max, kết thúc.
B4: Nếu MaxB5: ii+1, quay lại B3.
f. Sơ đờ khối mơ tả tḥt toán
Nhập N và dãy a1,
a2,…aN
Maxa1, i2
i>N

Đ

S
Max
Đ

Đưa ra giá trò
Max
Kết thúc
Maxai


S
ii+1

Trang 5


2. BÀI TOÁN THỨ HAI: SẮP XẾP DÃY SỐ THÀNH DÃY KHÔNG
GIẢM:
a. Xác định bài toán:
+ Input: Dãy A gồm N số nguyên a1, a2, …, aN.
+ Output: Dãy A là dãy tăng dần.
b. Ý tưởng thuật toán:
- Ý tưởng sách giáo khoa: Với mỗi cặp số hạng đứng liền kề trong dãy nếu
số trước lớn hơn số sau ta đổi chỗ chúng cho nhau. Việc đó được lặp lại,
cho đến khi không còn sự đổi chỗ nào xảy ra nữa.
- Liên hệ thực tế: Gọi 6 em bất kỳ có chiều cao tương đối chênh lệc nhau
để mô phỏng ý tưởng thuật toán.
Trong đó: Mỗi em mang một số tương ứng với chiều cao của em đó. Tính
từ phải qua bạn thứ 1 mang giá trị 1.3m, bạn thứ 2 mang giá trị 1.6m, bạn
thứ 3 mang giá trị 1.1m, bạn thứ 4 mang giá trị 1.4m, bạn thứ 5 mang giá
trị 1.5m, bạn thứ 6 mang giá trị 1.2m.
Giáo viên mô phỏng việc thực hiện thuật toán:
Lúc đầu 6 em đứng ngẫu nhiên như sau:
1.
2

1.
5


1.
4

1.
6
1.
1

1.
3

Trang 6


Lần duyệt thứ nhất (tính từ phải sang trái):

1.
5

1.
2

1.
6

1.
4

1.
1


1.
3

Bạn số 2 cao hơn bạn số 3
nên đổi chỗ

1.
2

1.
5

1.
4

1.
6
1. 1.
1 3

Bạn số 3 cao hơn bạn số
4 nên đổi chỗ

1.
2

1.
5


1.
6

1.
4

1. 1.
1 3

Bạn số 4 cao hơn bạn số
5 nên đổi chỗ

Trang 7


1.
6
1.
2

1.
5

1.
4

1. 1.
1 3

Bạn số 5 cao hơn bạn số

6 nên đổi chỗ

1.
6
1.
2

1.
5

1.
4

1.
1.
3
1

Sau lần duyệt thứ nhất được 1
bạn số 6 đứng đúng vị trí.

Lần duyệt thứ 2:
1.
6
1.
2

1.
5


1.
4

1.
1.
3
1

Bạn số 1 cao hơn bạn số
2 nên đổi chỗ

Trang 8


1.
6
1.
2

1.
5

1.
4

1.
3

1.
1


Bạn số 5 cao hơn bạn số 4
nên đổi chỗ

1.
6

1.
5

1.
2

1.
4

1.
3

1.
1

Sau lần duyệt thứ 2 được bạn số
5, số 6 và số 1 đã đứng đúng vị
trí.

Lần duyệt 3:
1.
6


1.
5

1.
2

1.
4

1.
3

1.
1

Bạn số 3 cao hơn bạn số 4 nên đổi
chỗ.

Trang 9


1.
6

1.
5

1.
4


1.
3

1.
2

1.
1

Sau lần duyệt 3 ta
được 4 bạn đúng vị
trí: số 1,4,5,6.

Lần duyệt 4:
1.
6

1.
5

1.
4

1.2 1.
3

1.
1

Bạn số 2 cao hơn bạn số 3 nên

đổi chỗ, còn lại đã đúng vị trí.

Sau 4 vòng duyệt ta được một hàng theo đúng thứ tự như sau:
1.
6

1.
5

1.
4

1.
3

1.2

1.
1

Trang 10


c. Ví dụ trên số cụ thể:
Ví dụ: Giaõ söû cho daõy A={6, 3, 5, 4, 2}.
Giáo viên trình chiếu bảng sau trên máy chiếu, với hiệu ứng xuất hiện
từng bước để học sinh tiện theo dõi.
Trong đó:

N là số phần tử của dãy.

Sptcdsx là số phần tử cần được sắp xếp.
i là chỉ số.

d. Một số câu hỏi vấn đáp:
- GV: Số phần tử cần được sắp xếp ban đầu là bao nhiêu?
HS: Sptcdsx ban đầu chính là N.
- GV: Khi sptcdsx còn lại bao nhiêu thì dừng thuật toán không duyệt nữa?
HS: Khi sptcdsx còn lại ít hơn 2 phần tử thì dừng lại và đưa ra kết quả.
- GV: Chỉ số i ở mổi lần duyệt có giá trị chạy trong đoạn giá trị nào?
HS: Giá trị i trong mỗi lần duyệt chạy trong đoạn [1,sptcdsx].
- GV: Với mỗi giá trị của i Nếu ai>ai+1 thì thực hiện thao tác gì?
HS: Thực hiện thao tác đổi chỗ ai với ai+1.

Trang 11


- GV: Qua mợt lần dụt sptcdsx tăng hay giảm bao nhiêu?
HS: Sau mỗi lần dụt sptcdsx giảm ít nhất 1 phần tử.
- GV: Trong trường hợp xấu nhất, có nhiều nhất là mấy lần dụt thì các
phần tử trong dãy đứng đúng vị trí?
HS: Nhiều nhất là N-1 lần dụt thì các phần tử trong dãy đứng đúng vị
trí.
e. Mơ tả bằng liệt kê:
B1: Nhập N và dãy a1, a2, …, aN .
B2: SptcsxN.
B3: Nếu Sptcsx<2 thì đưa ra dãy A và kết thúc.
B4: i1.
B5: Nếu ai > ai+1 thì đởi chỗ ai và ai+1.
B6: ii+1.
B7: Nếu i < Sptcsx thì quay lại B5.

B8: SptcsxSptcsx-1 và quay lại B3.
f. Mơ tả bằng sơ đờ khối:
Nhập N và dãy a1, a2,
…, aN
SptcsxN
Sptcsx<2

Đ

S
i1
ai > ai+1
S
ii+1
Đ

Đ

đưa ra dãy A
và kết
thúc

đổi chỗ ai và
ai+1

i < Sptcsx
S
SptcsxSptcsx1

Trang 12



3. BI TOAN TH BA: THUAT TOAN TèM KIEM TUAN
Tệẽ
a. Xac inh bai toan:
- Input: Day A gm N sụ hang a1, a2, , aN va khoa K.
- Ouput: Ch sụ i ma ai=K hoc thụng bao khụng tim thõy khoa K.
b. í tng ca thuõt toan:
Tim kiờm tuõn t c thc hiờn mụt cach t nhiờn, lõn lt t sụ hang
th nhõt, ta so sanh sụ hang ang xet vi khoa cho ờn khi hoc gp sụ
hang bng khoa hoc day c xet hờt va khụng co gia tri nao bng khoa.
c. S dng cac tm bỡa giy cng cú ghi ni dung mụ phong y tng
thuõt toan:
10 tõm bia ghi Day A: (Mụt mt ghi kớ hiờu a i, mt kia ghi gia tri cua


ai)

Mt trc:

a1= a2= a3= a4= a5= a6= a7= a8=1 a9=2 a10=5
5
7
1
4
2
9
8
1
5

1
a1

Mt sau:

a2

a3

a4

a5

a6

a7

a8

a9

a10

K=2 K=6
02 tõm bia ghi Khoa K:



10 tm bỡa ghi ni dung dóy A c gn ỳp mt giỏ tr vo bng sao cho
HS phớa di khụng thy c giỏ tr ca ai, cũn tm bỡa ghi ni dung

khúa K thỡ c giỏo viờn cm trờn tay.
Goi mụt hoc sinh lờn bang va a cho hoc sinh o tõm bia khoa K, yờu
cõu hoc sinh i tim mụt tõm bia ỳp trờn bang co gia tri bng K theo y tng
tim kiờm tuõn t.
- Vi day A gm N=10 phõn t nh trờn va K=2:
Hoc sinh lõn lt lõt tng tõm bia mụt theo trinh t t trai qua phai va so
sanh gia tri vi khoa K. õu tiờn lõt tõm bia a1 ta thõy gia tri cua K khac gia
tri a1,

K=2
a1=
5

a2

a3

a4

a5

a6

a7

a8

a9

a10


nờn ta tiờp tc lõt tiờp tõm bia tiờp theo, tõm bia a2 ta thõy K khac a2,
Trang 13


K=2
a1

a2=
7

a3

a4

a5

a6

a7

a8

a9

a10

nên tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a3 ta cũng thấy K khác a3,
K=2
a1


a2

a3=
1

a4

a5

a6

a7

a8

a9

a10

tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a4 ta thấy K khác a4,
K=2
a1

a2

a3

a4=
4


a5

a6

a7

a8

a9

a10

a9

a10

tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a5 ta thấy K=a5,
K=2
a1

a2

a3

a4

a5=
2


a6

a7

a8

nên dừng công việc tìm kiếm và thông báo chỉ số cần tìm là i=5.
- Với dãy A gồm N=10 phần tử như trên và K=6:
Học sinh lần lượt lật từng tấm bìa một theo trình tự từ trái qua phải và so
sánh giá trị với khóa K. Đầu tiên lật tấm bìa a1 ta thấy giá trị của K khác giá
trị a1,
K=6
a1=
5

a2

a3

a4

a5

a6

a7

a8

a9


a10

nên ta tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a2 ta thấy K khác a2,
K=6
a1

a2=
7

a3

a4

a5

a6

a7

a8

a9

a10

nên tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a3 ta cũng thấy K khác a3,
K=6
a1


a2

a3=
1

a4

a5

a6

a7

a8

a9

a10

tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a4 ta thấy K khác a4,
K=6
a1

a2

a3

a4=
4


a5

a6

a7

a8

a9

a10

tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a5 ta thấy K khác a5,
Trang 14


K=6
a1

a2

a3

a4

a5=
2

a6


a7

a8

a9

a10

tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a6 ta thấy K khác a6,
K=6
a1

a2

a3

a4

a5

a6=
9

a7

a8

a9

a10


tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a7 ta thấy K khác a7,
K=6
a1

a2

a3

a4

a5

a6

a7=
8

a8

a9

a10

tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a8 ta thấy K khác a8,
K=6
a1

a2


a3

a4

a5

a6

a7 a8=1
1

a9

a10

tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a9 ta thấy K khác a9,
K=6
a1

a2

a3

a4

a5

a6

a7


a8

a9=2
5

a10

tiếp tục lật tiếp tấm bìa tiếp theo, tấm bìa a10 ta thấy K khác a10,
K=6
a1

a2

a3

a4

a5

a6

a7

a8

a9

a10=5
1


tiếp tục lật tiếp tấm bìa tiếp theo, nhưng không còn tấm bìa nào chưa được
lật qua một lần, tức là đã hết dãy (i=11). Đưa ra kết luận “không tìm thấy số
hạng nào trong dãy bằng khóa K”.
K=6
a1

a2

a3

a4

a5

a6

a7

a8

a9

a10

d. Một số câu hỏi vấn đáp:
- GV: Chúng ta đi tìm kiếm giá trị ai trong dãy A theo cách nào?
HS: Tìm kiếm theo tuần tự bắt đầu từ phần tử đầu tiên của dãy.
- GV: Công việc tìm kiếm se kết thúc khi nào?
HS: Tìm kiếm se kết thúc khi tìm thấy ai=K hoặc khi đã tìm hết dãy.

Trang 15


- GV: Khi gặp trường hợp ai=K thì ta đưa ra thông báo gì và trường hợp
khi tìm hết dãy không có giá trị bằng K thi đưa ra thông báo gì?
HS: Gặp trường hợp ai=K thì đưa ra thông báo chỉ số i; gặp trường hợp
hết dãy thì đưa ra thông báo “Trong dãy không có giá trị nào bằng khóa”.
- GV: Điều kiện để kiểm tra hết dãy hay chưa là gì?
HS: Điều kiện hết dãy là i>N, ngược lại thì chưa hết dãy.
e. Mô tả bằng liệt kê:
B1: Nhập N và dãy a1, a2, …, aN và khoá K.
B2: i1.
B3: Nếu ai = K thì thông báo chỉ số i, kết thúc.
B4: i i+1.
B5: Nếu i > N thì thông báo dãy A không có số hạng nào có giá trị bằng
khoá, kết thúc.
B6: Quay lại B3.
f. Sơ đồ khối mô tả thuật toán:
Nhập N, a1, a2, …, aN, khoá K
i1
ai = K

Ñ

thông báo chỉ số
i kết thúc

S
i i+1
S


i>N
Ñ

Không tìm thấy khoá K

Trang 16


4. BÀI TOÁN THỨ TƯ: THUAÄT TOAÙN TÌM KIEÁM NHỊ
PHÂN
a. Xác định bài toán:
- Input: Dãy A là dãy tăng gồm N số hạng a1, a2, …, aN và khóa K.
- Ouput: Chỉ số i mà ai=K hoặc thông báo không tìm thấy khóa K.
b. Ý tưởng của thuật toán:
Sử dụng tính chất dãy A là dãy tăng, ta chia đôi dãy thành hai dãy con,
phạm vi tìm kiếm se được thu hẹp sau mỗi lần so sánh khóa với số hạng
được chọn. Ta chọn số hạng aGiua để so sánh với k, trong đó:
 N + 1

 2 

Giua = 

Khi đó, chỉ xảy ra một trong ba trường hợp sau:
- Nếu aGiua = k thì đưa ra Giua, rồi kết thúc.
- Nếu aGiua > k thì phạm vi tìm kiếm được thu hẹp lại trên nữa dãy đầu so
với dãy ban đầu.
- Nếu aGiua < k thì phạm vi tìm kiếm được thu hẹp lại trên nữa dãy sau so
với dãy ban đầu.

Quá trình trên se được lặp lại một số lần cho đến khi hoặc tìm thấy
khóa k trong dãy A hoặc phạm vi tìm kiếm bằng rỗng.
c) Liên hệ thực tế:
Giáo viên đưa ra một bài toán với học sinh như sau: Em hãy chọn
một số nguyên dương trong phạm vi từ 1 đến 100 (giữ kín con số này). Em
hãy trả lời các câu hỏi sau, thầy se đoán đúng số mà em đã chọn.
(Giả sử học sinh chọn số 45, vậy khóa tìm kiếm là K=45)
Câu hỏi 1: Số đó có lớn hơn 50 không? Học sinh trả lời không.
Câu hỏi 2: Số đó có lớn hơn 25 không? Học sinh trả lời có.
Câu hỏi 3: Số đó có lớn hơn 37 không? Học sinh trả lời có.
Câu hỏi 4: Số đó có lớn hơn 43 không? Học sinh trả lời có.
Trang 17


Câu hỏi 5: Số đó có lớn hơn 46 không? Học sinh trả lời không.
Câu hỏi 6: Số đó có lớn hơn 44 không? Học sinh trả lời có.
Câu hỏi 7: Số đó có lớn hơn 45 không? Học sinh trả lời không.
Vậy số mà em lựa chọn là số 45.
Tại sao thầy có thể đoán đúng chỉ sau 7 lần kiểm tra giá trị Khóa với
số cần tìm? Là vì sau mỗi câu hỏi thầy đã thu hẹp phạm vi tìm kiếm các số
chỉ còn một nữa. Sau câu hỏi thứ nhất phạm vi các số chỉ còn 50 số, sau
câu hỏi thứ 2 phạm vi các số chỉ còn 25 số....đến câu hỏi số 7 phạm vi các
số chỉ còn duy nhất 1 số. Do vậy chỉ cần so sánh với 7 số tương ứng trong
7 câu hỏi thầy đã đưa ra được con số các em đã lựa chọn mà không cần
kiểm tra hết 100 số. Đó là ý tưởng của thuật toán tìm kiếm nhị phân.
d. Sử dụng các tấm bìa giấy cứng có ghi nội dung để mô phong ý tưởng
thuật toán:
10 tấm bìa ghi Dãy A: (Một mặt ghi kí hiệu a i, mặt kia ghi giá trị của




2

ai)

4

Mặt trước: a1 a2

6

7

8

10

14

17

19

22

a3

a4

a5


a6

a7

a8

a9

a10

Mặt sau:


K=1 K=1
02 tấm bìa ghi Khóa K:
7

2

10 tấm bìa ghi nội dung dãy A được gắn úp mặt giá trị vào bảng sao
cho HS phía dưới không thấy được giá trị của a i,còn tấm bìa ghi nội dung
khóa K thì được giáo viên cầm trên tay.
Gọi một học sinh lên bảng và đưa cho học sinh đó tấm bìa khóa K, yêu
cầu học sinh đi tìm một tấm bìa úp trên bảng có giá trị bằng K theo ý tưởng
tìm kiếm nhị phân.
- Với dãy A gồm N=10 phần tử như trên và K=17:
1 + 10 
= 5 ; lật tấm bìa a5 lên thấy
Lần duyệt 1: Dau=1; Cuoi=10; Giua = 

 2 

a5=8. Vậy a5 khác K nên chuyển sang lần duyệt 2.

Trang 18


Lần duyệt 2: Vì a5a10. Cho học sinh bỏ các tấm bìa từ a1 đến a5 xuống.
a6

a7

a8

a9

a10

 6 + 10 
= 8 ; lật tấm bìa a8 lên thấy
Lúc này Dau=6; Cuoi=10; Giua = 
 2 

a8=17.
Vậy a8=K nên kết thúc việc tìm kiếm và thông báo chỉ số cần tìm là
Giua=8.
- Với dãy A gồm N=10 phần tử như trên và K=12:
1 + 10 
= 5 ; lật tấm bìa a5 lên thấy

Lần duyệt 1: Dau=1; Cuoi=10; Giua = 
 2 

a5=8. Vậy a5 khác K nên chuyển sang lần duyệt 2.
Lần duyệt 2:
Vì a 5Cho học sinh bỏ các tấm bìa từ a1 đến a5 xuống.
a6

a7

a8

a9

a10

 6 + 10 
= 8 ; lật tấm bìa a8 lên thấy
Lúc này Dau=6; Cuoi=10; Giua = 
 2 

a8=17; Vậy a8 khác K nên chuyển sang lần duyệt 3
Lần duyệt 3:
Vì a8>K nên tìm từ Dau tới Giua-1, tức là tìm từ vị trí a 6 đến a7. Cho
học sinh bỏ các tấm bìa từ a8 đến a10 xuống.
a6

a7


6 + 7
= 6 ; lật tấm bìa a6 lên thấy a6=10;
Lúc này Dau=6; Cuoi=7; Giua = 
 2 

Vậy a6 khác K nên chuyển sang lần duyệt 4
Lần duyệt 4:

Trang 19


Vì a6học sinh bỏ các tấm bìa a6 xuống.
a7

7 + 7
= 7 ; lật tấm bìa a7 lên thấy a7=14;
Lúc này Dau=7; Cuoi=7; Giua = 
 2 

Vậy a7 khác K nên chuyển sang lần duyệt 5
Lần duyệt 5:
Vì a7>K nên tìm từ Dau tới Giua-1, tức là tìm từ vị trí a7 đến a6.
Lúc này Dau=7; Cuoi=6; Ta thấy phạm vi tìm kiếm còn lại không phần tử,
nên kết thúc việc tìm kiếm và thông báo “trong dãy không có số hạng nào
bằng khóa”.
e. Một số câu hỏi vấn đáp:
- GV: Đầu tiên giá trị Dau, Cuoi và Giua bằng bao nhiêu.
 Dau + cuoi 
 ;

2



HS: Giá trị Dau=1; Cuoi=N; Giua = 

- GV: Mỗi lần duyệt ta so sánh giá trị K với giá trị nào trong dãy?
HS: Ta so sánh K với giá trị

aGiua .

- GV: Sau mỗi lần duyệt phạm vi tìm kiếm giảm đi bao nhiêu?
HS: Mỗi lần duyệt phạm vi tìm kiếm giảm đi một nữa.
- GV: Thuật toán kết thúc khi nào?
HS: Khí có

aGiua = K

hoặc khi Dau>Cuoi.

- GV: Khi gặp trường hợp

aGiua = K thì đưa ra thông báo gì? Và khi gặp

trường hợp Dau>Cuoi thì đưa ra thông báo gì?
HS: Khi gặp trường hợp

aGiua = K

thì đưa ra thông báo chỉ số Giua,


còn khi gặp trường hợp Dau>Cuoi thì đưa ra thông báo “trong dãy không
có số hạng nào bằng khóa”.

Trang 20


- GV: Nếu aGiua > K thì tìm phạm vi tìm kiếm là trên đoạn nào? Và

aGiua < K thì tìm kiếm trên đoạn nào?
HS: Nếu aGiua > K thì tìm từ Dau tới Giua-1, ngược lại thì tìm từ Giua+1
tới Cuoi.
f. Mơ tả bằng liệt kê:
B1: Nhập N và dãy a1, a2, …, aN và khoá K.
B2: Dau  1, Cuoi  N.
 Dau + Cuoi 
 .
2

B3: Giua  


B4: Nếu aGiua=K thì thơng báo chỉ sớ Giua, kết thúc.
B5: Nếu aGiua > K thì đặt CuoiGiua-1, chủn đến B7.
B6: Dau  Giua + 1.
B7: Nếu Dau > Cuoi thì thơng báo dãy A khơng có sớ hạng bằng K, rồi kết
thúc.
B8: Quay lại B3.
Nhập
dãytoán:

a1, a2, …,
g. Sơ đờ khối
mơ tảN,tḥt

aN , khoá K
Dau  1, Cuoi  N
Giua 

aGiua=K

T

F
aGiua>K

T

thông báo chỉ
số Giua, kết
thúc
CuoiGiua-1

F
DauGiua+1
F
Dau >
Cuoi
T
thông báo dãy A không
có số hạng bằng K,


Trang 21


III- HIỆU QUẢ CỦA SKKN:
- Học sinh sôi nổi, hứng thú hơn khi học nhờ được vận dụng kiến thức
thực tế của mình vào bài học.
- Học sinh tiếp cận kiến thức một cách nhẹ nhành thông qua các ví dụ
gần gũi, không bị áp đặt.
- Học sinh ham thích môn học chủ động tiếp thu kiến thức.

Trang 22


Phần III: KẾT LUẬN
I. Ý NGHĨA CỦA SÁNG KIẾN KINH NGHIỆM:
Tin học nói chung đóng vai trò hết sức quan trọng trong xã hội hiện
đại, tin học đã làm thay đổi nhận thức của con người và ứng dụng trong hầu
hết các hoạt động của xã hội loài người. Qua bài số 4: Bài toán và thuật
toán, bước đầu giúp các em hiểu được một số thuật toán đơn giản, là tiền đề
để các em tiếp tục học lập trinh trong chương trình lớp 11.
Với việc đưa ra các phương án như trên, trong quá trình giảng dạy Tin
học 10, bản thân tôi thấy rằng các tiết học về bài toán và thuật toán không
còn nhàm chán, khô cứng nữa mà trở nên sôi nổi hơn và học sinh cũng có
thể hiểu các thuật toán một cách dễ dàng hơn.
Đề tài này ra đời từ kinh nghiệm của bản thân tôi trong quá trình giảng
dạy. Rất mong sự góp ý chân thành của quý thầy cô để sáng kiến ngày càng
hoàn thiện hơn và có thể trợ giúp cho chúng ta một cách hiệu quả hơn trong
công việc giảng dạy.
Xin chân thành cảm ơn!

II. NHỮNG KIẾN NGHỊ, ĐÊ NGHỊ SAU KHI THỰC HIỆN ĐÊ TÀI:
Sau khi thực hiện đề tài, tôi xin có một vài ý kiến sau:
- Nên áp dụng rộng rãi đề tài này trong việc giảng dạy môn Tin học.
- Đề nghị cấp trên tạo điều kiện hơn nữa về cơ sở vật chất giúp giáo viên có
phương tiện giảng dạy tốt, các em học sinh có điều kiện tiếp xúc với máy
tính nhiều hơn.
KBang, ngày 10 tháng 03 năm 2013
Tác giả

Bùi Hải Đức

Trang 23


TÀI LIỆU THAM KHẢO
1. Sách giáo khoa Tin học 10, Hồ Sĩ Đàm (Chủ biên), Hồ Cẩm Hà,… ,
NXB Giáo dục, 2006
2. Sách giáo viên Tin học 10, Hồ Sĩ Đàm (Chủ biên), Hồ Cẩm Hà,… ,
NXB Giáo dục, 2006
3. Sách giáo khoa Tin học 11, Hồ Sĩ Đàm (Chủ biên), Hồ Cẩm Hà,… ,
NXB Giáo dục, 2007
4. Sách giáo viên Tin học 11, Hồ Sĩ Đàm (Chủ biên), Hồ Cẩm Hà,… ,
NXB Giáo dục, 2007

Trang 24


MỤC LỤC
Phần 1: ĐẶT VẤN ĐÊ......................................................................... Trang
Phần 2: NHỮNG BIỆN PHÁP GIẢI QUYẾT VẤN ĐÊ.................. Trang

I. Cơ sở lý luận của vấn đề................................................................... Trang
II. Các bước đã tiến hành để giải quyết vấn đề.................................... Trang
1. Bài toán thứ nhất: Tìm giá trị lớn nhất của dãy số nguyên..........Trang
2. Bài toán thứ hai: Sắp xếp dãy số thành dãy không giảm.............Trang
3. Bài toán thứ ba: Thuật toán tìm kiếm tuần tự............................Trang
4. Bài toán thứ tư: Thuật toán tìm kiếm nhị phân..........................Trang
III. Hiệu quả của sáng kiến kinh nghiệm:...........................................Trang 22
Phần 3: KẾT LUẬN........................................................................... Trang 23
TÀI LIỆU THAM KHẢO....................................................................Trang 24

Trang 25


×