You are on page 1of 48

K thut lp trnh

Chng 1

Chng 1: M u
0101010101010101100001 0101010101010101100001 StateController 0101010100101010100101 0101010100101010100101 1010011000110010010010 1010011000110010010010 start() 1100101100100010000010 1100101100100010000010 stop() 0101010101010101100001 0101010101010101100001 0101010100101010100101 0101010100101010100101 1010011000110010010010+ B*u; 1010011000110010010010 y = A*x 1100101100100010000010+ d*u; 1100101100100010000010 x = C*x LQGController 0101010101010101100001 0101010101010101100001 0101010100101010100101 0101010100101010100101 start() 1010011000110010010010 stop() 1010011000110010010010 1100101100100010000010 1100101100100010000010 8/14/2006

2004, HONG MINH SN

Ni dung bi ging
1.1 1.2 1.3 1.4 1.5 Gii thiu ni dung mn hc Gii thiu chung v k thut lp trnh Phng php lun Qui trnh pht trin phn mm S lc v ngn ng C/C++

2004, HONG MINH SN

Chng 1: M u

1.1 Ni dung mn hc
Cc k thut lp trnh c bn, thc hin minh ho trn cc ngn ng lp trnh C v C++:
Lp trnh c cu trc (structured programming) Lp trnh hng i tng (object-oriented programming) Lp trnh thi gian thc (real-time programming) Lp trnh tng qut (generic programming)

Ti sao chn C/C++:


2004, HONG MINH SN

Hai ngn ng lp trnh tiu biu nht, thc hin cc k thut lp trnh quan trng Hai ngn ng lp trnh quan trng nht i vi k s in/k s iu khin

Chng 1: M u

