Bài giảng Kỹ thuật lập trình nâng cao - Chương 8: Kiểm tra tính đúng đắn và tối ưu hóa chương trình cung cấp cho người học các kiến thức: 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ớ,... Mời các bạn cùng tham khảo.
TRẦN MINH THÁI minhthai@itc.edu.vn *Nguồn gốc sai sót có loại: *Dữ liệu: Dùng kiểm tra liệu *Cú pháp: Dùng trình biên dịch *Ngữ nghĩa è Có cách kiểm lỗi chương trình: kiểm (testing) sửa (debugging) Nguyên tắc * Bảo đảm trường hợp kiểm tra * Thường bị lỗi ngã rẻ, phải duyệt qua lần * * Một chương trình cần test nhiều lần Kiểm tra môđun để giảm độ phức tạp Tạo liệu thử cho thỏa cách sau: * Kiểm tra toàn nhánh chương trình: Mỗi lệnh chương trình chạy qua lần * * * Kiểm tra ngẫu nhiên Kiểm tra điểm nút: lựa chọn, lặp, … Chèn lệnh kiểm tra logic đoạn (dịng) lệnh *Tối ưu thời gian: Tăng khơng gian lưu trữ, thuật tốn khơng đổi, đổi cấu trúc liệu cấu trúc chương trình *Tối ưu khơng gian: Tăng thời gian, thuật tốn khơng đổi, đổi cấu trúc liệu cấu trúc chương trình *Tối ưu thời gian khơng gian: Thuật tốn thay đổi Giảm thiểu vùng nhớ làm việc cần cho chương trình *Nguyên lý nén liệu *Giảm khoảng trống: Biểu diễn danh sách tọa độ giá trị có giá trị *Mã lặp: Những 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ã *Ánh xạ co liệu *Nguyên lý dùng công thức thay nhớ Kỹ thuật tối ưu việc rẽ nhánh Sắp xếp biểu thức điều kiện theo thứ tự: * Nếu dùng phép and để kết hợp biểu thức xếp 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 biểu thức xếp biểu thức theo xác suất giảm dần Kỹ thuật tối ưu vòng lặp * Tách lệnh không phụ thuộc vào số lặp khỏi vòng lặp Thay phép nhân thành phép cộng * Giảm số toán tử phức tạp vòng lặp nhờ biến phụ * Giảm số vòng lặp chương trình Thực nhiều vịng lặp * Vịng lặp có số lần lặp nằm ngịai vịng lặp có số lần lặp nhiều hơn: Hốn đổi thứ tự vịng lặp mà khơng làm sai ý nghĩa chương trình * Thực hợp vịng lặp *Giảm tối đa việc gọi thủ tục Hãy làm nhiều vòng lặp, thủ tục Giảm thiểu tối đa việc gọi đến thủ tục *Ví dụ: Sau tối ưu: Hàm P() { for(i=1; i