Please enable JavaScript.
Coggle requires JavaScript to display documents.
Lập kế hoạch chương trình máy tính (Planning the computer program) -…
Lập kế hoạch chương trình máy tính (Planning the computer program)
Mục đích của lập kế hoạch
Mục đích: Để đảm bảo các lệnh được viết đúng,Trình tự thực hiện các lệnh phải đúng → Để tạo một chương trình đúng và hiệu quả.
Để lập kế hoạch chương trình máy tính cần xác định
Có cái gì hay cái gì mình đã biết
Các bước thực hiện và trình tự thực hiện các bước như thế nào
Kết quả cuối cùng là gì
Giải thuật là gì?
Giải thuật còn gọi là thuật toán dùng để chỉ logic của chương trình, mô tả thứ tự các lệnh cần thực hiện để giải quyết bài toán.Được xây dựng trên cơ sở của cấu trúc dữ liệu đã được chọn.
Các tính chất của giải thuật
Tính xác định (definiteness): các lệnh phải được xác định rõ ràng và phải được thực hiện chính xác, nhất quán.
Tính hữu hạn (finiteness): các lệnh được thực thi
trong khoảng thời gian hữu hạn.
Tính hiệu quả (effectiveness): được đánh giá dựa trên một số tiêu chuẩn như khối lượng tính toán, không gian và thời gian được sử dụng.
Tính tổng quát (Generality): giải thuật áp dụng được
cho tất cả các bài toán có dạng tương tự
Tính đúng đắn (Correctness): giải thuật phải cho kết
quả đúng như yêu cầu bài toán đặt ra.
Ngoài ra một giải thuật còn phải có đầu vào (input) và
đầu ra (output).
Các đặc điểm của chất lượng của giải thuật
Time requirement: thời gian yêu cầu để thực thi chương trình. Thời gian yêu cầu càng ít, giải thuật càng tốt hơn
Memory requirement: Yêu cầu bộ nhớ càng ít, giải
thuật càng tốt
Accuracy of solution: Giải thuật này có thể cho kết
quả chính xác hơn giải thuật kia
Generality: Mỗi giải thuật khái quát hóa có thể giải quyết nhiều dữ liệu đầu vào khác nhau tốt hơn chỉ giải quyết một dữ liệu đầu vào
Biểu diễn giải thuật
Bằng chương trình - As programs
Bằng bảng quyết định - As decision tables
Là các quyết định dùng để định nghĩa 1 cách rõ ràng
và chính xác phát biểu bài toán dưới dạng bảng
Là một công cụ hiệu quả để định nghĩa các chương trình có logic phức tạp, đặc biệt là chương trình có nhiều rẽ nhánh
Gồm hai thành phần: điều kiện và hành động
Bằng lưu đồ - As flowcharts
Lưu đồ được dùng như một công cụ để lập kế hoạch cho chương trình, chứa một chuỗi các bước cần thiết để giải quyết bài toán bằng máy tính.
Lưu đồ hoạt động như một lộ trình cho lập trình viên và hướng dẫn họ cách đi từ điểm bắt đầu đến điểm kết thúc.
Lưu đồ là một bản vẽ mô tả một thuật toán.
Bằng mã giả - As pseudocodes
Mã giả không có bất cứ quy tắc cú pháp nào để
trình bày lệnh
Mã giả (Pseudocode) một công cụ phân tích lập trình khác dùng để lập kế hoạch cho logic chương trình
Dễ dàng chuyển đổi mã giả thành ngôn ngữ lập
trình
Mã giả nhấn mạnh thiết kế chương trình, mã giả cũng được gọi là Ngôn Ngữ Thiết Kế Chương Trình (Program Design Language – PDL)
Lưu đồ
Tại sao phải sử dụng lưu đồ
Khi vẽ một lưu đồ, lập trình viên không quan tâm đến yếu tố ngôn ngữ lập trình. Họ quan tâm hoàn toàn đến tính logic của chương trình
Bất kỳ lỗi cú pháp nào của chương trình có thể bị bỏ qua. Các lỗi logic có thể phát hiện một cách dễ dàng hơn trong chương trình
Khi đã có một lưu đồ, lập trình viên có thể không quan tâm đến tính logic nữa mà chỉ quan tâm đến viết mã lệnh cho những thao tác theo lưu đồ
Các mức Flowchart (tổng quát, ít chi tiết)
Macro flowchart (tổng quát, ít chi tiết)
Micro flowchart (chi tiết)
Sử dụng lưu đồ - Sơ đồ khối
Khối giới hạn (hình elip): chỉ thị bắt đầu và kết thúc
Khối vào ra (hình bình hành): nhập/xuất dữ liệu
Khối lựa chọn (hình thoi): tùy điều kiện sẽ rẽ nhánh
Khối thao tác: ghi thao tác cần thực hiện
Đường đi (mũi tên): chỉ hướng thao tác tiếp theo
Các qui tắc của Flowchart
Vẽ Flowchart cho dòng logic chính trước, kế đến
vẽ chi tiết
Giữ cố định mức chi tiết của Flowchart
Không vẽ quá chi tiết Flowchart. Chi tiết của
Flowchart có thể xem trong chương trình
Các phát biểu trong Flowchart nên rõ ràng và dễ
hiểu
Thống nhất trong việc sử dụng tên và các biến
trong Flowchart
Nếu Flowchart cần thêm một trang mới, nên chia
flowchart ở điểm input và output
Ưu điểm
Giao tiếp tốt hơn.
Phân tích hiệu quả
Kết hợp hiệu quả
Sơ đồ chương trình hợp lý
Tạo mã lệnh hiệu quả
Việc gỡ lỗi hệ thống dễ dàng
Việc kiểm tra hệ thống hiệu quả
Một Flowchart rất hữu ích trong việc kiểm tra dữ liệu và các hoạt động của chương trình
Hạn chế
Rất tốn thời gian và công sức để vẽ, đặc biệt cho
một chương trình lớn và phức tạp
Mọi sự thay đổi và chỉnh sửa trong một chương
trình sẽ phải vẽ lại cả Flowchart
Không thích hợp với các chương trình không ổn
định hay thay đổi
Bảng quyết định
Các bước xây dựng
Xác định đúng bài toán cần giải quyết bởi máy tính
Liệt kê tất cả những điều kiện được kiểm tra trong
bài toán
Liệt kê những hành động tương ứng với các điều
kiện tương ứng
Hình thành một bảng quyết định
Ưu điểm: thường được sử dụng cùng một
chỗ với Flowchart
Mô tả ngắn gọn cho các logic phức tạp
Dễ dàng tạo và thay đổi hơn Flowchart
Cung cấp tài liệu ngắn gọn hơn. Một bảng quyết định
nhỏ có thể thay thế cho nhiều trang của Flowchart
Hạn chế
Bảng quyết định lớn có thể trở nên khó hiểu và khó
điều chỉnh
Flowchart có khả năng diễn tả toàn bộ dãy các sự
kiện cần giải quyết tốt hơn
Lưu đồ quen thuộc hơn và được ưu tiên dùng hơn đối với những người mới học và các nhà lập trình viên
Mã giả
Cấu trúc điều khiển cơ bản
Logic tuần tự
Logic tuần tự dùng để thực hiện lần lượt các lệnh theo trình
tự nào đó
Logic lựa chọn
Còn gọi là logic quyết định, được dùng để đưa ra quyết định
Logic lặp (hay vòng lặp)
Ưu điểm
Biến đổi mã giả thành ngôn ngữ lập trình dễ dàng hơn
so với lưu đồ hay bảng quyết định
Dễ điều chỉnh
Lối viết của mã giả sẽ tốn ít thời gian và công sức hơn
là vẽ lưu đồ
Mã giả dễ viết hơn ngôn ngữ lập trình vì nó có duy nhất một vài qui tắc để tuân theo giúp lập trình viên tập trung vào logic của chương trình
Hạn chế
Mã giả không có sự biểu diễn logic của chương trình
bằng hình ảnh
Khi dùng mã giả thì không có luật chuẩn nào để làm theo. Các lập trình viên sử dụng phong cách của mình để viết mã giả nên khó khăn trong vấn đề truyền đạt nội dung vì thiếu sự tiêu chuẩn hoá
Khó cho người mới học
Sử dụng mã giả
Vay mượn ngôn ngữ nào đó (ví dụ Pascal) để
biểu diễn thuật toán