Upload
yuli-richardson
View
53
Download
1
Embed Size (px)
DESCRIPTION
Bài cũ:. 1.Nêu khái niệm bài toán, thuật toán? 2.Trình bày thuật toán bằng cách các bước liệt kê bài toán giải phương trình bậc nhất : ax + bx = 0 (a ≠ 0). LIỆT KÊ :. Bước 1 : Nhập a, b. Bước 2 : Nếu a = 0 thì quay lại bước 1, ngược lại thì qua bước 3. - PowerPoint PPT Presentation
Citation preview
Bài cũ:
1.Nêu khái niệm bài toán, thuật toán?
2.Trình bày thuật toán bằng cách các bước liệt kê bài toán giải phương trình bậc nhất :
ax + bx = 0 (a ≠ 0).
LIỆT KÊ :
Bước 1 : Nhập a, b. Bước 2 : Nếu a = 0 thì quay lại bước 1,
ngược lại thì qua bước 3. Bước 3 : Gán cho x giá trị -b/a, rồi qua bước 4. Bước 4 : Đưa ra kết quả x và kết thúc
Tiết 11
Bài 4. BÀI TOÁN và THUẬT TOÁN (t2)
MÔ TẢ CÁC THAO TÁC TRONG THUẬT TOÁN
Có 2 cách mô tảLiệt kê
Dùng sơ đồ khối
Nêu ra tuần tự các thao tác cần tiến hành
Dùng một số biểu tượng thể hiện các thao tác
: Thể hiện các thao tác so sánh
DÙNG SƠ ĐỒ KHỐI
Quy ước: Trong sơ đồ khối, người ta dùng một số biểu tượng thể hiện các thao tác như :
: Thể hiện các phép toán
: Quy định trình tự thực hiện các thao tác
: Thể hiện các thao tác nhập, xuất dữ liệu
VD 1: Từ thuật toán gpt : ax + b = 0 theo cách liệt kê hãy biểu diễn thuật toán bằng sơ đồ khối
Nhập a, b
a = 0
x = -b/a
Sai
đúng
Đưa ra x, kết thúc
• Bước 1 : Nhập a, b.• Bước 2 : Nếu a = 0 thì quay lại bước 1, ngược lại thì qua bước 3.• Bước 3 : Gán cho x giá trị -b/a, rồi qua bước 4.• Bước 4 : Đưa ra kết quả x và kết thúc.
SƠ ĐỒ KHỐILIỆT KÊ
VD 2: Cho dãy số gồm N số sau (N = 6):11 7 25 4 15 9
Tìm giá trị NHỎ NHẤT của dãy số trên ?
Hãy xác định bài toán? Tìm ý tưởng? Xây dựng thuật toán?
Xác định bài toán
Input : Số nguyên dương N và dãy N số
a1,...,aN. Output : Giá trị lớn nhất (Max) của dãy số.
Tìm ý tưởng?
Gán Min bằng giá trị phần tử đầu tiên của dãy. Lần lượt so sánh Min với các phần tử tiếp theo
trong dãy. Tại mỗi vị trí so sánh : + Nếu Min bé thua giá trị phần tử cần so sánh
trong dãy thì lấy giá trị của phần tử đó gán lại cho Min.
- Khi so sánh đến phần tử cuối cùng trong dãy số thì Min sẽ mang giá trị nhỏ nhất của dãy.
Thuật toán: Liệt kê
Bước 1 : Nhập N và dãy a1,…, aN.Bước 2 : Đặt Min= a1, i=2;Bước 3 : Nếu i<=N thì thực hiện bước 4, nếu không thì chuyển đến bước 5.Bước 4 :
4.1. Nếu Min < ai thì đặt Min =ai.4.2. Tăng i một đơn vị rồi quay về
bước 3Bước 5 : Đưa ra Min rồi kết thúc.
SƠ ĐỒ KHỐI : Nhập N và dãy a1,…, aN
Min = a1 , i = 2
i <=N
Min > ai
Min = ai
i = i+1
Đưa ra Min rồi kết thúc
Sai
đúng
đúng
Sai
BÀI TẬP VỀ NHÀ
1.Trình bày thuật toán bằng 1 trong 2 cách đã học: tìm Max, giá trị lớn nhất của dãy số gồm N số a1,…, aN
2. Bài 3, 4, 5
trang 44 (SGK)
Bài cũ:
1.Trình bày thuật toán sắp xếp tráo đổi ?
2.Trình bày thuật toán tìm kiếm tuần tự?
Tiết 14
Bài 4. BÀI TOÁN và THUẬT TOÁN (t5)
Bài toán:
Cho dãy n số nguyên a1,..,an đã sắp xếp không giảm, số nguyên k.
Hãy tìm và chỉ ra vị trí của k (nếu có) trong dãy.
Trò chơi
Tìm số nguyên trong đoạn từ 1..100
Hãy chuẩn bị số bất kỳ, sau 7 câu
hỏi sẽ tìm được?
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 không giảm, 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 không giảm nên việc tìm kiếm thu hẹp chỉ xét từ a1 agiưa -1;
- Nếu agiưa < k => do dãy A đã được sắp xếp không giảm 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.
Mô phỏng thuật toán tìm kiếm nhị phân
10987654321i
333130222196542A
Với k = 21 và dãy A gồm 10 số hạng như sau:
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 a10;
3331302221
Lượt thứ hai: agiưa là a8 = 30; 30 > 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.
2221
66
21
Thuật toán tìm kiếm nhị phân: các bước liệt kê
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.
Hãy trình bày thuật toán tìm kiếm nhị phân bằng sơ đồ khối từ cách trình bày liệt kê?
BÀI TẬP VỀ NHÀ
Bài 1, 3, 4, 5, 6
trang 27 – 28 (SGK)