際際滷
Submit Search
Lect04 functions
0 likes
245 views
H畛 L畛i
Follow
1 of 43
Download now
Download to read offline
More Related Content
Lect04 functions
1.
Bi 4: Tham
s畛 c畛a hm v N畉p ch畛ng hm Gi畉ng vi棚n: Hong Th畛 i畛p Khoa C担ng ngh畛 Th担ng tin H C担ng Ngh畛
2.
Chapter 4 Parameters and Overloading Copyright
息 2010 Pearson Addison-Wesley. All rights reserved
3.
M畛c ti棚u bi
h畛c Tham s畛 Truy畛n gi叩 tr畛 Truy畛n tham chi畉u Ph畛i h畛p 2 ki畛u trong danh s叩ch tham s畛 N畉p ch畛ng hm v 畛i s畛 m畉c 畛nh V鱈 d畛, Quy t畉c Ch畉y th畛 v g畛 l畛i cho hm Macro assert Stub v Driver INT2202DTH
4.
Tham s畛 Hai
ph動董ng th畛c truy畛n tham s畛 cho hm Truy畛n gi叩 tr畛 b畉n sao" c畛a 畛i s畛 th畛c s畛 動畛c truy畛n vo Truy畛n tham chi畉u 畛a ch畛 c畛a 畛i s畛 th畛c s畛 動畛c truy畛n vo INT2202DTH
5.
Truy畛n gi叩 tr畛
B畉n sao c畛a 畛i s畛 th畛c s畛 動畛c truy畛n vo B棚n trong hm, ch炭ng 動畛c xem nh動 bi畉n c畛c b畛 N畉u b畛 bi畉n 畛i th狸 ch畛 b畉n sao ny ch畛u 畉nh h動畛ng Hm kh担ng t叩c 畛ng l棚n 畛i s畛 th畛c s畛 畛 n董i g畛i hm 但y l c叩ch th畛c m畉c 畛nh 動畛c d湛ng trong t畉t c畉 c叩c v鱈 d畛 畛 c叩c bi tr動畛c INT2202DTH
6.
V鱈 d畛 truy畛n
gi叩 tr畛: Display 4.1 D湛ng tham s畛 h狸nh th畛c nh動 bi畉n c畛c b畛 (1/3) INT2202DTH
7.
V鱈 d畛 truy畛n
gi叩 tr畛: Display 4.1 D湛ng tham s畛 h狸nh th畛c nh動 bi畉n c畛c b畛 (2/3) INT2202DTH
8.
V鱈 d畛 truy畛n
gi叩 tr畛: Display 4.1 D湛ng tham s畛 h狸nh th畛c nh動 bi畉n c畛c b畛 (3/3) INT2202DTH
9.
Truy畛n gi叩 tr畛:
L畛i th動畛ng g畉p L畛i th動畛ng g畉p: L畉p l畉i khai b叩o tham s畛 trong th但n hm: double fee(int hoursWorked, int minutesWorked) { int quarterHours; // bi畉n c畛c b畛 int minutesWorked // KHNG 働畛C! } K畉t qu畉 b叩o l畛i bi棚n d畛ch "Redefinition error" 畛i s畛 gi叩 tr畛 動畛c d湛ng nh動 bi畉n c畛c b畛 trong th但n hm Nh動ng hm t畛 畛ng c坦 動畛c ch炭ng INT2202DTH
10.
Truy畛n tham chi畉u
Cung c畉p truy c畉p t畛i 畛i s畛 th畛c s畛 Hm 動畛c g畛i t畛i c坦 th畛 bi畉n 畛i d畛 li畛u c畛a n董i g畛i hm! V鱈 d畛 i畛n h狸nh: hm nh畉p d畛 li畛u 畛 l畉y d畛 li畛u cho n董i g畛i D畛 li畛u s畉 動畛c g畛i cho n董i g畛i Ch畛 畛nh truy畛n tham chi畉u b畉ng c叩ch th棚m d畉u v (&) vo sau ki畛u d畛 li畛u trong danh s叩ch tham s畛 INT2202DTH
11.
V鱈 d畛 truy畛n
tham chi畉u: Display 4.1 Truy畛n tham chi畉u (1/3) INT2202DTH
12.
V鱈 d畛 truy畛n
tham chi畉u: Display 4.1 Truy畛n tham chi畉u (2/3) INT2202DTH
13.
V鱈 d畛 truy畛n
tham chi畉u: Display 4.1 Truy畛n tham chi畉u (3/3) INT2202DTH
14.
Chi ti畉t truy畛n
tham chi畉u Th畛c s畛 th狸 c叩i g狸 動畛c truy畛n vo? Tham chi畉u t畛i 畛i s畛 th畛c s畛 畛 n董i g畛i hm! Tr畛 t畛i 畛a ch畛 nh畛 c畛a 畛i s畛 th畛c s畛 動畛c g畛i l 畛a ch畛, l m畛t con s畛 duy nh畉t ch畛 m畛t 畛a i畛m c畛 th畛 trong b畛 nh畛 INT2202DTH
15.
Tham s畛 tham
chi畉u h畉ng 畛i s畛 tham chi畉u 畉n ch畛a nguy hi畛m D畛 li畛u 畛 n董i g畛i hm c坦 th畛 b畛 thay 畛i Th動畛ng th狸 但y l i畛u 動畛c mong 畛i, nh動ng 担i khi ngoi mong 畛i 畛 b畉o v畛 d畛 li畛u v v畉n d湛ng truy畛n tham chi畉u: H達y s畛 d畛ng t畛 kh坦a const void sendConstRef( const int &par1, const int &par2); V畛i khai b叩o ny, hm ch畛 c坦 th畛 畛c tham s畛 Th但n hm kh担ng 動畛c ph辿p thay 畛i ch炭ng INT2202DTH
16.
Tham s畛 v
畛i s畛 C叩c thu畉t ng畛 ny d畛 g但y nh畉m l畉n, th動畛ng d湛ng l畉n l畛n ngh挑a th畛c s畛: Tham s畛 h狸nh th畛c Trong khai b叩o hm v 畛nh ngh挑a hm 畛i s畛 D湛ng 畛 i畛n vo tham s畛 h狸nh th畛c Trong l畛i g畛i hm (danh s叩ch 畛i s畛) Truy畛n gi叩 tr畛 v truy畛n tham chi畉u L c董 ch畉 c畛a qu叩 tr狸nh l畉p gh辿p d畛 li畛u vo trong hm INT2202DTH
17.
Danh s叩ch tham
s畛 ph畛i h畛p hai ki畛u truy畛n C坦 th畛 ph畛i h畛p c叩c c董 ch畉 truy畛n tham s畛 Danh s叩ch tham s畛 c坦 th畛 c坦 c畉 tham s畛 tham chi畉u v tham s畛 gi叩 tr畛 Trong danh s叩ch ny, th畛 t畛 畛i s畛 r畉t quan tr畛ng: void mixedCall(int & par1, int par2, double & par3); L畛i g畛i hm: mixedCall(arg1, arg2, arg3); arg1 ph畉i c坦 ki畛u int, 動畛c truy畛n tham chi畉u arg2 ph畉i c坦 ki畛u int, 動畛c truy畛n gi叩 tr畛 arg3 ph畉i c坦 ki畛u double, 動畛c truy畛n tham chi畉u DTH INT2202
18.
L畛a ch畛n t棚n
tham s畛 h狸nh th畛c Gi畛ng quy t畉c 畉t t棚n 畛nh danh: T棚n ph畉i c坦 ngh挑a! Hm l m畛t 董n v畛 kh辿p k鱈n 動畛c thi畉t k畉 ri棚ng bi畛t v畛i ph畉n c嘆n l畉i c畛a ch動董ng tr狸nh Giao cho c叩c nh坦m l畉p tr狸nh vi棚n kh叩c nhau T畉t c畉 c畉n hi畛u 炭ng c叩ch s畛 d畛ng hm C坦 th畛 ch畉p nh畉n t棚n tham s畛 h狸nh th畛c tr湛ng v畛i t棚n 畛i s畛 L畛a ch畛n t棚n hm c滴ng d湛ng c叩c quy t畉c nh動 tr棚n DTH INT2202
19.
N畉p ch畛ng hm
C叩c hm c坦 tr湛ng t棚n Danh s叩ch tham s畛 kh叩c nhau Hai 畛nh ngh挑a ri棚ng bi畛t Ch畛 k鱈 c畛a hm T棚n hm v danh s叩ch tham s畛 Ph畉i l duy nh畉t cho m畛i 畛nh ngh挑a hm Cho ph辿p c湛ng m畛t c担ng vi畛c th畛c hi畛n tr棚n nh畛ng d畛 li畛u kh叩c nhau INT2202DTH
20.
V鱈 d畛 n畉p
ch畛ng: hm average() Hm t鱈nh trung b狸nh c畛ng c畛a 2 s畛: double average(double n1, double n2) { return ((n1 + n2) / 2.0); } Hm t鱈nh trung b狸nh c畛ng c畛a 3 s畛: double average(double n1, double n2, double n3) { return ((n1 + n2 + n3) / 3.0); } C湛ng t棚n nh動ng l 2 hm ri棚ng bi畛t INT2202DTH
21.
N畉p ch畛ng hm
average() <ti畉p> Hm no s畉 動畛c g畛i? T湛y vo b畉n th但n l畛i g畛i: avg = average(5.2, 6.7); G畛i t畛i hm average() c坦 hai tham s畛 avg = average(6.5, 8.5, 4.2); G畛i t畛i hm average() c坦 ba tham s畛 Tr狸nh bi棚n d畛ch ph但n t鱈ch l畛i g畛i d畛a tr棚n ch畛 k箪 c畛a l畛i g畛i Gh辿p 担i l畛i g畛i v畛i hm ph湛 h畛p C叩c hm ny l t叩ch bi畛t INT2202DTH
22.
C叩c l畛i th動畛ng
g畉p khi n畉p ch畛ng hm Ch畛 n畉p ch畛ng nh畛ng hm c湛ng c担ng vi畛c M畛t hm mpg() n棚n lu担n th畛c hi畛n c湛ng c担ng vi畛c, trong t畉t c畉 c叩c phi棚n b畉n n畉p ch畛ng N畉u kh担ng th狸 r畉t kh坦 o叩n 箪 ngh挑a k畉t qu畉 Ph但n t鱈ch l畛i g畛i hm C++: B動畛c 1: t狸m ch畛 k鱈 ch鱈nh x叩c B動畛c 2: t狸m ch畛 k鱈 c坦 kh畉 nng t動董ng th鱈ch INT2202DTH
23.
Ph但n t鱈ch l畛i
g畛i n畉p ch畛ng B動畛c 1: Gh辿p 担i ch鱈nh x叩c T狸m ch畛 k鱈 ch鱈nh x叩c l n董i ta kh担ng c畉n chuy畛n 畛i ki畛u 畛i s畛 B動畛c 2: Gh辿p 担i t動董ng th鱈ch T狸m ch畛 k鱈 t動董ng th鱈ch (C坦 th畛 c畉n t畛i chuy畛n 畛i ki畛u t畛 畛ng) Ph動董ng 叩n 1: n但ng c畉p ki畛u (v鱈 d畛 intdouble) Kh担ng m畉t d畛 li畛u Ph動董ng 叩n 2: h畉 c畉p ki畛u (v鱈 d畛 doubleint) C坦 th畛 m畉t d畛 li畛u INT2202DTH
24.
V鱈 d畛 ph但n
t鱈ch l畛i g畛i n畉p ch畛ng Cho c叩c hm sau 但y: 1. void f(int n, double m); 2. void f(double n, int m); 3. void f(int n, int m); L畛i g畛i: f(98, 99); g畛i #3 f(5.3, 4); g畛i #2 f(4.3, 5.2); g畛i ??? C畉n tr叩nh vi畛c n畉p ch畛ng d畛 g但y nh畉m l畉n ny INT2202DTH
25.
T畛 畛ng chuy畛n
畛i ki畛u v n畉p ch畛ng C叩c tham s畛 h狸nh th畛c d畉ng s畛 th動畛ng 動畛c 畉t ki畛u double D湛ng 動畛c v畛i b畉t c畛 ki畛u d畛 li畛u s畛 no C叩c d畛 li畛u d動畛i c畉p s畉 動畛c n但ng c畉p int double float double char double *Sau ny s畉 bn th棚m! Tr叩nh n畉p ch畛ng nh畛ng ki畛u d畛 li畛u s畛 kh叩c nhau INT2202DTH
26.
V鱈 d畛 t畛
畛ng chuy畛n 畛i ki畛u v n畉p ch畛ng double mpg(double miles, double gallons) { return (miles/gallons); } V鱈 d畛 l畛i g畛i hm: mpgComputed = mpg(5, 20); T畛 畛ng chuy畛n 5 & 20 thnh double r畛i truy畛n vo mpgComputed = mpg(5.8, 20.2); Kh担ng c畉n chuy畛n 畛i ki畛u mpgComputed = mpg(5, 2.4); T畛 畛ng chuy畛n 5 thnh 5.0 r畛i truy畛n vo DTH INT2202
27.
畛i s畛 m畉c
畛nh Cho ph辿p b畛 qua m畛t s畛 畛i s畛 Ch畛 畛nh trong khai b叩o/nguy棚n m畉u hm void showVolume( int length, int width = 1, int height = 1); Hai 畛i s畛 sau 動畛c 畉t gi叩 tr畛 m畉c 畛nh Nh畛ng l畛i g畛i h畛p l畛: showVolume(2, 4, 6); //Truy畛n c畉 3 畛i s畛 vo showVolume(3, 5); //height nh畉n gi叩 tr畛 m畉c 畛nh l 1 showVolume(7); //width & height m畉c 畛nh l 1 INT2202DTH
28.
V鱈 d畛 畛i
s畛 m畉c 畛nh: Display 4.1 畛i s畛 m畉c 畛nh (1/2) INT2202DTH
29.
V鱈 d畛 畛i
s畛 m畉c 畛nh: Display 4.1 畛i s畛 m畉c 畛nh (2/2) INT2202DTH
30.
Ch畉y th畛 v
g畛 l畛i cho hm R畉t nhi畛u k挑 thu畉t: D湛ng nhi畛u l畛nh cout Trong l畛i g畛i v 畛nh ngh挑a D湛ng 畛 l畉n v畉t th畛c thi ch動董ng tr狸nh Tr狸nh g畛 l畛i c畛a IDE T湛y thu畛c m担i tr動畛ng D湛ng macro assert K畉t th炭c ch動董ng tr狸nh s畛m h董n c畉n thi畉t Stubs v drivers Ph叩t tri畛n tng d畉n INT2202DTH
31.
Macro assert M畛t
kh畉ng 畛nh trong assert: l m畛t bi畛u th畛c true hay false D湛ng khi vi畉t ti li畛u v ki畛m tra t鱈nh 炭ng 畉n c畛a hm i畛u ki畛n tr動畛c v sau Th動畛ng d湛ng assert: ki畛m tra t鱈nh h畛p l畛 c畛a ch炭ng C炭 ph叩p: assert(<i畛u_ki畛n_assert>); Kh担ng c坦 gi叩 tr畛 tr畉 v畛 T鱈nh gi叩 tr畛 c畛a bi畛u th畛c i畛u_ki畛n_assert K畉t th炭c ch動董ng tr狸nh n畉u false, ti畉p t畛c n畉u true 畛nh ngh挑a trong th動 vi畛n <cassert> Macro 動畛c d湛ng t動董ng t畛 nh動 hm DTH INT2202
32.
V鱈 d畛 macro
assert Cho khai b叩o hm sau: void computeCoin( int coinValue, int& number, int& amountLeft); //i畛u ki畛n tr動畛c: 0 < coinValue < 100 0 <= amountLeft <100 //i畛u ki畛n sau: number set to max. number of coins Ki畛m tra i畛u ki畛n tr動畛c: assert ((0 < currentCoin) && (currentCoin < 100) && (0 <= currentAmountLeft) && (currentAmountLeft < 100)); N畉u kh担ng th畛a m達n i畛u ki畛n tr動畛c i畛u ki畛n b畉ng false ch動董ng tr狸nh k畉t th炭c! DTH INT2202
33.
V鱈 d畛 macro
assert <ti畉p> H畛u 鱈ch khi g畛 l畛i K畉t th炭c ch動董ng tr狸nh do 坦 ta c坦 th畛 ph叩n o叩n l畛i DTH INT2202
34.
B畉t/t畉t assert Ch畛
th畛 ti畛n x畛 l箪 cho ta m畛t c叩ch 畛 b畉t/t畉t assert #define NDEBUG #include <cassert> B畛 sung d嘆ng "#define" tr動畛c d嘆ng #include T畉T t畉t c畉 assert trong ch動董ng tr狸nh Lo畉i b畛 d嘆ng "#define" (ho畉c 畉t d畉u ch炭 th鱈ch d嘆ng 坦) B畉T c叩c assert tr畛 l畉i DTH INT2202
35.
Stub v Driver
L c叩c k挑 thu畉t 畛 t叩ch r畛i c叩c 董n v畛 c畉n bi棚n d畛ch M畛i hm 動畛c thi畉t k畉, ci 畉t, ch畉y th畛 ri棚ng r畉 畉m b畉o t鱈nh h畛p l畛 c畛a m畛i 董n v畛 Chia 畛 tr畛 Chuy畛n m畛t t叩c v畛 l畛n nhi畛u t叩c v畛 nh畛 h董n, d畛 qu畉n l箪 Nh動ng lm sao 畛 ch畉y th畛 ch炭ng 畛c l畉p v畛i nhau? S畛 d畛ng c叩c ch動董ng tr狸nh driver DTH INT2202
36.
V鱈 d畛 ch動董ng
tr狸nh driver: Display 4.9 Ch動董ng tr狸nh driver (1/3) INT2202DTH
37.
V鱈 d畛 ch動董ng
tr狸nh driver: Display 4.9 Ch動董ng tr狸nh driver (2/3) INT2202DTH
38.
V鱈 d畛 ch動董ng
tr狸nh driver: Display 4.9 Ch動董ng tr狸nh driver (3/3) INT2202DTH
39.
Stub Trong m担
h狸nh ph叩t tri畛n tng d畉n Tr動畛c ti棚n, vi畉t c叩c hm m担 ph畛ng b畛c tranh ton c畉nh C叩c hm 畛 m畛c th畉p th狸 vi畉t sau D湛ng c叩c hm th但n tr畛ng 畛 ch畉y th畛 r畛i ci 畉t d畉n V鱈 d畛: double unitPrice(int diameter, double price) { return (9.99); // kh担ng ch鱈nh x叩c, nh動ng ch炭 箪 // n坦 ch畛 l m畛t gi叩 tr畛 t畉m th畛i } L畛i g畛i t畛i hm v畉n th畛c hi畛n 動畛c DTH INT2202
40.
Quy t畉c ch畉y
th畛 c董 b畉n Nh畉m vi畉t ch動董ng tr狸nh 炭ng 畉n Gi畉m thi畛u l畛i, "bugs" 畉m b畉o t鱈nh h畛p l畛 c畛a d畛 li畛u Ch畉y th畛 m畛i hm trong ch動董ng tr狸nh c坦 t畉t c畉 nh畛ng hm kh叩c 達 ch畉y th畛 v g畛 l畛i su担n s畉 Tr叩nh hi畛n t動畛ng l畛i ny k辿o theo l畛i kh叩c v k畉t qu畉 xung 畛t DTH INT2202
41.
T坦m t畉t 1
Tham s畛 h狸nh th畛c l ch畛 畉t tr動畛c, s畉 動畛c i畛n b畉ng 畛i s畛 th畛c s畛 trong l畛i g畛i hm Tham s畛 動畛c truy畛n b畉ng gi叩 tr畛 l nh畛ng b畉n sao trong th但n hm 動畛c g畛i Hm kh担ng thao t叩c tr棚n 畛i s畛 th畛c s畛 Truy畛n b畉ng tham chi畉u cung c畉p cho hm 畛a ch畛 nh畛 c畛a 畛i s畛 th畛c s畛 Hm thao t叩c tr棚n (do 坦 c坦 th畛 bi畉n 畛i) 畛i s畛 th畛c s畛 畛i s畛 ph畉i l m畛t bi畉n, kh担ng th畛 l h畉ng s畛 DTH INT2202
42.
T坦m t畉t 2
B畉n c坦 th畛 畛nh ngh挑a nhi畛u hm tr湛ng t棚n: vi畛c ny g畛i l n畉p ch畛ng hm 畛i s畛 m畉c 畛nh cho ph辿p l畛i g畛i hm 動畛c b畛 qua m畛t s畛 ho畉c t畉t c畉 畛i s畛 trong danh s叩ch N畉u l畛i g畛i kh担ng cung c畉p 畛i s畛 s畛 d畛ng gi叩 tr畛 m畉c 畛nh Macro assert k鱈ch ho畉t k畉t th炭c ch動董ng tr狸nh n畉u bi畛u th畛c i畛u ki畛n c畛a assert kh担ng th畛a m達n C叩c hm n棚n 動畛c ch畉y th畛 畛c l畉p Nh動 c叩c 董n v畛 bi棚n d畛ch ri棚ng r畉, c湛ng v畛i driver c畛a ch炭ng DTH INT2202
43.
Chu畉n b畛 bi
t畛i 畛c ch動董ng 5 gi叩o tr狸nh: M畉ng DTH INT2202
Download