Quan im v mn hc
cao kin thc c bn, nn tng:
Thin v t duy v phng php lp trnh To kh nng d thch ng vi cc ng dng khc nhau To kh nng d thch ng vi cc ngn ng lp trnh khc (Java, Visual Basic, C#, MATLAB) Nhn mnh tnh chuyn nghip trong lp trnh: hiu qu + cht lng

Nhng ni dung khng c trong chng trnh:


2004, HONG MINH SN

Lp trnh h thng (low-level system programming) Lp trnh ha Lp trnh giao tip vi cc thit b ngoi vi ( cng ni tip, song song) Lp trnh c s d liu Lp trnh thnh phn, lp trnh phn tn (mng, Internet)
4

Chng 1: M u

Phng php hc tp
Cch th nht: Nghe ging lm th c ti liu tho lun luyn tp Cch th hai: c ti liu lm th nghe ging tho lun luyn tp Nguyn tc c bn: Ch ng hc thng xuyn! Nhng iu khng nn lm:
Chp nhiu trn lp Hc thuc lng, hc chay Mong i nhiu vo n tp Da dm vo cc bi tp mu trong sch

2004, HONG MINH SN

Chng 1: M u

Cng c hc tp
My tnh PC Mi trng lp trnh: Visual C++ 6.0 (Visual Studio 6.0), Visual C++ .NET, Borland C++ Builder Nn ng dng: Win32 Console Application Ti liu tham kho.

2004, HONG MINH SN

Chng 1: M u

1.2 Tng quan v k thut lp trnh


K thut lp trnh l g: K thut thc thi mt gii php phn mm (cu trc d liu + gii thut) da trn nn tng mt phng php lun (methodology) v mt hoc nhiu ngn ng lp trnh ph hp vi yu cu c th ca ng dng. K thut lp trnh = T tng thit k + K thut m ha = Cu trc d liu + Gii thut + Ngn ng lp trnh
2004, HONG MINH SN

K thut lp trnh Phng php phn tch & thit k (A&D)

Chng 1: M u

Th no l lp trnh?
Vit chng trnh tnh giai tha ca 100! Vit chng trnh in ra 100 s nguyn t u tin! Lp trnh gii bi ton: "Va g va ch, ba mi su con, b li cho trn, mt trm chn chn" Vit mt hm tnh giai tha! Vit chng trnh in ra N s nguyn t u tin! Lp trnh gii bi ton: "Va g va ch, va vn X con, b li cho trn, Y chn chn"

2004, HONG MINH SN

KHNG PHI L LP TRNH!

Y L LP TRNH!
8

Chng 1: M u

Th no l lp trnh tt?
ng/Chnh xc
Tho mn ng cc nhim v bi ton lp trnh t ra, c khch hng chp nhn

n nh v bn vng
Chng trnh chy n nh trong c nhng trng hp khc nghit Chy t li (s lng li t, cng li thp) Mc li nh c th chp nhn c

Kh nng chnh sa
2004, HONG MINH SN

D dng chnh sa trong qu trnh s dng v pht trin D dng thay i hoc nng cp thch ng vi iu kin bi ton lp trnh thay i

Kh nng ti s dng
C th c s dng hoc c k tha cho cc bi ton lp trnh khc
9

Chng 1: M u

Th no l lp trnh tt?
tng thch
Kh nng thch ng v chy tt trong cc iu kin mi trng khc nhau

Hiu sut
Chng trnh nh gn, s dng t b nh Tc nhanh, s dng t thi gian CPU

Hiu qu:
2004, HONG MINH SN

Thi gian lp trnh ngn, Kh nng bo tr d dng Gi tr s dng li ln S dng n gin, thn thin Nhiu chc nng tin ch
10

Chng 1: M u

V d minh ha: Tnh giai tha


Vit chng trnh hay xy dng hm?
Hm tnh giai tha ca mt s nguyn int factorial(int N);

Gii thut:
Phng php quy (recursive)
if (N > 1) return N*factorial(N-1); return 1;
2004, HONG MINH SN

Phng php lp (iterative)


int kq = 1; while (N > 1) kq *= N--; return kq;

to iterate is human, to recurse is device!


11

Chng 1: M u

Lm th no lp trnh tt?
Hc cch t duy v phng php lp trnh
T duy ton hc, t duy logic, t duy c cu trc, t duy hng i tng, t duy tng qut Tm hiu v cu trc d liu v gii thut

Hiu su v my tnh
Tng tc gia CPU, chng trnh v b nh C ch qun l b nh

Nm vng ngn ng lp trnh


2004, HONG MINH SN

Bit r cc kh nng v hn ch ca ngn ng K nng lp trnh (c thng, vit tho)

T rn luyn trn my tnh


Hiu su c cc im nu trn Rn luyn k nng lp trnh Thc y sng to
12

Chng 1: M u

Cc nguyn tc c bn
Tru tng ha
Cht lc ra nhng yu t quan trng, b qua nhng chi tit km quan trng

ng gi
Che giu v bo v cc d liu quan trng qua mt giao din c kim sot

Module ha
2004, HONG MINH SN

Chia nh i tng/vn thnh nhiu module nh d can thip v gii quyt

Phn cp
Phn hng hoc sp xp trt t i tng theo cc quan h trn di
13

Chng 1: M u

Nguyn tc ti cao

Keep it simple: as simple as possible, but no simpler!


(Albert Einstein)
2004, HONG MINH SN

Chng 1: M u

14

Cc bi ton lp trnh cho k s in


Lp trnh phn mm iu khin (C, PC, PLC, DCS) Lp trnh phn mm thu thp/qun l d liu qu trnh Lp trnh phn mm giao din ngi-my ( ha) Lp trnh phn mm tch hp h thng (COM, OPC,...) Lp trnh phn mm tnh ton, thit k Lp trnh phn mm m phng Lp trnh phn mm ti u ha ...
15

Chng 1: M u

2004, HONG MINH SN

1.3 Phng php lun


Phng php: Cch thc tin hnh mt cng vic c hiu qu cao Phng php lun: Mt tp hp cc phng php c s dng hoc b mn khoa hc nghin cu cc phng php Phng php lun phc v:
Phn tch h thng Thit k h thng Thc hin Th nghim ...

2004, HONG MINH SN

Chng 1: M u

16

Lp trnh tun t (Sequential Programming)


Phng php c in nht, bng cch lit k cc lnh k tip, mc tru tng thp Kim sot dng mch thc hin chng trnh bng cc lnh r nhnh, lnh nhy, lnh gi chng trnh con (subroutines) V d ngn ng c th:
Ngn ng my, ASSEMBLY BASIC IL (Instruction List), STL (Statement List) LD, LAD (Ladder Diagram)

2004, HONG MINH SN

Chng 1: M u

17

Lp trnh tun t: V d tnh giai tha


1: 2: 3: 4: 5: 6:
2004, HONG MINH SN

MOV DEC CMP JMPI MUL JMP MOV RET

AX, n n n, 1 AX, n 2 n, AX

7: 8:

Chng 1: M u

18

Lp trnh tun t: u im v nhc im


u im:
T duy n gin Lp trnh mc tru tng thp, nn d kim sot s dng ti nguyn C th c hiu sut cao C th thch hp vi bi ton nh, lp trnh nhng, lp trnh h thng

Nhc im:
2004, HONG MINH SN

Chng trnh kh theo di -> d mc li Kh s dng li Hiu qu lp trnh thp Khng thch hp vi ng dng qui m ln

Chng 1: M u

19

Lp trnh c cu trc (structured programming)


Cu trc ha d liu (xy dng kiu d liu) v cu trc ha chng trnh trnh cc lnh nhy. Phn tch v thit k theo cch t trn xung (topdown) Thc hin t di ln (bottom-up) Yu cu ca chng trnh c cu trc: ch s dng cc cu trc iu khin tun t, tuyn chn ( if then else), lp (while) v thot ra (exit). V d cc ngn ng c th:
PASCAL, ALGO, FORTRAN, C,... SFC (Sequential Funtion Charts) ST (Structured Text)
20

Chng 1: M u

2004, HONG MINH SN

Lp trnh c cu trc: V d tnh giai tha (PASCAL)

2004, HONG MINH SN

FUNCTION Factorial(n: INTEGER) : INTEGER VAR X: INTERGER; BEGIN X := n; WHILE (n > 1) DO BEGIN DEC(n); X := X * n; END Factorial := X; END END;

Chng 1: M u

21

Lp trnh c cu trc: V d qun l sinh vin


struct Date { int Day, Month, Year; }; struct Student { string name; Date dob; int code; }; typedef Student* Students; // cu trc mng 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);

2004, HONG MINH SN

Chng 1: M u

22

Lp trnh module (modular programming)


Lp trnh module l mt dng ci tin ca lp trnh c cu trc. Chng trnh c cu trc nghim ngt hn, dng n v cu trc l module. Module:
Mt n v cu trc c lp, c chun ha dng to lp mt h thng. Mi module bao gm phn giao din (m) v phn thc hin (che giu) Cc module giao tip vi nhau thng qua cc giao din c c t rt chnh xc.

2004, HONG MINH SN

V d ngn ng tiu biu:


Modula-2, xy dng trn c s PASCAL, do Niclaus Wirth thit k nm 1977.
23

Chng 1: M u

Lp trnh hng i tng (Object-Oriented Programming)


Xy dng chng trnh ng dng theo quan im da trn cc cu trc d liu tru tng (lp), cc th nghim ca cc cu trc (i tng) v quan h gia chng (quan h lp, quan h i tng). Nguyn l c bn:
Tru tng (abstraction) ng gi d liu (data encapsulation) Dn xut/tha k (subtyping/inheritance) a hnh/a x (polymorphism)

2004, HONG MINH SN

V d ngn ng h tr tiu biu:

C++, C# Java, ADA, Chng 1: M u ...

24

V d minh ha: Qun l sinh vin (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*); ... };
25

