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

Dạy học thuật toán tìm kiếm nhị phân

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 (982.55 KB, 34 trang )

Sáng kiến kinh nghiệm

Dạy học thuật toán tìm kiếm nhị phân
trong tin học lớp 11 theo phương pháp tinh chế từng bước

GV Bùi Thiện Quý

THPT Hưng Yên


Sáng kiến kinh nghiệm
PHẦN I: MỞ ĐẦU
LÝ DO CHỌN ĐỀ TÀI
Phương pháp dạy học có vai trò quan trọng trong quá trình giáo dục, đó là những hoạt
động và giao lưu của thầy và trò nhằm đạt được mục tiêu giáo dục. Để đạt được mục tiêu giáo
dục thì việc lựa chọn phương pháp dạy học thích hợp là vấn đề quan trọng. Mỗi bài dạy có thể
có nhiều phương pháp dạy khác nhau, và mỗi phương pháp dạy thì có thể thực hiện ở nhiều
bài học. Mặt khác, trên thực tế hiện nay, các phương pháp dạy học truyền thống không đáp
ứng được nhu cầu và mục tiêu dạy học. Việc đổi mới phương pháp là vấn đề then chốt để có
được những bài dạy hay và đạt hiệu quả cao. Văn kiện Đại hội đại biểu toàn quốc lần thứ XI
của Đảng cộng sản Việt Nam họp tháng 01 năm 2011 đưa ra chiến lược phát triển kinh tế - xã
hội 2011 – 2020 có nêu yêu cầu: “Đổi mới mạnh mẽ nội dung, chương trình, phương pháp
dạy và học ở tất cả các cấp, bậc học”. Như vậy, việc cấp bách hiện nay là cần phải đổi mới
phương pháp dạy học để đáp ứng nhu cầu học tập của người học và xã hội.
Đối với môn Tin học hiện nay trong trường phổ thông vẫn còn là mới mẻ, bên cạnh đó
phương pháp để dạy học môn học còn chưa tiếp cận nhiều đến giáo viên. Chính vì điều này
thì việc dạy môn Tin học cũng sẽ là một thử thách đối với các giáo viên Tin học trong tỉnh nói
chung. Trong đó, việc dạy lập trình cho học sinh cần phải có những phương pháp thích hợp để
đạt hiệu quả cho học về hiểu thuật toán và cài đặt thuật toán trên một ngôn ngữ lập trình.
Trong sáng kiến kinh nghiệm này tôi muốn đưa ra áp dụng một phương pháp dạy học để phát
triển tư duy cho học sinh trong việc cài đặt thuật toán đó là phương pháp tinh chế từng bước.


Phương pháp này được áp dụng thông qua đề tài: “Dạy học thuật toán tìm kiếm nhị phân
trong tin học lớp 11 theo phương pháp tinh chế từng bước”. Mặc dù nội dung thuật toán tìm
kiếm nhị phân đã được giảm tải nhưng tôi muốn đưa ra đây để thấy được hiệu quả của
phương pháp và đồng thời bồi dưỡng và phát hiện những học sinh có năng khiếu tin học.
MỤC ĐÍCH NGHIÊN CỨU
Nâng cao chất lượng dạy và học môn Tin học trong trường phổ thông, đặc biệt là dạy học
lập trình ở Tin học lớp 11.
Góp phần đổi mới phương pháp dạy học trong trường phổ thông nói chung và môn Tin
học nói riêng.
Góp phần khơi dậy lòng đam mê, yêu thích và hứng thú khi học môn Tin học của học
sinh. Đặc biệt là tạo học sinh có được cách tư duy khi học thuật toán và lập trình.

GV Bùi Thiện Quý

1

THPT Hưng Yên


Sáng kiến kinh nghiệm
ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Phương pháp tinh chế từng bước và việc áp dụng vào dạy học thuật toán và lập trình đối
với thuật toán “Tìm kiếm nhị phân” cho học sinh phổ thông.
Học sinh khối 11, trường THPT Hưng Yên năm học 2012-2013.
PHƯƠNG PHÁP NGHIÊN CỨU
Dựa trên cơ sở lý thuyết về phương pháp dạy học nói chung và phương pháp tinh chế
từng bước đưa vào giảng thuật toán “Tìm kiếm nhị phân” cho học sinh lớp 11.
Thu thập dữ liệu thông qua phiếu điều tra thông tin mức độ học sinh biết, hiểu và vận
dụng thuật toán của học sinh sau khi học thuật toán.
Phân tích đánh giá mức độ học sinh hiểu về thuật toán sau khi dạy, thông qua phân tích

các bảng số liệu và thông kê.
Tổng kết rút kinh nghiệm
THỜI GIAN NGHIÊN CỨU
Từ tháng 1 năm 2013 đến tháng 2 năm 2013

GV Bùi Thiện Quý

2

THPT Hưng Yên


Sáng kiến kinh nghiệm
PHẦN II: NỘI DUNG
“DẠY HỌC THUẬT TOÁN TÌM KIẾM NHỊ PHÂN TRONG TIN HỌC LỚP 11
THEO PHƯƠNG PHÁP TINH CHẾ TỪNG BƯỚC”

CHƯƠNG 1: CƠ SỞ LỰA CHỌN ĐỀ TÀI
1.1 CƠ SỞ LÝ LUẬN
Việt Nam đang trong thời kỳ hội nhập nền kinh tế thế giới WTO (World Trade
Organizasion) với những bước biến chuyển mới đã tạo cơ hội và thách thức không ít đến các
lĩnh vực trong đó có giáo dục. Giáo dục là lĩnh vực được xem là quan trọng của đất nước, một
đất nước có mạnh hay không là nhờ vào nền giáo dục. Việc phát triển nền giáo dục của đất
nước cần phải đáp ứng yêu cầu của một nền kinh tế tri thức và xã hội tri thức trong thời kỳ
này. Một trong những vần đề không kém phần quan trọng trong nền giáo dục đó là công tác
dạy học. Để dạy học tốt thì mục tiêu đặt ra làm thế nào để người học chiếm lĩnh được tri thức
nhân loại, vận dụng nó vào đời sống thực tiễn của xã hội. Muốn vậy người thầy cần phải có
cách thức hay nói một cách tổng quát đó là phương pháp dạy học đạt hiệu quả. Việc đổi mới
phương pháp được đưa ra rất nhiều trong các văn kiện, nghị quyết, chiến lược của Đảng và
Nhà nước về giáo dục trong xu thế hiện nay. Nghị quyết Hội nghị lần thứ hai, Ban chấp hành

