BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 1
Bài 6
LËp tr×nh
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 2
NỘI DUNGGiới thiệu tổng quanPhương pháp lập trìnhNg«n ng÷ lËp tr×nh
Phong c¸ch lËp tr×nh
Kỹ thuật lập trình
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 3
GIỚI THIỆU
ThiÕt kÕ
m« h×nh
th«ng tin
m« h×nh
chøc n¨ng
c¸c yªu
cÇu kh¸c
LËp tr×nh
thiÕt kÕ
kiÕn tróc
cÊu tróc
d÷ liÖu
thiÕt kÕ
thuËt to¸n
M« ®unch−¬ng tr×nh
Chuẩn mãhóa
Mô hình cài đặt
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 4
GIỚI THIỆU (2) – Ví dụ
Hệ thống con 1«trace»
«file»
Area.class
«compilation»
AnotherClass
«file»
readme.txt
«explain»
«file»
impl.jar«compress»
«file»
Area.java
Area
Hệ thống con 1
Mô hình cài đặt
Mô hình thiết kế
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 5
PHƯƠNG PHÁP LẬP TRÌNH
Lập trình tuần tự (tuyến tính)Lập trình có cấu trúc (thủ tục)Lập trình hướng chức năngLập trình hướng đối tượngLập trình Logic
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 6
Đặc trưng của ngôn ngữMiền ứng dụng của ngôn ngữLựa chọn ngôn ngữ
NGÔN NGỮ LẬP TRÌNH
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 7
năng lực (kiểu biến, các cấu trúc)tính khả chuyểnmức độ hỗ trợ của các công cụ
NGÔN NGỮ LẬP TRÌNH - Đặc trưng
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 8
Năng lực của ngôn ngữ• Có cấu trúc, câu lệnh phong phú• Hỗ trợ nhiều kiểu dữ liệu• Hỗ trợ con trỏ, đệ qui• Hỗ trợ hướng đối tượng• Thư viện phong phú
NGÔN NGỮ LẬP TRÌNH - Đặc trưng
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 9
• thay đổi phần cứng• thay đổi OS
Ví dụ: C, Java là các ngôn ngữ khả chuyển
NGÔN NGỮ LẬP TRÌNH - Đặc trưng
Tính khả chuyển
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 10
• Trình biên dịch hiệu quả• biên dịch tốc độ cao• khả năng tối ưu cao• khai thác các tập lệnh, kiến trúc phần cứng mới
• Các công cụ trợ giúp hiệu quả• editor, debugger, linker, make...• IDE (Integrated Develop Environment)
NGÔN NGỮ LẬP TRÌNH - Đặc trưng
Hỗ trợ của công cụ
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 11
NGÔN NGỮ LẬP TRÌNH - Miền ứng dụng
Phần mềm hệ thống• C, C++
Hệ thời gian thực• C, C++, Ada, Assembly
Phần mềm nhúng• C++, Java, Assembly
Phần mềm khoa học kỹ thuật• Fortran
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 12
Phần mềm nghiệp vụ• CSDL: Oracle, DB2, SQL Server, MySQL...• ngôn ngữ: FoxPro, COBOL, VB, VC++
Trí tuệ nhân tạo• Lisp, Prolog, OPS5,...
Lập trình Web/CGI• Perl, ASP, PHP, Java, Java script, Python...
NGÔN NGỮ LẬP TRÌNH - Miền ứng dụng
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 13
Đặc trưng của ngôn ngữMiền ứng dụng của ngôn ngữNăng lực, kinh nghiệm của nhóm phát triểnYêu cầu của khách hàng
NGÔN NGỮ LẬP TRÌNH- Lựa chọn ngôn ngữ
Dựa vào:
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 14
PHONG CÁCH LẬP TRÌNH
Hướng tới phong cách làm cho mã nguồn• dễ hiểu, dễ sửa đổi• an toàn (ít lỗi)
Bao gồm các yếu tố:• cách đặt tên hàm và biến• cách xây dựng câu lệnh, cấu trúc chương trình• cách viết chú thích• cách xử lý lỗi
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 15
Mọi điều được Chú thích trong chương trình
Mục đích sử dụng của các biếnChức năng của khối lệnh, câu lệnh
• các lệnh điều khiển• các lệnh phức tạp
PHONG CÁCH LẬP TRÌNH – Chú thích
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 16
Mọi điều được Chú thích trong chương trình
Chú thích các mô đun– mục đích, chức năng của mô đun– tham số, giá trị trả lại (giao diện)– các mô đun thuộc cấp– cấu trúc, thuật toán– nhiệm vụ của các biến cục bộ– tác giả, người kiểm tra, thời gian
PHONG CÁCH LẬP TRÌNH – Chú thích
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 17
Đặt tên biến, tên hàm có nghĩa, gợi nhớSử dụng các ký hiệu, từ tiếng Anh có nghĩaLàm cho dễ đọc
• dùng DateOfBirth hoặc date_of_birth• không viết dateofbirth
Tránh đặt tên quá dài• không đặt tên dài với các biến cục bộ
Thống nhất cách dùng• i cho vòng lặp, tmp cho các giá trị tạm thời...
PHONG CÁCH LẬP TRÌNH - Đặt tên
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 18
Chương trình cần được chia thành nhiều mô đun (hàm)Không viết hàm quá dài• không quá 2 trang màn hình• tạo ra các hàm thứ cấp để giảm độ dài từng hàmKhông dùng quá nhiều biến cục bộ• không thể theo dõi đồng thời hoạt động của nhiều biến
(vd. không quá 7 biến cục bộ)
PHONG CÁCH LẬP TRÌNH - Cấu trúc chương trình
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 19
Các câu lệnh phải mô tả cấu trúc• tụt lề, dễ đọc, dễ hiểu
Làm đơn giản các lệnh• mỗi lệnh trên một dòng• triển khai các biểu thức phức tạp• hạn chế truyền tham số là kết quả của hàm, biểu thức
printf("%s", strcpy(des, src));
Tránh các cấu trúc phức tạp• các lệnh if lồng nhau• điều kiện phủ định if not
PHONG CÁCH LẬP TRÌNH – Câu lệnh
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 20
Là cách thức xử lý lỗi tiến tiến trong các ngôn ngữhướng đối tượng• môđun xử lý ném ra một ngoại lệ (đối tượng chứa thông
tin lỗi)• môđun điều khiển bắt ngoại lệ (nếu có)
Tách phần xử lý lỗi khỏi phần cài đặt thuật toánthông thường, làm cho chương trình dễ đọc hơnDễ dùng hơn, an toàn hơn
PHONG CÁCH LẬP TRÌNH – Xử lý lỗi
Ngoại lệ
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 21
double MyDivide(double num, double denom) {
if (denom == 0.0) {throw invalid_argument(”The denom cannot be 0.”);
} else {
return num / denom;}
}
PHONG CÁCH LẬP TRÌNH – Xử lý lỗi
Ngoại lệ: ném ngoại lệ
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 22
try {result = MyDivide(x, y);
}catch (invalid_argument& e) {
cerr << e.what() << endl;... // mã xử lý với ngoại lệ
};
PHONG CÁCH LẬP TRÌNH – Xử lý lỗi
Ngoại lệ: bắt ngoại lệ
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 23
Tuân theo các chuẩn thông dụngChú giải đầy đủ mỗi khi không tuân theo chuẩn
PHONG CÁCH LẬP TRÌNH
Phong cách lập trình tốt
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 24
KỸ THUẬT LẬP TRÌNH
Tránh lỗi
Phòng thủ
Thứ lỗi
Xây dựng hệ thống tin cậy
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 25
Tránh các cấu trúc nguy hiểm
KỸ THUẬT LẬP TRÌNH – tránh lỗi
Số thựcCon trỏCấp phát bộ nhớĐệ quy
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 26
KỸ THUẬT LẬP TRÌNH – phòng thủ
Defensive programmingDự đoán khả năng xuất hiện lỗi
• Lệnh vào ra• Các phép toán• Thao tác với bộ nhớ
Khắc phục lỗi• lưu trạng thái an toàn• quay lại trạng thái an toàn gần nhất
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 27
Fault tolerance programming
KỸ THUẬT LẬP TRÌNH – thứ lỗi
Phát hiện lỗiĐịnh ra mức độ thiệt hạiHồi phục sau khi gặp lỗiChữa lỗi
BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 28
TỔNG KẾT
Lựa chọn phương pháp lập trìnhLựa chọn ngôn ngữ lập trìnhLập trình theo phong cách tốtÁp dụng kỹ thuật lập trình phù hợp