1. Trang chủ
  2. » Luận Văn - Báo Cáo

skkn 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

39 1,4K 3
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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
Người hướng dẫn GV Bùi Thiện Quý
Trường học Trường THPT Hưng Yên
Chuyên ngành Tin học
Thể loại Sáng kiến kinh nghiệm
Năm xuất bản 2023
Thành phố Hưng Yên
Định dạng
Số trang 39
Dung lượng 1,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đố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áoviên.. Trong đó, việc dạy lập trình chohọ

Trang 1

MỤC LỤC

PHẦN I: MỞ ĐẦU 1

LÝ DO CHỌN ĐỀ TÀI 1

MỤC ĐÍCH NGHIÊN CỨU 2

ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2

PHƯƠNG PHÁP NGHIÊN CỨU 2

THỜI GIAN NGHIÊN CỨU 2

PHẦN II: NỘI DUNG 3

CHƯƠNG 1: CƠ SỞ LỰA CHỌN ĐỀ TÀI 3

1.1 CƠ SỞ LÝ LUẬN 3

1.2 CƠ SỞ THỰC TIỄN 5

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 7

2.1 PHƯƠNG PHÁP TINH CHẾ TỪNG BƯỚC 7

2.2 BÀI TOÁN TÌM KIẾM 8

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 9

CHƯƠNG 3: KẾT QUẢ ĐẠT ĐƯỢC 22

3.1 QUÁ TRÌNH THỰC HIỆN THU THẬP SỐ LIỆU VÀ KẾT QUẢ 22

3.2 HẠN CHẾ 30

3.3 BÀI HỌC KINH NGHIỆM 30

3.4 ĐIỀU KIỆN ÁP DỤNG 31

3.5 HƯỚNG PHÁT TRIỂN ĐỀ TÀI 31

3.6 KIẾN NGHỊ 31

PHẦN III: KẾT LUẬN 33

TÀI LIỆU THAM KHẢO 34

Trang 2

PHẦN I: MỞ ĐẦU

Trang 3

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ênthực tế hiện nay, các phương pháp dạy học truyền thống không đáp ứng đượcnhu 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ànquốc lần thứ XI của Đảng cộng sản Việt Nam họp tháng 01 năm 2011 đưa rachiến lược phát triển kinh tế - xã hội 2011 – 2020 có nêu yêu cầu: “Đổi mớimạ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ậchọ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áoviê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 đốivớ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 chohọ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ángkiế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ờibồ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

Trang 4

Nâng cao chất lượng dạy và học môn Tin học trong trường phổ thông, đặcbiệ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 Tinhọ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ậttoán và lập trình

ĐỐ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áptinh chế từng bước đưa vào giảng thuật toán “Tìm kiếm nhị phân” cho học sinhlớ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ôngqua 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

Trang 5

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 (WorldTrade Organizasion) với những bước biến chuyển mới đã tạo cơ hội và tháchthứ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 đượcxem là quan trọng của đất nước, một đất nước có mạnh hay không là nhờ vàonề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êucầ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 trongnhữ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ạyhọ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ốnvậ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ươngpháp dạy học đạt hiệu quả Việc đổi mới phương pháp được đưa ra rất nhiềutrong các văn kiện, nghị quyết, chiến lược của Đảng và Nhà nước về giáo dụctrong 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ủangườ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ọcsinh ”

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áchoạ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ủahọc sinh để đạt được mục tiêu giáo dục Việc đổi mới phương pháp ở đây là đổimớ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

Trang 6

sinh chiếm lĩnh tri thức một cách có hiệu quả Điều này thể hiện ở ngay trongcá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ùngphá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ữngtri 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ạyhọ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 độ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áttriể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ùngphá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ọcsinh 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ớiphươ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 trithứ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 Tinhọc Đổi mới phương pháp dạy học Tin học ở các trường phổ thông hiện naychư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ênnhư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ácmôn học khác như: Toán, Vật lí, Tiếng Anh, … Một mặt do sự chậm trễ đổimớ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áthiệ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ậptrì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ó

