I.MỤC TIÊU: Qua bài học, học sinh cần nắm được:
1.Về kiến thức: -Biết khái niệm bài toán và thuật toán, các đặc trưng chính của thuật toán.
-Hiểu cách biễu diễn thuật toán bằng sơ đồ khối và ngôn ngữ liệt kê. -Hiểu một số thuật toán thông dụng.
2.Về kỹ năng:Xây dưngđược thuật toán giải một số bài toán đơn giản bằng sơ đồ khối hoặc ngôn ngữ liệt kê.
3.Về tư duy, thái độ: -Có ý thức xây dựng bài học
-Biết xây dựng thuật toán tối ưu: ít tốn thời gian và bộ nhớ.
II.CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH:1.Chuẩn bị của giáo viên: 1.Chuẩn bị của giáo viên:
- Đồ dùng dạy học: Máy tính điện tử -Giáo án, giáo án điện tử
2.Chuẩn bị của học sinh:Những khái niệm và kiến thức đã học.
III.PHƯƠNG PHÁP DẠY HỌC: Giải quyết vấn đề
IV.TIẾN HÀNH BÀI DẠY:
1. Ổn định lớp:(2’) Vắng: Trể:
2.Kiểm tra bài củ: (3 - 6’):
1.Trình bày thuật toán sắp xếp bằng trao đổi theo phương pháp liệt kê từng bước? 2. Trình bày thuật toán sắp xếp bằng tráo đổi theo phương pháp dung sơ đồ khối?
3.Dạy bài mới:(30 - 37’)
Hoạt động của giáo viên Hoạt động của học sinh
3.Ví dụ 3: Bài toán tìm kiếm
Cho dãy A gồm N số nguyên khác nhau a1, a2,...,an và một số nguyên K. Cần biết có hay không chỉ số i (1<=I <=N) mà ai = k. Nếu có hãy cho biết chỉ số đó.
Câu hỏi: Xác định dữ liệu vào và ra của bài toán.
i)Trường hợp 1: Dãy A chưa được sắp xếp a)Xác định bài toán:
Input: Dãy A gồm N số nguyên khác nhau a1, a2, ...., an và số nguyên K.
Output: Chỉ số I mà ai = K hopặc thông báo không có số hạng nào của dãy A có giá trị bằng K
Câu hỏi: Để tìm kiếm 1 quyển sách nào đó ở trong thư viện ta phải làm thế nào?
b)Ý tưởng:
-Lần lượt kiểm tra từ số hạng thứ nhất.
Trả lời:
Input: Dãy A gồm N số nguyên khác nhau a1, a2, ...., an và số nguyên K. Output: Chỉ số I mà ai = K hopặc thông báo không có số hạng nào của dãy A có giá trị bằng K
:
Trả lời: HS trả lời. GV khái quát lại và đi đến ý tưởng của bài toán tìm kiếm theo kiểu tuần tự
-So sánh giá trị số hạng đang xét với khoá k. có hai trường hợp xảy ra:
+Số hạng đang xét có giá trị bằng khoá
thông báo vị trí mà số k đang đứng và kết thúc. +Số hạng đang xét không trung với khoá
tiếp tục kiểm tra số hạng tiếp thao cho đến cuối dãy. Nếu cho đến cuối dãy không có số hạng nào trùng với khoá thì kết luận không có số hạng nào bằng khoá.
GV: Gọi Hs lên bảng vã sơ đồ khối của bài toán.
c)Thuật toán tìm kiếm tuần tự: *Cách liệt kê:
Bước 1: Nhập N, các số hạng a1, a2, ...., an và khoá K
Bước 2:i1
Bước 3: Nếu ai = k thì thông báo chỉ số I rồi kết thúc.
Bước 4: I i+1
Bước 5: 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 Bước 6: Quay lại bước 3
*Sơ đồ khối:
Câu hỏi: Khi dãy đã được sắp xếp thì thuật toán trên có nhược điểm gì?
GV: Khi dãy đã được sắp xếp thì ta tìm kiếm như thé nào?
ii)Trường hợp 2: Dãy A đã được sắp xếp( chiều tăng dần)
a)Xác định bài toán:
Input: Dãy A là dãy tăng gồm N số nguyên khác nhau a1,a2,..., an và số nguyên k
*Sơ đồ khối
Trả lời: Thuật toán không tối ưu do không tiết kiệm được thời gian tìm kiếm
Trả lời: HS trả lời. GV đưa ra nhạn xét để hướng dẫn HS hình thành thuât toán tìm kiếm nhị phân. Giả sử ta có: A: 1 5 6 9 15 17 18 19 20 K= 8 Kiểu tra lần 1: giữa = [(1+ 9)/2 ]= 5 Nhập N, dãy a1,a2,..an và k I1 Đưa ra i kết thúc Đúng Ai =k Sai I I + 1 Sai I>N Đúng
Thống báo dãy A không có số hạng có giá trị K
Output: Chỉ số I mà ai = k hoặc thông báo không có số hạng nào của dãy A có giá trị bằng k.
b)Ý tưởng: Sử dụng tính chất dãy A là dãy tăng
-Tìm cách thu hẹp dần phạm vi tìm kiếm sau mỗi lần so sánh với số hạng được chọn. Để làm được điều đó, ta chọn số hạng agiữa ở giữa dãy để so sánh với K. Trong đó:
Giữa = [(n+1)/2]. Khi đó chỉ xảy ra 3 trường hợp.
-Nếu agiữa = k thì giữa là chỉ số cần tìm. -Nếu agiữa > k việc tìm kiếm đươc lặp lại tương tự trên đoạn a1, a2,...., agiữa -1
-Nếu agiữa < k việc tìm kiếm được lặp lại tương tự trên đoạn agiữa + 1, ...., an
Quá trình trên sẽ được lặp lại cho đến khi hoặc đã tìm thấy khoá k hoặc phạm vi tìm kiếm bằng rỗng.
GV: Giải thích kỹ các thành phần trong thuật toán bằng một dãy số cụ thể.
GV: Gọi một học sinh lên vẽ sơ đồ khối? c)Thuật toán tìm kiếm nhị phân:
*Cách liệt kê:
Bước 1: Nhập n, các số hạng a1, a2, ...., an và khoá k.
Bước 2: Đầu 1, Cuối n Bước 3: Giữa [(Đầu + cuối )/2]
Bước 4: Nếu agiữa = k thì thông báo chỉ số giữa, rồi kết thúc.
Bước 5: Nếu agiữa > k thì đặt cuối = giữa - 1 bước 7
Bước 6:Đầu Giữa + 1
Bước 7: Nếu Đầu > Cuối 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. a5 = 15 > k =8 Cuối = 5 - 1 = 4 Kiểm tra lần 2: Giữa = [(1+4)/2] = 2 A2 =5<k = 8 Đầu = 2 + 1 = 3 Kiểm tra lần 3: Giữa = [(3 + 4)/2]=3 A3 = 6 <k = 8 Đầu = 3 + 1 = 4 Kiểm tra lần 4: Giữa = [(4+4)/2] = 4 A4 = 9>k=8 Cuối = 4 - 1 = 3 Đầu = 4 > Cuối = 3: Kết thúc: Thông báo không tìm thấy K
HS vẽ sơ đồ khối.
*Sơ đồ khối
Sai Không có số
hạng k Đúng Đầu > Cuối Cuối Giữa -1 1 Đúng Đầu Giữa + 1 Sai agiữa > k Nhập N, dãy a1,a2,..an và k Đầu1, Cuối = N
Giữa = [(Đầu + Cuối )/2] Đúng
Sai agiữa = k Đúng Đưa ra giữa rồi kết thúc
Bước 8: Quay lại bước 3 *Sơ đồ khối:
4.Hoạt động củng cố:(1-3’) Nhắc lại thuật toán tìm kiếm bằng 2 phương pháp: tuần tự và nhị phân
5.Hướng dẫn học sinh về nhà:(2-3’)
Học các nội dung: Thuật toán tìm kiếm tuần tự và tìm kiếm nhị phân
Bài tập:7/SGK,1.34,1.351.40,1.42,1.43 1.48/SBT
Ngày soạn: