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

 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?

 

ppt37 trang | Chia sẻ: Đạt Toàn | Ngày: 06/05/2023 | Lượt xem: 196 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng môn Tin học - Bài 4: Bài toán và thuật toán, để xem tài liệu hoàn chỉnh bạn hãy click vào nút TẢi VỀ
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ụ 1: 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ụ 2: 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. 
BÀI 4. BÀI TOÁN VÀ THUẬT TOÁN 
Xét ví dụ : 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. 
 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. 
 B1: Nhập a, b, c; 
 B2: Tính  = b 2 + 4ac; 
 B3: Nếu  PT vô nghiệm => Kết thúc; 
 B4: Nếu  = 0 => PT có nghiệm kép x = -b/2a => Kết thúc; 
 B5: Nếu  > 0 => PT có hai nghiệm x1, x2 = (-b   )/2a => Kết thúc; 
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 
Quy ư ớc các khối trong s ơ đồ thuật toán 
Dựng để nhập và xuất dữ liệu. 
Dùng để thể hiện các phép toán 
So sánh (xét điều kiện rẽ nhánh theo một trong hai điều kiện đúng, sai) 
Quy định trình tự thực hiện các phép toán 
 ĐK 
đ 
S 
Cách 2 Vẽ s ơ đồ khối 
Nhập vào a, b, c 
D 
= b 
- 
4ac 
D 
< 0 
PT vô nghiệm 
D 
= 0 
 PT có nghiệm x= - 
 b/2a 
KT 
đ 
s 
Sơ đồ thuật toán giải phương trình bậc hai 
2 
PT có 2 nghiệm 
x1,x2 
 = ( 
-b 
 ±ÖD 
 )/2a 
B1 
B2 
B3 
B4 
B5 
s 
đ 
 a,b,c= 1 3 5 
D = 3*3 - 4*5 = - 11 
-11 < 0 
PT vô nghiệm 
D 
= 0 
PT có nghiệm x = 
-b/2a 
KT 
-11 
 
5 
3 
1 
c 
 b 
 a 
S 
PT có 2 nghiệm x1, x2 = (-b  )/2a 
Đ 
S 
D = b*b - 4*a*c 
 nh ập vào a,b,c 
 < 0 
Mô phỏng thuật toán giải phương trình bậc hai 
Bộ TEST 1: 	 
 a,b,c= 1 2 1 
D = 2*2 - 4*1*1 = 0 
PT vô nghiệm 
PT có nghiệm x=-b/2a 
KT 
BD 
0 
 
1 
2 
1 
c 
 b 
 a 
S 
PT có 2 nghiệm  x1, x2 = (-b  )/2a 
Đ 
S 
D = b*b - 4*a*c 
 nh ập vào a,b,c 
 < 0 
Mô phỏng thuật toán giải phương trình bậc hai 
Bộ TEST 2: 	 
Đ 
 = 0 
PT có nghiệm kép x=-1 
 a,b,c= 1 -5 6 
D = 25 - 24 = 1 
PT vô nghiệm 
PT có nghiệm x=-b/2a 
KT 
BD 
1 
 
6 
-5 
1 
c 
 b 
 a 
S 
PT có 2 nghiệm x1, x2 = (-b  )/2a 
Đ 
S 
D = b*b - 4*a*c 
 nh ập vào a,b,c 
 < 0 
Mô phỏng thuật toán giải phương trình bậc hai 
Bộ TEST 3: 	 
Đ 
 = 0 
PT có nghiệm x1 = 3 
 x2 = 2 
 Để giải một bài toán nào đó trong tin học ta cần làm theo các bước sau: 
Tìm input, output của bài toán 
Từ những dữ kiện đã có, tìm ra ý tưởng để giải bài toán. 
Viết thuật toán bằng cách liệt kê các bước thực hiện hoặc sử dụng sơ đồ khối. 
 Bi ến và vòng lặp 
Biến: Là một số có thể thay đổi giá trị 
Vòng lặp là lặp đi lặp lại một công việc nào đó theo một Chu kỳ 
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 a 1 , a 2 , , a N (a i với i: 1 N). 	  OUTPUT: Số lớn nhất (Max) của dãy số. 
Ý 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. 
Cách 1: Liệt kê các bước 
 B1: Nhập N và dãy a 1 ,, a N ; B2: Max  a 1 ; 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 a i > Max thì Max  a i ;	Bước 4.2: i  i+1 rồi quay lại B3. 
Đ 
S 
Đ 
S 
Nhập N và dãy a1,,aN 
Max  a1 ; i  2 
i > N ? 
a i > Max ? 
 Max  a i 
i  i + 1 
Đ ư a ra Max rồi kết thúc 
 B1: Nhập N và dãy a 1 ,,a N ; 
 B2: Max  a 1 ; i  2; 
 B3: Nếu i > N th ì đ ư a ra giá trị  Max rồi kết thúc; 
 B4 : 4.1: Nếu a i > Max th ì Max  a i ; 
 4.2: i  i + 1 rồi quay lại B3. 
Cách 2: S ơ đồ khối 
Đ 
S 
Đ 
S 
Nhập N và dãy a1,,aN 
Max  a1 ; i  2 
I > N ? 
a i > Max ? 
 Max a i 
i  i+1 
Đ ư a ra Max rồi kết thúc 
Max = 
i = 
A 
7 
7 
5 
5 
5 
5 
4 
3 
2 
6 
7 
4 
1 
5 
N=5 ; A [ 5 1 4 7 6 ] 
Max  5 ; i  2 
2 > 5 ? 
1> 5 ? 
i  2+1 
3 > 5 ? 
4> 5 ? 
i 3+1 
4 > 5 ? 
7 > 5 ? 
 Max 7 
4 
i 4+1 
5 > 5 ? 
7 > 7 ? 
i 5+1 
6 > 5 ? 
Số lớn nhất của dãy là 7 
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? 
ý t ư ởng: Xét các tr ư ờng hợp 
Các em hãy nêu định nghĩa 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ố. 
 - 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ố.  
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 
Chia hết 
Không 
Chia hết không? 
45/3 
45/2 
N/i 
3 
2 
i 
45 không là số nguyên tố. 
 29 là số nguyên tố. 
 Tr ư ờng hợp 2: N = 29 ([  29 ] = 5) 
 Tr ư ờng hợp 1: N = 45 ([  45 ] = 6) 
Mô phỏng thuật toán kiểm tra tính nguyên tố 
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 < 4 thông báo N là nguyên tố rồi kết thúc; 
B4: i 2; 
B5: Nếu i > [ 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. 
Nhập N 
N =1 ? 
N < 4 ? 
i  2 
i>[  N ] 
N có chia hết cho i ? 
i  i +1 
Thông báo N là số nguyên tố rồi kết thúc. 
Thông báo N không là số nguyên tố rồi kết thúc. 
Đ 
S 
S 
Đ 
S 
S 
Đ 
Đ 
Cách 2 
Vẽ s ơ đồ khối 
THUẬT TOÁN SẮP XẾP 
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). 
Hình a 
Hình b 
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 a 1 , a 2 ,, a N .OUTPUT: Dãy A đ ư ợc sắp xếp thành dãy không giảm. 
ý 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. 
 Với N = 6 và dãy A gồm 6 số hạng nh ư sau : 
3 
5 
9 
8 
1 
7 
 L ư ợt thứ nhất: 
3 
5 
9 
8 
1 
7 
3 
5 
8 
9 
1 
7 
3 
5 
8 
1 
9 
7 
3 
5 
8 
1 
7 
9 
 L ư ợt thứ hai: 
3 
5 
8 
1 
7 
9 
3 
5 
1 
8 
7 
9 
3 
5 
1 
7 
8 
9 
 L ư ợt thứ ba: 
3 
5 
1 
7 
8 
9 
3 
1 
5 
7 
8 
9 
3 
1 
5 
7 
8 
9 
1 
3 
5 
7 
8 
9 
 L ư ợt thứ t ư : 
Mô phỏng thuật toán sắp xếp bằng tráo đổi 
Cách 1: Liệt kê các b ư ớc 
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 đã sắp xếp rồi kết thúc; 
B4: M  M - 1; i  0; 
B5: i  i +1; 
B6: Nếu i > M thì quay lại B3 ; 
B7: Nếu a i > a i+1 thì tráo đổi a i và a i+1 cho nhau; 
B8: Quay lại B5. 
Nhập N và a 1 , a 2 ,..., a N 
M  N 
M < 2 ? 
M  M - 1; i  0 
i  i + 1 
i > M ? 
a i > a i+1 ? 
Tráo đổi 
a i và a i+1 
Đưa ra A đã sắp xếp 
rồi kết thúc 
Đ 
Đ 
Đ 
S 
S 
S 
Cách 2 
Vẽ s ơ đồ khối 
THUẬT TOÁN TÌM KIẾM 
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? 
Bông trốn đâu nhỉ ? 
C1: Tìm kiếm tuần tự 
 ( mở từng mũ) 
C2: Do các mũ đã sắp xếp 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! 
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 a 1 , a 2 ,, a N đôi một khác nhau và số nguyên k. OUTPUT: Chỉ số i mà a i = k hoặc thông báo không có số hạng nào của A bằng k. 
5 
4 
3 
2 
1 
I 
51 
25 
11 
8 
9 
2 
4 
1 
7 
5 
A 
 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: 
 T ại vị trí i = 5 có a 5 = 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ó a i có giá trị bằng 6 
5 
Ý 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. 
Cách 1: Liệt kê các b ư ớc 
 B ư ớc 1: Nhập N, các số hạng a 1 , a 2 ,, a N  và giá trị khoá k; 
 B ư ớc 2: i  1; 
 Bước 3: Nếu a i = 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. 
Nhập N, a 1 , a 2 ,..., a N 
 và k 
i  1 
a i = k ? 
Đ ư a ra i 
rồi kết thúc 
Đ 
S 
Đ 
i  i + 1 
i > N ? 
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 
S 
Cách 2 
Vẽ s ơ đồ khối 
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 (a giữa ), khi đó chỉ xảy ra một trong ba trường hợp: 	- Nếu a giữa = k => tìm được chỉ số, kết thúc;	- Nếu a giữ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ừ a 1  a giữa - 1 ; 	- Nếu a giữ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ừ a giữa + 1  a N . 
Quá trình trên được lặp đi lặp lại cho đến khi tìm được OUTPUT. 
Mô phỏng thuật toán tìm kiếm nhị phân 
10 
9 
8 
7 
6 
5 
4 
3 
2 
1 
i 
33 
31 
30 
22 
21 
9 
6 
5 
4 
2 
A 
 Với k = 21 và dãy A gồm 10 số hạng nh ư sau: 
L ư ợt thứ nhất : a giữa là a 5 = 9; 9 < 21   vùng tìm kiếm thu hẹp trong phạm vi từ a 6  a 10 ; 
33 
31 
30 
22 
21 
L ư ợt thứ hai : a giữa là a 8 = 30; 30 > 21 vùng tìm kiếm thu hẹp trong phạm vi từ a 6  a 7 ; 
L ư ợt thứ ba : a giữa là a 6 = 21; 21= 21 	  Vậy số cần tìm là i = 6. 
22 
21 
6 
6 
21 
 Liệt kê các b ư ớc 
 B ư ớc 1: Nhập N, các số hạng a 1 , a 2 ,, a N  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 a Giữa = k thì thông báo chỉ số Giữa 	 rồi kết thúc; 
 B ư ớc 5: Nếu a Giữ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. 
1. Khái niệm bài toán 
BÀI TOÁN VÀ THUẬT 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. 

File đính kèm:

  • pptbai_giang_mon_tin_hoc_bai_4_bai_toan_va_thuat_toan.ppt
Bài giảng liên quan