Trang 7

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ôngthườ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ấtkhó 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ánnà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ácnộ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ộtthuận lợi cho học sinh, học sinh không phải học từ đầu để làm quen với mônhọ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ạchậu do sự phát triển ngành khoa học Tin học là rất nhanh Sự liên quan của mônTin 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ả để xemlạ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 trongmô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ọcsinh 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ệcnà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ư duymớ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ậpnhậ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ệcdạ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

Trang 8

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ểuhà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ươngtrì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ếtcá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 Tinhọ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ụngmá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ônhọ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áodụ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ìnhdung đượ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

Trang 9

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ườilậ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 đặtthuậ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áncủ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ướccho 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 taphâ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ậycố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 rathà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ếtdưới dạng tự nhiên (ở đây là ngôn ngữ tiếng Việt) thể hiện tổng thể quá trìnhthự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áccâ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ộtcá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ựchiện trong thuật toán bằng quá trình chuyển nó thành chương trình trên mộtngô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 đọccả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

Trang 10

đó 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 , a 2 , ,a N 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à a i = 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à a i = 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

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 (a 1 <a 2 <…<a N) Khi đó ý tưởng thuật toán như sau:

Vì 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 sosá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ử a Giua <k hoặc tìm

kiếm ở dãy các phần tử đứng trước a Giua nếu phần tử 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

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 a 1 , a 2 , ,a N và khóa k;

Bước 2: Dau1; Cuoi N;

Bước 3: Giua Dau2Cuoi;

Bước 4: Nếu a = k thì thông báo chỉ số Giua, rồi kết thúc;

a Giua a N

a 1

Trang 11

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

Đố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 trongquá 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ìmkiế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ể

Trang 12

- 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 đã đượcchuẩ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ệctì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àycũ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ử a 1 , a 2 , …., a N 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

àĐó 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àngnà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ử

Trang 13

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 ramộ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 đó a<b Chọn bạn học sinh (a)

để so sánh:

Nế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à:

a<b<c) Ta sẽ so 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 (k<b) sẽ so sánh chiều cao bạn đứng trướ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 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: a<b<c<d) Trước tiên so sánh chiều cao bạn đứng ở giữa (b) với k (có thể (c) cũng được) 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, tìm kiếm ứng với trường hợp 2 học sinh (c và

d), còn lại (k<b), sẽ so sánh chiều cao bạn đứng trước (a)

Nếu k=b thì Thông báo

?

Trang 14

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à a N; trong đó:

a 1 <a 2 < … < a N)

+ 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

- 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ậttoá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ạinhư sau:

Trang 15

- Cho một dãy số tăng gồm các phần tử a1, a2, …., aN (trong đó: 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) haykhông?

- Xác định bài toán:

Input: Dãy A là dãy tăng gồm N số nguyên a 1 , a 2 , ,a N và số nguyên k;

Output: Chỉ số i mà a i = 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

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ậttoán tìm kiếm nhị phân theo phương pháp tinh chế từng bước như sau Trongquá trình tinh chế những dòng được đặt dấu (?) thể hiện điều cần phải làm rõ saumỗ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 (?)

Var a: array[1 N] of integer;

i, k, Dau, Cuoi, Giua: integer;

Trang 16

Tinh chế lần 3:

Program Tim_Kiem;

Var a: array[1 N] of integer;

i, k, Dau, Cuoi, Giua: integer;

Trang 17

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 (?)}

Var a: array[1 N] of integer;

i, k, Dau, Cuoi, Giua: integer;

Đ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;

Dau Dau = Giua+1 Cuoi

Cuoi = Giua-1

Trang 18

if k= a[Giua] then Thông báoelse

if k> a[Giua] then

Dau:= Giua+1 else

Var a: array[1 N] of integer;

i, k, Dau, Cuoi, Giua: integer;

Giua:= (Dau + Cuoi) div 2;

if k= a[Giua] then Thông báoelse

if k> a[Giua] then

Dau:= Giua+1 else

Cuoi:= Giua-1;

Trang 19

Tinh chế lần 6:

Program Tim_Kiem;

Var a: array[1 N] of integer;

i, k, Dau, Cuoi, Giua: integer;

{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étnê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ẫncò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

Ngày đăng: 21/07/2014, 14:25

HÌNH ẢNH LIÊN QUAN

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 đó, - skkn 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
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 đó, (Trang 29)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w