Bài giảng môn Tin học Lớp 10 - Bài 4: Bài toán và thuật toán

ppt 41 trang phanha23b 26/03/2022 3510
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Tin học Lớp 10 - Bài 4: Bài toán và thuật toán", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_mon_tin_hoc_lop_10_bai_4_bai_toan_va_thuat_toan.ppt

Nội dung text: Bài giảng môn Tin học Lớp 10 - Bài 4: Bài toán và thuật toán

  1. Ví dụ 1: Quản lí điểm trong một kì thi bằng máy tính. SBD Họ và tên Văn Toán Lí Anh Tổng Kết quả 105 Lê Thị Thu 8.5 10.0 7.0 9.0 53 Đỗ 102 Vũ Ngọc Sơn 6.0 8.5 8.5 5.0 42.5 Đỗ 215 Trần Thuỷ 7.0 7.0 6.5 6.5 41 Đỗ 211 Nguyễn Anh 4.5 5.0 7.0 7.5 33.5 Đỗ 245 Phan Vân 5.0 2.0 3.5 4.5 22 YêuInput: cầu :SBD, Họ và tên, Văn, Toán, Lí, Anh.  Output:Hãy xác Tổng định điểm, thông Kết tin quả đa thi vào của (Input) học sinh. và thông tin cần lấy ra (Output)
  2. Ví dụ 2: Giải phơng trình bậc nhất ax + b = 0. YêuInput: cầu :Các hệ số a, b. Hãy xác định thông tin đa vào (Input)  Output:và thôngNghiệm tin cầncủa lấyphơng ra ( Outputtrình. ) Với a = 1, b = -5  Phơng trình có nghiệm x = 5
  3. Bài 4. Bài toán và thuật Toán 1. Khái niệm bài toán Là việc nào đó ta muốn máy thực hiện để từ thông tin đa vào (INPUT) tìm đợc thông tin ra (OUTPUT). Ví dụ 3: Tìm ớc số chung lớn nhất của hai số nguyên dơng. INPUT: Hai số nguyên dơng M và N. OUTPUT: ớc số chung lớn nhất của M và N. Ví dụ 4: Bài toán xếp loại học tập của một lớp. INPUT: Bảng điểm của học sinh trong lớp. OUTPUT: Bảng xếp loại học lực của học sinh.
  4. 2. Khái niệm thuật toán Các em cần tìm ra cách giải của bài toán. Từ INPUT làm thế nào để tìm ra OUTPUT ?
  5. Xét ví dụ 2: Giải phơng trình bậc nhất ax + b = 0. B1: Xác định hệ số a, b; B2: Nếu a=0 và b=0 => Phơng trình vô số nghiệm =>B5; B3: Nếu a=0 và b≠0 => Phơng trình vô nghiệm =>B5; B4: Nếu a≠0 => Phơng trình có nghiệm x=-b/a =>B5; B5: Kết thúc.
  6. Thuật toán để giải một bài toán là một dãy hữu hạn các thao tác đợc sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác ấy, từ Input của bài toán, ta nhận đợc Output cần tìm. Có hai cách thể hiện một thuật toán:  Cách 1: Liệt kê các bớc.  Cách 2: Vẽ sơ đồ khối.
  7. 3. Một số ví dụ về thuật toán Thuật toán giải phơng trình bậc hai (a 0). Cách 1: Liệt kê các bớc B1: Bắt đầu; B2: Nhập a, b, c; B3: Tính = b2 – 4ac; B4: Nếu PT vô nghiệm => B7; B5: Nếu = 0 => PT có nghiệm kép x = -b/2a => B7; B6: Nếu > 0 => PT có hai nghiệm x1, x2 = (-b  )/2a => B7; B7: Kết thúc.
  8. Cách 2: Vẽ sơ đồ khối Quy ớc các khối trong sơ đồ thuật toán BĐ Bắt đầu thuật toán. Dùng để nhập và xuất dữ liệu. Dùng để gán giá trị và tính toán. Xét điều kiện rẽ nhánh theo một đ trong hai điều kiện đúng, sai. ĐK S Kết thúc thuật toán. KT
  9. Sơ đồ thuật toán giải phơng trình bậc hai BD B1 Nhập vào a, b, c B2 2 = b - 4ac B3 đ < 0 PT vô nghiệm B4 s đ B5 = 0 PT có nghiệm x= - b/2a KT s B7 PT có 2 nghiệm B6 x1,x2= ( -b  )/2a
  10. Mô phỏng thuật toán giải phơng trình bậc hai BD Bộ TEST 1: a b c nha,b,c=ập vào 1 3a,b,c 5 1 3 5 -11 == b*b3*3 - 4*54*a*c = - 11 Đ - 11< <0 0 PT vô nghiệm S KT = 0 PT có nghiệm x = -b/2a S PT có 2 nghiệm x1, x2 = (-b  )/2a
  11. Mô phỏng thuật toán giải phơng trình bậc hai BD Bộ TEST 2: a b c nha,b,c=ập vào 1 2a,b,c 1 1 2 1 0 == b*b2*2 - 4*1*14*a*c = 0 Đ < 0 PT vô nghiệm S Đ = 0 PTPT cócó nghiệmnghiệm x=kép-b/2a x=-1 KT S PT có 2 nghiệm x1, x2 = (-b  )/2a
  12. Mô phỏng thuật toán giải phơng trình bậc hai BD Bộ TEST 3: a b c nha,b,c=ập vào 1 -a,b,c5 6 1 -5 6 1 == b*b25 244*a*c = 1 Đ < 0 PT vô nghiệm S Đ = 0 PT có nghiệm x=-b/2a KT S PTPT cócó nghiệm2 nghiệm x1 = 3 x1,x2 =x2 2 = (-b  )/2a
  13. Thuật toán tìm max 3 Ngời ta đặt 5 quả bóng có kích thớc khác nhau trong hộp đã đợc đậy nắp nh hình bên. Chỉ dùng tay hãy tìm ra quả bóng có kích thớc lớn nhất .
  14. Cùng tìm thuật toán Quả này mới lớn ồ!T ìQuảm ra Quả này nhất nàyquả lớn lớn lớn nhất nhấthơn rồi! MAX
  15. Thuật toán tìm số lớn nhất trong một dãy số nguyên Xác định bài toán: INPUT: Số nguyên dơng N và dãy N số nguyên a1, a2, –, aN (ai với i: 1→N). OUTPUT: Số lớn nhất (Max) của dãy số.
  16. ý tởng: - Đặt giá trị Max = a1. - Lần lợt cho i chạy từ 2 đến N, so sánh giá trị ai với giá trị Max, nếu ai > Max thì Max nhận giá trị mới là ai.
  17. Cách 1: Liệt kê các bớc B1: Nhập N và dãy a1,–, aN; B2: Max  a1; i  2; B3: Nếu i > N thì đa ra giá trị Max rồi kết thúc; B4: Bớc 4.1: Nếu ai > Max thì Max  ai; Bớc 4.2: i  i+1 rồi quay lại B3.
  18. Cách 2: Sơ đồ khối Nhập N và dãy a1, ,aN B1: Nhập N và dãy a1,–,aN; Max  a1 ; i  2 B2: Max  a1; i  2; Đ i > N ? Đa ra Max rồi kết thúc S S B3: Nếu i > N thì đa ra giá trị a > Max ? i Max rồi kết thúc; Đ B4 : Max  ai 4.1: Nếu ai > Max thì Max  ai; 4.2: i  i + 1 rồi quay lại B3. i  i + 1
  19. Với i = 2354 NhậpN=5 ;N A và [ 5 dãy 1 4 a1, ,aN7 6 ] A 5 1 4 7 6 i 2 3 4 5 Max 5 5 5 7 7 MaxMax  a15 ; ; i i  22 Đ 62345I >> N5 ?? ĐSốa ralớn Max nhất rồi của kết dãy thúc là 7 S S ai7>4>1> >Max 575 ?? ? Mô phỏng Đ thuật toán MaxMax a7i ii 4+13+15+12+1i+1
  20. NhậpN=5 ;N A và [ 5 dãy 1 4 a1, ,aN7 6 ] A 5 1 4 7 6 i 2 3 4 5 Max 5 5 5 7 7 MaxMax  a15 ; ; i i  22 Đ 23456I >> N5 ?? ĐSốa ralớn Max nhất rồi của kết dãy thúc là 7 S S ai7>4>1> >Max 575 ?? ? Đ MaxMax a7i ii 4+13+15+12+1i+1
  21. Thuật toán 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à một số nguyên dơng. OUTPUT: Trả lời câu hỏi N có là số nguyên tố không?
  22. Các em hãy nêu định nghĩa số nguyên tố. ý tởng: Xét các trờng hợp - Nếu N = 1 thì N không là số nguyên tố. - Nếu 1< N <4 thì N là số nguyên tố. - Nếu N 4 và không có ớc số trong phạm vi từ 2 đến phần nguyên căn bậc hai của N thì N là số nguyên tố.
  23. Mô phỏng thuật toán kiểm tra tính nguyên tố Trờng hợp 1: N = 45 ([ 45 ] = 6) i 2 3 45 không là số nguyên tố. N/i 45/2 45/3 Chia hết Không Chia hết không? 29 là số nguyên tố. Trờng hợp 2: N = 29 ([ 29 ] = 5) i 2 3 4 5 N/i 29/2 29/3 29/4 29/5 Chia hết Không Không Không Không không?
  24. Cách 1: Liệt kê các bớc B1: Nhập số nguyên dơng N; B2: Nếu N = 1 thông báo N không nguyên tố, kết thúc; B3: Nếu N [N ] thì thông báo N là nguyên tố, kết thúc; B6: 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; B7: i  i +1 rồi quay lại B5.
  25. Nhập N Đ Cách 2 N =1 ? Vẽ sơ đồ khối S Đ N [N ] nguyên tố rồi kết ? S thúc. S i  i +1 N có chia hết cho i ? Đ Thông báo N không là số nguyên tố rồi kết thúc.
  26. Thuật toán sắp xếp Hình a Hình b Hãy tìm cách sắp xếp học sinh đứng chào cờ (hình a) theo thứ tự thấp trớc cao sau (hình b).
  27. Thuật toán sắp xếp bằng tráo đổi 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 thành dãy không giảm.
  28. ý tởng: Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trớc lớn hơn số sau ta đổi vị trí chúng cho nhau. Việc đó đợc lặp lại cho đến khi không có sự đổi chỗ nào xảy ra nữa.
  29.  VớiMô Nphỏng = 6 và thuậtdãy A toángồm 6 sắp số hạngxếp nhbằngsau tráo: đổi 3 5 9 8 1 7  Lợt thứ nhất:  Lợt thứ hai: 3 5 9 8 1 7 3 5 8 1 7 9 3 5 8 9 1 7 3 5 1 8 7 9 3 5 1 7 8 9 3 5 8 1 9 7  Lợt thứ ba: 3 5 8 1 7 9  Lợt thứ t: 3 1 5 7 8 9 3 5 1 7 8 9 3 1 5 7 8 9 1 3 5 7 8 9
  30. Cách 1: Liệt kê các bớc B1: Nhập N, các số hạng a1, a2,–, aN; B2: M  N; B3: Nếu M M thì quay lại B3; B7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau; B8: Quay lại B5.
  31. Nhập N và a1, a2, , aN M  N Đ M M ? Cách 2 Tráo đổi S Vẽ sơ đồ khối Đ ai và ai+1 ai > ai+1 ? S
  32. Thuật toán tìm kiếm C1: Tìm kiếm tuần tự ( mở từng mũ) Bông trốn C2: Do các mũ đã sắp xếp đâu nhỉ ? lớn dần, hai mũ đầu nhỏ hơn ngời của Bông nên chỉ tìm hai mũ sau thôi! Hai bạn chó (Bi và Bông) chơi trốn tìm, Bông đã trốn vào một trong những chiếc mũ của ông già Nôen trên. Hãy chỉ ra các cách tìm chiếc mũ mà Bông đang trốn? Cho biết có những cách nào?
  33. Thuật toán tìm kiếm tuần tự Xác định bài toán: INPUT: Dãy A gồm N số nguyên a1, a2,–, aN đôi một khác nhau và số nguyên k. OUTPUT: Chỉ số i mà ai = k hoặc thông báo không có số hạng nào của A bằng k.
  34. Mô phỏng thuật toán tìm kiếm tuần tự  Với k = 2 và dãy A gồm 10 số hạng nh sau: A 5 7 1 4 2 9 8 11 25 51 I 1 2 3 4 55 Tại vị trí i = 5 có a5 = 2 = k  Với k = 6 và dãy A gồm 10 số hạng nh sau: A 5 7 1 4 2 9 8 11 25 51 I 1 2 3 4 5 6 7 8 9 10 11 Với mọi i từ 1→ 10 không có ai có giá trị bằng 6
  35. ý tởng: 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á (k) cho đến khi có sự trùng nhau, nếu đã xét tới số hạng cuối cùng mà không có sự trùng nhau thì có nghĩa là dãy A không có số hạng nào có giá trị bằng k.
  36. Cách 1: Liệt kê các bớc Bớc 1: Nhập N, các số hạng a1, a2,–, aN và giá trị khoá k; Bớc 2: i  1; 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 B3.
  37. Nhập N, a1, a2, , aN và k i  1 Đ Đa ra i ai = k ? rồi kết thúc S i i + 1 S Cách 2 i > N ? Vẽ sơ đồ khối Đ 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
  38. Thuật toán tìm kiếm nhị phân ý tởng: Sử dụng tính chất dãy A đã sắp xếp tăng, ta tìm cách thu hẹp nhanh phạm vi tìm kiếm bằng cách so sánh k với số hạng ở giữa dãy (agiữa), khi đó chỉ xảy ra một trong ba tr- ờng hợp: - Nếu agiữa= k => tìm đợc chỉ số, kết thúc; - Nếu agiữa > k => do dãy A đã đợc sắp xếp tăng nên việc tìm kiếm thu hẹp chỉ xét từ a1 → agiữa - 1; - Nếu agiữa do dãy A đã đợc sắp xếp tăng nên việc tìm kiếm thu hẹp chỉ xét từ agiữa + 1 → aN. Quá trình trên đợc lặp đi lặp lại cho đến khi tìm đợc OUTPUT.
  39. Mô phỏng thuật toán tìm kiếm nhị phân  Với k = 21 và dãy A gồm 10 số hạng nh sau: A 2 4 5 6 9 21 22 30 31 33 i 1 2 3 4 5 6 7 8 9 10 Lợt thứ nhất: agiữa là a5 = 9; 9 21  vùng tìm kiếm thu hẹp trong phạm vi từ a6→ a7; Lợt thứ ba: agiữa là a6 = 21; 21= 21  Vậy số cần tìm là i = 6.
  40. Liệt kê các bớc Bớc 1: Nhập N, các số hạng a1, a2,–, aN và giá trị 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 rồi chuyển sang 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 có giá trị bằng k, rồi kết thúc; Bớc 8: Quay lại bớc 3.
  41. Bài toán và thuật Toán 1. Khái niệm bài toán 2. Khái niệm thuật toán Thuật toán giải phơng trình bậc hai (a 0). Thuật toán tìm Max của một dãy số. Thuật toán kiểm tra tính nguyên tố của một số nguyên dơng. Thuật toán sắp xếp bằng tráo đổi. Thuật toán tìm kiếm tuần tự và nhị phân.