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
Bạn đang xem 20 trang mẫu của tài liệu "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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
Tóm tắt nội dung tài liệu: 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
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 ĐỐ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 độ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 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à 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, a2, ...,aN 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. GV Bùi Thiện Quý 6 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ử a 1, 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 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 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à a1, bạn thứ hai là a2,, bạn thứ N là aN; trong đó: a1<a2< < aN). + 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ử a 1, 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) 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 a 1, a2, ...,aN 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. GV Bùi Thiện Quý 10 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
File đính kèm:
- sang_kien_kinh_nghiem_day_hoc_thuat_toan_tim_kiem_nhi_phan_t.docx
- 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 tin.pdf