CÁC NGUYÊN LÝ KHI LẬP TRÌNH Nguyên lý tối thiểu: Nắm vững các cấu trúc lệnh, kiểu dữ liệu, phép toán để viết chương trình.. Cách kiểm tra Tạo bộ dữ liệu thử sao cho thỏa 1 trong 4 cách
Trang 1Chương 4:
KỸ THUẬT LẬP TRÌNH TỐI ƯU
KỸ THUẬT LẬP TRÌNH NÂNG CAO
TRƯỜNG CAO ĐẲNG CNTT TP.HCM KHOA CÔNG NGHỆ THÔNG TIN
Trang 21 CÁC BƯỚC ĐỂ XÂY DỰNG CHƯƠNG TRÌNH
B1: Phân tích và xác định rõ bài toán
B2: Xây dựng thuật toán
B3: Viết chương trình
B4: Chạy và kiểm tra chương trình
B5: Bảo trì
Trang 32 ĐÁNH GIÁ CHẤT LƯỢNG MỘT CHƯƠNG TRÌNH
Đúng đắn - chính xác (correctness)
Chắc chắn (robustness)
Thân thiện (user friendliness)
Khả năng thích nghi (adapability): Chương trình có khả
năng để phát triển theo yêu cầu
Tính tái sử dụng (reuseability): Chương trình có thể
dùng để làm một phần trong một chương trình khác
Tính hiệu quả (efficiency)
Tính khả chuyển (porability): Khả năng chuyển đổi dễ
dàng giữa các môi trường
Trang 43.1 Phương pháp Top - down
Phân rã vấn đề một cách có hệ thống từ trên xuống, (sử dụng cho quá trình phân tích và thiết kế hệ thống)
Quá trình phân rã bài toán được thực hiện theo từng mức khác nhau
Mức thấp nhất - mức tổng quan: Cho thấy chức năng của hệ thống một cách tổng thể (hệ thống làm được gì?)
Mức phân tích: Các chức năng chính
3 PHƯƠNG PHÁP PHÂN TÍCH BÀI TOÁN
Trang 53.2 Phương pháp Bottom - Up
Được sử dụng cho quá trình cài đặt hệ thống
Phương pháp này:
Từ cái riêng tới cái chung
Từ các đối tượng thành phần ở mức cao tới mức thấp
Từ mức mođun đến mức tổng thể
Từ những mođun có sẵn lắp ghép thành mođun mới
3 PHƯƠNG PHÁP PHÂN TÍCH BÀI TOÁN
Trang 64 CÁC NGUYÊN LÝ KHI LẬP TRÌNH
Nguyên lý tối thiểu: Nắm vững các cấu trúc lệnh, kiểu
dữ liệu, phép toán để viết chương trình Tiếp theo, mới tìm hiểu những thư viện tiện ích của ngôn ngữ
Nguyên lý địa phương: Hạn chế sử dụng biến toàn cục
Nguyên lý nhất quán: Thao tác phải phù hợp với dữ liệu
Nguyên lý an toàn: Tránh mọi lỗi trong khi xây dựng chương trình, nên phát hiện và sửa lỗi ở từng bước
Trang 86.1 Đặ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
Trang 96.2 Kỹ thuật dò tìm và phát hiện lỗi
Nguyê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
6 KIỂM TRA & TỐI ƯU HÓA CHƯƠNG TRÌNH
Trang 106.3 Cách kiểm tra
Tạ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
6 KIỂM TRA & TỐI ƯU HÓA CHƯƠNG TRÌNH
Trang 116.4 Tố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
6 KIỂM TRA & TỐI ƯU HÓA CHƯƠNG TRÌNH
Trang 126.5.Tối ƣu hóa bộ nhớ
Giảm thiểu vùng nhớ làm việc cho chương trình
Trang 136.6.Tối ưu hóa thời gian thực hiện
Kỹ thuật tối ưu việc rẽ nhánh: Sắ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
6 KIỂM TRA & TỐI ƯU HÓA CHƯƠNG TRÌNH
Trang 14Kỹ 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
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 lệnh 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
6 KIỂM TRA & TỐI ƯU HÓA CHƯƠNG TRÌNH
Trang 15 Trá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/thủ tục Giảm tối đa việc gọi đến các thủ tục
Ví dụ:
Hàm P(i) {
…
Hàm P() {
for(i=1; i<n; i++)
Sau khi tối ưu:
6 KIỂM TRA & TỐI ƯU HÓA CHƯƠNG TRÌNH
Trang 16 Thay đổ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
6 KIỂM TRA & TỐI ƯU HÓA CHƯƠNG TRÌNH
Trang 177.1 Vấn đề
Nền tảng của lập trình là thiết kế giải thuật
Trong việc thiết kế cấu trúc logic của chương trình, điều quan trọng là dùng giải thuật nào cho thích hợp
Chọn giải thuật để sử dụng là một trong những tiêu chuẩn quan trọng
Việc sử dụng giải thuật hiệu quả và dễ hiểu giúp gia tăng tốc độ thực hiện và giảm những lỗi tiềm ẩn
Do vậy giải thuật là một nhân tố chính yếu quyết
7 THIẾT KẾ GIẢI THUẬT
Trang 187.2 Các loại giải thuật
Trang 197.3 Các phương pháp xây dựng giải thuật
Giải thuật là một tập các quy tắc được định nghĩa áp dụng để giải quyết một vấn đề
Giải thuật và cấu trúc dữ liệu có mối quan hệ chặt chẽ với nhau Cấu trúc dữ liệu xác định khung nền cho giải thuật với một độ tin cậy chắc chắn
Khi giải quyết một bài toán trên máy tính ta phải chú trọng đến hai vấn đề Cấu trúc dữ liệu và giải thuật
Giải thuật phản ánh cách xử lý, còn đối tượng xử lý là dữ liệu, với cấu trúc dữ liệu được chọn, sẽ có những giải thuật tương ứng, khi cấu trúc dữ liệu thay đổi thường giải thuật cũng thay đổi theo
7 THIẾT KẾ GIẢI THUẬT
Trang 20Ví dụ:
Trong việc xử lý cấu trúc mảng, dữ liệu có thể được tìm kiếm và cập nhật dễ dàng, nhưng phải mất thời gian để chèn hay xoá dữ liệu
Bởi vì dữ liệu trong mảng được tổ chức liên tiếp nhau, thao tác chèn hay xoá dữ liệu thì tương đối phức tạp bởi việc dịch chuyển các dữ liệu liên quan về sau hoặc
Trang 217.4 Biểu Diễn Giải Thuật
Có 2 phương pháp chính biểu diễn giải thuật:
Mô tả giải thuật
7 THIẾT KẾ GIẢI THUẬT
Trang 22Các từ khóa biểu diễn giải thuật bằng mã giả
Trang 23Read schedule file for tables to be loaded
IF any tables to be loaded THEN Call XYZ to load tables ENDIF
IF (value > low-value) AND (value < high-value) THEN Update table
ELSE Display error message 123 on screen ENDIF
DO Get field value Determine screen-field-number CASE screen-field-number OF 1: Perform edits for field-1
7 THIẾT KẾ GIẢI THUẬT
Trang 24Các ký hiệu Flowchart
Bắt đầu/ kết thúc Xuất/ in
Rẽ nhánh
Luồng xử lý Khối xử lý Nhập
Điều kiện
Giá trị trả về Điểm nối
24
7 THIẾT KẾ GIẢI THUẬT
Trang 25Ví dụ: Giải và biện luận: ax+b=0
7 THIẾT KẾ GIẢI THUẬT
Trang 26The End