Lùa chän hoÆc thiÕt kÕ thuËt to¸n Quan träng nhÊt Mét thuËt to¸n chØ gi¶i ® ợc một bài toán nhất định, nhưngcó thÓ cã nhiÒu thuËt to¸n kh¸c nhau cïng gi¶i mét bµi to¸n ThuËt to¸n t×m ki[r]
Trang 1Héi gi¶ng chµo mõng ngµy nhµ gi¸o viÖt nam
Bµi 6 Gi¶i bµi to¸n trªn m¸y tÝnh
Gi¸o viªn: NguyÔn HuyÒn Trang Trung t©m GDTX Ba §×nh
Trang 2Giải bài toán trên máy tính
Xác định bài toán
Lựa chọn hoặc thiết kế thuật toán Viết chương trình
Hiệu chỉnh
Trang 3• Xác định: Input, Output và quan hệ giữa chúng
• Ví dụ: Trong bài toán tin học, khi đề cập tới số tuổi N của một người ta phải chọn N là loại số nguyên dương, có thể chỉ
rõ phạm vi giá trị của N từ 0 tới 150
• Mục đích: để lựa chọn một cách thích hợp
ỹ Thuật toán
ỹ Cách thể hiện các đại lượng đã cho, các đại
lượng phát sinh trong quá trình giải bài toán
ỹ Ngôn ngữ lập trình
1 Xác định bài toán
Trang 42 Lựa chọn hoặc thiết kế thuật toán
Một thuật toán chỉ giải đư ợc một bài toán nhất định, nhưng có thể có nhiều thuật toán khác nhau cùng giải một bài toán
Thuật toán
tìm kiếm
tuần tự
Thuật toán tìm kiếm nhị phân
Bài toán tìm kiếm
Quan trọng nhất
Trang 5(Yếu tố thời gian còn phụ thuộc: ngôn ngữ
lập trình, hệ thống, cấu hình máy …)
ỹ Thời gian thực hiện nhanh (Số lượng các phép toán ít)
ỹ Tốn ít bộ nhớ
ỹ Dễ hiểu
ỹ Trình bày dễ nhìn
2 Lựa chọn hoặc thiết kế thuật toán
a) Tiêu chuẩn lựa chọn thuật toán
Trang 6Ví dụ : Tìm ư ớc chung lớn nhất (ƯCLN) của hai số nguyên dương M và N
2 Lựa chọn hoặc thiết kế thuật toán
b) Diễn tả thuật toán
a) Tiêu chuẩn lựa chọn thuật toán
• Cách liệt kê
• Sơ đồ khối
Trang 7ỉ Xác định bài toán
ỹ Input : Cho 2 số nguyên dương M và N
ỹ Output : ƯCLN (M , N)
ỉ ý tưởng : Sử dụng những điều đã biết sau:
ỹ Nếu M = N thì giá trị chung đó là ƯCLN của M và N
ỹ Nếu M < N thì ƯCLN (M , N) = ƯCLN (M , N – M)
ỹ Nếu M > N thì ƯCLN (M , N) = UCLN ( M – N , N)
Ví dụ : Tìm ƯCLN (M , N)
Trang 8ỉ Thuật toán
• Cách liệt kê
Bước 1 Nhập M, N
Bước 2 Nếu M = N thì lấy giá trị chung này làm ƯCLN rồi chuyển đến bước 5
Bước 3 Nếu M > N thì M M – N rồi quay lại bước 2 Bước 4 Nếu M < N thì N N – M rồi quay lại bước 2 Bước 5 Đưa ra kết quả ƯCLN rồi kết thúc
Trang 9• Sơ đồ khối
Nhập M và N
M = N ?
Đưa ra M
rồi kết thúc
Đúng
M > N ? Sai
M M – N
Đúng
N N – M Sai
ỉ Thuật toán
• Cách liệt kê
Trang 10VÝ dô m« pháng viÖc thùc hiÖn thuËt to¸n
T×m ¦CLN (M , N)
M = 10
N = 25
M = 10
N = 15
N N – M LÇn 1
M = 10
N = 5
N N – M LÇn 2
N N – M LÇn 3
M = 5
N = 5
KÕt qu¶
¦CLN (10 , 25) = 5
Trang 11VÝ dô m« pháng viÖc thùc hiÖn thuËt to¸n
T×m ¦CLN (M , N)
N = 7
M = 2
LÇn 1
N N - M
N = 5
M = 2
LÇn 2
N N - M
N = 3
M = 2
LÇn 3
N N - M
N = 1
M = 2
LÇn 4
M M - N
N = 1
M = 1
KÕt qu¶
¦CLN (7 , 2) = 1
Trang 12VÝ dô m« pháng viÖc thùc hiÖn thuËt to¸n
T×m ¦CLN (M , N)
N = 7
M = 2
LÇn 1
N N - M
N = 5
M = 2
LÇn 2
N N - M
N = 3
M = 2
LÇn 3
N N - M
N = 1
M = 2
LÇn 4
M M - N
N = 1
M = 1
KÕt qu¶
Trang 133 Viết chương trình
• Là chọn cách tổ chức dữ liệu và sử dụng ngôn
ngữ lập trình để diễn đạt đúng thuật toán.
• Chú ý:
ỹ Khi viết chương trình trong ngôn ngữ nào thì phải
tuân thủ đúng quy định ngữ pháp của ngôn ngữ đó.
ỹ Chương trình dịch chỉ có thể phát hiện và thông báo
các lỗi về mặt ngữ nghĩa
Trang 144 Hiệu chỉnh
a) Mục đích: Kiểm tra chương trình để phát hiện và sửa lỗi b) Nội dung:
+ Thử chương trình bằng cách thực hiện nó với một số
bộ Input tiêu biểu (phụ thuộc vào đặc trưng của bài toán)
và bằng cách nào đố ta đã biết trước Output (Các bộ Input
và Output tương ứng này được gọi là các Test)
+ Nếu có sai sót, ta sửa chương trình rồi thử lại
+ Nếu kết quả hiệu chỉnh cho thấy ngôn ngữ lập trình hoặc thuật toán không phù hợp ta phải quay lại lựa chọn
Trang 154 Hiệu chỉnh
a) Mục đích
b) Nội dung
c) Ví dụ
Giải PT bậc hai ax 2 + bx + c = 0
> 0: a = 1, b = - 5, c = 6 (Chương trình dưa ra 2 nghiệm
phân biệt
= 0: a = 1, b = - 4, c = 4 (chương trình đưa ra 1 nghiệm)
< 0: a = 1, b = 4, c = 8 (chương trình thông báo PT vô
nghiệm)
Trang 16Hãy thảo luận tìm ra các Test tiêu biểu để kiểm tra chương trình :
Giải phương trình ax + b = 0
4 Hiệu chỉnh
a) Mục đích
b) Nội dung
c) Ví dụ
Trang 175 Viết Tài liệu
• Nội dung: Mô tả chi tiết toàn bộ bài toán, thuật toán, thiết kế chương trình, kết quả thử nghiệm và hướng dẫn sử dụng
• Mục đích:
+ Hỗ trợ người sử dụng chương trình
+ Đề xuất những khả năng hoàn thiện thêm
Trang 18Dặn dò, Hướng dẫn về nhà
Ghi nhớ:
• Các bước giải bài toán trên máy tính
• Tiêu chuẩn lựa chọn thuật toán
• Nội dung và mục đích của bước hiệu chỉnh
Làm bài tập 3 (SGK/51)
Hướng dẫn: vận dụng thuật toán giải phương trình bậc hai đã biết