28
BM Công nghphn mm – Khoa CNTT – ĐHCN - ĐHQGHN 1 Bài 6 LËp tr×nh

Bai6 - Programming

Embed Size (px)

DESCRIPTION

Bai6 - Programming

Citation preview

Page 1: Bai6 - Programming

BM Công nghệ phần mềm – Khoa CNTT – ĐHCN - ĐHQGHN 1

Bài 6

LËp tr×nh

Page 2: Bai6 - Programming

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

Page 3: Bai6 - Programming

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

Page 4: Bai6 - Programming

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ế

Page 5: Bai6 - Programming

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

Page 6: Bai6 - Programming

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

Page 7: Bai6 - Programming

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

Page 8: Bai6 - Programming

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

Page 9: Bai6 - Programming

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

Page 10: Bai6 - Programming

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ụ

Page 11: Bai6 - Programming

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

Page 12: Bai6 - Programming

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

Page 13: Bai6 - Programming

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:

Page 14: Bai6 - Programming

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

Page 15: Bai6 - Programming

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

Page 16: Bai6 - Programming

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

Page 17: Bai6 - Programming

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

Page 18: Bai6 - Programming

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

Page 19: Bai6 - Programming

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

Page 20: Bai6 - Programming

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ệ

Page 21: Bai6 - Programming

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ệ

Page 22: Bai6 - Programming

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ệ

Page 23: Bai6 - Programming

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

Page 24: Bai6 - Programming

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

Page 25: Bai6 - Programming

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

Page 26: Bai6 - Programming

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

Page 27: Bai6 - Programming

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

Page 28: Bai6 - Programming

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