Kỹ thuật lập trình - Chương 1: Mở đầu

1.1 Giới thiệunộidung môn học

1.2 Giới thiệu chung vềkỹthuật lập trình

1.3 Phươngphápluận

1.4 Qui trình phát triển phần mềm

1.5 Sơlược vềngôn ngữC/C++

pdf48 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 1599 | Lượt tải: 2download
Tóm tắt nội dung Kỹ thuật lập trình - Chương 1: Mở đầu, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
N
Chương 1: Mở đầu
Ví dụ minh họa: Quản lý sinh viên (C++)
class Date {
int Day, Month, Year;
public:
void setDate(int, int, int);
... 
};
class Student {
string name;
Date dob;
int code;
public:
Student(string n, Date d, int c);
...
};
class StudentList {
Student* list;
public:
void addStudent(Student*);
...
};
26
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Ví dụ minh họa: Tính toán kiểu MATLAB
Vector a(10, 1.0), b(10, 0.5);
Vector c = a + b;
...
Vector d = a - b + 2*c;
Matrix A(4,4), B(4,2), C(2,4), D(2,2);
Vector x(4),u(2),y(2);
...
while (true) {
 // đọc đầu vào u
 y = C*x + D*u;
 x = A*x + B*u;
 // đưa đầu ra y
}
...
CTFMatrix G = ss2tf(A,B,C,D);
...
27
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Lập trình tổng quát (generic programming)
ƒ Một tư duy lập trình mở, trên quan ₫iểm tổng quát 
hóa tất cả những gì có thể nhằm ₫ưa ra một khuôn 
mẫu giải pháp cho nhiều bài toán lập trình cụ thể.
ƒ Ưu ₫iểm: 
— Giảm tối ₫a lượng mã nguồn
— Tăng nhiều lần giá trị sử dụng lại của phần mềm
— Có thể kết hợp tùy ý với các phương pháp luận khác
— Tính khả chuyển cao
ƒ Các hình thức tổng quát hóa:
— Kiểu dữ liệu
— Phép toán cơ bản
— Cấu trúc dữ liệu
— Quản lý bộ nhớ,... 
28
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Ví dụ minh họa: Các cấu trúc toán học
typedef TMatrix Matrix;
typedef TMatrix > ComplexMatrix;
Matrix a(4,4), b(4,4);
Matrix c = a*b;
ComplexMatrix a1(4,4), b1(4,4);
ComplexMatrix c1 = a1*b1;
typedef TPoly Poly;
typedef TMatrix PolyMatrix;
typedef TPoly ComplexMatrixPoly;
TRational IntRational;
TRational PolyRational;
...
29
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Lập trình thành phần (component-based programming)
ƒ Phương pháp xây dựng phần mềm dựa trên các 
thành phần "IC" có sẵn, hoặc tạo ra các IC ₫ó.
ƒ Tiến hóa từ lập trình hướng ₫ối tượng
ƒ Hầu hết các ứng dụng Windows và ứng dụng Internet 
ngày nay ₫ược xây dựng theo phương pháp luận này
ƒ Các ngôn ngữ tiêu biểu
— C/C++, C#
— Delphi, Visual Basic
— Script, HMTL, XML,...
— FBD
30
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Lập trình thời gian thực (real-time programming)
ƒ Xây dựng phần mềm ₫áp ứng tính năng thời gian 
thực của hệ thống, ví dụ các hệ thống ₫iều khiển
ƒ Đặc thù:
— Lập trình cạnh tranh (₫a nhiệm, ₫a luồng)
— Cơ chế xử lý sự kiện
— Cơ chế ₫ịnh thời
— Đồng bộ hóa quá trình
— Hiệu suất cao
ƒ Ngôn ngữ lập trình: ASM, C/C++, ADA,...
ƒ Cần sự hỗ trợ của nền cài ₫ặt
— Hệ ₫iều hành
— Nền phần cứng
— Mạng truyền thông
31
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
1.4 Qui trình phát triển phần mềm
MÔ HÌNH 
PHÂN TÍCH
Phân tích
MÔ HÌNH 
THIẾT KẾ
Thiết kế
Mã hóa
Thử nghiệm
THẾ GIỚI 
THIẾT KẾ
THẾ GIỚI 
THỰC
BÀI TOÁN GIẢI PHÁP?
32
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Tập hợp và phân tích yêu cầu
ƒ Bởi vì: Khách hàng thường biết ₫ược là họ muốn gì, 
nhưng không biết lập hoạch các yêu cầu
ƒ Cho nên: Cần phải cùng với khách hàng phân hoạch 
và làm rõ những yêu cầu về phạm vi chức năng của 
bài toán
ƒ Kết quả: Mô hình ₫ặc tả (Specification Model) ấn ₫ịnh 
và chỉ rõ yêu cầu của bài toán một cách tường minh 
theo một ngôn ngữ mô hình hóa rõ ràng, dễ hiểu ₫ể
nhóm phân tích thiết kế lập trình thực hiện
Ö Trả lời câu hỏi: Khách hàng cần những gì và nên 
làm gì?
33
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Phân tích hệ thống (System analysis)
ƒ Phân tích mối liên hệ của hệ thống với môi trường
xung quanh
ƒ Tìm ra cấu trúc hệ thống và các thành phần quan 
trọng
ƒ Định nghĩa chức năng cụ thể của các thành phần
ƒ Nhận biết các ₫ặc ₫iểm của từng thành phần
ƒ Phân loại các thành phần, tổng quát hóa, ₫ặc biệt hóa
ƒ Nhận biết mối liên hệ giữa các thành phần
ƒ Kết quả: Mô hình hệ thống (System model)
ƒ Cần một ngôn ngữ mô hình hóa ₫ể trao ₫ổi giữa các 
thành viên trong nhóm phân tích và với nhóm thiết kế
Ö Trả lời câu hỏi: Những gì sẽ phải làm?
34
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Thiết kế hệ thống (System Design)
ƒ Dựa trên mô hình hệ thống, xây dựng các mô hình chi 
tiết phục vụ sẵn sàng mã hóa/cài ₫ặt
ƒ Bao gồm:
— Thiết kế cấu trúc (structured design): chương trình, kiểu dữ
liệu, ₫ối tượng, quan hệ cấu trúc giữa các ₫ối tượng và kiểu)
— Thiết kế tương tác (interaction design): quan hệ tương tác 
giữa các ₫ối tượng
— Thiết kế hành vi (behaviour design): sự kiện, trạng thái, phép 
toán, phản ứng
— Thiết kế chức năng (funtional design): tiến trình hành ₫ộng, 
hàm, thủ tục)
ƒ Kết quả: Mô hình thiết kế (các bản vẽ và lời văn mô tả)
Ö Trả lời câu hỏi: Làm như thế nào?
35
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Các bước khác
ƒ Mã hóa/cài ₫ặt (Coding/Implementation): Thể hiện mô
hình thiết kế với một ngôn ngữ lập trình cụ thể
ƒ Thử nghiệm (Testing, Verification): Chạy thử, phân tích 
và kiểm chứng:
— Thử ₫ơn vị (Unit Test)
— Thử tích hợp (Integration Test)
ƒ Gỡ rối (Debugging): Tìm ra và sửa các lỗi chương trình 
chạy (các lỗi logic)
ƒ Xây dựng tài liệu (Documenting): Xây dựng tài liệu phát 
triển, tài liệu hướng dẫn sử dụng
ƒ Đào tạo, chuyển giao
ƒ Bảo trì, bảo dưỡng
36
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Chu trình cổ ₫iển: “Waterfall Model”
Nghiên cứu
khả thi
Nghiên cứu
khả thi
Phân tích
yêu cầu
Phân tích
yêu cầu
Thiết kếThiết kế
Mã hóaã hóa
Thử nghiệm
đơn vị
Thử nghiệ
đơn vị
Thử nghiệm 
tích hợp
Thử nghiệ 
tích hợp
Đào tạoĐào tạo
Chuyển giaoChuyển giao
Bảo trìBảo trì
37
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Xu thế hiện nay: Song song và lặp
38
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Lập trình là gì, nằm ở ₫âu?
ƒ Lập trình > Mã hóa
ƒ Lập trình ≈ Tư tưởng thiết kế + Mã hóa + Thử
nghiệm + Gỡ rối
39
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Các bước phát triển chương trình
Biên dịch
Mã nguồn
Liên kết
Mã đích
Nạp và chạy
CT chạy được
Thư viện
40
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Môi trường/công cụ phát triển
ƒ IDE (Integrated Development Environment)
— Hỗ trợ toàn bộ các bước phát triển chương trình
— Ví dụ: MS Visual C++, Borland C++ (Builder), Keil-C
ƒ Các công cụ tiêu biểu
— Trình soạn thảo (Editor)
— Trình biên dịch (Compiler)
— Trình liên kết (Linker)
— Trình nạp (Loader)
— Trình gỡ rối (Debugger)
— Trình quản lý dự án (Project Manager)
©2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Môi trường phát triển
42
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
1.5 Sơ lược về C/C++
Lược sử ngôn ngữ C
ƒ Tiến hóa từ hai ngôn ngữ lập trình
— BCPL và B: Các ngôn ngữ “phi kiểu”
ƒ Dennis Ritchie (Bell Laboratories, AT&T)
— Bổ sung kiểu hóa dữ liệu và các yếu tố khác
ƒ Ngôn ngữ phát triển hệ ₫iều hành UNIX
ƒ Không phụ thuộc phần cứng
— Tính khả chuyển
ƒ 1989: ANSI chuẩn hóa (ANSI-C)
ƒ 1990: Công bố chuẩn ANSI và ISO
— ANSI/ISO 9899: 1990
43
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Lược sử ngôn ngữ C++
ƒ Mở rộng, tiến hóa từ C
ƒ Bjarne Stroustrup (Bell Laboratories)
— Đầu những năm 1980: “C with classes”
— 1984: Tên C++
— 1987: “The C++ Programming Language” 1st Edition
— 1997: “The C++ Programming Language” 3rd Edition
— Chuẩn hóa quốc tế: ANSI/ISO 1996
ƒ Bổ sung các ₫ặc tính hỗ trợ:
— Lập trình hướng ₫ối tượng
— Lập trình tổng quát
— Lập trình toán học,...
ƒ Ngôn ngữ “lai”
44
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Tại sao chọn C/C++
ƒ Đáp ứng các yêu cầu:
— Gần gũi với phần cứng
— Hiệu suất cao
— Tương ₫ối thân thiện với người lập trình
— Khả chuyển
— Chuẩn hóa quốc tế (tương lai vững chắc)
ƒ Thế mạnh tuyệt ₫ối của ANSI-C:
— Phổ biến cho hầu hết các nền vi xử lý, vi ₫iều khiển, DSP
— Phổ biến cho “mỗi người lập trình” trên thế giới
ƒ Thế mạnh tuyệt ₫ối của ANSI/ISO C++:
— Lập trình hướng ₫ối tượng
— Lập trình tổng quát (template)
— Lập trình toán học (dữ liệu trừu tượng và nạp chồng toán tử)
45
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Visual C++, .NET & C#
ƒ Visual C++:
— Môi trường/công cụ lập trình C++ của Microsoft
— Mở rộng một số yếu tố
— Thư viện lập trình Windows: Microsoft Foundation Classes 
(MFC), Active Template Library (ATL)
— Các thư viện chung: GUI, graphics, networking, 
multithreading, …
ƒ .NET (“dot net”)
— Kiến trúc nền tảng phần mềm lập trình phân tán
— Hướng tới các ứng dụng Web, phân tán trên nhiều chủng
loại thiết bị khác nhau
— Các ứng dụng trên nhiều ngôn ngữ khác nhau có thể giao
tiếp một cách ₫ơn giản trên một nền chung
— Phương pháp luận: Lập trình thành phần
46
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Visual C++, .NET & C#
ƒ C#
— Anders Hejlsberg và Scott Wiltamuth (Microsoft)
— Thiết kế riêng cho nền .NET
— Nguồn gốc từ C, C++ và Java
— Điều khiển theo sự kiện, hoàn toàn hướng ₫ối tượng, ngôn
ngữ lập trình hiển thị
— Integrated Development Environment (IDE)
— Tương tác giữa các ngôn ngữ
47
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Chúng ta ₫ã học ₫ược những gì?
ƒ Biết ₫ược những gì sẽ phải học, học ₫ể làm gì và
phải học như thế nào
ƒ Hàng loạt khái niệm mới xung quanh kỹ thuật lập
trình và qui trình công nghệ phần mềm
ƒ Tổng quan về các kỹ thuật lập trình
ƒ Lược sử ngôn ngữ C/C++, thế mạnh của chúng so 
với các ngôn ngữ khác
48
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 1: Mở đầu
Chủ ₫ề tiếp theo: C/C++ cơ sở
ƒ Tổ chức chương trình/bộ nhớ
ƒ Dữ liệu và biến
ƒ Toán tử, biểu thức và câu lệnh
ƒ Điều khiển chương trình: vòng lặp, rẽ nhánh
ƒ Mảng và con trỏ
ƒ Cấu trúc

File đính kèm:

  • pdfC1_Introduction.pdf