Trung ương Đảng khóa VIII: "Đổi mới mạnh mẽ phương pháp giáo dục và đào tạo, khắc phục
lối truyền thụ một chiều, rèn luyện thành nếp tư duy sáng tạo của người học, từng bước áp
dụng các phương pháp tiên tiến và phương pháp hiện đại vào quá trình dạy học, bảo đảm thời
gian tự học, tự nghiên cứu của học sinh...”.
Trên cơ sở khái niệm về phương pháp dạy học, một cách thức tiến hành các hoạt động
giao lưu của giáo viên gây ra các cách thức hoạt động và giao lưu của học sinh để đạt được
mục tiêu giáo dục. Việc đổi mới phương pháp ở đây là đổi mới cách thức, đổi mới các hoạt
động tạo ra niềm vui, niềm hứng thú cho học sinh chiếm lĩnh tri thức một cách có hiệu quả.
Điều này thể hiện ở ngay trong các bài dạy, người giáo viên có vai trò mới điều khiển các
hoạt động giao lưu ấy, tức là các tình huống để học sinh tìm hiểu tự kiến tạo tri thức.
Tri thức mà học sinh chiếm lĩnh được thực hiện theo lý thuyết của vùng phát triển gần
nhất do nhà tâm lí học người Nga Vưgôtxki L.X đưa ra. Đó là, những tri thức mà học sinh đã
có được nằm ở vùng phát triển hiện tại và những tri thức cần yêu cầu học sinh đạt được đang
nằm ở vùng phát triển gần nhất. Dạy học là hướng tới vùng phát triển gần nhất, để yêu cầu
học sinh tích cực hoạt động, phấn đấu thực hiện những nhiệm vụ đặt ra. Nhờ vào những hoạt

GV Bùi Thiện Quý

3

THPT Hưng Yên


Sáng kiến kinh nghiệm
động đó mà các yêu cầu ở vùng phát triển gần nhất dần dần chuyển hóa thành vùng phát triển
hiện tại và các vùng trước kia ở xa thì giờ đây được kéo lại trở thành vùng phát triển gần nhất.
Cứ như vậy, trình độ học sinh cũng như các tri thức do học sinh chiếm lĩnh được được phát
triển và hoàn thiện hơn.
Thực tế hiện nay các môn học đều thực hiện việc đổi mới phương pháp, nâng cao hiệu
quả chất lượng bài dạy. Đối với môn Tin học thì việc đổi mới phương pháp dạy là hết sức

quan trọng, bởi môn học có sự phát triển về mặt tri thức và điều đặc biệt là nó liên quan hầu
như tới các môn học khác. Điều này sẽ rất thuận lợi là nhờ có sự đổi mới ở các môn học khác
làm tác động đến môn Tin học. Đổi mới phương pháp dạy học Tin học ở các trường phổ
thông hiện nay chưa được thực hiện nhiều, mặc dù sự phát triển của môn học thì thường
xuyên nhưng việc đổi mới phương pháp để dạy môn học ở các giáo viên trường phổ thông là
hạn chế. Một mặt do đặc thù môn học liên quan đến máy tính, đến các môn học khác như:
Toán, Vật lí, Tiếng Anh, …. Một mặt do sự chậm trễ đổi mới ở giáo viên, việc bồi dưỡng
thường xuyên chưa nhiều, chưa tìm tòi và phát hiện ra những phương pháp mới.
Trong các nội dung chương trình Tin học phổ thông thì việc dạy học lập trình là một
việc khó khăn, hầu như các giáo viên đều vấp phải. Bởi nó liên quan đến thuật toán, điều khó
ở chỗ là để học sinh hiểu thuật toán đã cả là một khó khăn đối với học sinh. Ngoài ra, còn ứng
dụng thuật toán vào các bài toán khác lại là một việc khó hơn, mà học sinh khi nghe đến thuật
toán là chúng sợ bởi khả năng tư duy của chúng còn hạn chế. Nếu cứ dạy theo những phương
pháp thông thường thì học sinh sẽ học một cách máy móc và không hiểu sâu thuật toán hoạt
động dẫn đến việc chuyển hóa thuật toán để viết trên một ngôn ngữ lập là rất khó thực hiện
được, do đó để ứng dụng thuật toán đó vào các bài tập đơn giản là không thể làm được. Chính
vì vậy mà cần đưa ra một phương pháp dạy mới để có thể vừa hiểu thuật toán, vừa biết cách
xây dựng thuật toán trên một ngôn ngữ lập trình là rất cần thiết. Phương pháp đó không chỉ
thực hiện ở một thuật toán này mà có thể áp dụng vào thuật toán khác, hoặc có thể cho các nội
dung khác nội bộ trong môn Tin học.
1.2 CƠ SỞ THỰC TIỄN
Đặc điểm môn
Môn Tin học đến nay không còn là môn học mới mẻ đối với học sinh phổ thông, bởi
học sinh đã được làm quen nó ngay ở các cấp học dưới. Đây là một thuận lợi cho học sinh,
học sinh không phải học từ đầu để làm quen với môn học. Tuy nhiên, môn học này có đặc thù
riêng đó là nó liên quan đến việc sử dụng công cụ máy tính để thực hiện và những nội dung
trong môn học dễ bị lạc hậu do sự phát triển ngành khoa học Tin học là rất nhanh. Sự liên

GV Bùi Thiện Quý


4

THPT Hưng Yên


