Tải bản đầy đủ (.pdf) (36 trang)

Ngôn ngữ lập trình C - Chương 4 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (424.3 KB, 36 trang )

Ch
Ch
−¬
−¬
ng
ng
4
4
H
H
μ
μ
m v
m v
μ
μ
ph
ph
−¬
−¬
ng ph
ng ph
¸
¸
p
p
l
l
Ë
Ë
p tr


p tr
×
×
nh th
nh th
ñ
ñ
tôc
tôc
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
2
4.1 C++ v
4.1 C++ v
à
à
phng ph
phng ph
á
á
p
p
l
l
Ë
Ë
p tr
p tr
×
×

nh th
nh th
ñ
ñ
tôc
tôc
 4.1.1 Tng quan v phng pháp lp trình th tc
– Phng pháp lp trình tuyn tính (hay lp trình tun t):
• Khi các ng dng tin hc còn đn gin, s dòng lnh phi vit ít å
chng trình đc vit tun t.
– Các câu lnh thc hin tun t t đu đn cui.
• Khoa hc máy tính phát trin, phn mm ln và phc tp:
– Phng pháp này không hiu qu.
– Ngi lp trình có th không th kim soát đc chng trình.
– Phng pháp lp trình th tc (hay lp trình cu trúc)
• Khc phc nhc đim ca lp trình tun t bng cách t chc
chng trình thành các chng trình con.
• Các ngôn ng nh FoxPro, Pascal hay C/C++ đu cho phép trin
khai phng pháp lp trình th tc.
• T tng chung: cu trúc d liu + gii thut = chng trình!
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
3
4.1 C++ v
4.1 C++ v
à
à
phng ph
phng ph
á

á
p
p
l
l
Ë
Ë
p tr
p tr
×
×
nh th
nh th
ñ
ñ
tôc
tôc
 4.1.1 Tng quan v phng pháp lp trình th tc
– Các khái nim chính trong lp trình th tc
• Chng trình con
– Là mt chng trình đc lp dùng đ thc hin mt phn vic nào đó
(nhp s liu, in kt qu, thc hin mt s thao tác tính toán).
– Chng trình con cn có đi, bin, mng… cc b dùng riêng
– Vic trao đi d liu gia các chng trình con thc hin thông qua
các đi và các bin toàn cc.
• Cu trúc d liu và gii thut
– Mt chng trình th tc bao gm các cu trúc d liu (nh bin,
mng, cu trúc, …) và các hàm, th tc.
– Trong PASCAL có 2 kiu chng trình con là th tc và hàm, còn
trong C++ ch có mt loi chng trình con là hàm.

•  s dng đc thành tho C++ trong lp trình th tc å phi
hiu rõ t tng lp trình th tc !
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4
4.1 C++ v
4.1 C++ v
à
à
phng ph
phng ph
á
á
p
p
l
l
Ë
Ë
p tr
p tr
×
×
nh th
nh th
ñ
ñ
tôc
tôc
 4.1.2 Lp trình th tc trong C++