Chng 1: M u

2004, HONG MINH SN

V d minh ha: Tnh ton kiu 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 vo u y = C*x + D*u; x = A*x + B*u; // a u ra y } ... CTFMatrix G = ss2tf(A,B,C,D); ...
26

Chng 1: M u

2004, HONG MINH SN

Lp trnh tng qut (generic programming)


Mt t duy lp trnh m, trn quan im tng qut ha tt c nhng g c th nhm a ra mt khun mu gii php cho nhiu bi ton lp trnh c th. u im:

2004, HONG MINH SN

Gim ti a lng m ngun Tng nhiu ln gi tr s dng li ca phn mm C th kt hp ty vi cc phng php lun khc Tnh kh chuyn cao Kiu d liu Php ton c bn Cu trc d liu Qun l b nh,...
27

Cc hnh thc tng qut ha:


Chng 1: M u

V d minh ha: Cc cu trc ton hc


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;
2004, HONG MINH SN

TRational<int> IntRational; TRational<Poly> PolyRational; ...

Chng 1: M u

28

Lp trnh thnh phn (component-based programming)


Phng php xy dng phn mm da trn cc thnh phn "IC" c sn, hoc to ra cc IC . Tin ha t lp trnh hng i tng Hu ht cc ng dng Windows v ng dng Internet ngy nay c xy dng theo phng php lun ny Cc ngn ng tiu biu
C/C++, C# Delphi, Visual Basic Script, HMTL, XML,... FBD