Sáng kiến kinh nghiệm
quan của môn Tin học với các môn học khác là nhiều, vì vậy học sinh sẽ phải vất vả để xem
lại, tìm kiếm lại tri thức ở các môn học khác. Đặc biệt nội dung lập trình trong môn học Tin
học lại có liên quan rất nhiều đến tư duy Toán học, mà nếu học sinh yếu tư duy về Toán học
thì sẽ rất là khó khăn. Muốn giải quyết được việc này thì giáo viên cần phải làm sao tách ra,
đưa học sinh nhìn theo một tư duy mới gần gũi với học sinh để học sinh dễ dàng hiểu hơn.
Giáo viên
Nhiều giáo viên còn hạn chế về nội dung Tin học, trình độ, khả năng cập nhật thông tin.
Không chỉ vậy, một số giáo viên còn yếu khả năng tư duy về thuật toán, hay nói cách khác là
chưa hiểu rõ thuật toán để diễn đạt trong việc dạy lập trình. Chính điều này đã làm cho giáo
viên hạn chế trong việc đổi mới phương pháp, có khi giáo viên dạy thuật toán hay dạy lập
trình còn theo kiểu hàn lâm, kinh viện, có khi cứ dạy lập trình là sử dụng máy tính gõ luôn
chương trình và chạy. Dẫn đến học sinh mất đi khả năng tìm hiểu và tư duy giải quyết các
thuật toán, hứng thú trong việc học lập trình.
Nhà trường
Về phía nhà trường thì một mặt còn chưa hiểu thấu đáo về học môn Tin học, cho rằng
học môn Tin học là học cách sử dụng máy tín, đó là sai lầm về mục tiêu dạy học môn học.
Ngoài ra về mặt cơ sở vật chất như phòng máy, số lượng máy tính, các phần mềm hỗ trợ dạy
học, thiết bị liên quan, … chưa đáp ứng được yêu cầu cho dạy và học môn Tin học.
Học sinh
Chưa hiểu về mục tiêu môn học, cũng cho rằng học Tin học là học sử dụng máy tính,
nên không quan tâm đến các nội dung học. Có học sinh còn hiểu môn học như là một môn
học phụ không có tác dụng nhiều trong chương trình giáo dục phổ thông. Bên cạnh đó học
sinh còn yếu về tư duy lôgic, khả năng sáng tạo và suy luận trong việc học lập trình. Học sinh
khi học thuật toán không hình dung được con đường ra thuật toán bởi nó là tổng quát hóa một

cách thức hoạt động, từ việc đó người ta đưa cho máy tính thực hiện và làm.

GV Bùi Thiện Quý

5

THPT Hưng Yên


Sáng kiến kinh nghiệm
CHƯƠNG 2: DẠY HỌC THUẬT TOÁN TÌM KIẾM NHỊ PHÂN TRONG TIN HỌC
LỚP 11 THEO PHƯƠNG PHÁP TINH CHẾ TỪNG BƯỚC
2.1 PHƯƠNG PHÁP TINH CHẾ TỪNG BƯỚC
Trước hết chúng ta nói về kỹ năng lập trình, đó là một kỹ năng mà người lập trình
chuyển hóa thuật toán từ ngôn ngữ tự nhiên (liệt kê hay sơ đồ khối) thành một chương trình
hoàn chỉnh. Rèn luyện kỹ năng này rất quan trọng bởi nó là một bước tư duy từ thuật toán cho
đến chương trình trên một ngôn ngữ cụ thể. Nếu việc thực hiện kỹ năng này không tốt thì dẫn
đến một chương trình tồi và không hiệu quả, thậm chí có thể còn lỗi và sai về thuật toán.
Để giúp giáo viên, cũng như học sinh có một tư duy tốt về khả năng cài đặt thuật toán ta
đưa ra một phương pháp gọi tinh chế từng bước hay có thể hiểu là phát triển chương trình
bằng cách tinh chế từng bước. Một bài toán đưa ra có thể có nhiều lời giải (hay thuật toán)
khác nhau, tuy nhiên để một giáo viên có thể tổ chức dạy hay hướng dẫn học sinh thực hiện
viết chương trình sao cho thuật toán của bài toán đó dễ hiểu là một vấn để cần đặt ra. Do đó
việc tinh chỉnh các bước cho bài toán trong máy tính là phương pháp khoa học, có hệ thống
giúp chúng ta phân tích các thuật toán và cấu trúc dữ liệu từ đó thành một chương trình. Vậy
cốt lõi của vấn đề là biết phương pháp phát triển dần dần để chuyển ý tưởng ra thành chương
trình hoàn chỉnh.
Một chương trình ban đầu hay nói gần hơn là thuật toán thường được viết dưới dạng tự
nhiên (ở đây là ngôn ngữ tiếng Việt) thể hiện tổng thể quá trình thực hiện thuật toán. Phương
pháp tính chế từng bước sẽ thực hiện phân tích các câu lệnh chi tiết hơn có thể là ở trên một

ngôn ngữ lập trình Pascal. Nói một cách dễ hiểu là phương pháp tình chế từng bước sẽ làm rõ
dần các bước thực hiện trong thuật toán bằng quá trình chuyển nó thành chương trình trên một
ngôn ngữ cụ thể. Các bước của thuật toán dần dần được làm rõ lên để người đọc cảm nhận
thuật toán viết trên ngôn ngữ lập trình. Đây là một phương pháp mà khi giáo viên sẽ hướng
học sinh nhìn rõ dần thuật toán trên ngôn ngữ cụ thể, khi đó việc cài đặt thuật toán sẽ dễ áp
dụng cho các bài toán đơn giản khác sẽ dễ dàng hơn và tối ưu hơn, dễ hiểu hơn.
2.2 BÀI TOÁN TÌM KIẾM
Cho dãy A gồm N số nguyên khác nhau: a 1, a2, ...,aN và một số nguyên k (gọi tắt là
khóa k). Cần biết có hay không chỉ số i (0 ≤ i ≤ N) mà ai = k. Nếu có hãy cho biết chỉ số đó.
Xác định bài toán:
Input: Dãy A gồm N số nguyên khác nhau a 1, a 2, ...,a N và số nguyên k;
Output: Chỉ số i mà ai = k hoặc thông báo không có phần tử nào của dãy A có giá trị
bằng k.

GV Bùi Thiện Quý

6

THPT Hưng Yên


