Xem tử vi miễn phí trực tuyến cho kết quả chính xác cùng luậ...
Baigiang - bai4. Bài Toán Và Thuật Toán
1. Câu Hỏi 1: Máy vi tính có mấy phần chính?
Câu Hỏi 2: Cho ví dụ về thiết bị đầu vào, thiết bị đầu ra.
- Máy vi tính có ba phần chính: Thiết bị đầu vào, Bộ xử lí
và Thiết bị đầu ra.
- Thiết bị đầu vào: Bàn phím (Keyboard), chuột (Mouse),
máy quét, …
- Thiết bị đầu ra: Màn hình, loa, máy in, máy chiếu
(projector),…
Kiểm tra bài cũ
3. - Xét các yêu cầu trong sau:
• Giải PT bậc 2: ax^2+bx+c=0.
• Viết 1 dòng chữ ra màn hình máy tính.
• Quản lí cán bộ cơ quan.
• Tìm UCLN của a và b.
• Xếp loại học tập cho hoc sinh trong lớp.
Bài toán
Đâu là bài toán trong tin học, đâu là bài toán
trong toán học?
Bài toán
trong tin
học.
Bài toán
trong toán
học.
4. Các yếu tố cần quan tâm khi giải một bài toán:
Toán học: Giả thiết và kết luận (ví dụ lên bảng)
Tin học:
Đưa vào máy tính thông tin gì? Cần lấy ra thông tin gì?
Input Output
Bài toán
Khái niệm về bài toán trong Tin học: là một
việc nào đó ta muốn máy tính thực hiện.
5. Ví dụ: Tìm UCLN của a, b.
Input: Hai số a, b.
Output: UCLN(a,b)
Một bài toán được cấu thành bởi hai thành phần
cơ bản là Input và Output
Bài toán
Xác định Input,
Output của bài toán
6. Bài toán
Input Bằng cách nào Output
Giải bài toán
Hướng dẫn các thao tác cho
máy thực hiên để tìm ra lời giải
Bài toán
Thuật toán
7. Bài toán
Input Thuật toán Output
(thao tác 1 → thao tác 2 → … → thao tác n)
Đinh nghĩa:
• Một dãy hữu hạn các thao tác;
• Các thao tác được sắp xếp theo một trình tự xác
định;
• Sau khi thực hiện dãy các thao tác đó từ Input ta
tìm được Output của bài toán.
Thuật toán
8. 1. Học bài và làm bài 1, bài 2 trong SGK và
bài 1.28/17 SBT
2. Đọc sách và chuẩn bị bài cho tiết tiếp
theo.
Dặn dò
10. Làm thế nào để trình bày thuật toán giải quyết
một bài toán cho hợp lý, dễ hiểu và thông qua
thuật toán có thể thu được Output từ Input đã
cho?
Tìm hiểu về cách mô tả thuật toán và tính chất
của thuật toán).
Thuật toán
11. 1. Mô tả bằng cách liệt kê.
Ví dụ: Tính diện tích hình chữ nhật.
Xác định công thức tính S=chiều dài * chiều rộng
Xác định chiều dài chiều rộng tính diện tích
(học sinh phải làm theo thứ tự và không được đảo
thứ tự giải bài toán)
Cách mô tả thuật toán
Một cách mô tả thuật toán phổ biến nhất là liệt kê:
trình bày theo từng bước có thứ tự nhất định.
12. Ví du: Tìm số lớn nhất trong hai số a, b
Input: hai số a, b
Output: Max
Thuật toán:
Cách mô tả thuật toán
Input, Output?
Bước 1: Nhập 2 số a,b;
Bước 2: Max a;
Bước 3:
Bước 3.1: Nếu b > Max thì Max b;
Bước 3.2: Ngược lại thì Max a;
13. 2. Mô tả bài toán bằng sơ đồ khối
Các khối, đường được sử
dụng:
Hình thoi thể hiện thao
tác so sánh.
Hình chữ nhật thể hiện
các phép tính toán.
Hình ô van thể hiện
thao tác nhập, xuất dữ liệu.
Mũi tên quy định trình
tự các thao tác.
Cách mô tả thuật toán
14. Tính dừng: Thuật toán phải kết thúc sau một số
hữu hạn lần thực hiện.
Tính xác định: Sau khi thực hiện một thao tác thì
hoặc là có đúng một thao tác xác định để thực
hiện tiếp theo.
Tính đúng đắn: Sau khi thuật toán kết thúc, ta
phải nhận được Output cần tìm
Tính chất của thuật toán
16. 1. Xác định bài toán:
- Input: N là một số nguyên dương.
- Output: N là số nguyên tố hoặc N không là số
nguyên tố.
2. Ý tưởng:
- Nếu N=1 N không là số nguyên tố.
- Nếu 1<N<4 N là số nguyên tố.
- Nếu N>=4: Tìm ước i đầu tiên>1 của N.
+ Nếu i<N N không là số nguyên tố (vì N có ít
nhất 3 ước 1, i, N).
+ Nếu i=N N là số nguyên tố.
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
17. 3. Xây dựng thuật toán:
a. Cách liệt kê:
• Bước 1: Nhập số nguyên dương N;
• Bước 2: Nếu N=1 thì thông báo N; không là số nguyên tố
rồi kết thúc;
• Bước 3: Nếu N<4 thì thông báo N là số nguyên tố rồi kết
thúc;
• Bước 4: i2;
• Bước 5: Nếu i là ước của N thì đến bước 7;
• Bước 6: ii+1 rồi quay lại bước 5; (tăng I lên 1 đơn vị)
• Bước 7: Nếu i=N thì thông báo N là số nguyên tố, ngược lại
thì thông báo N không là số nguyên tố rồi kết thúc;
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
18. b. Sơ đồ khối
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
19. Cải tiến thuật toán
Ý tưởng:
Tìm i tăng dần trong phạm vi từ 2 đến phần nguyên
𝑁 thỏa điều kiện là ước của N:
- Nếu không tìm được N là số nguyên tố.
- Ngược lại N không là số nguyên tố.
Xây dựng thuật toán:
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
20. Cách liệt kê:
Bước 1: Nhập số nguyên dương N;
Bước 2: Nếu N=1 thì thông báo N không là số nguyên tố,
kết thúc chương trình;
Bước 3: i2;
Bước 4: Nếu i<= 𝑁 và I không là ước của N thì ii+1, rồi
lặp lại bước này.
Bước 5: Nếu i> 𝑁 thì thông báo N là số nguyên tố, ngược
lại thì thông báo N không là số nguyên tố, rồi kết thúc.
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
21. Sơ đồ khối
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
22. i 2
Nhập N
N = 1?
i i+1
N không phải là
số nguyên tố
Đúng
Sai
Đúng
Sai
i > ?N
N < 4?
N i?
N là số nguyên
tố
Đúng
Đúng
Sai
Sai
N=25
2 > 5?
25 2?i 3
3 > 5?
25 3?i 4
4 > 5?
25 4?i 5
5 > 5?
25 5?
25 = 1?
25 < 4?
25 không phải là
số nguyên tố
23. i 2
Nhập N
N = 1?
i i+1
N không phải là
số nguyên tố
Đúng
Sai
Đúng
Sai
i > ?N
N < 4?
N i?
N là số nguyên
tố
Đúng
Đúng
Sai
Sai
N=29
2 > 5?
29 2?i 3
3 > 5?
29 3?i 4
4 > 5?
29 4?i 5
5 > 5?
29 5?
29 = 1?
29 < 4?
i 6
6 > 5?
29 là số nguyên
tố
26. 1. Xác định bài toán:
Input: Dãy A gồm N số nguyên a1, a2, .., an
VD: Dãy A gồm các số nguyên 2 4 8 7 1 5
Output: Dãy A được sắp xếp thành dãy không giảm
Dãy A sau khi sắp xếp: 1 2 4 5 7 8
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
27. 2. Ý tưởng:
- Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số
trước > số sau, ta đổi chỗ chúng cho nhau. (Các số
lớn sẽ được đẩy dần về vị trí xác định cuối dãy)
- Việc này lặp lại nhiều lượt, mỗi lượt tiến hành
nhiều lần so sánh cho đến khi không có sự đổi chỗ
nào xảy ra nữa.
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
28. 3. Xây dựng thuật toán:
• Nhập N, các số hạng a1, a2, .., an.
• Đầu tiên gọi M là số hạng cần so sánh, vậy M sẽ chứa
giá trị của N: MN
• Nếu số số hạng cần so sánh < 2 thì dãy đã được sắp
xếp. Kết thúc.
• M chứa giá trị mới là số phép so sánh cần thực hiện
trong lượt: M M-1
• Gọi i là số thứ tự của mỗi lần so sánh, đầu tiên i 0.
• Để thực hiện lần so sánh mới, I tăng lên lần 1 (lần so
sánh thứ i)
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
29. 3. Xây dựng thuật toán:
• Nếu lần so sánh thứ i > số phép so sánh M: đã
hoàn tất M số phép so sánh của lượt này.
• Lặp lại bước 3, bắt đầu lượt kế tiếp (với số hạng
cần so sánh mới chính là M đã giảm 1).
• So sánh 2 phần tử ở lần thứ I là ai
• và ai+1
• Nếu ai>ai+1 thì tráo đổi 2 phần tử này.
• Quay lại bước 5.
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
30. a. Cách liệt kê
• Bước 1: Nhập N, các số hạng a1, a2,..,an;
• Bước 2: M N;
• Bước 3: Nếu M < 2 thì đưa ra dãy A đã được sắp xếp,
rồi kết thúc;
• Bước 4: M M-1; i 0;
• Bước 5: i i-1;
• Bước 6: Nếu i> M thì quay lại bước 3;
• Bước 7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau;
• Bước 8: Quay lại bước 5;
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
31. b. Sơ đồ khối
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
32. Mô phỏng thực hiện thuật toán
6 1 5 3 7 8 10 7 12 4
Lần duyệt 1
33. Mô phỏng thực hiện thuật toán
6 51 3 7 8 10 7 12 4
Lần duyệt 1
34. Mô phỏng thực hiện thuật toán
6 31 5 7 8 10 7 12 4
Lần duyệt 1
35. Mô phỏng thực hiện thuật toán
1 5 3 6 7 8 10 7 12 4
Lần duyệt 1
36. Mô phỏng thực hiện thuật toán
1 5 3 6 7 8 10 7 12 4
Lần duyệt 1
37. Mô phỏng thực hiện thuật toán
1 5 3 6 7 8 10 7 12 4
Lần duyệt 1
38. Mô phỏng thực hiện thuật toán
10 71 5 7 83 6 12 4
Lần duyệt 1
39. Mô phỏng thực hiện thuật toán
3 61 5 7 8 7 10 12 4
Lần duyệt 1
40. Mô phỏng thực hiện thuật toán
12 41 5 7 8 7 103 6
Lần duyệt 1
41. Mô phỏng thực hiện thuật toán
3 61 5 7 8 7 10 4 12
Lần duyệt 1
Kết quả Lần duyệt 1
42. Mô phỏng thực hiện thuật toán
61 7 8 7 10 4 125 3
Lần duyệt 2
43. Mô phỏng thực hiện thuật toán
61 7 8 7 10 4 123 5
Lần duyệt 2
44. Mô phỏng thực hiện thuật toán
61 7 8 7 10 4 123 5
Lần duyệt 2
45. Mô phỏng thực hiện thuật toán
61 7 8 7 10 4 123 5
Lần duyệt 2
46. Mô phỏng thực hiện thuật toán
61 7 10 4 123 5 8 7
Lần duyệt 2
47. Mô phỏng thực hiện thuật toán
61 7 7 8 10 4 123 5
Lần duyệt 2
48. Mô phỏng thực hiện thuật toán
61 7 7 8 123 5 10 4
Lần duyệt 2
49. Mô phỏng thực hiện thuật toán
61 7 7 8 4 10 123 5
Lần duyệt 2
Kết quả Lần duyệt 2
50. Mô phỏng thực hiện thuật toán
61 7 7 10 123 5
Lần duyệt 3
8 4
51. Mô phỏng thực hiện thuật toán
61 7 7 4 8 10 123 5
Lần duyệt 3
Kết quả Lần duyệt 3
52. Mô phỏng thực hiện thuật toán
61 7 8 10 123 5
Lần duyệt 4
7 4
53. Mô phỏng thực hiện thuật toán
61 7 4 7 8 10 123 5
Lần duyệt 4
Kết quả Lần duyệt 4
54. Mô phỏng thực hiện thuật toán
61 7 8 10 123 5
Lần duyệt 5
7 4
55. Mô phỏng thực hiện thuật toán
61 4 7 7 8 10 123 5
Lần duyệt 5
Kết quả Lần duyệt 5
56. Mô phỏng thực hiện thuật toán
71 7 8 10 123 5
Lần duyệt 6
6 4
57. Mô phỏng thực hiện thuật toán
41 6 7 7 8 10 123 5
Lần duyệt 6
Kết quả Lần duyệt 6
58. Mô phỏng thực hiện thuật toán
71 7 8 10 123 6
Lần duyệt 7
5 4
59. Mô phỏng thực hiện thuật toán
51 6 7 7 8 10 123 4
Lần duyệt 7
Kết quả Lần duyệt 7
60. Mô phỏng thực hiện thuật toán
51 6 7 7 8 10 123 4
Lần duyệt 8
Kết quả Lần duyệt 8
61. Mô phỏng thực hiện thuật toán
41 6 7 7 8 10 123 5
Lần duyệt 9
Kết quả Lần duyệt 9
62. Mô phỏng thực hiện thuật toán
41 6 7 7 8 10 123 5
Lần duyệt 10
Kết quả Lần duyệt 10
64. 1. Xác định bài toán:
• Input: Dãy A gồm N số nguyên khác nhau: a1, a2,…,
an và một số nguyên k (khóa)
VD: Dãy A gồm các số nguyên 5 7 1 4 2 9 8 11
25 51. Và k = 2 (k=6)
• Output: Vị trí I mà ai = k hoặc thông báo không
tìm thấy k trong dãy.
Vị trí của 2 trong dãy là 5 (không tìm thấy 6).
Ví dụ: Bài toán tìm kiếm
65. 2. Ý tưởng:
Tìm kiếm tuần tự được thực hiện một cách tự
nhiên: lần lượt đi từ số hạng thứ nhất, ta so sánh
giá trị số hạng đang xét với khóa cho đến khi gặp
một số hạng bằng khóa hoặc dãy đã được xét hết
mà không tìm thấy giá trị của khóa trên dãy.
Ví dụ: Bài toán tìm kiếm tuần tự
66. 3. Xây dưng bài toán
a. Cách liệt kê:
• Bước 1: Nhập N, các số hạng a1, a2, .. ,an và giá trị
khóa 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 bước 3;
Ví dụ: Bài toán tìm kiếm tuần tự
67. b. Sơ đồ khối
Ví dụ: Bài toán tìm kiếm tuần tự
68. Mô phỏng: Bài toán tìm kiếm tuần tự
A 5 7 1 4 2 9 8 11 25 51
i 1 2 3 4 5 - - - - -
k = 2 và N = 10
i
A[1] = 5 <> 2A[2] = 7 <> 2A[3] = 1 <> 2A[4] = 4 <> 2A[5] = 2 = 2
Với i = 5 thì A[5] = 2 = k
69. 1. 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à một số nguyên k.
VD:Dãy A gồm các số nguyên 2 4 5 6 9 21 22 30
31 33. Và k = 21 (k=25)
Output: Vị trí i mà ai = k hoặc thông báo không tìm
thấy k trong dãy.
Vị trí của 21 trong dãy là 6 (không tìm thấy 25).
Ví dụ: Bài toán tìm kiếm nhị phân
70. 2. Ý 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 vùng tìm kiếm bằng cách so
sánh k với số hạng ở giữa phạm vi tìm kiếm (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 =>việc tìm kiếm thu hẹp, chỉ xét từ
agiữa+1acuối (phạm vi).
Quá trình trên được lặp lại cho đến khi tìm thấy
khóa trên dãy A hoặc phạm vi tìm kiếm bằng rỗng.
Ví dụ: Bài toán tìm kiếm nhị phân
71. 3. Xây dựng thuật toán:
a. Cách liệt kê:
Bước 1: Nhập N, các số hạng a1, a2,.., an và giá trị khóa 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 sang bước 7;
Bước 6: Đầu Giữa + 1;
Bước 7: Nếu Đầu > Cuối thì thông báo không tìm thấy khóa k
trên dãy rồi kết thúc;
Bước 8: Quay lại bước 3.
Ví dụ: Bài toán tìm kiếm nhị phân
72. b. Sơ đồ khối
Ví dụ: Bài toán tìm kiếm nhị phân
73. Mô phỏng: Bài toán tìm kiếm nhị phân
k = 21 và N = 10
Với i = Giua = 6 thì A[Giua] = 21 = k
i 1 2 3 4 5 6 7 8 9 10
A 2 4 5 6 9 21 22 30 31 33
Dau 1 6 6
Cuoi 10 10 7
Giua 5 8 6
A[Giua] 9 30 21
Lần
duyệt
1 2 3