1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo án môn Tin học 10 - Bài 4: Bài toán và thuật toán

19 50 0

Đ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

Nội dung

VD: Bài toán “Tìm giá trị lớn nhất của dãy số nguyên” ở trên được mô tả bằng +GV: Hướng dẫn HS chuyển từng bước sơ đồ khối như sau: NhËp N vµ d·y a ,..., a trong mô tả thuật toán theo cá[r]

(1)GA: Tin hoïc 10 Tieát 10, 11, 12, 13, 14 GV: Đàng Ngọc Huynh Ngày soạn: 28/09/2006; ngày giảng: 02/10/2006; Lớp: 10 Baøi: §4 BAØI TOÁN VAØ THUẬT TOÁN Tieát PPCT: 10, 11, 112,13, 14 I MUÏC TIEÂU BAØI HOÏC: Kiến thức : -Hiểu khái niệm “bài toán” Tin học và biết thành phần bài toán (Input, Output) -Hiểu khái niệm “thuật toán” và cách mô tả các thao tác thuật toán (liệt kê, sơ đồ khối) Nắm các biểu tượng thể các thao tác sơ đồ khối -Hiểu khái niệm sơ lược ban đầu “ngôn ngữ lập trình” -Nắm các thuật ngữ chính bài -Qua bài học, HS hình dung rõ bước cách thức hoạt động máy tính Kyõ naêng : -Biết cho ví dụ số bài toán Tin học -Xác định Input và Output các bài toán -Mô tả các thao tác thuật toán số bài toán cụ thể cách: liệt kê và dùng sơ đồ khối Thái độ : Nghiêm túc, cẩn thận, đoàn kết, có tinh thần giúp đỡ xây dựng bài học II CHUAÅN BÒ: Taøi lieäu, baøi taäp: Duïng cuï, thieát bò: III TIẾN TRÌNH LÊN LỚP: Ổn định, tổ chức lớp: Kieåm tra baøi cuõ: Caâu hoûi: Đáp án: 1/ -Khaùi nieäm heä thoáng tin hoïc? 1/ (SGK) -Caùc thaønh phaàn cuûa moät heä thoáng tin hoïc? 2/ -CPU laø gì? 2/ (SGK) -Keå teân moät soá thieát bò vaøo? Lop10.com Trang (2) GA: Tin hoïc 10 Tieát 10, 11, 12, 13, 14 GV: Đàng Ngọc Huynh Baøi giaûng: Hoạt động Thầy và Trò GV: (ĐVĐ) Để viết chương trình cho máy tính thực ta cần biết nào là bài toán và thuật toán Hôm ta sang baøi Hoạt động 1: -Nội dung: Khái niệm bài toán -Mục tiêu: HS nắm khái niệm bài toán -Caùch tieán haønh: +GV: Trong Toán học ta nhắc nhiều đến khái niệm “bài toán” và ta hiểu đó là việc mà người cần phải thực cho từ kiện đã có phải tìm hay chứng minh kết nào đó Vậy khái niệm “bài toán” Tin học có gì khác không? Để khẳng định cho vấn đề này, chúng ta xét các yêu cầu sau +HS: Thaûo luaän caùc yeâu caàu treân baûng Noäi dung ghi baûng §4 BAØI TOÁN VAØ THUẬT TOÁN I/ BAØI TOÁN: 1/ Khái niệm bài toán: *Xeùt caùc yeâu caàu sau: 1)Giaûi phöông trình baäc hai ax2 + bx + c = 0; 2)Viết dòng chữ màn hình máy tính; 3)Tìm giaù trò nhoû nhaát cuûa caùc soá moät daõy soá 4)Tìm ÖCLN cuûa soá nguyeân döông a vaø b; 5)Xếp loại học tập các HS lớp 6)Quaûn lyù caùc caùn boä cô quan; +GV: Trong caùc yeâu caàu treân, yeâu caàu nào xem là bài toán? →Yêu cầu nào xem là bài *Trong phạm vi Toán học? toán? *Trong phaïm vi Tin hoïc? *Keát quaû: +HS: Ñöa keàt quaû -Trong phạm vi Toán học: Yêu cầu 1) và 4) xem là bài +GV: Nhaän xeùt keát quaû toán -Trong phaïm vi Tin hoïc: Tất các yêu cầu trên xem là bài toán Lop10.com Trang (3) GA: Tin hoïc 10 Tieát 10, 11, 12, 13, 14 GV: Đàng Ngọc Huynh +GV: Từ kết trên, em nào có thể đưa khái niệm “bài toán” Tin hoïc *Keát luaän: Trong phạm vi Tin học, bài toán là việc nào đó ta muốn máy tính thực +HS: nêu khái niệm bài toán Caùc thaønh phaàn cô baûn cuûa moät baøi toán : Hoạt động : -Noäi dung: Tìm hieåu caùc yeáu toá cô baûn bài toán -Mục tiêu: Giúp HS nắm yếu tố (Input, Output) bài toán * Vấn đề thảo luận: -Caùch tieán haønh: Caùc yếu tố cần quan taâm giải +GV: Ghi vấn đề lên bảng bài toán Toán học? +HS thảo luận vấn đề trên bảng -Giả thiết (cái đã biết) -Keát luaän (caùi caàn tìm) +GV: Để giải bài toán công việc đầu Trong Tin học : tieân chuùng ta phaûi laøm gì? -Giả thiết Input (Các thông tin đã có) +HS: Trà lời (xác định đâu là kiện (Đầu vào: Các T.tin đưa vào máy) đã cho và đâu là cái cần tìm) -Keát luaän  Output (Caùc t tin caàn tìm) (Đầu ra: Các t.tin cần lấy từ +GV: Nhận xét câu trả lời HS, đưa máy) kết luận và giới thiệu thành phần *Kết luận : tuơng ứng bài toán Tin hoïc Các bài toán cấu tạo hai yeáu toá cô baûn : -Input : Các thông tin đã có (Caùc giaû thieát) -Output : Caùc thoâng tin caàn tìm (Keát luaän) Lop10.com Trang (4) GA: Tin hoïc 10 Tieát 10, 11, 12, 13, 14 GV: Đàng Ngọc Huynh +GV: Hướng dẫn học sinh tìm Input và Ouput số bài toán thông qua các Các ví dụ : Tìm input và output ví duï bài toán VD1: Giải phương trình bậc hai ax2+bx+c =0 (a ≠ 0) -Input : Caùc số thực a,b,c (a ≠ 0) -Output : Số thực x thỏa : ax2+bx+c = +HS: Theo dõi hướng dẫn GV và áp dụng giải các bài toán còn VD2: Tìm giaù trò nhoû nhaát cuûa caùc soá laïi moät daõy soá -Input : Caùc soá daõy soá -Output : Giá trị lớn dãy số VD3: Tìm ước chung lớn hai số nguyeân dương a vaø b -Input: Hai số nguyeân dương avaø b -Output: Ước chung lớn a vaø b VD4: Xếp loại học tập caùc học sinh lớp -Input : Bảng đñiểm học sinh -Output :Bảng xếp loại học tập cuûa hoïc +GV: Qua các VD trên ta thấy bài toán sinh cấu tạo hai yếu tố bản, đó là: VD5: Viết dòng chữ màn hình máy tính *input: Các thông tin đã có * Output : Các thông tin cần tìm -Input: Các kí tự -Output: Một dòng chữ Lop10.com Trang (5) GA: Tin hoïc 10 Tieát 10, 11, 12, 13, 14 GV: Đàng Ngọc Huynh Hoạt động : -Nội dung: Khái niệm thuật toán -Mục tiêu: Giúp HS hiểu và nắm II THUẬT TOÁN khái niệm thuật toán Khái niệm thuật toán: -Caùch tieán haønh: +GV: (ĐVĐ) Chúng ta đã biết khái *Sơ đồ: niện “bài toán” và các yếu tố Bài toán bài toán đó là: input, output Để tìm output từ input bài toán, ta Bằng cách nào? Output Input laøm baèng caùch naøo? Hoâm chuùng ta (GT) (KL) sang phần (II Thuật toán) Giải bài toán Thuật toán +GV: Trình bày khái niệm thuật toán thông qua sơ đồ Hướng dẫn các thao tác cho máy thực để tìm lời giải +HS: Lắng nghe và quan sát sơ đồ treân baûng +GV: Muốn tìm kết luận từ giả thiết bài toán, thì chúng ta phải làm Noùi caùch khaùc : gì? BÀI TOÁN +HS: Đứng chỗ trả (Giải bài toán) THUẬT TOÁN Input +GV: Yêu cầu HS dựa vào sơ đồ đó phác thảo khái niệm “thuật toán” (Thao tác 1Thao tác 2 Thao tác n) Output *Keát luaän: +HS: Trình bày theo cách hiểu Thuật toán để giải bài toán là: baûn thaân - Một daõy hữu hạn caùc thao taùc - Caùc thao taùc naøy ñược xếp theo trình tự xaùc ñịnh +GV: Nhaän xeùt vaø ñöa keát luaän - Sao cho sau thực daõy thao tác đó, từ Input bài toán ta nhận ñược Output cần tìm Lop10.com Trang (6) GA: Tin hoïc 10 Tieát 10, 11, 12, 13, 14 Hoạt động : -Noäi dung: Moâ taû caùc thao taùc thuật toán -Mục tiêu : Giúp HS biết cách mô tả thuật toán: liệt kê và dùng sơ đồ khối -Caùch tieán haønh: + GV: Đưa bài toán giải “Tìm giá trị lớn dãy số nguyên” và yêu cầu HS xaùc ñònh caùc yeáu toá cô baûn cuûa baøi toán: Input và Output GV: Đàng Ngọc Huynh Mô tả các thao tác thuật toán: Coù caùch : Liệt kê và dùng sơ đồ khối Bài toán : “Tìm giá trị lớn dãy soá nguyeân” *Xác định bài toán: -Input: Soá nguyeân döông N vaø daõy N soá nguyeân döông a1, a2, , aN +GV: Trong Toán học sau bước xác -Output: Giá trị lớn Max dãy định yêu cầu bài toán, bước số chuùng ta phaûi laøm coâng vieäc gì? +HS: Trả lời (xác định hướng hay *Ý tưởng: phöông phaùp giaûi) -Khởi tạo giá trị Max = a1; +GV: Đó là ý tưởng bài toán -Lần lượt với i từ đến N, so sánh số hạng với giá trị Max, > Max thì +GV: sau bước xác định yêu cầu bài Max nhận giá trị là toán và phương pháp giải, công việc còn lại chúng ta phải làm gì để tìm kết *Thuật toán: luận từ giả thiết bài toán? a Moâ taû theo caùch lieät keâ: +HS: Trả lời (Giải bài toán) (Nêu các thao tác cần tiến +GV: Nhaän xeùt vaø giaûi thích: “Giaûi baøi haønh) toán”là Toán học, còn Tin học gọi là “Thuật toán” Bước 1: Nhập N và dãy a1, a2, , aN; Từ đó, GV hướng dẫn HS cách Bước 2: Max  a1 ; i  2; chuyển từ ý tưởng bài toán này sang Bước 3: Nếu i > N thì đưa kết và mô tả thuật toán cách liệt kê kết thúc; ngược lại thì sang Bước 4; + HS: Lắng nghe và hiểu các bước Bước 4: mô tả thuật toán 4.1: Neáu > Max thì Max  ; Lop10.com Trang (7) GA: Tin hoïc 10 Tieát 10, 11, 12, 13, 14 GV: Đàng Ngọc Huynh 4.2: i  i + quay lại Bước +GV: Ngoài cách liệt kê các thao tác b Biểu diễn sơ đồ khối: trên, ta có thể dùng sơ đồ khối để mô Trong sơ đồ khối ta qui ước: tả thuật toán -Hình oâ van : theå hieän thao taùc +GV: Ghi các qui ước sơ đồ lên nhập, xuất liệu; baûng Lop10.com Trang (8) GA: Tin hoïc 10 GV: Đàng Ngọc Huynh Tieát 10, 11, 12, 13, 14 (Đặc biệt yêu cầu HS học thuộc lớp -Hình thoi các biểu tượng thể các thao tác sánh; -Hình chữ nhật sơ đồ khối) : theå hieän thao taùc so : theå hieän pheùp tính toán; : qui định trình tự thực hieän caùc thao taùc -Caùc muõi teân +GV: Lấy lại VD: Bài toán “Tìm giá trị lớn dãy số nguyên” VD: Bài toán “Tìm giá trị lớn dãy số nguyên” trên mô tả +GV: Hướng dẫn HS chuyển bước sơ đồ khối sau: NhËp N vµ d·y a , , a mô tả thuật toán theo cách liệt kê sang cách mô tả thuật toán sơ đồ khối tương ứng Max  a , i  N §óng i>N §­a Max råi kÕt thóc Sai Sai aii > Max §óng Max  a i +HS: Phân biệt điểm giống và khác cách mô tả này Thuộc lòng lớp ý nghĩa các biểu tượng sơ đồ khối ii+1 *Ghi chuù: -Mũi tên  hiểu là gán giá trị biểu thức bên phải mũi tên cho biến bên trái mũi teân; -VD: i  i + 1: Đặt cho biến I giá trị giá trị trước đó tăng thêm đơn vị Tính chất thuật toán: Lop10.com Trang (9) GA: Tin hoïc 10 Tieát 10, 11, 12, 13, 14 GV: Đàng Ngọc Huynh +GV: Thông qua Khái niệm thuật toán -Tính dừng: và VD trên, nêu tính chất thuật toán Thuật toán phải kết thúc sau số hữu và giải thích và đưa VD tính chất hạn lần thực thao tác -Tính xaùc ñònh: +HS: Chuù yù theo doõi vaø ghi cheùp Sau thực thao tác thì lá thuật toán kết thúc là có đúng thao tác xác định để thực -Tính đúng đắn: Sau thuật toán kết thúc, ta nhận đượ Output cần tìm VD: Với thuật toán tìm Max đã xét: -TÝnh dõng: V× gi¸ trÞ cña i mçi lÇn t¨ng lªn nªn sau N lần thì i > N, đó kết phép so sánh bước xác định việc đưa giá trị Max råi kÕt thóc -Tính xác định: Thứ tự thực các bước thuật toán mặc định là nên sau bước là bước 2, sau bước là bước Kết các phép so sánh bước và bước xác định bước cÇn thùc hiÖn -Tính đúng đắn: V× thuËt to¸n so s¸nh Max víi tõng sè h¹ng cña d·y sè vµ thùc hiÖn Max  nÕu > Max nªn sau so s¸nh hÕt N sè h¹ng cña d·y th× Max lµ gi¸ trÞ lín nhÊt + GV: Đưa bài toán giải phương Lop10.com Trang (10) GA: Tin hoïc 10 GV: Đàng Ngọc Huynh Tieát 10, 11, 12, 13, 14 trình baäc nhaát vaø yeâu caàu HS trình baøy VD : Tìm nghiệm phương trình bậc lời giải theo cách thông thường tổng quaùt : ax + b = +Từ đó, GV hướng dẫn HS cách chuyển từ lời giải thông thường này sang cách liệt kê và dùng sơ đồ khối (Đặc biệt yêu cầu HS học thuộc lớp các biểu tượng thể các thao tác sơ đồ khối) a Baèng caùch lieät keâ: -Bước : Nhập a, b -Bước : Nếu a ≠ thì thực bước 3, khoâng thì quay lại bước -Bước : Gaùn cho x giaù trị -b/a -Bước : Đưa kết x vaø kết thuùc b.Bằng sơ đồ khối: + HS: Lắng nghe và hiểu cách mô tả thuật toán Phân biệt điểm giống và khác cách mô tả này Thuộc lòng lớp ý nghĩa các biểu tượng sơ đồ khối Nhaäp a, b a <> Sai Đúng x  -b/a +GV: Giải thích để học sinh có cảm nhận ban đầu chương trình và ngôn ngữ lập trình Ñöa x roài keát thuùc +HS: Có khái niệm ban đầu * Löu yù: ngôn ngữ lập trình và chương trình Ta cần diễn tả thuật toán ngôn ngữ cho máy tính có thể hiểu và thực được, ngôn ngữ đó gọi là ngôn ngữ lập trình Kết diễn tả thuật toán gọi là chương trình Lop10.com Trang 10 (11) GA: Tin hoïc 10 Tieát 10, 11, 12, 13, 14 Hoạt động : -Nội dung: Xét các ví dụ thuật toán -Mục tiêu : Giúp HS vận dụng kiến thức có hoạt động vào số bài toán cụ thể -Caùch tieán haønh : +GV: Hướng dẫn các bước thực bài toán VD GV: Đàng Ngọc Huynh III CÁC VÍ DỤ VỀ THUẬT TOÁN: VD 1: KiÓm tra tÝnh nguyªn tè cña mét sè nguyên dương *Xác định bài toán - Input: N là số nguyên dương; -Output: "N lµ sè nguyªn tè" hoÆc "N kh«ng lµ sè nguyªn tè" *ý tưởng: Ta nhớ lại định nghĩa: Một số nguyên dương N là số nguyên tố nó có đúng hai ước số khác là và chính nó +HS: Theo doừi sửù hửụựng daón cuỷa giaựo Từ định nghĩa đó, ta suy ra: vieân -NÕu N = th× N kh«ng lµ sè nguyªn tè; -NÕu < N < th× N lµ sè nguyªn tè; -NÕu N vµ kh«ng cã ­íc sè ph¹m vi từ đến phần nguyên bậc hai N thì N lµ sè nguyªn tè Từ đó ta có thuật toán sau: *ThuËt to¸n a) ThuËt to¸n diÔn t¶ b»ng c¸ch liÖt kª Bửụực1: Nhập số nguyên dương N; Bước2: NÕu N = th× th«ng b¸o N kh«ng nguyªn tè råi kÕt thóc; Bước3: NÕu N < th× th«ng b¸o N lµ nguyªn tè råi kÕt thóc; Bước4: i ← 2; Ghi chó: Bước5: NÕu i > [ N ]* th× th«ng b¸o N lµ -Biến i nhận giá trị nguyên thay đổi phạm vi từ đến  N  + và dùng nguyên tố kết thúc; để kiểm tra N có chia hết cho i hay Bửụực6: Nếu N chia hết cho i thì thông báo N kh«ng nguyªn tè råi kÕt thóc; kh«ng -[x] kí hiệu phần nguyên x, là số Bửụực7: i ← i + quay lại bước nguyªn kh«ng lín h¬n x vµ gÇn x nhÊt Lop10.com Trang 11 (12) GA: Tin hoïc 10 GV: Đàng Ngọc Huynh Tieát 10, 11, 12, 13, 14 b) Sơ đồ khối: Kiểm tra tính nguyên tố NhËp N §óng N=1 Sai §óng N<4 Sai i2 i>  N    §óng Th«ng b¸o N lµ sè nguyªn tè råi kÕt thóc Sai ii+1 Sai §óng Th«ng b¸o N kh«ng lµ sè nguyªn tè råi kÕt thóc i N/i Chia hÕt kh«ng? N chia hÕt cho i Dưới đây là ví dụ mô các bước thực KiÓm tra tÝnh nguyªn tè Víi N = 29 (  29   ) Víi N = 45 (  45   ) i 29/2 29/3 29/4 29/5 45/2 45/3 N/i Chia hÕt Kh«ng Chia hÕt Kh«ng Kh«ng Kh«ng Kh«ng kh«ng? a) 29 lµ sè nguyªn tè b) 45 kh«ng lµ sè nguyªn tè Lop10.com Trang 12 (13) GA: Tin hoïc 10 GV: Đàng Ngọc Huynh Tieát 10, 11, 12, 13, 14 +GV: Trong sống, ta thường gặp việc liên quan đến xếp chaỳng haùn nhử: Danh sách häc sinh lớp 10C xếp theo thứ tự từ A đến Z (thứ tự ABC); XÕp lo¹i häc lùc häc sinh líp; Nãi mét c¸ch tæng qu¸t, cho mét d·y đối tượng, cần xếp lại vị trí các đối tượng theo tiêu chí nào đó VD: Cho 10 chiÕc cäc cã chiÒu cao kh¸c VÝ dô Bµi to¸n s¾p xÕp (hình a), cÇn xÕp l¹i cho cäc thÊp ë Cho d·y A gåm N sè nguyªn a1, a2, , aN CÇn s¾p xếp các số hạng để dãy A trở thành dãy không trước, cọc cao sau (hỡnh b) giảm (tức là số hạng trước không lớn số hạng sau) a) D÷ liÖu gèc b) Sau s¾p xÕp Thuật toán Sắp xếp tráo đổi (Exchange Sort) *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 *YÙ tưởng: Với cặp số hạng đứng liền kề dãy, +GV Giụựi thieọu sụ qua PP Saộp xeỏp: Saộp xeỏp số trước lớn số sau ta đổi chỗ chúng cho ủửụùc chia laứm loaùi ủoự laứ: SX vaứ SX Việc đó lặp lại, không có đổi chỗ nào xảy ngoài *ThuËt to¸n *Saép xeáp TRONG: a) C¸ch liÖt kª: → +Phöông phaùp Choïn (Selection Sort); Bước Nhập N, các số hạng a1, a2, , aN; + PP Đổi chỗ (Exchange Sort); Bước M ← N; + PP Cheøn (Insertion Sort ) Bước Nếu M < thì đưa dãy A đã *Sắp xếp NGOAØI: ®­îc s¾p xÕp råi kÕt thóc; → PP Trộn tự nhiên (Natural Merge Bước M ← M - 1, i ← 0; Sort) Trong phaïm vi SGK chuùng ta chæ hoïc thuaät Bước i ← i + 1; toán xếp PP Đổi chỗ hay còn gọi là Bước Nếu i > M thì quay lại bước 3; tráo đổi (Exchange Sort) Bước Nếu a > a thì tráo đổi a và a VD: Víi A lµ d·y gåm N sè nguyªn ( N = 10): 6, 1, 5, 3, 7, 8, 10, 7, 12, 4, Sau s¾p xÕp ta cã d·y: 1, 3, 4, 5, 6, 7, 7, 8, 10, 12 +GV: Hướng dẫn các bước thực bài toán VD +HS: Theo dõi hướng dẫn giáo vieân Lop10.com i i+1 i i+1 cho nhau; Bước Quay lại bước Trang 13 (14) GA: Tin hoïc 10 GV: Đàng Ngọc Huynh Tieát 10, 11, 12, 13, 14 +GV: Ta thấy rằng, sau lần đổi chỗ, giá trị lín nhÊt cña d·y A sÏ ®­îc chuyÓn dÇn vÒ cuèi dãy và sau lượt thứ thì giá trị lớn xếp đúng vị trí là cuối dãy Tương tự, sau lượt thứ hai, giá trị lớn thứ hai xếp đúng vị trí sát cuối, Có thể hình dung, sau lượt có ít số hạng đã xếp đúng vị trí và không còn tham gia vào quá trình đổi chỗ nữa, giống các bọt nước từ đáy hồ dần và đã lên mặt nước thì tan biến Có thể vì mà xếp tráo đổi còn có tên gọi là xếp bọt (Bubble Sort) Ghi chó: - Qua nhËn xÐt trªn, ta thÊy qu¸ tr×nh so s¸nh và đổi chỗ sau lượt thực với dãy đã bỏ bớt số hạng cuối dãy Để thực điều đó thuËt to¸n sö dông biÕn nguyªn M cã gi¸ trÞ khởi tạo là N, sau lượt M giảm đơn vị M < - Trong thuËt to¸n trªn, i lµ biÕn chØ sè c¸c số hạng dãy có giá trị nguyên thay đổi từ đến M + b) Sơ đồ khối: NhËp N vµ a1, a2, , aN MN M<2? §óng §­a A råi kÕt thóc Sai M  M – 1; i  ii+1 §óng i>M? Sai Tráo đổi và ai+1 §óng > ai+1 ? Sai Dưới đây là ví dụ mô các bước thực Thuật toán Sắp xếp tráo đổi (Exchange Sort) D·y A 10 12 Lượt 1 10 Lượt 7 10 Lượt 3 7 Lượt 7 Lượt 5 Lượt 6 Lượt Lượt Lượt Lượt 10 Lop10.com 12 Trang 14 (15) GA: Tin hoïc 10 GV: Đàng Ngọc Huynh Tieát 10, 11, 12, 13, 14 -GV: Tìm kiếm là việc thường làm người, ch¼ng h¹n t×m cuèn s¸ch gi¸o khoa Tin häc 10 trên giá sách để chuẩn bị cho học ngày hôm sau, cần tìm HS danh sách lớp… Nói cách tổng quát là cần tìm đối tượng cụ thể nào đó tập các đối tượng cho trước -GV: Sè nguyªn k ®­îc gäi lµ kho¸ t×m kiÕm (gäi t¾t lµ kho¸) VD: cho d·y A gåm c¸c sè: 5, 7, 1, 4, 2, 9, 8, 11, 25, 51 +Víi kho¸ k = 2, d·y trªn cã sè h¹ng a5 cã gi¸ trÞ b»ng k VËy chØ sè cÇn t×m lµ i = +Víi kho¸ k = th× kh«ng cã sè h¹ng nµo cña d·y A cã gi¸ trÞ b»ng k -GV: Hướng dẫn các bước thực bài toán và mô tả thuật toán liệt kê -HS: Chú ý theo dõi hướng dẫn giáo vieân VÝ dô Bµi to¸n t×m kiÕm: Cho dãy A gồm N số nguyên, đôi khác nhau: a1, a2, , aN vµ mét sè nguyªn k CÇn biÕt cã hay kh«ng chØ sè i (  i  N ) mµ = k NÕu cã hãy cho biết số đó A.ThuËt to¸n T×m kiÕm tuÇn tù (Sequential Search) *Xác định bài toán - Input: Dãy A gồm N số nguyên đôi khác a1, a2, , aN vµ sè nguyªn k; - Output: ChØ sè i mµ = 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 *YÙ tưởng: Lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng xét với khoá hoÆc gÆp mét sè h¹ng b»ng kho¸ (Tìm thaáy) dãy đã xét hết và không có giá trị nµo b»ng kho¸ (Khoâng tìm thaáy) *ThuËt to¸n a) C¸ch liÖt kª Bước Nhập N, các số hạng a1, a2, , aN và kho¸ k; Bước i ← 1; Bước Nếu = k thì thông báo số i, kÕt thóc; Bước i ← i + 1; Bước 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 Quay lại bước Ghi chó: Trong thuËt to¸n trªn, i lµ biÕn chØ sè c¸c sè h¹ng cña d·y vµ nhËn gi¸ trÞ nguyªn lÇn -GV: Goùi 1HS leõn baỷng moõ taỷ thuaọt toaựn baống lượt từ đến N + sơ đồ khối -GV cùng Lớp nhận xét và sửa sai (nếu có) Lop10.com Trang 15 (16) GA: Tin hoïc 10 GV: Đàng Ngọc Huynh Tieát 10, 11, 12, 13, 14 b) Sơ đồ khối NhËp N vµ a1, a2, , aN; k i 1 §óng = k §­a i råi kÕt thóc Sai i i+1 Sai i>N §óng Th«ng b¸o d·y A kh«ng cã sè h¹ng cã gi¸ trÞ b»ng k råi kÕt thóc Dưới đây là VD mô các bước thực ThuËt to¸n T×m kiÕm tuÇn tù (Sequential Search) k = vµ N = 10 A 11 25 51 i - - - - Víi i = th× a5 = Lop10.com k = vµ N = 10 A 11 25 51 i 10 11 Với i từ đến 10 không có có gi¸ trÞ b»ng Trang 16 (17) GA: Tin hoïc 10 GV: Đàng Ngọc Huynh Tieát 10, 11, 12, 13, 14 GV: Bài toán tìm kiếm ngoài thuật toán tìm kieám nhò phaân, ta coù theå duøng thuaät toán tìm kiếm nhị phân để thực việc tìm kiếm, với điều kiện dãy A phải xếp theo thứ tự tăng (hoặc giaûm) VD: Cho daõy A goàm N = nhö sau: i vaø moät soá nguyeân k = -GV: Để thu hẹp lại phạm vi tìm kiếm, ta chia daõy A thaønh phaàn coù theå hôn keùm đúng số hạng, số hạng nằm phaàn naøy ta goïi laø: aGiua Muoán bieát aGiua cuï theå laø a? thì ta ñi tìm chæ soá Giua baèng chæ soá i (1 ≤ i ≤ N) naøo ? Ta tìm chæ soá Giua baøng caùch:  Dau  Cuoi  1  N  Giua =   =    1   =  = 3,5 => Giua =   => aGiua = a3 = Cuoái cuøng ta so saùnh aGiua(aGiua = a3 = 5) vụựi khoaự k(k = 7) Khi đó, xảy ba trường hợp sau: aGiua = k aGiua > k aGiua < k => aGiua = a3 = < khoá k = Do đó ta tiếp tục việc tìm kiếm trên dãy (nửa daõy beân phaûi) Ghi chó: Tuú thuéc aGiua > k hoÆc aGiua < k mµ chØ số đầu số cuối dãy bước tìm kiếm thay đổi Để thực điều đó, thuật toán sử dụng các biến nguyên tương ứng Dau và Cuoi có giá trÞ khëi t¹o Dau = vµ Cuoi = N B.ThuËt to¸n T×m kiÕm nhÞ ph©n (Binary Search) * Xác định bài toán - Input: D·y A lµ d·y t¨ng gåm N sè nguyªn kh¸c a1, a2, , aN vµ mét sè nguyªn k; - Output: ChØ sè i mµ = 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 *YÙ tưởng: Sử dụng tính chất dãy A là dãy tăng, ta tìm c¸ch thu hÑp nhanh ph¹m vi t×m kiÕm sau mçi lÇn so sánh khoá với số hạng chọn Để làm điều đó, ta chọn số hạng aGiua "giữa dãy" để so sánh với k, đó  N  1 Giua =    Khi đó, xảy ba trường hợp sau: -NÕu aGiua = k th× Giua lµ chØ sè cÇn t×m ViÖc t×m kiÕm kÕt thóc -Nếu aGiua > k thì dãy A là dãy đã xếp nên viÖc t×m kiÕm tiÕp theo chØ xÐt trªn d·y a1, a2, , aGiua–1 (ph¹m vi t×m kiÕm míi b»ng kho¶ng mét nöa ph¹m vi t×m kiếm trước đó) -NÕu aGiua < k th× thùc hiÖn t×m kiÕm trªn d·y aGiua+1, aGiua+2, , aN Quá trình trên lặp lại số lần đã tìm thấy khoá k dãy A phạm vi tìm kiÕm b»ng rçng *ThuËt to¸n a) C¸ch liÖt kª Bước Nhập N, các số hạng a1, a2, , aN và khoá k; Bước Dau ← 1, Cuoi ← N;  Dau  Cuoi   ;  Bước Giua ←  Bước Nếu aGiua = k thì thông báo số Giua, kết thóc; Bước Nếu aGiua > k thì đặt Cuoi = Giua - chuyển đến bước 7; Bước Dau ← Giua + 1; Bước Nếu Dau > Cuoi thì thông báo dãy A không có sè h¹ng cã gi¸ trÞ b»ng k, råi kÕt thóc; Bước Quay lại bước Lop10.com Trang 17 (18) GA: Tin hoïc 10 GV: Đàng Ngọc Huynh Tieát 10, 11, 12, 13, 14 b) Sơ đồ khối: (Binary Search) NhËp N vµ a1, a2, , aN; k  1; Cuoi  N Giua  [(Dau + Cuoi)/2] aGiua = k §óng §­a Giua råi kÕt thóc Sai §óng aGiua > k Cuoi  Giua – Sai Dau Sai  Giua + Dau > Cuoi §óng Th«ng b¸o d·y A kh«ng cã sè h¹ng cã gi¸ trÞ b»ng k råi kÕt thóc Dưới đây là ví dụ mô các bước thực thuật toán (Binary Search) k = 21, N =10 i 10 A 21 22 30 31 33 Dau 6 Cuoi 10 10 Giua aGiua 30 21 Lượt lượt thứ hai thì aGiua = k Vậy số cÇn t×m lµ i = Giua = Lop10.com k = 25, N =10 i 10 A 21 22 30 31 33 Dau 6 Cuoi 10 10 7 Giua aGiua 30 21 22 Lượt Tại lượt thứ tư Dau > Cuoi nên kết luận d·y A kh«ng cã sè h¹ng nµo cã gi¸ trÞ lµ 25 c¶ Trang 18 (19) GA: Tin hoïc 10 GV: Đàng Ngọc Huynh Tieát 10, 11, 12, 13, 14 4.Tổng kết nội dung, đánh giá cuối bài: -Toùm taét baøi, nhaán maïnh caùc ñieåm chính -Yêu cầu số HS nhắc lại các thuật ngữ chính bài : Bài toán, Thuật toán, Sơ đồ khối, Input, Output -Baøi taäp: Cho daõy soá goàm N soá sau (N=5): 11 20 Tìm giaù trò NHOÛ NHAÁT cuûa daõy soá treân? Hướng dẫn: -Goïi Min laø giaù trò nhoû nhaát caàn tìm -Gán Min giá trị phần tử đầu tiên dãy -Lần lượt so sánh Min với các phần tử dãy Tại vị trí so sánh, Min lớn giá trị phần tử cần so sánh dãy thì lấy giá trị phần tử đó gán lại cho Min -Khi so sánh đến phần tử cuối cùng dãy thì Min mang giá trị nhỏ dãy a.Lieät keâ: b Sơ đồ khối: -Bước : Nhập N và dãy a1,…, aN; Nhaäp N vaø daõy a1,…, aN -Bước : Đặt Min ← a1, i ← 2; Min ← a1 , i ← -Bước : Nếu i >N thì Đưa Min kết thúc, không thì chuyển đến bước 4; -Bước : 4.1 Neáu Min > thì ñaët Min ← ; i >N Đúng Sai Sai Ñöa Min roài keát thuùc Min > Đúng Min ← 4.2 Tăng i đơn vị quay bước i ← i+1 5.Dặn dò, kế hoạch học tập tiết sau: -Daën HS tham khaûo theâm VD SGK -Baøi taäp veà nhaø: Baøi 1, 3, 4, 5, trang 44 -Yêu cầu HS đọc trước bài “Ngôn ngữ lập trình” IV NHỮNG VẤN ĐỀ CẦN RÚT KINH NGHIỆM: Lop10.com Trang 19 (20)

Ngày đăng: 03/04/2021, 01:56

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w