2004, HONG MINH SN

Chng 1: M u

29

Lp trnh thi gian thc (real-time programming)


Xy dng phn mm p ng tnh nng thi gian thc ca h thng, v d cc h thng iu khin c th:

2004, HONG MINH SN

Lp trnh cnh tranh (a nhim, a lung) C ch x l s kin C ch nh thi ng b ha qu trnh Hiu sut cao

Ngn ng lp trnh: ASM, C/C++, ADA,... Cn s h tr ca nn ci t


H iu hnh Nn phn cng Mng truyn thng
30

Chng 1: M u

1.4 Qui trnh pht trin phn mm

BI TON

GII PHP

TH GII THC

Phn tch

M ha Th nghim TH GII THIT K

2004, HONG MINH SN

M HNH PHN TCH Thit k

M HNH THIT K

Chng 1: M u

31

Tp hp v phn tch yu cu
Bi v: Khch hng thng bit c l h mun g, nhng khng bit lp hoch cc yu cu Cho nn: Cn phi cng vi khch hng phn hoch v lm r nhng yu cu v phm vi chc nng ca bi ton Kt qu: M hnh c t (Specification Model) n nh v ch r yu cu ca bi ton mt cch tng minh theo mt ngn ng m hnh ha r rng, d hiu nhm phn tch thit k lp trnh thc hin
2004, HONG MINH SN

Tr li cu hi: Khch hng cn nhng g v nn lm g?


32

Chng 1: M u

Phn tch h thng (System analysis)


Phn tch mi lin h ca h thng vi mi trng xung quanh Tm ra cu trc h thng v cc thnh phn quan trng nh ngha chc nng c th ca cc thnh phn Nhn bit cc c im ca tng thnh phn Phn loi cc thnh phn, tng qut ha, c bit ha Nhn bit mi lin h gia cc thnh phn Kt qu: M hnh h thng (System model) Cn mt ngn ng m hnh ha trao i gia cc thnh vin trong nhm phn tch v vi nhm thit k Tr li cu hi: Nhng g s phi lm?
33

Chng 1: M u

2004, HONG MINH SN

Thit k h thng (System Design)


Da trn m hnh h thng, xy dng cc m hnh chi tit phc v sn sng m ha/ci t Bao gm:
Thit k cu trc (structured design): chng trnh, kiu d liu, i tng, quan h cu trc gia cc i tng v kiu) Thit k tng tc (interaction design): quan h tng tc gia cc i tng Thit k hnh vi (behaviour design): s kin, trng thi, php ton, phn ng Thit k chc nng (funtional design): tin trnh hnh ng, hm, th tc)

2004, HONG MINH SN

Kt qu: M hnh thit k (cc bn v v li vn m t) Tr li cu hi: Lm nh th no?


34

Chng 1: M u

Cc bc khc
M ha/ci t (Coding/Implementation): Th hin m hnh thit k vi mt ngn ng lp trnh c th Th nghim (Testing, Verification): Chy th, phn tch v kim chng:
Th n v (Unit Test) Th tch hp (Integration Test)

2004, HONG MINH SN

G ri (Debugging): Tm ra v sa cc li chng trnh chy (cc li logic) Xy dng ti liu (Documenting): Xy dng ti liu pht trin, ti liu hng dn s dng o to, chuyn giao Bo tr, bo dng
35

Chng 1: M u

Chu trnh c in: Waterfall Model


Nghin cu Nghin cu kh thi kh thi Phn tch Phn tch yu cu yu cu Thit k Thit k M ha M ha Th nghim Th nghim n v n v Th nghim Th nghim tch hp tch hp o to o to
2004, HONG MINH SN

Chuyn giao Chuyn giao Bo tr Bo tr

Chng 1: M u

36

Xu th hin nay: Song song v lp

2004, HONG MINH SN

Chng 1: M u

37

Lp trnh l g, nm u?
Lp trnh > M ha Lp trnh T tng thit k + M ha + Th nghim + G ri

