Bài giảng Lập trình C: Chương 6 - Nguyễn Minh Thành
Số trang: 13
Loại file: pdf
Dung lượng: 133.55 KB
Lượt xem: 17
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Lập trình C: Chương 6 Kiểm tra tính đúng đắn & tối ưu hóa chương trình nhằm trình bày về kỹ thuật dò tìm và phát hiện lỗi, cách kiểm tra, tối ưu hóa chương trình, tối ưu hóa bộ nhớ, tới ưu hóa thời gian thực hiện, tăng tính hiệu quả của chương trình.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình C: Chương 6 - Nguyễn Minh ThànhKiểm tra tính đúng đắn & tối ưu hóa chương trìnhĐặt vấn đề Nguồn gốc các sai sót có 3 loại: Dữ liệu: Dùng bộ kiểm tra dữ liệu Cú pháp: Dùng trình biên dịch Ngữ nghĩa Có 2 cách kiểm lỗi chương trình: kiểm (testing) và sửa (debugging)2Kỹ thuật dò tìm và phát hiện lỗiNguyên tắc Bảo đảm mọi trường hợp đều được kiểm tra. Thường bị lỗi ở những ngã rẻ, phải duyệt qua ít nhất một lần. Một chương trình cần test nhiều lần. Kiểm tra từng môđun một để giảm độ phức tạp.3Cách kiểm traTạo bộ dữ liệu thử sao cho thỏa 1 trong 4 cách sau: Kiểm tra toàn bộ các nhánh của chương trình: Mỗi lệnh của chương trình đều chạy qua ít nhất một lần. Kiểm tra ngẫu nhiên. Kiểm tra ở những điểm nút: lựa chọn, lặp, … Chèn lệnh kiểm tra logic ở mỗi đoạn (dòng) lệnh.4Tối ưu hóa chương trình Tối ưu thời gian: Tăng không gian lưu trữ, thuật toán không đổi, đổi cấu trúc dữ liệu và cấu trúc chương trình. Tối ưu không gian: Tăng thời gian, thuật toán không đổi, đổi cấu trúc dữ liệu và cấu trúc chương trình. Tối ưu thời gian và không gian: Thuật toán thay đổi.5Tối ưu hóa bộ nhớGiảm thiểu vùng nhớ làm việc cần cho chương trình. Nguyên lý nén dữ liệu Giảm khoảng trống: Biểu diễn danh sách tọa độ các giá trị có cùng giá trị. Mã lặp: Những dữ liệu thường xuyên lặp lại dùng mã lặp Runlength-Coding để nén. Mã hóa dựa vào tần suất. Mã nền. Ánh xạ co dữ liệu. Nguyên lý dùng công thức thay bộ nhớ6Tối ưu hóa thời gian thực hiệnKỹ thuật tối ưu việc rẽ nhánhSắp xếp các biểu thức điều kiện theo thứ tự: Nếu dùng phép and để kết hợp các biểu thức thì sắp xếp các biểu thức theo xác suất sai giảm dần. Nếu dùng phép or để kết hợp các biểu thức thì sắp xếp các biểu thức theo xác suất đúng giảm dần.7Kỹ thuật tối ưu các vòng lặp Tách các lệnh không phụ thuộc vào chỉ số lặp ra khỏi vòng lặp. Thay các phép nhân thành phép cộng nếu được. Giảm số toán tử phức tạp trong vòng lặp nhờ các biến phụ. Giảm số vòng lặp chương trình. Thực hiện nhiều hơn trong mỗi vòng lặp. Vòng lặp nào có số lần lặp ít sẽ nằm ngòai vòng lặp có số lần lặp nhiều hơn: Hoán đổi thứ tự các vòng lặp mà không làm sai ý nghĩa chương trình. Thực hiện hợp nhất các vòng lặp có thể.8Tránh gọi lặp một thủ tục Giảm tối đa việc gọi các thủ tục. Hãy làm nhiều nhất trong một vòng lặp, trong một thủ tục. Giảm thiểu tối đa việc gọi đến các thủ tục. Ví dụ: Sau khi tối ưu: Hàm P(i) Hàm P() { { … for(i=1; iThay đổi, bố trí (cấu trúc) dữ liệu Dùng biến phụ thay cho các biểu thức phải tính toán nhiều. Dùng bảng tra (table - lookup) để tính toán: Cố gắng lập bảng tính toán sẵn cho các trường hợp phổ biến.10Nguyên lý phân cấp bộ nhớ Dữ liệu thường được truy cập phải ở vị trí được truy cập tốt nhất: Tổ chức ở bộ nhớ trong hoặc bộ nhớ ngoài.11Nguyên lý đối xứng Tính một phần rồi lấy đối xứng, không cần tính toàn bộ.12Tăng tính hiệu quả của chương trình Phân tích chương trình thành các chương trình con. Tính độc lập của chương trình con càng cao càng tốt.13
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình C: Chương 6 - Nguyễn Minh ThànhKiểm tra tính đúng đắn & tối ưu hóa chương trìnhĐặt vấn đề Nguồn gốc các sai sót có 3 loại: Dữ liệu: Dùng bộ kiểm tra dữ liệu Cú pháp: Dùng trình biên dịch Ngữ nghĩa Có 2 cách kiểm lỗi chương trình: kiểm (testing) và sửa (debugging)2Kỹ thuật dò tìm và phát hiện lỗiNguyên tắc Bảo đảm mọi trường hợp đều được kiểm tra. Thường bị lỗi ở những ngã rẻ, phải duyệt qua ít nhất một lần. Một chương trình cần test nhiều lần. Kiểm tra từng môđun một để giảm độ phức tạp.3Cách kiểm traTạo bộ dữ liệu thử sao cho thỏa 1 trong 4 cách sau: Kiểm tra toàn bộ các nhánh của chương trình: Mỗi lệnh của chương trình đều chạy qua ít nhất một lần. Kiểm tra ngẫu nhiên. Kiểm tra ở những điểm nút: lựa chọn, lặp, … Chèn lệnh kiểm tra logic ở mỗi đoạn (dòng) lệnh.4Tối ưu hóa chương trình Tối ưu thời gian: Tăng không gian lưu trữ, thuật toán không đổi, đổi cấu trúc dữ liệu và cấu trúc chương trình. Tối ưu không gian: Tăng thời gian, thuật toán không đổi, đổi cấu trúc dữ liệu và cấu trúc chương trình. Tối ưu thời gian và không gian: Thuật toán thay đổi.5Tối ưu hóa bộ nhớGiảm thiểu vùng nhớ làm việc cần cho chương trình. Nguyên lý nén dữ liệu Giảm khoảng trống: Biểu diễn danh sách tọa độ các giá trị có cùng giá trị. Mã lặp: Những dữ liệu thường xuyên lặp lại dùng mã lặp Runlength-Coding để nén. Mã hóa dựa vào tần suất. Mã nền. Ánh xạ co dữ liệu. Nguyên lý dùng công thức thay bộ nhớ6Tối ưu hóa thời gian thực hiệnKỹ thuật tối ưu việc rẽ nhánhSắp xếp các biểu thức điều kiện theo thứ tự: Nếu dùng phép and để kết hợp các biểu thức thì sắp xếp các biểu thức theo xác suất sai giảm dần. Nếu dùng phép or để kết hợp các biểu thức thì sắp xếp các biểu thức theo xác suất đúng giảm dần.7Kỹ thuật tối ưu các vòng lặp Tách các lệnh không phụ thuộc vào chỉ số lặp ra khỏi vòng lặp. Thay các phép nhân thành phép cộng nếu được. Giảm số toán tử phức tạp trong vòng lặp nhờ các biến phụ. Giảm số vòng lặp chương trình. Thực hiện nhiều hơn trong mỗi vòng lặp. Vòng lặp nào có số lần lặp ít sẽ nằm ngòai vòng lặp có số lần lặp nhiều hơn: Hoán đổi thứ tự các vòng lặp mà không làm sai ý nghĩa chương trình. Thực hiện hợp nhất các vòng lặp có thể.8Tránh gọi lặp một thủ tục Giảm tối đa việc gọi các thủ tục. Hãy làm nhiều nhất trong một vòng lặp, trong một thủ tục. Giảm thiểu tối đa việc gọi đến các thủ tục. Ví dụ: Sau khi tối ưu: Hàm P(i) Hàm P() { { … for(i=1; iThay đổi, bố trí (cấu trúc) dữ liệu Dùng biến phụ thay cho các biểu thức phải tính toán nhiều. Dùng bảng tra (table - lookup) để tính toán: Cố gắng lập bảng tính toán sẵn cho các trường hợp phổ biến.10Nguyên lý phân cấp bộ nhớ Dữ liệu thường được truy cập phải ở vị trí được truy cập tốt nhất: Tổ chức ở bộ nhớ trong hoặc bộ nhớ ngoài.11Nguyên lý đối xứng Tính một phần rồi lấy đối xứng, không cần tính toàn bộ.12Tăng tính hiệu quả của chương trình Phân tích chương trình thành các chương trình con. Tính độc lập của chương trình con càng cao càng tốt.13
Tìm kiếm theo từ khóa liên quan:
Tối ưu hóa bộ nhớ Kiểm tra tính đúng đắn Tối ưu hóa chương trình Ngôn ngữ lập trình C Ngôn ngữ lập trình Học lập trình CGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 255 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 245 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 245 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 228 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 206 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 198 1 0 -
101 trang 197 1 0
-
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 182 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 159 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 158 0 0