Date post: | 07-Apr-2018 |
Category: |
Documents |
Upload: | thaongo211189 |
View: | 224 times |
Download: | 0 times |
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 1/48
© 2 0 0 4 ,
H O À
N G M I N H S Ơ N
C h ư ơ n g 1
Kỹ thuật lập trình
010101010101010110000101010101010101011000010101010101010101100001
010101010010101010010101010101001010101001010101010100101010100101
101001100011001001001010100110001100100100101010011000110010010010
110010110010001000001011001011001000100000101100101100100010000010
010101010101010110000101010101010101011000010101010101010101100001
010101010010101010010101010101001010101001010101010100101010100101101001100011001001001010100110001100100100101010011000110010010010
110010110010001000001011001011001000100000101100101100100010000010
010101010101010110000101010101010101011000010101010101010101100001
010101010010101010010101010101001010101001010101010100101010100101
101001100011001001001010100110001100100100101010011000110010010010
110010110010001000001011001011001000100000101100101100100010000010
8/14/2006
y = A*x + B*u;
x = C*x + d*u;
StateController
start()
stop()
LQGController
start()
stop()
Chươ ng 1: Mở ₫ầu
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 2/48
2© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Nội dung bài giảng
1.1 Giớ i thiệu nội dung môn học
1.2 Giớ i thiệu chung về kỹ thuật lập trình1.3 Phươ ng pháp luậ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++
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 3/48
3© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
1.1 Nội dung môn học
Các kỹ thuật lập trình cơ bản, thự c hiện minh hoạtrên các ngôn ng ữ lập trình C và C++:
— Lập trình có cấu trúc ( structured programming)— Lập trình hướ ng ₫ố i tượ ng (object-oriented programming)
— Lập trình thờ i gian thự c (real-time programming)
— Lập trình tổng quát ( generic programming) Tại sao chọn C/C++:
— Hai ngôn ngữ lập trình tiêu biểu nhất, ₫ủ ₫ể thự c hiện cáckỹ thuật lập trình quan trọng
— Hai ngôn ngữ lập trình quan trọng nhất ₫ố i vớ i kỹ sư ₫iện/kỹ sư ₫iều khiển
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 4/484©
2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Quan ₫iểm về môn học
Đề cao kiế n thứ c cơ bản, nền tảng:— Thiên về tư duy và phươ ng pháp lập trình
— Tạo khả năng dễ thích ứ ng vớ i các ứ ng dụng khác nhau— Tạo khả năng dễ thích ứ ng vớ i các ngôn ng ữ lập trìnhkhác (Java, Visual Basic, C#, MATLAB…)
— Nhấn mạnh tính chuyên nghiệp trong lập trình: hiệu
quả + chất lượ ng Nhữ ng nội dung không có trong chươ ng trình:
— Lập trình hệ thố ng (low-level system programming)— Lập trình ₫ồ họa— Lập trình giao tiế p vớ i các thiế t bị ngoại vi ( cổng nố i tiế p,
song song…)— Lập trình cơ sở dữ liệu
— Lập trình thành phần, lập trình phân tán (mạng, Internet)
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 5/48
5© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Phươ ng pháp học tập
Cách thứ nhất: Nghe giảng làm thử ₫ọc tàiliệu thảo luận luyện tập
Cách thứ hai: Đọc tài liệu làm thử nghe giảng thảo luận luyện tập
Nguyên tắc cơ bản: Chủ ₫ộng học thườ ng xuyên!
Nhữ ng ₫iều không nên làm:— Chép nhiều trên lớ p— Học thuộc lòng, học chay
— Mong ₫ợ i nhiều vàoôn tập— Dự a dẫm vào các bài tập mẫu trong sách
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 6/48
6© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Công cụ học tập
Máy tính PC
Môi trườ ng lập trình: Visual C++ 6.0 (Visual
Studio 6.0), Visual C++ .NET, Borland C++ Builder Nền ứ ng dụng: Win32 Console Application
Tài liệu tham khảo.
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 7/48
7© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
1.2 Tổng quan về kỹ thuật lập trình
K ỹ thuật lập trình là gì: K ỹ thuật thự c thi một giải pháp phần m ềm (cấ u trúc dữ li ệu + giải thuật) dự a trên n ền tảng một
phươ ng pháp luận (methodology) và một hoặc nhi ều ngôn ngữ lậ ptrình phù hợ p vớ i yêu cầu ₫ặc thù của ứ ng dụng.
K ỹ thuật lập trình
= Tư tưở ng thiế t kế + K ỹ thuật mã hóa= Cấu trúc dữ liệu + Giải thuật + Ngôn ngữ lập trình
K ỹ thuật lập trình
≠ Phươ ng pháp phân tích & thiế t kế (A&D)
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 8/48
8© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Thế nào là lập trình?
Viế t chươ ng trình in ra100 số nguyên tố
₫ầu tiên!
Viế t chươ ng trình tínhgiai thừ a của 100!
Lập trình giải bài toán:"V ừ a gà vừ a chó,ba mươ i sáu con,bó lại cho tròn,
một trăm chân chẵn"
KHÔNG PHẢI LÀ LẬP TRÌNH!
Viế t một hàm tínhgiai thừ a!
Viế t chươ ng trình in raN số nguyên tố
₫ầu tiên!
Lập trình giải bài toán:"V ừ a gà vừ a chó,vừ a vặn X con,bó lại cho tròn,
₫ủ Y chân chẵn"
ĐÂY LÀ LẬP TRÌNH!
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 9/48
9© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Thế nào là lập trình tốt?
Đúng/Chính xác— Thoả mãn ₫úng các nhiệm vụ bài toán lập trình ₫ặt ra, ₫ượ c
khách hàng chấp nhận
Ổn ₫ịnh và bền vữ ng— Chươ ng trình chạy ổn ₫ịnh trong cả nhữ ng trườ ng hợ p khắc
nghiệt— Chạy ít lỗi (số lượ ng lỗi ít, cườ ng ₫ộ lỗi thấp)
— Mứ c ₫ộ lỗi nhẹ có thể chấp nhận ₫ượ c Khả năng chỉnh sử a
— Dễ dàng chỉnh sử a trong quá trình sử dụng và phát triển— Dễ dàng thay ₫ổi hoặc nâng cấp ₫ể thích ứ ng vớ i ₫iều kiện
bài toán lập trình thay ₫ổi Khả năng tái sử dụng
— Có thể ₫ượ c sử dụng hoặc ₫ượ c kế thừ a cho các bài toán lậptrình khác
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 10/48
10© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Thế nào là lập trình tốt?
Độ tươ ng thích— Khả năng thích ứ ng và chạy tố t trong các ₫iều kiện môi
trườ ng khác nhau Hiệu suất
— Chươ ng trình nhỏ gọn, sử dụng ít bộ nhớ
— Tố c ₫ộ nhanh, sử dụng ít thờ i gian CPU Hiệu quả:
— Thờ i gian lập trình ngắn,
— Khả năng bảo trì dễ dàng— Giá trị sử dụng lại lớ n— Sử dụng ₫ơ n giản, thân thiện
— Nhiều chứ c năng tiện ích
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 11/48
11© 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 giai thừ a
Viế t chươ ng trình hay xây dự ng hàm?— Hàm tính giai thừ a của một số nguyên
int factorial(int N);
Giải thuật:— Phươ ng pháp ₫ệ quy (recursive )
— Phươ ng pháp lặp (iterative )
if (N > 1)
return N*factorial(N-1);
return 1;
int kq = 1;
while (N > 1)
kq *= N--;
return kq;
☺ „to iterate is human,
to recurse is device!“
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 12/48
12© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Làm thế nào ₫ể lập trình tốt?
Học cách tư duy và phươ ng pháp lập trình— Tư duy toán học, tư duy logic, tư duy có cấu trúc, tư duy
hướ ng ₫ố i tượ ng, tư duy tổng quát— Tìm hiểu về cấu trúc dữ liệu và giải thuật
Hiểu sâu về máy tính— Tươ ng tác giữ a CPU, chươ ng trình và bộ nhớ
— Cơ chế quản lý bộ nhớ Nắm vữ ng ngôn ngữ lập trình
— Biế t rõ các khả năng và hạn chế của ngôn ngữ
— K ỹ năng lập trình (₫ọc thông, viế t thạo) Tự rèn luyện trên máy tính
— Hiểu sâu ₫ượ c các ₫iểm nêu trên— Rèn luyện kỹ năng lập trình— Thúc ₫ẩy sáng tạo
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 13/48
13© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Các nguyên tắc cơ bản
Trừ u tượ ng hóa Chắt lọc r a n hữ ng yế u tố quan trọng, bỏ qua nhữ ng chi
tiế t kém quan trọng
Đóng gói Che giấu v à bảo vệ các dữ liệu quan trọng qua một giao
diện cók iểm soátModule hóa Chia nhỏ ₫ố i tượ ng/vấn ₫ề thành nhiều module nhỏ ₫ể dễ
can thiệpvàg iải quyế tPhân cấp Phân hạng hoặc sắp xế p trật tự ₫ố i tượ ng theo các quan
hệ trên dướ i
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 14/48
14© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Nguyên tắc tối cao
„Keep it simple:
as simple as possible,
but no simpler!“
(Albert Einstein)
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 15/48
15© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Các bài toán lập trình cho kỹ sư ₫iện
Lập trình phần mềm ₫iều khiển (µC, PC, PLC, DCS)
Lập trình phần mềm thu thập/quản lý dữ liệu quá
trình Lập trình phần mềm giao diện ngườ i-máy (₫ồ họa)
Lập trình phần mềm tích hợ p hệ thố ng (COM,
OPC,...) Lập trình phần mềm tính toán, thiế t kế Lập trình phần mềm mô phỏng
Lập trình phần mềm tố i ư u hóa
...
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 16/48
16© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
1.3 Phươ ng pháp luận
Phươ ng pháp: Cách thứ c ti ế n hành một công vi ệc ₫ể có hi ệuquả cao
Phươ ng pháp luận: M ột tậ p hợ p các phươ ng pháp ₫ượ c sử dụng hoặc bộ môn khoa học nghiên cứ u các phươ ng pháp ₫ ó
Phươ ng pháp luận phục vụ:
— Phân tích hệ thố ng— Thiế t kế hệ thố ng
— Thự c hiện
— Thử nghiệm— ...
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 17/48
17© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Lập trình tuần tự (Sequential Programming)
Phươ ng pháp cổ ₫iển nhất, bằng cách liệt k ê c ác lệnhkế tiế p, mứ c trừ u tượ ng thấp
Kiểm soát dòng mạch thự c hiện chươ ng trình bằngcác lệnh rẽ nhánh, lệnh nhảy, lệnh gọi chươ ng trìnhcon (subroutines)
Ví dụ ngôn ngữ ₫ặc thù:— Ngôn ngữ máy,
— ASSEMBLY
— BASIC— IL (Instruction List), STL (Statement List)
— LD, LAD (Ladder Diagram)
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 18/48
18© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Lập trình tuần tự : Ví dụ tính giai thừ a
1: MOV AX, n
2: DEC n3: CMP n, 1
4: JMPI
5: MUL AX, n
6: JMP 2
7: MOV n, AX8: RET
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 19/48
19© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Lập trình tuần tự : Ưu ₫iểm và nhượ c ₫iểm
Ưu ₫iểm:— Tư duy ₫ơ n giản
— Lập trình ở mứ c trừ u tượ ng thấp, nên dễ kiểm soát sử dụngtài nguyên
— Có thể có hiệu suất cao
— Có thể thích hợ p vớ i bài toán nhỏ, lập trình nhúng, lập trình
hệ thố ng Nhượ c ₫iểm:
— Chươ ng trình khó theo dõi -> dễ mắc lỗi
— Khó sử dụng lại— Hiệu quả lập trình thấp
— Không thích hợ p vớ i ứ ng dụng qui mô lớ n
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 20/48
20© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Lập trình có cấu trúc (structured programming)
Cấu trúc hóa dữ liệu (xây dự ng kiểu dữ liệu) và cấutrúc hóa chươ ng trình ₫ể tránh các lệnh nhảy.
Phân tích và thiế t kế theo cách từ trên xuố ng (top-down)
Thự c hiện từ dướ i lên (bottom-up)
Yêu cầu của chươ ng trình có cấu trúc: chỉ sử dụng cáccấu trúc ₫iều khiển tuần tự , tuyển chọn ( if thenelse), lặp (while) và thoát ra (exit).
Ví dụ các ngôn ngữ ₫ặc thù:— PASCAL, ALGO, FORTRAN, C,...
— SFC (Sequential Funtion Charts)
— ST (Structured Text)
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 21/48
21© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Lập trình có cấu trúc: Ví dụ tính giai thừ a (PASCAL)
FUNCTION Factorial(n: INTEGER) : INTEGER
VAR X: INTERGER;
BEGIN
X := n;
WHILE (n > 1) DO
BEGINDEC(n);
X := X * n;
END
Factorial := X;END
END;
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 22/48
22© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Lập trình có cấu trúc: Ví dụ quản lý sinh viên
struct Date { int Day, Month, Year; };
struct Student
{string name;
Date dob;
int code;
};typedef Student* Students; // cấu trúc m ảng
Students create(int max_items, int item_size );
void destroy(Students lop);
void add(Students lop, Student sv); void delete(Students lop, Student sv);
Student find(Students lop, int code);
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 23/48
23© 2 0 0 4 , H O
À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Lập trình module (modular programming)
Lậ p trình module là một dạng cải ti ế n của lậ p trình có cấ u trúc.Chươ ng trình ₫ượ c cấ u trúc nghiêm ngặt hơ n, dùng ₫ơ n vị cấ utrúc là module.
Module:— Một ₫ơ n vị cấu trúc ₫ộc lập, ₫ượ c chuẩn hóa dùng ₫ể tạo lập
một hệ thố ng.
— Mỗi module bao gồm phần giao diện (mở ) và phần thự c hiện(che giấu)
— Các module giao tiế p vớ i nhau thông qua các giao diện ₫ượ c
₫ặc tả rất chính xác. Ví dụ ngôn ngữ tiêu biểu:
— Modula-2, xây dự ng trên cơ sở PASCAL, do Niclaus Wirththiế t kế năm 1977.
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 24/48
24© 2 0 0 4 , H O À N G M
I N H
S Ơ N
Chương 1: Mở đầu
Lập trình hướ ng ₫ối tượ ng (Object-Oriented Programming)
Xây dự ng chươ ng trình ứ ng dụng theo quan ₫ i ể m dự a trên cáccấ u trúc dữ li ệu trừ u tượ ng (lớ p), các th ể nghi ệm của các cấ u trúc
₫ ó ( ₫ố i tượ ng) và quan h ệ giữ a chúng (quan h ệ lớ p, quan h ệ ₫ố itượ ng).
Nguyên lý cơ bản:
— Trừ u tượ ng (abstraction)— Đóng gói dữ liệu (data encapsulation)
— Dẫn xuất/thừ a kế ( subtyping/inheritance)
— Đa hình/ ₫a xạ ( polymorphism)
Ví dụ ngôn ngữ hỗ trợ tiêu biểu:— C++, C#
— Java,
— ADA,
— ...
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 25/48
25© 2 0 0 4 , H O À N G M
I N H
S Ơ 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*);...
};
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 26/48
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);
...
ổ
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 27/48
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áthó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ớ ,...
V d h h C ấ h
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 28/48
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<double> Matrix;
typedef TMatrix<complex<double> > 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<double> Poly;
typedef TMatrix<Poly> PolyMatrix;
typedef TPoly<ComplexMatrix> ComplexMatrixPoly;
TRational<int> IntRational;
TRational<Poly> PolyRational;
...
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 29/48
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ácthà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
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 30/48
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 gianthự 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
1 4 Q i t ì h hát t iể hầ ề
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 31/48
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óaThử nghiệm
THẾ GIỚ ITHIẾT K Ế
THẾ GIỚ ITHỰC
BÀI TOÁN GI Ả I PHÁP?
Tậ h à hâ tí h ê ầ
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 32/48
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ạchvà làm rõ nhữ ng yêu cầu về phạm vi chứ c năng củabà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 minhtheo 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ênlàm gì?
Phâ tí h hệ thố g (S t l i )
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 33/48
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ườ ngxung quanh
Tìm ra cấu trúc hệ thố ng và các thành phần quantrọ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?
Thiết kế hệ thống (System Design)
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 34/48
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 chitiế 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éptoá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?
Các bước khác
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 35/48
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íchvà 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ìnhchạy (các lỗi logic)
Xây dự ng tài liệu ( Documenting): Xây dự ng tài liệu pháttriể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
Chu trình cổ ₫iển: “Waterfall Model”
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 36/48
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óaMã hóa
Thử nghiệm
đơn vị
Thử nghiệm
đơn vịThử nghiệm
tích hợp
Thử nghiệm
tích hợp
Đào tạo Đào tạo
Chuyển giaoChuyển giao
Bảo trìBảo trì
X thế hiện na : Song song à lặp
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 37/48
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
Lập trình là gì nằm ở ₫âu?
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 38/48
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
Các bước phát triển chương trình
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 39/48
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
Môi trường/công cụ phát triển
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 40/48
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)
Môi trường phát triển
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 41/48
© 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
1.5 Sơ lược về C/C++
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 42/48
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ế nhó atừ 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 óadữ 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
Lược sử ngôn ngữ C++
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 43/48
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ế nhó atừ 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”
Tại sao chọn C/C++
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 44/48
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ượ n gvànạp chồng toán tử )
Visual C++, .NET & C#
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 45/48
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
Visual C++, .NET & C#
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 46/48
46© 2 0 0 4 , H
O À N G M
I N H
S Ơ N
Chương 1: Mở đầu
V sua C , .N & 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ônngữ lập trình hiển thị
— Integrated Development Environment (IDE)— Tươ ng tác giữ a các ngôn ngữ
Chúng ta ₫ã học ₫ược những gì?
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 47/48
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ữ ngg ì 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ậptrì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
Chủ ₫ề tiếp theo: C/C++ cơ sở
8/6/2019 c1 Introduction 7659
http://slidepdf.com/reader/full/c1-introduction-7659 48/48
48© 2 0 0 4 , H
O À N G M
I N H
S Ơ
N
Chương 1: Mở đầu
p
Tổ chứ c chươ ng trình/bộ nhớ Dữ liệuvàb iế 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