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
Trang 1Câ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ũ
Trang 2Bài 4: Bài toán và Thuật toán
(Tiết 1)
GVHD: Thầy Nguyễn Khắc Văn SVTH: Võ Thị Vân
Trang 3- Xét các yêu cầu trong sau:
Bài toán trong toán học.
Trang 4Cá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.
Trang 5Ví 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
Trang 6Bà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
Trang 7Bà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
Trang 81 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ò
Trang 9Bài 4: Bài toán và Thuật toán
(Tiết 2)
Trang 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
Trang 111 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.
Trang 12Ví du: Tìm số lớn nhất trong hai số a, b
Bước 3.1: Nếu b > Max thì Max b;
Bước 3.2: Ngược lại thì Max a;
Trang 132 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
Trang 14Tí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
Trang 15Bài 4: Bài toán và Thuật toán
(Tiết 3)
Trang 161 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
Trang 173 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: i← 2;
• Bước 5: Nếu i là ước của N thì đến bước 7;
• Bước 6: i← i+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
Trang 18b Sơ đồ khối
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
Trang 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
Trang 20Cá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: i← 2;
Bước 4: Nếu i<= và I không là ước của N thì i← i+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
Trang 21Sơ đồ khối
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
Trang 24Bài 4: Bài toán và Thuật toán
(Tiết 4)
Trang 25Dãy A chưa được sắp xếp Dãy A được sắp xếp
Trang 272 Ý 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
Trang 283 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: M ← N
• 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
Trang 293 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
Trang 30• 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
Trang 31b Sơ đồ khối
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
Trang 32Mô phỏng thực hiện thuật toán
Lần duyệt 1
Trang 33Mô phỏng thực hiện thuật toán
Lần duyệt 1
Trang 34Mô phỏng thực hiện thuật toán
Lần duyệt 1
Trang 35Mô phỏng thực hiện thuật toán
Lần duyệt 1
Trang 36Mô phỏng thực hiện thuật toán
Lần duyệt 1
Trang 37Mô phỏng thực hiện thuật toán
Lần duyệt 1
Trang 38Mô phỏng thực hiện thuật toán
Lần duyệt 1
Trang 39Mô phỏng thực hiện thuật toán
Lần duyệt 1
Trang 40Mô phỏng thực hiện thuật toán
Lần duyệt 1
Trang 41Mô phỏng thực hiện thuật toán
Lần duyệt 1
Kết quả Lần duyệt 1
Trang 42Mô phỏng thực hiện thuật toán
6
Lần duyệt 2
Trang 43Mô phỏng thực hiện thuật toán
6
Lần duyệt 2
Trang 44Mô phỏng thực hiện thuật toán
6
Lần duyệt 2
Trang 45Mô phỏng thực hiện thuật toán
6
Lần duyệt 2
Trang 46Mô phỏng thực hiện thuật toán
6
Lần duyệt 2
Trang 47Mô phỏng thực hiện thuật toán
6
Lần duyệt 2
Trang 48Mô phỏng thực hiện thuật toán
6
Lần duyệt 2
Trang 49Mô phỏng thực hiện thuật toán
6
Lần duyệt 2
Kết quả Lần duyệt 2
Trang 50Mô phỏng thực hiện thuật toán
6
Lần duyệt 3
Trang 51Mô phỏng thực hiện thuật toán
6
Lần duyệt 3
Kết quả Lần duyệt 3
Trang 52Mô phỏng thực hiện thuật toán
6
Lần duyệt 4
Trang 53Mô phỏng thực hiện thuật toán
6
Lần duyệt 4
Kết quả Lần duyệt 4
Trang 54Mô phỏng thực hiện thuật toán
6
Lần duyệt 5
Trang 55Mô phỏng thực hiện thuật toán
6
Lần duyệt 5
Kết quả Lần duyệt 5
Trang 56Mô phỏng thực hiện thuật toán
7
Lần duyệt 6
Trang 57Mô phỏng thực hiện thuật toán
4
Lần duyệt 6
Kết quả Lần duyệt 6
Trang 58Mô phỏng thực hiện thuật toán
7
Lần duyệt 7
Trang 59Mô phỏng thực hiện thuật toán
5
Lần duyệt 7
Kết quả Lần duyệt 7
Trang 60Mô phỏng thực hiện thuật toán
5
Lần duyệt 8
Kết quả Lần duyệt 8
Trang 61Mô phỏng thực hiện thuật toán
4
Lần duyệt 9
Kết quả Lần duyệt 9
Trang 62Mô phỏng thực hiện thuật toán
4
Lần duyệt 10
Kết quả Lần duyệt 10
Trang 63Bài 4: Bài toán và Thuật toán
(Tiết 5)
Trang 64• 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
Trang 652 Ý 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ự
Trang 663 Xây dưng bài toán
• 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ự
Trang 67b Sơ đồ khối
Ví dụ: Bài toán tìm kiếm tuần tự
Trang 68Mô phỏng: Bài toán tìm kiếm tuần tự
Trang 691 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
Trang 702 Ý 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+1→acuố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
Trang 713 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
Trang 72b Sơ đồ khối
Ví dụ: Bài toán tìm kiếm nhị phân
Trang 73Mô phỏng: Bài toán tìm kiếm nhị phân
Trang 74Cảm ơn các em!