2004, HONG MINH SN

Chng 1: M u

38

Cc bc pht trin chng trnh


M ngun Bin dch

M ch Lin kt
2004, HONG MINH SN

Th vin

CT chy c

Np v chy
39

Chng 1: M u

Mi trng/cng c pht trin


IDE (Integrated Development Environment)
H tr ton b cc bc pht trin chng trnh V d: MS Visual C++, Borland C++ (Builder), Keil-C

Cc cng c tiu biu


Trnh son tho (Editor) Trnh bin dch (Compiler) Trnh lin kt (Linker) Trnh np (Loader) Trnh g ri (Debugger) Trnh qun l d n (Project Manager)

2004, HONG MINH SN

Chng 1: M u

40

Mi trng pht trin

Chng 1: M u

2004, HONG MINH SN

1.5 S lc v C/C++
Lc s ngn ng C
Tin ha t hai ngn ng lp trnh
BCPL v B: Cc ngn ng phi kiu

Dennis Ritchie (Bell Laboratories, AT&T)


B sung kiu ha d liu v cc yu t khc

Ngn ng pht trin h iu hnh UNIX Khng ph thuc phn cng


Tnh kh chuyn
2004, HONG MINH SN

1989: ANSI chun ha (ANSI-C) 1990: Cng b chun ANSI v ISO


ANSI/ISO 9899: 1990
42

Chng 1: M u

Lc s ngn ng C++
M rng, tin ha t C Bjarne Stroustrup (Bell Laboratories)
u nhng nm 1980: C with classes 1984: Tn C++ 1987: The C++ Programming Language 1st Edition 1997: The C++ Programming Language 3rd Edition Chun ha quc t: ANSI/ISO 1996

B sung cc c tnh h tr:


2004, HONG MINH SN

Lp trnh hng i tng Lp trnh tng qut Lp trnh ton hc,...

Ngn ng lai
43

Chng 1: M u

Ti sao chn C/C++


p ng cc yu cu:
Gn gi vi phn cng Hiu sut cao Tng i thn thin vi ngi lp trnh Kh chuyn Chun ha quc t (tng lai vng chc)

Th mnh tuyt i ca ANSI-C:


Ph bin cho hu ht cc nn vi x l, vi iu khin, DSP Ph bin cho mi ngi lp trnh trn th gii
2004, HONG MINH SN

Th mnh tuyt i ca ANSI/ISO C++:


Lp trnh hng i tng Lp trnh tng qut (template) Lp trnh ton hc (d liu tru tng v np chng ton t)
44

Chng 1: M u

Visual C++, .NET & C#


Visual C++:
Mi trng/cng c lp trnh C++ ca Microsoft M rng mt s yu t Th vin lp trnh Windows: Microsoft Foundation Classes (MFC), Active Template Library (ATL) Cc th vin chung: GUI, graphics, networking, multithreading,

.NET (dot net)


2004, HONG MINH SN

Kin trc nn tng phn mm lp trnh phn tn Hng ti cc ng dng Web, phn tn trn nhiu chng loi thit b khc nhau Cc ng dng trn nhiu ngn ng khc nhau c th giao tip mt cch n gin trn mt nn chung Phng php lun: Lp trnh thnh phn
45

Chng 1: M u

Visual C++, .NET & C#


C#
Anders Hejlsberg v Scott Wiltamuth (Microsoft) Thit k ring cho nn .NET Ngun gc t C, C++ v Java iu khin theo s kin, hon ton hng i tng, ngn ng lp trnh hin th Integrated Development Environment (IDE) Tng tc gia cc ngn ng
2004, HONG MINH SN

Chng 1: M u

46

Chng ta hc c nhng g?

Bit c nhng g s phi hc, hc lm g v phi hc nh th no Hng lot khi nim mi xung quanh k thut lp trnh v qui trnh cng ngh phn mm Tng quan v cc k thut lp trnh Lc s ngn ng C/C++, th mnh ca chng so vi cc ngn ng khc

2004, HONG MINH SN

Chng 1: M u

47

Ch tip theo: C/C++ c s


T chc chng trnh/b nh D liu v bin Ton t, biu thc v cu lnh iu khin chng trnh: vng lp, r nhnh Mng v con tr Cu trc
2004, HONG MINH SN

Chng 1: M u

48

You might also like