Đ4:Bài toán và thuật toán Tiết 14: Bài toán tìmkiếmtuần tự Ngày soạn: Ngày dạy: Ngời soạn: Phạm Đình Thanh GVHD: Lê Bích Liên I. Mục đích yêu cầu 1.Mục đích Hiểu đợc thuật toán tìmkiếmtuần tự. Hình thành phát triển t duy logic, t duy giải thuật.Góp phần phát triển nhân cách con ngời trong xã hội tin học 2.Yêu cầu Nắm bắt đợc các bớc của thuật toán tìmkiếmtuần tự. Hiểu và thực hiện đợc thuật toán tìmkiếmtuần tự II. Phơng pháp và đồ dùng học tập 1. Phơng pháp: Thuyết trình và đặt câu hỏi gợi ý cho học sinh 2. Đồ dùng học tập: Sách giáo khoa, sách giáo viên III. Nội dung bài giảng *Bảng phân phối : Nội dung Thời gian ổn định lớp Kiẻm tra bài cũ 1 10 Đặt vấn đề Xác định bài toán ý tởng Thuật toán + Liệt kê + Sơ đồ khối Ví dụ mô phỏng 1 4 5 15 10 5 5 Củng cố 4 1 1. ổn định lớp Lớp: Sí số: Vắng: Có phép: .Không phép: 2.Kiểm tra bài cũ: Câu hỏi: Hãy xác định bài toán và nêu thuật toán bằng phơng pháp liệt kê của thuật toán sắp xếp bằng tráo đổi. Đáp án: Xác định bài toán: - Input: Dãy A gồm n số nguyên a1,a2, ,aN. - Output: Dãy A đơc sắp xếp lại thành dãy không giảm. Thuật toán bằng cách liệt kê: B1: Nhập N, các số hạng a 1 ,a 2 , ,a N ; B2: M N; B3: Nếu M<2 thì đa ra dãy A đợc sắp xếp rồi kết thúc; B4: M M-1, i0; B5: i i+1; B6: Nếu i>M thì quay lại bớc 3; B7: Nếu a i > a i+1 thì tráo đổi a i và a i+1 cho nhau; B8: Quay lại bớc 5. 3.Bài mới: Đặt vấn đề: Tìmkiếm là việc thờng xảy ra trong cuộc sống, chẳng hạn cần tìm cuốn sách giáo khoa Tin học 10 trên giá sách, cần tìm một học sinh trong danh sách một lớp học, Hôm nay chúng ta sẽ tìm hiểu một thuật toán mới Thuật toán tìmkiếmtuần tự. Nội dung Hoạt động của giáo viên và hoạt động của học sinh Bài toán 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. Cần biết có hay không chỉ số i (1 i N) mà GV: Nêu ví dụ: Cho dãy số A gồm các số:5,7,1,4,2,9,8,11,25,51. GV: Với k=2 trong dãy trên số hạng thứ mấy có giá trị bằng k? Chỉ số i cần 2 a i =k. Nếu có hãy cho biết chỉ số đó. Số nguyên k đợc gọi là khóa tìm kiếm. 1.Xác định bài toán - Input:Dãy số A gồm N số nguyên khác nhau a 1 ,a 2 , ,a N và số nguyên k. - Output: Chỉ số mà a i =k hoặc thông báo không có số hạng nào của A có giá trị bằng k. 2. ý tởng Tìmkiếmtuần tự đợc thực hiện một cách tự nhiên. Lần lợt từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khoá cho đến khi hoặc gặp một số hạng bằng khoá hoặc dãy đã đợc xét hết và không có giá trị nào bằng khoá. Trong trờng hợp thứ hai dãy A không có số hạng nào bằng khoá. tìm là bao nhiêu? HS: a 5 =k; i=5. GV: Với k=6 trong dãy trên số hạng thứ mấy có giá trị bằng k? Chỉ số i cần tìm là bao nhiêu? HS: Không có số hạng nào; không có i GV: Để hiểu đợc việc tìm một số hạng trong dãy số nguyên bằng hay không bằng khoá k hay không ta đi vào bài hôm nay. GV:Em nào có thể xác định Input và Out put của bài toán trên HS: ứng tại chỗ trả lời GV: Nhận xét và viết lên bảng câu trả lời. GV: Chú ý k là khoá để tìm kiếm. GV:Lấy ví dụ minh hoạ +k=4 và N=5, dãy a: 5,7,1,4,6. A 5 7 1 4 6 i 1 2 3 4 5 GV: Ta thấy với các giá trị với mỗi giá trị của a tơng ứng với chỉ số i tơng ứng. Ta lần lợt xét từ đầu với i=1 đến cuối dãy i=5. Thì tại i=4 thì a 4 =k=4. +k=6 và N=5,dãy a: 4,11,3,9,7. A 4 11 3 9 7 i 1 2 3 4 5 6 GV: Ta làm tơng tự nh ví dụ trên thì thấy với mọi i từ 1 đến 5 không có a i có gá trị bằng 6. 3 3.Thuật toán a) Cách liệt kê - B1: Nhập N, các số hạng a 1 ,a 2 , ,a N và khoá k; - B2: i 1; - B3: Nếu a i =k thì thông báo chỉ số i, rồ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 k, rồi kết thúc - B6:Quay lại bớc 3. Từ hai ví dụ trên em nào có thể nêu ý t- ởng của bài toán. HS: Trả lời GV: Nhận xét câu trả lời học sinh và đọc lại ý tởng cho học sinh ghi bài. HS: Ghi ý tởng vào vở. GV: Từ ý tởng và ví dụ ở trên em nào có thể nêu đợc thuật toán bằng cách liệt kê? HS: Lên bảng trình bày GV:Nhận xét và sửa lại lỗi cho học sinh. GV:Giải thích rõ hơn về thuật toán. B1: Đầu tiên phải nhập N,dãy số,và khoá k. B2: Gán i 1 có nghĩa là xét số hạng đầu tiên trong dãy. B3: Kiểm tra xem a i có bằng k không. Lúc này ta đang kiểm tra a 1 =k ? Nếu bằng thì đã tìm thấy thông bó ra chỉ số i và dừng thuật toán ngợc lài ta sang B4. B4: Ta kiểm tra số hang tiếp theo bằng cách tăng i i+1; B4: Nếu số hạng tiếp theo mà có chỉ số lớn hơn N( i>N) tức là dãy đã đợc kiểm tra hết mà không có phần tử nào bằng khoá. Lúc này ta dừng thuật toá và 4 b)Sơ đồ khối 4.Ví dụ +Với k=2; N=10 và dãy: 5,7,1,4,2,9,8,11,25,51 +Với k=6; N=10 và dãy: 5,7,1,4,2,9,8,11,25,51 thông báo không tìm thấy i để a i =k. Ngợc lại i<N thì ta tiếp tục quay lại B3 để tiến hành tìm kiếm. GV:Thuật toán sẽ dừng khi nào? HS: Khi tìm thấy số hạng bằng khoá hoặc khi xét hết dãy mà không có phần tử nào bằng khoá. GV:Treo bảng phụ sơ đồ khối biểu diễn thuật toán: GV: Giải thích sơ đồ khối Chỉ ra sự giống nhau giữa sơ đồ khối và cách biểu diễn thuật toán bằng cách liệt kê. GV: Đa ra ví dụ sách giáo khoa giúp học sinh hiểu rõ về hai thuật toán. k=2 và N=10 A 5 7 1 4 2 9 8 11 25 51 i 1 2 3 4 5 Với i=5 thì a 5 =2; k=6 và N=10 A 5 7 1 4 2 9 8 1 1 25 5 1 i 1 2 3 4 5 6 7 8 9 10 11 Với mọi i từ 1 đến 10 không có giá trị a i có giá trị bằng 6. GV: Dựa vào sơ đồ khối (hoặc thuật toán bằng cách liệt kê giải thích ví dụ 5 cho HS . HS: Quan sát + lắng nghe . 4.Củng cố và bài tập về nhà Củng cố: Nắm chắc các bớc của thuật toán tìmkiếmtuần tự. Bài tập về nhà:làm bài 7 sách giáo khoa trang 44 và đọc trớc thuật toán tìmkiếm nhị phân IV.Nhận xét của GVHD 6