Sáng kiến kinh nghiệm
2.3 THUẬT TOÁN TÌM KIẾM NHỊ PHÂN
Xét bài toán ở một trường hợp đặc biệt của Input đó là dãy A đã được sắp xếp tăng
dần (a1Vì dãy A là dãy tăng, nên ta thu hẹp phạm vi tìm kiếm sau mỗi lần so sánh khóa k với
phần tử đã chọn. Ở đây, ta chọn số hạng ở giữa dãy (gọi là aGiua) để so sánh với khóa k. Nếu
bằng thì ta đưa ra kết quả là chỉ số tìm kiếm là Giua, còn không thì tìm ở dãy các phần tử
đứng sau a Giua nếu phần tử aGiuatử a Giua>k . Quá trình tiếp tục lặp đi lặp lại như trên với dãy các phần tử đứng trước hoặc sau

cho đến khi tìm thấy khóa k trong dãy A hoặc phạm vi tìm kiếm (hay dãy phần tử) bằng rỗng
(không còn phần tử nào) thì kết thúc.
a1

aGiua

aN

Thuật toán tìm kiếm nhị phân viết bằng cách liệt kê:
Bước 1: Nhập N, các số hạng a1, a2, ...,aN và khóa k;
Bước 2: Dau1; Cuoi N;

 Dau  Cuoi 
 ;
2


Bước 3: Giua  

Bước 4: Nếu a Giua = k thì thông báo chỉ số Giua, rồi kết thúc;
Bước 5: Nếu a Giua > k thì đặt Cuoi = Giua –1 rồi chuyển đến bước 7;
Bước 6: Dau Giua +1;
Bước 7: Nếu Dau > Cuoi thì thông báo dãy A không có số hạng nào có giá trị bằng k,
rồi kết thúc;
Bước 8: Quay lại bước 3;
2.4 DẠY HỌC THUẬT TOÁN TÌM KIẾM NHỊ PHÂN TRONG TIN HỌC LỚP
11 THEO PHƯƠNG PHÁP TINH CHẾ TỪNG BƯỚC
Mục đích:
- Học sinh hiểu về bài toán tìm kiếm.
- Học sinh biết được thuật toán tìm kiếm nhị phân.

- Học sinh vận dụng được ngôn ngữ Pascal để cài đặt chương trình.
Yêu cầu:
- Học sinh phát biểu được bài toán tìm kiếm và đưa ra được ý tưởng thuật toán tìm kiếm
nhị phân.

GV Bùi Thiện Quý

7

THPT Hưng Yên


Sáng kiến kinh nghiệm
- Học sinh thực hành áp dụng được thuật toán tìm kiếm nhị phân cài đặt chương trình
cho một bài toán đơn giản (tìm kiếm một phần tử thỏa mãn điều kiện nào đó trong dãy các
phần tử đã biết).
Đối tượng học sinh:
- Học sinh lớp 11.
- Mức độ: Trung bình khá
Mức độ khó của thuật toán đối với học sinh:
- Xác định dãy để thực hiện tìm kiếm. Sự thay đổi biến Dau và Cuoi trong quá trình lặp
- Xác định phần tử ở giữa của dãy cần xét để so sánh với khóa tìm kiếm. Sự thay đổi
biến Giua trong quá trình lặp
- Điều kiện để lặp lại việc tìm kiếm trên dãy mới và kết thúc quá trình tìm kiếm, thông
báo kết quả.
Phương pháp thực hiện:
- Tinh chế thuật toán từng bước một để đi đến chương trình cụ thể.
- Giáo viên có thể thực hiện bằng việc sử dụng máy tính, máy chiếu và phần mềm trình
chiếu Microsoft Powerpoint để trình chiếu các Slide đã được chuẩn bị sẵn.
Thực hiện bài giảng:

Giáo viên đặt vấn đề để đưa ra những tình huống hướng học sinh vào việc tìm hiểu ý
tưởng thuật toán tìm kiếm nhị phân:
Bài toán tìm kiếm và việc tìm kiếm tuần tự
- Tìm kiếm là một yêu cầu rất thường xuyên trong đời sống hàng ngày cũng như trong
tin học
- Ví dụ:
+ Tìm kiếm một học sinh trong một lớp học
+ Tìm kiếm một quyển sách trong thư viện
+ Tìm kiếm một tập tin hay thư mục trong máy tính, ….
- Để đơn giản ta xét một bài toán tìm kiếm đơn giản như sau: Cho một dãy số gồm các
phần tử a1, a2, …., aN. Cho biết trong dãy này có phần tử nào có giá trị bằng k (cho trước) hay
không?
- Với bài toán trên, ta có thể đưa ra cách làm như sau:
+ So sánh k với phần tử đầu tiên trong dãy A, nếu thấy thì thông báo.
+ Còn lại không thấy thì tiếp tục tìm kiếm ở dãy bắt đầu từ phần tử thứ 2 đến N.
+ Việc làm trên có thể lặp lại N lần nếu phần tử đó nằm ở cuối dãy hoặc không có
phần tử nào.

GV Bùi Thiện Quý

8

THPT Hưng Yên


Sáng kiến kinh nghiệm
Đó là ý tưởng của thuật toán tìm kiếm tuần tự mà học sinh đã biết.
Cách này cũng như việc ta muốn tìm kiếm một bạn học sinh có chiều cao k nào đó
trong một lớp học mà các bạn học sinh đang ngồi học, khi đó ta phải gọi từng bạn trong lớp ra
đo (từ bạn ngồi ở đầu tiên bàn đầu đến bạn ở vị trí cuối cùng lớp học) để xác định vị trí học

sinh có chiều cao k cần tìm.
Hướng học sinh đi đến ý tưởng tìm kiếm nhị phân
- Trong một giờ chào cờ lớp học đó ra xếp hàng chào cờ, và việc xếp hàng này có thứ
tự từ thấp lên cao (bạn thấp đứng trước và bạn cao đứng sau, giả sử chiều cao của các bạn là
khác nhau). Liệu việc tìm ra bạn học sinh có chiều cao k sẽ có thuận lợi không và việc làm đó
sẽ làm như thế nào?

?
Tăng dần số lượng học sinh (độ khó của công việc tìm kiếm) để tìm ra một phương
pháp tìm kiếm thích hợp cho bài toán:
- Có 1 bạn học sinh có chiều cao a, việc chỉ ra bạn a có chiều cao bằng k hay không rất
đơn giản.
Nếu k = a thì “Thông báo” còn lại “Thông báo không tìm thấy”
- Có 2 bạn học sinh có chiều cao a và b, trong đó aNếu k = a thì “Thông báo” còn lại Xét trường hợp với 1 bạn học sinh b
- Có 3 bạn học sinh xếp hàng theo thứ tự tăng dần (chiều cao tương ứng là: aso sánh chiều cao bạn đứng ở giữa (b) với k. Nếu bằng (k=b) thì thông báo, còn lại (k<>b):
nếu (k>b) chiều cao bạn đó (b) nhỏ hơn k, thì tiếp theo sẽ so sánh chiều cao bạn đứng sau (c),
còn lại (kNếu k=b thì Thông báo
còn lại nếu k>b thì Xét trường hợp với 1 bạn học sinh c
còn lại Xét trường hợp với 1 bạn học sinh a
- Có 4 bạn học sinh xếp hàng theo thứ tự tăng dần theo chiều cao (chiều cao tương ứng:
aNếu bằng (k=b) thì thông báo, còn lại (k<>b): nếu (k>b) chiều cao bạn đó (b) nhỏ hơn k, tìm

GV Bùi Thiện Quý

9


THPT Hưng Yên


Sáng kiến kinh nghiệm
kiếm ứng với trường hợp 2 học sinh (c và d), còn lại (ktrước (a).
Nếu k=b thì Thông báo
còn lại nếu k>b thì Xét trường hợp 2 học sinh c và d
còn lại Xét trường hợp với 1 bạn học sinh a
- Có N bạn học sinh xếp hàng theo thứ tự tăng dần theo chiều cao. (Giả sử chiều cao bạn
thứ nhất là a 1, bạn thứ hai là a 2,…, bạn thứ N là aN; trong đó: a1+ Hãy chia đôi hàng học sinh đứng bằng bạn học sinh đứng ở giữa là có vị trí là (N+1)/2
(vị trí đứng giữa chỉ tương đối)
+ So sánh chiều cao bạn đứng ở giữa (a (N+1)/2) với k.
Nếu bằng (k= a(N+1)/2) thì thông báo.
Nếu (k> a (N+1)/2), tìm kiếm k ứng với trường hợp hàng có (N/2)-1 bạn học sinh đứng phía
sau bạn đứng giữa (từ bạn thứ ((N+1)/2) +1 đến bạn thứ N).
Còn lại (k< a(N+1)/2), tìm kiếm k ứng với trường hợp hàng có (N/2)-1 bạn học sinh đứng
phía trước bạn đứng giữa (từ bạn thứ 1 đến bạn thứ ((N+1)/2) -1)
Nếu k= a(N+1)/2 thì Thông báo
còn lại
nếu k> a(N+1)/2 thì
Xét trường hợp (N/2)-1 học sinh phía sau bạn đứng giữa (từ bạn thứ
((N+1)/2) +1 đến bạn thứ N)
còn lại
Xét trường hợp (N/2)-1 học sinh phía trước bạn đứng giữa (từ bạn thứ
1 đến bạn thứ ((N+1)/2) -1)
- Trường hợp (N/2)-1 học sinh quay lại làm tương tự như trường hợp với N học sinh. Quá
trình chia đôi hàng như vậy cho đến khi không còn học sinh nào để xét thì thông báo kết quả.
Đưa ra trường hợp đặc biệt của dãy A là đã sắp xếp tăng dần (sử dụng thuật toán sắp xếp

mà học sinh đã biết). Như vậy bài toán tìm kiếm được phát biểu lại như sau:
- Cho một dãy số tăng gồm các phần tử a1, a2, …., aN (trong đó: a1trong dãy này có phần tử nào có giá trị bằng k (cho trước) hay không?
- Xác định bài toán:
Input: Dãy A là dãy tăng gồm N số nguyên a1, a2, ...,aN và số nguyên k;
Output: Chỉ số i mà ai = k hoặc thông báo không có phần tử nào của dãy A có giá trị bằng
k.

GV Bùi Thiện Quý

10

THPT Hưng Yên


Sáng kiến kinh nghiệm
Chúng ta dựa theo ý tưởng của bài toán thực tế để bắt đầu xây dựng thuật toán tìm kiếm
nhị phân theo phương pháp tinh chế từng bước như sau. Trong quá trình tinh chế những dòng
được đặt dấu (?) thể hiện điều cần phải làm rõ sau mỗi lần tinh chế.
Tinh chế lần 1:
Chương trình Tim_Kiem;
Khai báo và nhập dãy A gồm các số nguyên tăng dần và số nguyên k.
Xác định dãy ban đầu để tìm kiếm (?)
Xác định vị trí phần tử đứng giữa. (?)
Nếu k= Phần tử đứng giữa thì Thông báo
Còn lại
nếu k> Phần tử đứng giữa thì
Xét trường hợp (N/2)-1 phần tử phía sau (từ sau phần tử đứng giữa đến
phần tử thứ N) (?)
còn lại

Xét trường hợp (N/2)-1 phần tử phía trước (từ phần tử thứ 1 đến phần
tử trước phần tử đứng giữa) (?)

Tinh chế lần 2:
Program Tim_Kiem;
Var

a: array[1..N] of integer;
i, k, Dau, Cuoi, Giua: integer;

Begin
Write(‘Nhap N =’); readln(N);
for i:=1 to N do
Begin
Write(‘a[’ ,i, ‘] =’); readln(a[i]);
End;
Dau:= 1; Cuoi:= N; {dùng biến Dau va Cuoi để lưu giữa vị trí đầu và cuối của dãy ban
đầu. Ký hiệu để xác định dãy số như sau: (Dau, Cuoi), với dãy ban đầu sẽ là (1,N)}
Giua:= (Dau + Cuoi) div 2; {dùng biến Giua để lưu giữ vị trí phần tử đứng giữa_chia
lấy phần nguyên để lấy vị trị giữa tương đối}
if k= a[Giua] then Thông báo
else

GV Bùi Thiện Quý

11

THPT Hưng Yên



Sáng kiến kinh nghiệm
if k> a[Giua] then
Xác định dãy (N/2)-1 phần tử phía sau (từ phần tử thứ Giua+1 đến phần
tử thứ N) (?)
else
Xác định dãy (N/2)-1 phần tử phía trước (từ phần tử thứ 1 đến phần thứ
Giua-1) (?)
End.
Dau

Giua

Cuoi

Tinh chế lần 3:
Program Tim_Kiem;
Var

a: array[1..N] of integer;
i, k, Dau, Cuoi, Giua: integer;

Begin
Write(‘Nhap N =’); readln(N);
for i:=1 to N do
Begin
Write(‘a[’ ,i, ‘] =’); readln(a[i]);
End;
Dau:= 1; Cuoi:= N;
Giua:= (Dau + Cuoi) div 2;
if k= a[Giua] then Thông báo

else
if k> a[Giua] then
Dau:= Giua+1 {quay lại xác định vị trí giữa và tìm kiếm trên dãy
(Giua+1, N), Cuoi = N (?)}
else
Cuoi:= Giua-1; {quay lại xác định vị trí giữa và tìm kiếm trên dãy (1,
Giua-1), Dau = 1 (?)}
End.

Cuoi = Giua-1
Dau

Dau = Giua+1

Cuoi

Tinh chế lần 4:
Program Tim_Kiem;
Var

a: array[1..N] of integer;

GV Bùi Thiện Quý

12

THPT Hưng Yên


Sáng kiến kinh nghiệm

i, k, Dau, Cuoi, Giua: integer;
Begin
Write(‘Nhap N =’); readln(N);
for i:=1 to N do
Begin
Write(‘a[’ ,i, ‘] =’); readln(a[i]);
End;
Dau:= 1; Cuoi:= N;
Đoạn lệnh lặp lại với dãy mới (1, Giua-1) hoặc (Giua+1,N) và dãy mới lại tiếp tục
được chia đôi để tìm kiếm nên số lần lặp chưa biết trước (?)
Begin
Giua:= (Dau + Cuoi) div 2;
if k= a[Giua] then Thông báo
else
if k> a[Giua] then
Dau:= Giua+1
else
Cuoi:= Giua-1;
End;
End.
Tinh chế lần 5:
Program Tim_Kiem;
Var

a: array[1..N] of integer;
i, k, Dau, Cuoi, Giua: integer;

Begin
Write(‘Nhap N =’); readln(N);
for i:=1 to N do

Begin
Write(‘a[’ ,i, ‘] =’); readln(a[i]);
End;
Dau:= 1; Cuoi:= N;
While <điều kiện (?)> do
Begin

GV Bùi Thiện Quý

13

THPT Hưng Yên


Sáng kiến kinh nghiệm
Giua:= (Dau + Cuoi) div 2;
if k= a[Giua] then Thông báo
else
if k> a[Giua] then
Dau:= Giua+1
else
Cuoi:= Giua-1;
End;
End.
Tinh chế lần 6:
Program Tim_Kiem;
Var

a: array[1..N] of integer;
i, k, Dau, Cuoi, Giua: integer;


Begin
Write(‘Nhap N =’); readln(N);
for i:=1 to N do
Begin
Write(‘a[’ ,i, ‘] =’); readln(a[i]);
End;
Dau:= 1; Cuoi:= N;
{Việc chia đôi dãy để tìm kiếm kết thúc khi dãy không còn phần tử, khi đó quá trình
lặp kết thúc. Mà hai biến Dau, Cuoi dùng để xác định dãy đang xét nên ta sẽ so sánh giá trị
hai biến này (tức là khi Dau<=Cuoi thì dãy đang xét vẫn còn phần tử).}
While Dau<=Cuoi do
Begin
Giua:= (Dau + Cuoi) div 2;
if k= a[Giua] then Thông báo (?)
else
if k> a[Giua] then
Dau:= Giua+1
else
Cuoi:= Giua-1;
End:

GV Bùi Thiện Quý

14

THPT Hưng Yên


Sáng kiến kinh nghiệm

End.
Tinh chế lần 7:
Program Tim_Kiem;
Var

a: array[1..N] of integer;
i, k, Dau, Cuoi, Giua: integer;
Tim_thay: boolean;

Begin
Write(‘Nhap N =’); readln(N);
for i:=1 to N do
Begin
Write(‘a[’ ,i, ‘] =’); readln(a[i]);
End;
Dau:= 1; Cuoi:= N;
Tim_thay:=False;
While Dau<=Cuoi do
Begin
Giua:= (Dau + Cuoi) div 2;
if k= a[Giua] then Tim_thay:=True
else
if k> a[Giua] then
Dau:= Giua+1
else
Cuoi:= Giua-1;
End;
Thông báo kết quả (?)
End.
Tinh chế lần 8:

Program Tim_Kiem;
Var

a: array[1..N] of integer;
i, k, Dau, Cuoi, Giua: integer;
Tim_thay: boolean;

Begin
Write(‘Nhap N =’); readln(N);

GV Bùi Thiện Quý

15

THPT Hưng Yên


Sáng kiến kinh nghiệm
for i:=1 to N do
Begin
Write(‘a[’ ,i, ‘] =’); readln(a[i]);
End;
Dau:= 1; Cuoi:= N;
Tim_thay:=False;
While Dau<=Cuoi do
Begin
Giua:= (Dau + Cuoi) div 2;
if k= a[Giua] then Tim_thay:=True
else
if k> a[Giua] then

Dau:= Giua+1
else
Cuoi:= Giua-1;
End;
if Tim_thay then writeln(‘Tim thay, vi tri’, Giua)
else writeln(‘Khong co phan tu nao trong day co gia tri la ’, k);
End.
Vậy sau 8 lần tinh chế từ ý tưởng thuật toán tìm kiếm nhị phân của bài toán tìm kiếm ta đã
có một chương trình cụ thể viết trên ngôn ngữ lập trình Pascal.
Mô phỏng thuật toán với dãy số có 10 phần tử như sau: (2, 4, 5, 6, 9, 21, 22, 30, 31, 33)
với k = 21.

GV Bùi Thiện Quý

16

THPT Hưng Yên


Sáng kiến kinh nghiệm

Mô phỏng
 N = 10 và k =21. Xét dãy sau:
1

2

3

4


5

6

7

8

9

10

2

4

5

6

9

21

22

30

31


33

aGiua

Dau

1

Cuoi

9

So sánh
Giua

k

21

<

5
False

Tim_thay

10

www.themegallery.com


Mô phỏng
 Tìm k trong dãy sau:
6

7

8

9

10

21

22

30

31

33

aGiua

Dau

6

So sánh

Giua

Cuoi

10

30

k

>

21

8
Tim_thay

False

www.themegallery.com

GV Bùi Thiện Quý

17

THPT Hưng Yên


Sáng kiến kinh nghiệm


Mô phỏng
 Tiếp tục tìm k trong dãy sau:
6

7

21

22
aGiua

6

Dau

So sánh
Giua

=

21

6

7

Cuoi

21


k

Tim_thay

True

Vậy giá trị k xuất hiện ở vị trí thứ 6 trong dãy
www.themegallery.com

Nhận xét về thuật toán:
Với thuật toán Tìm kiếm nhị phân việc tìm kiếm sẽ không phải so sánh với tất cả các phần
tử trong dãy như tìm kiếm tuần tự. Vì vậy làm giảm bớt thời gian tìm kiếm.
Thuật toán được thực hiện tốt và chính xác thì điều kiện phải đảm bảo dãy các đối tượng
cần được sắp xếp theo một thứ tự nhất định.

GV Bùi Thiện Quý

18

THPT Hưng Yên


Sáng kiến kinh nghiệm
CHƯƠNG 3: KẾT QUẢ ĐẠT ĐƯỢC
3.1 QUÁ TRÌNH THỰC HIỆN THU THẬP SỐ LIỆU VÀ KẾT QUẢ
Xây dựng phiếu khảo sát
Để đảm bảo học sinh hiểu và xây dựng được thuật toán tìm kiếm nhị phân áp dụng cho
một số bài toán đơn giản. Chúng ta cần cung cấp cho học sinh hiểu rõ ý tưởng thuật toán này
và cách để xây dựng được chương trình. Muốn làm được điều này ta sẽ cho học sinh thực hiện
việc tìm kiếm trên một số ví dụ thực tế gần gũi với học sinh, làm cho học sinh hình dung rõ

nét dần ý tưởng thuật toán. Đồng thời liên hệ và sử dụng ngôn ngữ lập trình để diễn giải thuật
toán để đi đến chương trình cụ thể. Trên cơ sở đó phát triển tư duy nhận thức của học sinh,
làm cho học sinh có một cách nhìn thấu đáo về thuật toán.
Từ việc dạy học như vậy ta sẽ khảo sát mức độ tiếp thu thuật toán đó như thế nào của học
sinh để tìm hiểu và đánh giá được chất lượng dạy học thuật toán này. Việc khảo sát đó thông
qua trả lời các câu hỏi theo ở các cấp độ tư duy khác nhau.
Việc xây dựng hệ thống các câu hỏi khảo sát được thực hiện như sau:
Ở mức độ biết: Chúng ta đưa những câu hỏi mang tính tương tự hoặc xem xét lại các điều
kiện hoặc kiểm tra việc gán giá trị các biến, .... Chúng ta có thể đưa một số câu hỏi như sau:
Dãy số đưa vào có phải là dãy đã sắp xếp hay chưa?
Việc nhập dữ liệu đầu vào thực hiện ở câu lệnh nào?
Các biến Dau, Cuoi ban đầu gán các giá trị là bao nhiêu?
Việc so sánh trong thuật toán luôn thực hiện ở việc so sánh khóa k với các phần tử đứng
giữa phải không?
Nếu khóa k lớn hơn phần tử đứng giữa thì sẽ tìm kiếm ở dãy nào?
Mục đích chúng ta đưa học sinh trả lời các câu hỏi đó là để xác định xem học sinh có biết
về thuật toán, biết về các lệnh các cấu trúc lệnh đã dùng trong chương trình cài đặt.
Ở mức độ hiểu: Chúng ta đưa ra những câu hỏi khảo sát xem học sinh có hiểu thuật toán
và ý nghĩa các lệnh dùng trong chương trình cài đặt thuật toán, ví dụ:
Biến Dau, Cuoi hay Giua dùng để làm gì?
Trong chương trình cài đặt đã học thì các cấu trúc lệnh đã học dùng ở chỗ nào và mục
đích để làm gì?
Ở mức độ vận dụng: Chúng ta đưa ra những câu hỏi kiểm tra học sinh có hiểu thuật toán
này ở việc chương trình đã cài đặt, và sự thay đổi các biến trong chương trình khi hoạt động,
ví dụ:

GV Bùi Thiện Quý

19


THPT Hưng Yên


Sáng kiến kinh nghiệm
Giải thích các điều kiện của các biến trong chương trình?
Trong chương trình cài đặt thuật toán, việc vận dụng các câu lệnh, các cấu trúc để cài đặt
thuật toán là hết sức quan trọng, nó ảnh hưởng tới kết quả của chương trình và tính đúng đắn
của thuật toán. Vì vậy yêu cầu học sinh vận dụng được một số lệnh và cấu trúc đơn giản như:
câu lệnh đọc, in ra màn hình, cấu trúc rẽ nhánh, cấu trúc lặp, ... Dựa vào những phân tích ở
trên ta xây dựng mẫu phiếu khảo sát như sau:
Tên tiêu đề của phiếu là: PHIẾU LẤY Ý KIẾN HỌC SINH
Mục đích là để khảo sát chất lượng dạy học thuật toán tìm kiếm nhị phân ở Tin học lớp
11. Từ đó có định hướng để nâng cao chất lượng dạy học bài học và chất lượng học tập của
hoc sinh.
Yêu cầu: học sinh phải trung thực trong việc trả lời để có kết quả đúng cho việc xử lí và
phân tích.
Các thông tin cần thu thập: Họ tên (phần này có thể bỏ trống). Các mục Giới tính, Lớp,
Năm học là bắt buộc.
Có bốn mức đánh giá về việc trả lời câu hỏi:
1 = Không đồng ý (tương ứng 1 điểm)
2 = Phân vân (tương ứng 2 điểm)
3 = Đồng ý (tương ứng 3 điểm)
4 = Hoàn toàn đồng ý (tương ứng 4 điểm)
Có 21 một câu học sinh phải trả lời.
Tổng điểm tối đa là 4x21 = 84 điểm.
Mỗi câu hỏi được gán 1 mã tương ứng với mức độ nhận thức của học sinh. Đó là: B1: câu
hỏi thứ nhất trong mức độ biết, H2: câu hỏi thứ 2 trong mức độ hiểu, ....(học sinh không cần
quan tâm đến mã này).
Xây dựng phiếu hỏi gồm các cột dòng để học sinh dễ đọc, nội dung trong các câu hỏi
đảm bảo từ ngữ chính xác, logic về mặt ý nghĩa.

Mẫu hỏi được xây dựng như sau:

GV Bùi Thiện Quý

20

THPT Hưng Yên


Sáng kiến kinh nghiệm
PHIẾU LẤY Ý KIẾN HỌC SINH
(Dùng để khảo sát ý kiến của học sinh về việc dạy học lập trình ở Tin học lớp 11
THPT)
Để giúp các thầy cô trong trường nâng cao chất lượng dạy học bài thuật toán tìm
kiếm nhị phân trong chương trình tin học lớp 11. Đề nghị các em trả lời trung thực các câu
hỏi theo mẫu dưới đây:
Họ và tên: ............................................. Giới tính: ................ Lớp: 11 ........ Năm
học: 201... – 201...
Đọc kỹ và tô đậm vào một số tương ứng cho từng câu dưới đây, theo các mức độ đánh
giá sau:
1 = không đồng ý
2 = phân vân
3 = đồng ý
4 = hoàn toàn đồng ý
(Ghi chú: 1 là mức đánh giá thấp nhất; 4 là mức đánh giá cao nhất)
Tô đậm điểm
TT Mã
Kết quả học thuật toán của học sinh
phù hợp nhất
1

B1 Dữ liệu đầu vào của thuật toán là một dãy số đã sắp xếp
   
2

H1

3

V1

4

B2

5

H2

6

V2

7

B3

8

H3


9

V3

10

B4

11

H4

12

V4

13

B5

14

H5

15

V5

Các phần tử trong dãy cần tìm kiếm có thể giống nhau










Để nhập N, các giá trị của dãy và khóa k ta có dãy lệnh:
Readln(N); for i:=1 to N do readln(a[i]); readln(k);
Hai biến Dau, Cuoi ban đầu được gán như sau: Dau:=1;
Cuoi:=N;

















Giá trị hai biến Dau và Cuoi thay đổi khi chạy thuật toán

Nếu dãy cần xét tiếp theo là dãy đứng sau phần tử đứng
giữa ta có lệnh: Dau:=Giua+1; Còn lại dãy đó là đứng
trước phần tử đứng giữa ta có lệnh Cuoi:=Giua -1;
Lệnh Giua:=(Dau+Cuoi) div 2 dùng để xác định vị trí
phần tử đứng giữa
Dãy có số chẵn các phần tử thì phần tử đứng giữa được
chọn luôn lệch trái.
Việc xác định phần tử đứng giữa luôn mang tính chất
tương đối
Trong chương trình cài đặt thuật toán có sử dụng cấu trúc
câu lệnh rẽ nhánh.
Tìm kiếm nhị phân không phải xét đến tất cả các phần tử
có trong dãy.
Trong quá trình tìm kiếm khóa k chỉ so sánh với phần tử
đứng giữa các dãy đang xét.
Câu lệnh: If A[Giua] = k then Tim_thay:=true Else If
A[Giua]>k then Cuoi:=Giua-1 Else Dau:=Giua+1; là cấu
trúc lệnh rẽ nhánh lồng nhau.
Biến Tim_thay dùng để thông báo khi phát hiện giá trị
phần tử đứng giữa bằng với khóa k.
Mục đích biến Tim_thay đưa vào là để lưu trữ kết quả tìm
kiếm khi ra khỏi vòng lặp.




























































































GV Bùi Thiện Quý

21

THPT Hưng Yên


Sáng kiến kinh nghiệm

















18

V6

Trong chương trình cài đặt thuật toán có sử dụng cấu trúc
lặp với số lần không biết trước
Điều kiện Dau<=Cuoi có giá trị True cho biết việc tìm
kiếm đã xét hết dãy
Trong chương trình vòng lặp While do kết thúc khi giá trị
biến Dau lớn hơn giá trị biến Cuoi hoặc biến Tim_thay có
giá trị True.










19

Em đã biết về thuật toán tìm kiếm nhị phân
Chương trình cài đặt thuật toán tìm kiếm nhị phân đã học
H7 thể hiện đảm bảo ba tính chất: tính dừng, tính xác định và
tính đúng đắn.
Thuật toán có thể áp dụng cho các bài toán tìm kiếm khác
V7 như: tìm số các số âm, số dương, số nguyên tố, ... trong
một dãy đã sắp xếp.
Chân thành cảm ơn sự đóng góp ý kiến của các em!


























16

B6

17

H6

20

21

B7

GV Bùi Thiện Quý

22

THPT Hưng Yên



Sáng kiến kinh nghiệm
Thu thập số liệu
Kế hoạch chuẩn bị:
Phiếu hỏi được photo làm nhiều bản (chất lượng giấy tốt_dạng A4, khoảng 120 bản).
Công việc thực hiện:
Báo cáo ban giám hiệu nhà trường về việc thực hiện khảo sát và được ban giám hiệu
đồng ý.
Tổ chức họp nhóm Tin học và thông báo việc triển khai khảo sát, để cùng phối hợp thực
hiện như đưa ra các câu hỏi, ý kiến về nội dung, ...
Thông báo tới các giáo viên chủ nhiệm các lớp có học sinh tham gia khảo sát, để quán
triệt việc nghiêm túc thực hiện của học sinh .
Lớp thực hiện là 3 lớp: 11A1, 11A2, 11A3 trường Trung học phổ thông Hưng Yên (năm
học 2012-2013)
Trình độ học sinh cả 3 lớp khảo sát ở mức độ trung bình trở lên.
Thực hiện thu thập số liệu:
Sau mỗi tiết dạy bài thuật toán tìm kiếm nhị phân ở lớp 11, giáo viên phát cho mỗi học
sinh một phiếu hỏi và hướng dẫn làm phiếu hỏi. Thời gian học sinh trả lời các câu hỏi là 20
phút.
Giáo viên thu phiếu hỏi lại, thực hiện việc kiểm tra các phiếu hỏi đã hợp lệ chưa, nếu
không hợp lệ thì loại phiếu đó.
Kết thúc quá trình thu thập số liệu, báo cáo ban giám hiệu và viết báo cáo sau khi hoàn
thành xử lý, phân tích. Thông báo kết quả tới giám hiệu, các giáo viên trong nhóm Tin học và
các giáo viên chủ nhiệm lớp có học sinh tham gia. Đồng thời đưa ra những đánh giá và định
hướng, giải pháp đổi mới và kế hoạch thực hiện tiếp theo.
Kết quả bảng số liệu
Tống số học sinh điều tra kết quả ở 3 lớp 11A1, 11A2, 11A3 là 136 học sinh

Bảng so sánh mức độ học sinh về thuật toán:
Thang đo mức độ câu hỏi:


GV Bùi Thiện Quý

Thang đo 1 câu hỏi

Thang đo 21 câu hỏi

Tổng điểm

Tổng điểm

Tốt: 3.5 – 4

Tốt: 73.5 – 84

Khá: 3 – 3.5

Khá: 63 – 73.5

23

THPT Hưng Yên


Sáng kiến kinh nghiệm
Trung Bình: 2.5 – 3

TB: 52.5 – 63

Yếu: < 2.5


Yếu: < 52.5

Kết quả:
Mức độ: Tổng điểm

Số học sinh

Tỉ lệ

Tốt

6

4%

Khá

69

51%

Trung Bình

58

43%

Yếu


3

2%

Tổng

136

100%

Nhận xét: Qua bảng trên cho thấy có 2% học sinh chưa biết rõ thuật toán, 43% học sinh
biết thuật toán, 51% học sinh biết thuật toán ở mức độ khá và 4% học sinh biết rõ về thuật
toán.
Biểu đồ:
Biểu đồ so sánh tỷ lệ học sinh đạt mức độ kiến thức về thuật toán
Yếu 2%

Tốt 4%

Trung Bình 43%

Khá 51%

Bảng so sánh mức độ tư duy của học sinh sau khi học thuật toán: Dựa trên mức độ tổng
số điểm câu hỏi ở các mức độ tư duy: Biết(B), Hiểu(H), Vận dụng(V) trong đó,
Mức độ biết gồm các mã: B1, B2, B3, B4, B5, B6, B7
Mức độ hiểu gồm các mã: H1, H2, H3, H4, H5, H6, H7
Mức độ vận dụng gồm các mã: V1, V2, V3, V4, V5, V6, V7
Thang đo mức độ câu hỏi:


GV Bùi Thiện Quý

Thang đo 1 câu hỏi

Thang đo 7 câu hỏi

Tổng điểm

Tổng điểm

Tốt: 3.5 – 4

Tốt: 25.5 – 28

24

THPT Hưng Yên


×