Các khái niệm 1z Thuật toán• Cách hiểu đơn giản• Tập các hướng dẫn thực hiện một công việc.• Tập hữu hạn các hướng dẫn rõ ràng để người giải toán có thể theo đó mà giải quyết được vấn đề
Trang 1CHƯƠNG 4:
CHƯƠNG TRÌNH & GIẢI THUẬT
Trang 2Các khái niệm (1)
z Thuật toán
• Cách hiểu đơn giản
• Tập các hướng dẫn thực hiện một công việc.
• Tập hữu hạn các hướng dẫn rõ ràng để người giải toán có thể theo đó mà giải quyết được vấn đề.
• Một phương pháp thể hiện lời giải của vấn đề.
• Algorithm: nhà toán học Trung Á
• Muhammad Bin Musa Al-Khwarizmi
• http://www2.sjsu.edu/depts/Museum/alkhwa.html
Trang 3Các khái niệm (2)
z Thuật toán (tt)
• Trong khoa học máy tính
• Một dãy hữu hạn các bước rõ ràng và thực thi được.
• Quá trình hành động theo các bước này phải dừng và
cho được kết quả như mong muốn.
• Tính xác định
• Hướng dẫn giải rõ ràng và đúng
• Tính hữu hạn
Trang 5• 1.Lập danh sách các môn học theo tên, số đvht
• 2.Sắp thứ tự các môn học giảm dần theo số đvht
• 3.Chọn ra một môn học có nhiều đvht nhất
• Câu hỏi???
Trang 6Các khái niệm (5)
z Tính mập mờ (tt):
• Phân biệt mập mờ và chọn lựa có quyết định
• Mập mờ là thiếu thông tin hoặc có nhiều chọn lựa nhưng không đủ điều kiện để quyết định
• Chọn lựa có quyết định là hoàn toàn xác định duy nhất
trong điều kiện cụ thể của vấn đề
• Sửa lại:
• 3.Chọn ra một môn học có nhiều đvht nhất
• 3.1 Nếu chỉ có một môn học nhiều đvht nhất: chọn một
• 3.2 Nếu có nhiều môn học cùng số đvht: sắp xếp tăng dần theo tên môn học trong thứ tự từ điển rối chọn môn đầu tiên.
Trang 7Các khái niệm (6)
z Tính thực thi được:
• Hiển nhiên
• Chỉ xét trong điều kiện hiện tại của bài toán
• Cho ví dụ về điều kiện hiện tại:???
z Tính dừng:
• Không dừng: Lặp vô tận, bị quẫn
• Dễ vi phạm nhất
Trang 8Các khái niệm (7)
z Tính dừng -Ví dụ:
• Tính tổng các số nguyên dương lẻ trong khoảng từ 1 đến n ta có thuật toán sau :
• B1 Hỏi giá trị của n
Trang 9Các khái niệm (8)
z Tính dừng -Ví dụ:
• Chỉ dừng khi n chẵn
• Khi n lẻ phải thay B4 bằng:
• B4 Nếu i >= n+1 thì sang bước B8, ngược lại sang bước B5
z Tính đúng:
• Chứng minh thuật toán đúng!!!
• Khó đạt được nhất
Trang 11Các khái niệm (10)
z Các đặc trưng khác của thuật toán
• Ðầu vào và đầu ra (input/output)
• Tính hiệu quả (effectiveness): theo tiêu chuẩn
• Khối lượng tính toán, không gian và thời gian thi hành
• Là yếu tố quyết định để đánh giá, chọn lựa
• Nhiều phương pháp để đánh giá tính hiệu quả của thuật toán
• Tính tổng quát (generalliness) :
• Áp dụng được cho mọi trường hợp của bài toán
•
Trang 13Các khái niệm - Ví dụ (2)
• 3 Trường hợp a khác 0 thì
• 3.1 Tính giá trị D = b2-4ac
• 3.2 Nếu D > 0 thì
• 3.2.1 Phương trình có hai nghiệm phân biệt x1,x2
• 3.2.2 Giá trị của hai nghiệm được tính theo công thức
Trang 15Các khái niệm - Ví dụ (4)
z Bài toán : Cho hai số nguyên dương a và b Tìm ước số chung lớn nhất của a và b
z Thuật toán Euclid
• 1 Yêu cầu cho biết giá trị của a, b.
• 2 a0 = a
• 3 b0 = b
• 4 i = 0
Trang 16Các khái niệm - Ví dụ (5)
• 5 Nếu ai khác bi thì thực hiện các thao tác sau, ngược lại qua bước 7
Trang 17Các phương pháp biểu diễn
z Thuật toán:
• Một phương pháp thể hiện lời giải bài toán
• Phải tuân theo một số quy tắc nhất định
z Có 3 phương pháp biểu diễn thuật toán :
• Dùng ngôn ngữ tự nhiên
• Dùng lưu đồ-sơ đồ khối (flowchart).
• Dùng mã giả (pseudocode).
Trang 18Ngôn ngữ tự nhiên
z Ngôn ngữ thường ngày:
• Liệt kê các bước của thuật toán, quá trình thực hiện lần lượt (trừ khi có yêu cầu nhảy_
• Không thể hiện rõ cấu trúc của thuật toán
• Dài dòng, có thể gây hiểu lầm hoặc khó hiểu
• Không yêu cầu người viết hay đọc nắm quy tắc
• Không có một quy tắc cố định
• Tính dễ đọc:
• viết các bước con lùi vào bên phải
• đánh số bước theo quy tắc phân cấp như 1, 1.1,
Trang 19Lưu đồ - sơ đồ khối (1)
z Công cụ trực quan diễn đạt thuật toán
• Biểu diễn bằng mô hình – hình vẽ
z Theo dõi được:
• sự phân cấp các trường hợp
• quá trình xử lý của thuật toán
z Được dùng trong những thuật toán
• rắc rối
Trang 20Lưu đồ - sơ đồ khối (2)
z Phân biệt hai loại thao tác:
• Chọn lựa theo một điều kiện nào đó
• Xử lý, hành động
Trang 21Lưu đồ - sơ đồ khối (3)
z Chọn lựa theo một điều kiện nào đó
• Decision
• Biểu diễn bằng một hình thoi, bên trong chứa biểu thức điều kiện
• Ví dụ: thao tác "nếu a = b thì thực hiện thao
tác B2, ngược lại thực hiện B4" là thao tác
chọn lựa
Trang 22Lưu đồ - sơ đồ khối (4)
z Xử lý, hành động
• Process
• Biểu diễn bằng một hình chữ nhật, bên trong chứa nội dung xử lý
• Ví dụ: "Chọn một môn học và in ra." là một
thao tác thuộc loại hành động
Trang 23Lưu đồ - sơ đồ khối (5)
z Quá trình thực hiện các thao tác:
• Đường đi – route
• Biểu diễn bằng cung có hướng
• nối giữa 2 thao tác: thực hiện lần lượt
Trang 24Lưu đồ - sơ đồ khối (6)
z Thao tác chọn lựa: có thể có hai hướng đi
• một hướng ứng với điều kiện thỏa
• một hướng ứng với điều kiện không thỏa
• 2 cung có nhãn
• Đ/Đúng,Y/Yes
• S/Sai,N/No
Trang 25Lưu đồ - sơ đồ khối (7)
z Ðiểm cuối (terminator)
• Biểu diễn bằng hình ovan
• Điểm khởi đầu
• chỉ có cung đi ra
• bên trong ovan ghi chữ: bắt đầu/start/begin
• Điểm kết thúc
• Chỉ có cung đi vào
• bên trong ovan ghi chữ: kết thúc/end
Trang 26Phương trình thuật toán giải pt bậc 2 Đường chấm ứng với trường hợp nghiệm kép, ví dụ: a=1,b=2,c=1
Trang 27Lưu đồ - sơ đồ khối (8)
z Điểm nối (connector)
• Nối các phần khác nhau của
Trang 28Mã giả (pseudo code) (1)
z Vay mượn các cú pháp của một ngôn ngữ lập
trình
• dùng một phần ngôn ngữ tự nhiên
• bị phụ thuộc vào ngôn ngữ lập trình.
z Mọi ngôn ngữ lập trình đều có những thao tác
Trang 29Mã giả (2)
Một đoạn mã giả của thuật toán giải pt bậc hai
if Delta > 0 then begin