– Nhc li v đc đim C++
• C: ngôn ng lp trình th tc.
• C++: tha hng tt c đim mnh ca C.
– Là ngôn ng bao trùm lên C
å
tha hng đy đ sc mnh ca C (ví
d tính kh chuyn, tính mm do, ).
• C++ có mt s ci tin å tng cng sc mnh cho C:
– S khác nhau gia C trong C++ so vi ANSI C.
– Thay đi, thêm mi
å
phù hp hn.
• Nh vy, C++ là ngôn ng lai å cho phép c lp trình th tc và
lp trình hng đi tng.
– Các ngôn ng hin đi (nh Java, C#, …) ch cho phép lp trình
hng đi tng (thun túy hng đi tng).
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
5
4.1 C++ v
4.1 C++ v
à
à
phng ph
phng ph
á
á
p
p
l

l
Ë
Ë
p tr
p tr
×
×
nh th
nh th
ñ
ñ
tôc
tôc
 4.1.2 Lp trình th tc trong C++
– C++ và lp trình th tc
• C++ có mt s đim khác vi các ngôn ng khác (ví d Pascal) v
mt cu trúc chng trình và biên dch mã ngun.
• Cu trúc khi:
– C++ xem các hàm là các thc th tách bit.
– Mt s ngôn ng khác có th gp nhiu hàm đn gin thành hàm
phc tp hn.
– Vi cu trúc khi
å
chú ý đn tên bin và phm vi bin.
• Dch tách bit:
– B trí chng trình trong nhiu tp tin tách bit.
– S dng tp tin tiêu đ
å
thun li cho vic thng nht chng trình,
d dàng hiu chnh và bo trì chng trình.

Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
6
4.2 H
4.2 H
µ
µ
m
m
 4.2.1 Khai báo và đnh ngha hàm
– Cu trúc tng quát ca hàm:
[kiu_giá_tr_tr_v] tên_hàm([danh_sách_tham_s]){
khai báo & lnh;
}
• VD: int max(int a, int b) {
int tmp;
tmp = (a > b) ? a : b;
return tmp;
}
• Tr li quyn điu khin (và giá tr) cho hàm:
– Dùng lnh return [biu_thc];
– Lnh return có th vit bt k đâu trong thân hàm.
– Khi hàm không tr v giá tr, ch cn vit return;
– Trong C không cn lnh return nu hàm không tr v giá tr
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
7
4.2 H
4.2 H
µ

µ
m
m
 4.2.1 Khai báo và đnh ngha hàm
– Kiu giá tr tr v:
• Hàm không tr v giá tr å kiu_giá_tr_tr_v là void.
• Không vit kiu giá tr tr v å ngm đnh là int.
• Không cho tr v kiu mng.
– Danh sách tham s:
• Các tham s hình thc (cùng vi kiu tng ng) cách nhau bng
du “,” không hn ch kiu (có th là kiu c s hay phc hp).
• Hàm không có tham s å
danh_sách_tham_s là void.
– Lúc này danh sách tham s cng có th đ trng.
• Không vit kiu tham s å ngm đnh là int.
• Chú ý: trong C có th khai báo kiu tham s riêng ra sau, ví d:
double func(a,b)
int a; float b;
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
8
4.2 H
4.2 H
µ
µ
m
m
 4.2.1 Khai báo và đnh ngha hàm
– Khai báo hàm nguyên mu:
• Tt c hàm dùng trong chng trình phi khai báo nguyên mu.

– Trong nguyên mu có th b tên các tham s (ch cn khai báo kiu).
– C++ cho phép ép kiu tham s truyn vào cho phù hp.
• Trong C có th không khai báo nguyên mu, hoc ch cn khai
báo tên hàm và giá tr tr v, không cn danh sách kiu tham s.
– Nu không khai báo, C t to ra nguyên mu vi kiu tr v là int.
– Tp tin tiêu đ (header file):
• Mi th vin trong C++ đu có mt tp tin tiêu đ dng *.h.
– Tp tin này cha khai báo ca các hàm trong th vin (nguyên mu),
đnh ngha ca các kiu d liu, hng dùng trong hàm đó.
• Ngi lp trình có th to các tp tin tiêu đ riêng cho mình.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
9
4.2 H
4.2 H
µ
µ
m
m
 4.2.1 Khai báo và đnh ngha hàm
– Con tr hàm:
• Ging nh bin, mi hàm đu có đa ch å có th khai báo mt
con tr hàm tr đn hàm đó.
• Khai báo con tr hàm:
[kiu_gtr_tr_v](*tên_bin_tr_hàm) ([dsách_ths]);
– VD: int(*fp) (int n, float x);
• Ý ngha các thành phn trong khai báo con tr hàm ging nh
khai báo hàm.
• Mun s dng phép gán, con tr hàm phi tng thích vi hàm c
v kiu giá tr tr v ln danh sách tham s.

• Con tr hàm có th dùng làm tham s hình thc cho hàm.
– Khi đótrong li gi hàm, có th dùng tên hàm làm tham s thc.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.2 H
4.2 H
µ
µ
m
m
 4.2.2 Tham s và giá tr tr v trong li gi hàm
– Tham s và truyn tham s
• Tham s
– Tham s hình thc: đi din cho tham s thc (s truyn cho hàm).
Kiu giá tr ca tham s hình thc
å
quyt đnh kiu tham s thc.
– Tham s thc: thông tin đc truyn trong li gi hàm. Mi tham s
thc tng ng vi mt tham s hình thc.
• Truyn tham s
– Truyn theo tr (tham tr): bn sao giá tr đc truyn cho hàm (tham
tr)
å
vic thay đi giá tr đc truyn vào trong thân hàm không nh
hng đn giá tr ban đu ca bin.
– Truyn theo bin (tham bin): bn thân bin đc truyn cho hàm
(tham bin)
å
vic thay đi trong hàm s làm thay đi giá tr bin.
– Chú ý 1: trong C++ tt c tham s đc truyn theo tr.

– Chú ý 2: nu tham s truyn vào có kích thc ln (ví d nh cu
trúc) hoc cn thay đi giá tr bin, nên truyn theo bin.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.2 H
4.2 H
µ
µ
m
m
 4.2.2 Tham s và giá tr tr v trong li gi hàm
– Tham s và truyn tham s (tip)
• Tham s hình thc ca hàm là con tr
– Trong C++ mun truyn theo bin có th s dng con tr.
– Tham s hình thc là con tr
å
trong thân hàm có th thay đi giá tr
bin mà con tr đótr đn.
– Mt s chú ý khi tham s hình thc là mng (mt chiu, nhiu chiu).
• Tham s hình thc ca hàm là tham chiu
– Có th truyn tham s cho hàm bng tham chiu
å
hàm s thao tác
trc tip trên bin đó~ truyn theo bin.
– Vic khi to tham s hình thc s thc hin trong mi li gi hàm.
– Tham sng vi tham s hình thc là tham chiu phi là bin, tr
trng hp có t khóa const đng trc khai báo tham s hình thc.
– Có th dùng tham chiu cho bin tr, ví d : int *&adr;
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD

4.2 H
4.2 H
µ
µ
m
m
 4.2.2 Tham s và giá tr tr v trong li gi hàm
– Tham s và truyn tham s (tip)
• Tham s hình thc ca hàm là con tr hàm
– Các hàm đc gi trong hàm khác nên khai báo trc.
– Có th gi hàm theo nhiu cách. Ví d : f(x,m), (f)(x,m), (*f)(x,m).
– Không có s khác bit gia vic gi bng tên hàm hay con tr hàm.
• Tham s ngm đnh trong li gi hàm
– C++ cho phép to giá tr mc đnh cho các tham s.
– Giá tr ngm đnh có th là biu thc (không nhât thit phi là hng).
– Khi khai báo nguyên mu, giá tr ngm đnh cng phi khi gán.
– Các tham s ngm đnh phi đt cui cùng trong danh sách tham s
hình thc.
– Khi gi hàm, các tham s thiu phi  cui cùng (tính t trái
å
phi).
– Chú ý:  khai báo giá tr ngm đnh cho mt tham s là bin tr
å
phi vit du * và du = cách nhau.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.2 H
4.2 H
µ
µ

m
m
 4.2.2 Tham s và giá tr tr v trong li gi hàm
– Giá tr tr v ca hàm
• Ngoài giá tr tr v kiu c s, hàm còn có th tr v tham chiu.
• Cú pháp đnh ngha tham chiu hàm:
[kiu_giá_tr_tr v] &tên_hàm ([danh_sách_ths]){
khai báo & lnh;
}
• Chú ý rng lúc này, lnh return phi tr v mt bin toàn cc
(tc là không phi bin đc khai báo trong hàm).
– Bin toàn cc là đ ta có th s dng tham chiu ca hàm.
• Vi giá tr tr v là tham chiu, ta có th s dng phép gán cho
tên hàm (ging nh gán giá tr cho bin).
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.2 H
4.2 H
µ
µ
m
m
 4.2.3 Các vn đ khác v hàm
– Hàm vit ti ch (inline)
• nh hng ca vic gi hàm trong tc đ thc hin chng trình:
– Cp phát vùng nh, truyn d liu, gii phóng vùng nh.
– C ch qun lý li gi và tr v (lu ng cnh, sao chép thông s, …).
• Hàm inline:
– C++ cho phép to ra các hàm đc thay th trc tip thành mã lnh
máy ngay ti ch gi (inline).

–  khai báo và đnh ngha hàm inline, ch cn thêm t khóa inline
trc khai báo hàm.
– Chng trình cha hàm inline s dài hn (đc bit khi hàm đc gi
nhiu ln) nhng chy nhanh hn
å
ch nên dùng hàm inline vi
nhng hàm nh, không cha cu trúc lp.
• Trình dch x lý hàm inline ging nh các macro.
– Macro có nhiu hn ch hn
å
trong thc t nên dùng hàm inline.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.2 H
4.2 H
µ
µ
m
m
 4.2.3 Các vn đ khác v hàm
– Hàm vit ti ch (tip)
• Hn ch ca trình dch đi vi hàm inline:
– Không x lý theo cách inline vi các hàm cha bin static, lnh chu
trình, lnh goto, lnh switch, hàm đ quy, …
– Ngay c khi không có nhng hn ch trên, nu b nh chng trình
đã quá ln, trình dch cng b qua yêu cu inline.
– Hàm main và tham s dòng lnh
• Hàm main đy đ có hai tham s hình thc nh sau:
void main (int agrc, char *agrv[]) { … }
– agrc : s tham s đc đa vào.

– agrv[] : mng các tham s đa vào, cách nhau bi du cách.
• Khai báo này đc dùng khi cn s dng các tham s dòng lnh
cho vic thc thi chng trình.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.3 Ch
4.3 Ch
å
å
ng h
ng h
µ
µ
m v
m v
µ
µ
ch
ch
å
å
ng phÐp to
ng phÐp to
¸
¸
n
n
 4.3.1 nh ngha chng hàm
– Chng hàm
• C++ cho phép s dng cùng mt tên đ đnh ngha các hàm khác

nhau (khác kiu giá tr tr v và danh sách kiu các tham s) å
chng hàm (overloading).
• VD: int max (int a, int b);
float max (float x, float y);
• Chng hàm còn đc gi là đa dng hóa hàm, ti bi hàm.
• Vic xác đnh gi hàm nào khi trong chng trình có hàm trùng
tên là do trình dch đm nhim.
– Trình dch da vào s khác nhau ca tp tham s đ đi tên các hàm
å
các hàm có tên khác nhau sau khi dch.
– Nu hai hàm có tên và tp tham s trùng nhau, trình dch s báo li, k
c khi kiu tr v khác nhau.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.3 Ch
4.3 Ch
å
å
ng h
ng h
µ
µ
m v
m v
µ
µ
ch
ch
å
å

ng phÐp to
ng phÐp to
¸
¸
n
n
 4.3.1 nh ngha chng hàm
– Quy tc xác đnh hàm phù hp khi gi hàm
• Cn c vào s lng và kiu ca các tham s đ gi hàm.
– Khi không có hàm nào có b tham s cùng kiu, trình dch chn hàm
có b tham s gn kiu nht (bng phép chuyn kiu).
– Nu đã theo quy tc mà có hn mt hàm phù hp, trình dch s báo li.
• Nu hàm có mt tham s å trình dch tìm kim hàm phù hp
tng ng theo th t u tiên sau:
– Có tham s tng ng thc s: phân bit các kiu d liu khác nhau
(c v du).
– Có tham s tng ng gn nht (sau các chuyn đi kiu d liu t
đng: char và short
å
int, float
å
double).
– Có tham s tong ng sau các chuyn đi kiu đc C++ chp nhn.
– Có tham s tong ng sau các chuyn đi kiu do ngi dùng đnh
ngha.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.3 Ch
4.3 Ch
å

å
ng h
ng h
µ
µ
m v
m v
µ
µ
ch
ch
å
å
ng phÐp to
ng phÐp to
¸
¸
n
n
 4.3.1 nh ngha chng hàm
– Quy tc xác đnh hàm phù hp khi gi hàm (tip)
• Theo th t u tiên trên, nu có hn mt hàm phù hp ti mt
mc u tiên, trình dch s báo li không xác đnh đc hàm.
• Nu hàm có nhiu tham s, trình dch xác đnh hàm phù hp theo
quy tc sau:
– Chn cho mi tham s các hàm phù hp (tt c mc đ).
– Trong s các hàm đã đc la chn, chn ra hàm đt đc s phù hp
nht đi vi mi đi s.
• Theo quy tc trên, nu vn có hn mt hàm phù hp, trình dch s
báo li không xác đnh đc hàm.

Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.3 Ch
4.3 Ch
å
å
ng h
ng h
µ
µ
m v
m v
µ
µ
ch
ch
å
å
ng phÐp to
ng phÐp to
¸
¸
n
n
 4.3.1 nh ngha chng hàm
– Chú ý vi chng hàm
• Mt hàm có th gi đn hàm cùng tên vi nó.
• Không nên lm dng kh nng đnh ngha chng hàm:
– Ch nên đnh ngha chng các hàm thc hin nhng công vic nh
nhau nhng trên các đi tng có kiu khác nhau.

– Nên dùng các phép chuyn đi kiu (nu cn) đ tp tham s trong li
gi hàm hoàn toàn trùng vi tp tham s ca mt hàm cn đn, tránh
s nhp nhng cho trình dch.
• Chng hàm và gi hàm vi tham s có giá tr ngm đnh có th
dn ti li biên dch.
– Khi gi hàm mà mt s tham s ngm đnh b khuyt
å
có th có hai
li gi hàm hoàn toàn ging ht nhau
å
trình dch không xác đnh
đc hàm phù hp.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.3 Ch
4.3 Ch
å
å
ng h
ng h
µ
µ
m v
m v
µ
µ
ch
ch
å
å

ng phÐp to
ng phÐp to
¸
¸
n
n
 4.3.2 nh ngha chng phép toán
– Chng phép toán
•  thc hin các thao tác trên kiu d liu phc hp hay kiu t
đnh ngha ta thng xây dng các hàm.
• C++ cho phép dùng các phép toán chun đ đnh ngha hàm å
đnh ngha chng phép toán (overloading).
– Mc đích là đ tránh dài dòng, thiu t nhiên khi s dng hàm thc
hin các phép toán trong chng trình.
– Chng phép toán còn đc gi là đa dng hóa phép toán, ti bi phép
toán…
• Hàm phép toán cho phép vit câu lnh tính toán vi kiu d liu
phc hp ging nh công thc toán hc.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.3 Ch
4.3 Ch
å
å
ng h
ng h
µ
µ
m v
m v

µ
µ
ch
ch
å
å
ng phÐp to
ng phÐp to
¸
¸
n
n
 4.3.2 nh ngha chng phép toán
– Cách đnh ngha chng các phép toán
• S dng t khóa operator trc phép toán
• Ví d (vi SP là kiu s phc):
(1) SP operator+(SP sp1, SP sp2); // å sp1 + sp2
(2) SP operator-(SP sp); // å -sp
• Vi phép toán có hai toán hng, hàm phép toán cn có hai tham s
(ví d 1).
– Chú ý th t tham s vi các phép toán không giao hoán.
• Vi phép toán có mt toán hng, hàm phép toán có mt tham s
(ví d 2).
• Thân ca hàm phép toán đc vit nh thân hàm thông thng.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.3 Ch
4.3 Ch
å
å

ng h
ng h
µ
µ
m v
m v
µ
µ
ch
ch
å
å
ng phÐp to
ng phÐp to
¸
¸
n
n
 4.3.2 nh ngha chng phép toán
– Chú ý vi chng phép toán
• Có th dùng hàm phép toán theo c hai cách: nh mt hàm thông
thng hoc nh mt phép toán.
• Dùng nh hàm thông thng bng cách vit li gi vi tên hàm.
• Dùng nh các phép toán:
– Có th kt hp nhiu phép toán khác nhau đ vit công thc. Có th s
dng du ngoc tròn đ quy đnh th t các phép toán.
– Quy tc u tiên và trình t thc hin các phép toán đnh ngha chng
không có gì thay đi so vi phép toán nguyên thy.
• Có mt s phép toán không th đnh ngha chng. Mt s phép
toán khác phi tuân theo mt vài ràng buc nht đnh.

– Nên tuân theo mt s quy tc và có chin lc s dng đúng đn.
– Xem các ví d chi tit trong TLTK.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.4
4.4
§
§
Ö
Ö
quy
quy
 4.4.1 Tng quan v k thut đ quy
– Khái nim đ quy
• T mt đim trong thân hàm ta có th gi chính hàm đó (trc tip
hay gián tip) å
hàm đ quy.
• Hàm đ quy ch gii bài toán trong trng hp đn gin nht ca
bài toán (trng hp c s hay suy bin).
• Vi trng hp phc tp hn, vic thc hin hàm đc chia làm
hai phn:
– Mt phn có th gii quyt đc ngay.
– Phn còn li cha th gii quyt ngay, tuy nhiên nó ging bài toán ban
đu vi đ phc tp thp hn (~đn gin hn).
– Do bài toán mi ging bài toán ban đu nên hàm có th gi đn chính
nó đ gii
å
ta có li gi đ quy (hay bc đ quy).
• Nói chung đ quy là mt vn đ khá phc tp, đ hiu đc thu
đáo phi có kin thc sâu v khoa hc máy tính.

Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD
4.4
4.4
§
§
Ö
Ö
quy
quy
 4.4.1 Tng quan v k thut đ quy
– Lu ý trong s dng đ quy
• Vic đ quy phi kt thúc đc sau hu hn bc:
– Sau mi ln gi đ quy, bài toán tr nên đn gin hn. Vic gi đ quy
kt thúc khi bài toán tr thành trng hp c s (hay suy bin).
– Sau khi hàm đ quy gii bài toán treong trng hp c s, nó tr li
kt qu cho hàm  mc phc tp hn mà đã gi nó. n lt hàm này,
nó tính toán và tr li kt qu cho hàm  mc trên, Vic này tip tc
cho đ
n li gi hàm ban đu và ta có kt qu cui cùng.
• Quy tc x lý hàm đ quy:
– Mi ln gi đ quy, máy to mt tp các bin cc b mi (hoàn toàn
đc lp vi tp bin đã to trong li gi trc).
– Có bao nhiêu ln gi hàm thì có by nhiêu thoát ra khi hàm ~ mt tp
các bin cc b s b xóa.
– Nh vy hàm đ quy dùng nhiu vùng nh trên ngn xp và trong
nhiu trng hp có th dn đn tràn ngn x
p.
Bài ging C++. 14/10/2008
V.S.Nam. B/m KTHT, khoa CNTT, HXD

4.4
4.4
§
§
Ö
Ö
quy
quy
 4.4.1 Tng quan v k thut đ quy
– Lu ý trong s dng đ quy (tip)
• So sánh k thut đ quy và phng pháp lp
–  quy và lp đu liên quan đn quá trình lp. Chúng có mt s đc
đim tng t nhau (kim tra điu kin kt thúc, c ch đ kt thúc,
trng hp lp vô hn, …).
– Phng pháp lp s dng vòng lp, còn đ quy s dng liên tc các li
gi hàm
å
tn thi gian x lý và b nh (mi ln gi hàm phi lu
các bin, ng cnh hin ti, đa ch quay v, …).
• Dùng đ quy hay lp ?
– Phng pháp lp có u đim thc hin nhanh, chng trình rõ ràng,
tit kim b nh, …
–  quy thng đc s dng trong nhng bài toán phc tp, ch có
th đnh ngha bng các công thc đ quy, hoc các bài toán cn din
đt trc quan và d hiu quá trình gii quyt bài toán.

×