B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 1
K NGH PHN MM
CHNG 7:
Lập trình
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 2
NI DUNG
Giithiutng quan
Ph
ng phỏp
lptrỡnh
Ngôn ngữ lập trình
Phong cách lập trình
K thutlp trỡnh
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 3
GII THIU
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ô đun
chơng trình
Chunmó
húa
Mụ hỡnh ci t
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 4
GII THIU (2) Vớ d
H thng con 1
ôtraceằ
ôfileằ
Area.class
ôcompilationằ
AnotherClass
ôfileằ
readme.txt
ôexplainằ
ôfileằ
impl.jar
ôcompressằ
ôfileằ
Area.java
Area
H thng con 1
Mụhỡnhcit
Mụhỡnhthi
tk
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 5
PHNG PHP LP TRèNH
z
Lptrỡnhtunt (tuyn tớnh)
z
Lptrỡnhcúcutrỳc(th tc)
z
Lptrỡnhhng chcnng
z
Lptrỡnhhng itng
z
Lp trỡnh Logic
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 6
ctrng cangụnng
Min ng dng ca ngụn ng
Lachnngụnng
NGễN NG LP TRèNH
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 7
năng lực(kiểubiến, các cấutrúc)
tính khả chuyển
mức độ hỗ trợ củacáccôngcụ
NGÔN NGỮ LẬP TRÌNH -
Đặctrưng
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 8
Năng lựccủangônngữ
• Có cấutrúc, câulệnh phong phú
• Hỗ trợ nhiềukiểudữ liệu
• Hỗ trợ con trỏ, đệ qui
• Hỗ trợ hướng đốitượng
• Thư viện phong phú
NGÔN NGỮ LẬP TRÌNH -
Đặctrưng
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 9
•
thay đổiphầncứng
• thay đổiOS
Ví dụ: C, Java l
à các ngôn ngữ khả chuyển
NGÔN NGỮ LẬP TRÌNH -
Đặctrưng
Tính khả chuyển
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 10
•
Trìnhbiêndịch hiệuquả
•
biên dịch tốc độ cao
•khả năng tối ưucao
• khai thác các tậplệnh, kiếntrúcphầncứng mới
• Các công cụ trợ giúp hiệuquả
•
editor, debugger, linker, make...
• IDE (Integrated Develop Environment)
NGÔN NGỮ LẬP TRÌNH -
Đặctrưng
Hỗ trợ củacôngcụ
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 11
NGÔN NGỮ LẬP TRÌNH -
Miền ứng dụng
z
Phầnmềmhệ thống
•
C, C++
z
Hệ thờigianthực
•
C, C++, Ada, Assembly
z
Phầnmềm nhúng
•
C++, Java, Assembly
z
Phầnmềmkhoahọckỹ thuật
•
Fortran
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 12
z
Phầnmềm nghiệpvụ
•
CSDL: Oracle, DB2, SQL Server, MySQL...
•
ngôn ngữ: FoxPro, COBOL, VB, VC++
z
Trí tuệ nhân tạo
•
Lisp, Prolog, OPS5,...
z
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
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 13
z
Đặctrưng của ngôn ngữ
z
Miền ứng dụng của ngôn ngữ
z
Năng lực, kinh nghiệmcủa nhóm phát
triển
z
Yêu cầucủa khách hàng
NGÔN NGỮ LẬP TRÌNH
-
Lựachọn ngôn ngữ
Dựavào:
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 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ồmcácyếutố:
•
cách đặt tên hàm và biến
• cách xây dựng câu lệnh, cấutrúcchương trình
• cách viết chú thích
• cách xử lý lỗi
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 15
Mọi điều được Chú thích trong chương trình
Mục đích sử dụng củacácbiến
Chứcnăng củakhốilệnh, câu lệnh
• các lệnh điềukhiển
• các lệnh phứctạp
PHONG CÁCH LẬP TRÌNH – Chú thích
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 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ứcnăng củamôđun
– tham số, giá trị trả lại (giao diện)
–cácmôđun thuộccấp
–cấutrúc, thuật toán
– nhiệmvụ của các biếncụcbộ
– tác giả, ngườikiểm tra, thờigian
PHONG CÁCH LẬP TRÌNH – Chú thích
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 17
Đặt tên biến, tên hàm có nghĩa, gợinhớ
Sử dụngcáckýhiệu, từ tiếng Anh có
nghĩa
Là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 đặttêndàivớicácbiếncụcbộ
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 -
Đặttên
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 18
Chương trình cần được chia thành nhiềumôđ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àm
Không dùng quá nhiềubiếncụcbộ
• không thể theo dõi đồng thờihoạt động của nhiềubiến
(vd. không quá 7 biếncụcbộ)
PHONG CÁCH LẬP TRÌNH -
Cấutrúcchương trình
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 19
Các câu lệnh phảimôtả cấutrúc
• tụtlề, dễđọc, dễ hiểu
Làm đơngiảncáclệnh
• mỗilệnh trên một dòng
• triển khai các biểuthứcphứctạp
• hạnchế truyền tham số là kếtquả của hàm, biểuthức
printf("%s", strcpy(des, src));
Tránh các cấutrúcphứctạp
• các lệnh if lồng nhau
• điềukiệnphủđịnh if not
PHONG CÁCH LẬP TRÌNH – Câu lệnh
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 20
Có thể phát hiệnlỗi trong khi thựchiện
• lỗichia0
• lỗi input/output, …
Xử lý lỗi
• nhất quán trong xử lý
• phân loạilỗi
• thống nhất định dạng thông báo,…
• phân biệt output và thông báo lỗi
PHONG CÁCH LẬP TRÌNH – X
ử lý lỗi
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 21
z
Là cách thứcxử lý lỗitiếntiến trong các ngôn
ngữ hướng đốitượng
•
môđun xử lý ném ra một ngoạilệ (đốitượng chứa
thông tin lỗi)
•
môđun điềukhiểnbắt ngoạilệ (nếucó)
z
Tách phầnxử lý lỗikhỏiphầncàiđặtthuật toán
thông thường, làm cho chương trình dễđọchơn
z
Dễ dùng hơn, an toàn hơn
PHONG CÁCH LẬP TRÌNH – Xử lý lỗi
Ngoạilệ
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 22
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ạilệ:
ném ngoạilệ
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 23
try {
result = MyDivide(x, y);
}
catch (invalid_argument& e) {
cerr << e.what() << endl;
... // mã xử lý với ngoạilệ
};
PHONG CÁCH LẬP TRÌNH – Xử lý lỗi
Ngoạilệ:
bắt ngoạilệ
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 24
Tuân theo các chuẩnthôngdụng
Chú giải đầy đủ mỗi khi không tuân theo chuẩn
PHONG CÁCH LẬP TRÌNH
Phong cách lậptrìnhtốt
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 25
KỸ THUẬT LẬP TRÌNH
z
Tránh lỗi
z
Phòng thủ
z
Thứ lỗi
Xây dựng hệ thống tin cậy
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 26
Tránh các cấu trúc nguy hiểm
KỸ THUẬT LẬP TRÌNH – tr
ánh lỗi
z
Số thực
z
Con trỏ
z
Cấpphátbộ nhớ
z
Đệ quy
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 27
KỸ THUẬT LẬP TRÌNH –
phòng thủ
Defensive programming
z
Dự đoán khả năng xuấthiệnlỗi
•
Lệnh vào ra
•
Các phép toán
•
Thao tác vớibộ nhớ
z
Khắcphụclỗi
•
lưutrạng thái an toàn
•
quay lạitrạng thái an toàn gầnnhất
FILE* fp;
fp = fopen("data",
"r");
FILE* fp;
if (NULL == (fp =
fopen("data", "r")) {
fprintf(stderr, "can not
open file...");
...
}
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 28
Fault tolerance programming
KỸ THUẬT LẬP TRÌNH –
thứ lỗi
z
Phát hiệnlỗi
z
Định ra mức độ thiệthại
z
Hồiphụcsaukhigặplỗi
z
Chữalỗi
version 1
version 2
version 3
comparison
N - v
ersion
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 29
TỔNG KẾT
z
Lựachọnphương pháp lậptrình
z
Lựachọnngônngữ lậptrình
z
Lập trình theo phong cách tốt
z
Áp dụng kỹ thuậtlập trình phù hợp