Kỹ thuật lập trình
Nguyễn Diệu Hương
[email protected]
[email protected]
Mục đích của môn học
•Hỗ trợ xây dựng chương trình
chính xác, hiệu quả, dễ sửa chữa,
tái sử dụng code cao.
•Tăng cường khả năng lập trình
•Hiểu chi tiết về:
–Thiết kế chương trình
–Cấu trúc dữ liệu, giải thuật, ADT
– Đa nhiệm
–Mạng
Yêu cầu môn học
• Bài tập lớn môn học: 30-40%. Đánh
giá dựa trên:
–Chương trình
– Báo cáo
– Trình bày
• Thi cuối kỳ: 60-70% (closed book)
Nội dung
•Chương 1: Nhập môn Kỹ thuật lập
trình
•Chương 2: Quản lý bộ nhớ
•Chương 3: Các cấu trúc dữ liệu cơ
bản
•Chương 4: Các cấu trúc dữ liệu
nâng cao
•Chương 5: Ứng dụng đa nhiệm và
mạng
4. Operator
1. Các nguyên tắc lập trình
(Kruse, Chương 1)
Reading: C++ Programming Style Guide
1. 1. Thiết kế chương trình
Giới thiệu
•Mục đích:
–Giới thiệu phương pháp và công cụ
lập trình cho những chương trình thực
tế
– Đi theo một tiếp cận logic, thống nhất
– Nguyên tắc thiết kế chương trình
Xác định mục tiêu của bài toán
•Quyết định mục đích chung
•Chỉ rõ những mục đích cụ thể
• Chia công việc thành các bài toán
con cho đến khi có kích thước cô
đọng
Thiết kế chương trình
•Tổ chức tốt từng phần
•Mã lệnh phải viết rõ ràng, dễ hiểu.
•Lựa chọn cấu trúc dữ liệu phù hợp
• Phân tích thuật toán
1. 2. Phong cách lập trình
Đặt tên
•Mục đích của tên:
–Lớp và biến: đại diện cho cái gì
–Hàm: thực hiện công việc gì
–Giải thích chi tiết
Một số chú ý khi đặt tên
8. Chú ý: Khi chương trình thay đổi, cần
đảm bảo TLHD sẽ thay đổi tương ứng.
Ví dụ
int main( ) // Program to play Conway’s game of Life.
/* Pre : The user supplies an initial configuration of living
cells.
Post : The program prints a sequence of pictures showing
the changes in the configuration of living cells
according to the rules for the game of Life.
Uses: The class Life and its methods initialize( ), print( ),
and update( ).
The functions instructions( ), user_says_yes( ). */
Định dạng chương trình
• Canh lề giúp chương trình dễ hiểu
Thời gian đọc chương trình lớn hơn rất
nhiều so với viết chương trình.
Làm chương trình dễ đọc nhất có thể.
Tinh chỉnh và module hóa
• Tinh chỉnh top-down:
–Bắt đầu bằng viết chương trình chính
–Quyết định việc chia các công việc
(cho lớp, hàm, CTDL)
–Tiếp tục với các hàm, lớp, CTDL
Tinh chỉnh Top-down – Hướng dẫn
1. Sử dụng lớp để mô hình hóa những khái
niệm cơ bản của chương trình
int main( ) {
Life iConfig;
iConfig . initialize( );
iConfig . print( );
void print( );
void update( );
private:
int grid[maxrow + 2][maxcol + 2];
// allows for two extra rows and columns
int neighbor_count(int row, int col);
};