Lap trinh C++

Embed Size (px)

Citation preview

1

MN HC: C S LP TRNH+K THUT LP TRNH(L thuyt: .. tit Thc hnh phng my: .. tit) Mc ch & yu cu .......................................................................................................................................... 3 Ti liu tham kho ........................................................................................................................................ 4 Thi ................................................................................................................ Error! Bookmark not defined. Phng php bi ging ................................................................................................................................ 4 1 MT S KHI NIM C BN V LP TRNH (. . . tit)............................................................... 5 1.1 Thut ton (Algorithm) .................................................................................................................... 5 Khi nim .......................................................................................................................................... 5 Cc c trng ca thut ton .......................................................................................................... 5 Cc cng c biu din thut ton .................................................................................................... 5 Ngn ng lp trnh............................................................................................................................ 5 Chng trnh (my tnh) .................................................................................................................. 5 1.2 Cc bc xy dng chng trnh .................................................................................................... 6 2 CC YU T C BN CA NNLT C/C++ ( . . . tit) .......................................................................... 7 B k t .................................................................................................................................................. 7 Danh hiu (identifier) ............................................................................................................................ 7 T kha (keyword) ................................................................................................................................ 7 Ch thch (comment) ............................................................................................................................ 7 Cc kiu d liu c bn (base type) ..................................................................................................... 7 Hng (constant) ..................................................................................................................................... 8 Bin (variable)........................................................................................................................................ 9 Biu thc (expression)........................................................................................................................... 9 Chuyn i kiu (type conversion) ....................................................................................................... 9 Cc ton t (operator) ......................................................................................................................... 10 u tin v trt t kt hp cc ton t (precedence and associativity) ....................................... 11 Cu lnh (statement, instruction) ....................................................................................................... 12 Xut / Nhp d liu n gin trong C/C++ ....................................................................................... 12 Mt vi chng trnh C/C++ n gin .............................................................................................. 13 3 CC CU TRC IU KHIN CHNG TRNH (. . . tit) .......................................................... 16 Cu trc r nhnh (if . . . then . . . else . . .) ....................................................................................... 16 Cu trc lp while (. . .) ...................................................................................................................... 17 Cu trc lp do . . . while ( . . .) .......................................................................................................... 17 Cu trc lp for ( . . .) ......................................................................................................................... 18 Cu trc la chn (switch . . .) ........................................................................................................... 18 Cu lnh break..................................................................................................................................... 19 Cu lnh continue (t dng)................................................................................................................. 19 4 HM & QUI (. . . tit) ...................................................................................................................... 20 Khi nim ............................................................................................................................................ 20 Khai bo v nh ngha hm .............................................................................................................. 20 Lnh return ......................................................................................................................................... 20 Hm khng c tham s ....................................................................................................................... 21 Hm vi nhiu tham s....................................................................................................................... 21 Hm nguyn mu (function prototype) .............................................................................................. 21 T chc mt chng trnh C (trn cng 1 tp tin) ........................................................................ 21 Cc phng php truyn tham s ..................................................................................................... 21 Phm vi (scope) v cp lu tr (storage class) ca cc i tng .................................................. 22Ging vin PTT Lp trnh C++

2 C ch gi hm v b nh stack ........................................................................................................ 25 Hm c tham s v gi tr ngm nh (Function with default arguments) ....................................... 26 Np chng hm (Function overloading) ............................................................................................. 26 Mt s gi khi thit k hm ............................................................................................................ 26 Mt s v d minh ha ........................................................................................................................ 26 Khi nim qui (recursion) ............................................................................................................. 26 qui trong C ................................................................................................................................. 27 KIU MNG (. . . tit) ........................................................................................................................... 28 Khi nim mng 1 chiu v mng nhiu chiu................................................................................. 28 Khai bo & khi to gi tr trong C ............................................................................................... 28 Truy xut cc phn t ca mng ....................................................................................................... 28 Truyn tham s mng cho hm ......................................................................................................... 28 Cc thao tc c bn trn mng .......................................................................................................... 29 Chui k t (String) ............................................................................................................................. 34 KIU CON TR & KIU QUI CHIU (. . . tit) ............................................................................... 35 Khi nim con tr ............................................................................................................................... 35 Khai bo bin con tr ......................................................................................................................... 35 Truy xut bin tr ............................................................................................................................... 35 S hc con tr ...................................................................................................................................... 36 Lin h gia con tr v mng ............................................................................................................ 36 Con tr a cp ..................................................................................................................................... 36 Truyn tham s con tr cho hm....................................................................................................... 36 Mng cc con tr ................................................................................................................................. 37 T kha const vi con tr .................................................................................................................. 37 Cp pht ng ..................................................................................................................................... 37 Con tr hm......................................................................................................................................... 39 Con tr v chui k t ......................................................................................................................... 39 ng dng con tr ................................................................................................................................ 39 S lc v kiu tham chiu (Reference) - Ch c trong C++. ........................................................... 39 ................................................................................................................................................................... 40 KIU STRUCT (. . . tit) ........................................................................................................................ 41 Khi nim ............................................................................................................................................ 41 Khai bo v truy xut bin struct trong C..................................................................................... 41 Lnh typedef ........................................................................................................................................ 41 Kiu enum............................................................................................................................................ 42 Mng cc struct ................................................................................................................................... 42 Con tr tr n bin kiu struct ........................................................................................................ 42 Truyn tham s kiu struct cho hm ................................................................................................ 43 Kiu union ........................................................................................................................................... 43 ng dng ............................................................................................................................................. 43 I TNG V LP (. . . tit) ............................................................................................................ 44 Khi nim ............................................................................................................................................ 44 Khai bo, nh ngha v s dng lp ................................................................................................ 44 Phm vi (trong C++) ........................................................................................................................... 44 Thuc tnh truy xut........................................................................................................................... 44 Hm dng (constructor)..................................................................................................................... 45 Hm hy (destructor) ......................................................................................................................... 45 Php gn cc i tng ...................................................................................................................... 46Ging vin PTT Lp trnh C++

5

6

7

8

3 Hm thit lp sao chp (copy constructor) ....................................................................................... 46 Con tr this .......................................................................................................................................... 47 Thnh phn DL static (static data members) ................................................................................... 47 Hm thnh phn static (static function member) ............................................................................ 47 i tng hng (constant object) ...................................................................................................... 47 Thnh phn DL hng (constant member) ........................................................................................ 47 Hm thnh phn hng (constant function) ...................................................................................... 48 i tng tm thi (temporary object) ............................................................................................ 48 Hm bn (friend function) v lp bn (friend class) ....................................................................... 48 Con tr i tng................................................................................................................................ 49 Tham chiu i tng ........................................................................................................................ 49 Mng cc i tng ............................................................................................................................ 49 V d cui chng ............................................................................................................................... 49 NP CHNG TON T (OPERATOR OVERLOADING) TRONG C++ (. . . tit) ..................... 50 Gii thiu chung .................................................................................................................................. 50 C bn v np chng ton t ............................................................................................................. 50 Cc kh nng v gii hn v np chng ton t .............................................................................. 51 Hm ton t l hm t do (hm bn) ............................................................................................... 51 Hm ton t l hm thnh phn ....................................................................................................... 51 Np chng ton t mt ngi ............................................................................................................... 51 Np chng ton t 2 ngi ................................................................................................................... 51 Mt s v d tiu biu ......................................................................................................................... 51 Chuyn i kiu .................................................................................................................................. 51 File (. . . tit) ......................................................................................................................................... 53 Gii thiu chung .................................................................................................................................. 53 M File ( lin kt knh nhp/xut vi file a ) .................................................................................... 53 X l File ............................................................................................................................................. 53 ng File .............................................................................................................................................. 54 V d Vo/Ra File nh dng ............................................................................................................. 54 V d Vo/Ra k t .............................................................................................................................. 55 V d Vo/Ra File nh phn ............................................................................................................... 55 V d Vo/Ra File i tng .............................................................................................................. 56 N TP (. . . tit) ................................................................................................................................ 56

9

10

11

Mc ch & yu cu o Rn luyn t duy thut ton, hnh thnh bc u k nng lp trnh theo tip cn hng cu trc thng qua vic gii mt s bi ton tng i n gin trn my tnh bng NNLT C++. o Kt thc mn hc, SV cn nm vng cc kin thc c bn v NNLT C++, lm tin cho vic hc tip mn KTLT. o Cc ni dung quan trng cn nm vng: cc cu trc iu khin CT (r nhnh, la chn, lp), xy dng, thit k hm t to, t chc chng trnh C/C++, phng php tip cn phn r, tip cn hm, phng php tip cn trc tip, . . . Ni dung: Phn C s lp trnh Chng 1: Mt s khi nim c bn v lp trnh. Chng 2: Cc yu t c bn ca ngn ng C/C++. Chng 3: Cc cu trc iu khin (chng trnh) control structures.Ging vin PTT Lp trnh C++

4 Chng 4: Hm (function) & qui (recursion). Chng 5: Kiu mng (array). (Mng 1 chiu) Phn K thut lp trnh Chng 5: Kiu mng (array). (Mng 2 chiu) Chng 6: Kiu con tr (pointer) v kiu qui chiu (reference) Chng 7: Kiu cu trc (struct) Chng 8: Kiu class (class) Chng 9: Np chng ton t (operator overloading) Chng 10: Kiu tp tin (file) n tp Ti liu tham kho Nhp mn lp trnh Ngn ng C NXB KHKT GT tm tt v bi tp NN C Cc ti liu gio trnh hin ang bn trn th trng nh gi kt qu Gm 2 phn: Kim tra cui k (6 ): SV c tham gia ti a 2 ln. Kim tra gia k (4 ) gm 4 t nh sau: o t 1: sau khi kt thc chng Cc yu t c bn ca NNLT C++. (1 ) o t 2: sau khi kt thc chng Cc cu trc iu khin. (1 ) o t 3: sau khi kt thc chng Hm. (1 ) o t 4: sau khi kt thc chng Mng. (1 ) im kt qu l tng ca 2 phn (im kim tra cui k v im kim tra gia k) cng li. im t >= 5 . Phng php bi ging SV nghe ging kt hp vi ghi chp nhng ni dung c bn. Thc hin cc bi tp ti nh v ti phng my.

Ging vin PTT

Lp trnh C++

5 CNG CHI TIT 1 MT S KHI NIM C BN V LP TRNH (. . . tit) 1.1 Thut ton (Algorithm) Khi nim - Thut ton l khi nim c s ca ton hc v tin hc. - Thut ton l dy cc thao tc, cc hng dn r rng, c sp xp theo mt trnh t xc nh, sao cho 2 b x l (ngi/my) khc nhau, vi cng iu kin u vo nh nhau th sau mt s bc hu hn thc hin, s cho kt qu ging nhau m khng cn bit ngha ca cc thao tc ny. Cn ch l khng phi mi dy thao tc, ch dn no cng u to ra thut ton. Phng php nu n, cch dng thuc, . . . u khng phi l thut ton do cc thao tc, cc ch dn l khng xc nh, khng r rng. - Thut ton l phng php th hin li gii ca vn bi ton. Cc c trng ca thut ton - Tnh xc nh: Cc thao tc ca thut ton phi xc nh, khng c nhp nhng, m h c th d dng ci t trn mt h t ng ha. VD: - Tnh dng: Thut ton phi dng sau mt s hu hn bc thc hin. VD: - Tnh ng n: Thut ton phi cho kt qu ng theo yu cu ca bi ton t ra. VD: - Tnh ph dng: Thut ton c th c s dng li gii mt lp bi ton tng t. VD: - Tnh hiu qu: Thut ton cn ti u v s dng b nh v p ng yu cu ca bi ton trong thi gian ngn nht c th c. Thc t rt kh t c c 2 yu cu ny trong mt thut ton. VD: Cc cng c biu din thut ton - Ngn ng t nhin: l ngn ng lit k cc bc, m t thut ton theo ngn ng t nhin ca con ngi. - Lu thut ton hay s khi (Flow chart): l cng c cho php biu din thut ton mt cch trc quan. Thng ch c th dng cng c lu i vi cc thut ton tng i ngn, c th c biu din trong mt trang giy. Cc hnh c bn s dng trong lu : Hnh oval m t im xut pht/kt thc. Hnh ch nht m t mt hay nhiu ch th my cn thc hin. Hnh bnh hnh m t thao tc nhp/xut DL. Hnh thoi m t s r nhnh, la chn. Mi tn ch hng lu chuyn ca cc thao tc. - M gi (Pseudo code): gn ging nh ngn ng t nhin, nhng c s dng cc cu trc chun ha (khai bo bin, ch thch, cu trc iu khin, . . .) do ngi thit k quy nh. - Ngn ng lp trnh (Programming language): l h thng cc k hiu cho php m t cc quy trnh tnh ton di dng vn bn. Ngn ng lp trnh Chng trnh (my tnh) - L tp hp hu hn cc ch th my c b tr, sp xp theo mt trt t xc nh, nhm gii quyt yu cu ca bi ton t ra. Chng trnh c vit bng mt NNLT c th no . - Cc chng trnh C/C++ (trong mi trng DOS) c to ra bng 1 trnh son tho vn bn (EDITOR) nh: SK, NC Editor, VRES . . . Hin nay, cc TBD u tch hp sn editor ring cho php USER son thn, bin dch, kim li, lin kt v thc hin chng trnh mt cch d dng. - Cc chng trnh ny (m ngun source code), thc cht l dng ngn ng t nhin, do phi c bin dch li di dng m my (object code) m my tnh c th hiu c. Vic ny c thc hin bi chng trnh dch. - C 2 loi chng trnh dch: Trnh thng dch (interpreter): mi lnh c dch sang m my v cho thc hin ngay.Ging vin PTT Lp trnh C++

6 Trnh bin dch (compiler): ton b chng trnh ngun c dch sang m my (tp tin .obj), sau trnh lin kt (linker) s kt ni cc module CT to thnh tp tin EXE. - Ni chung, mt chng trnh my tnh thng b cc gm 3 phn: NHP X L XUT Cc bc xy dng chng trnh B1: Xc nh ng yu cu ca bi ton. Cn xc nh phm vi, cc gii hn, rng buc, cc gi thit ca bi ton. c bit cn khc phc sc v mt tm l trong qu trnh tm hiu bi ton. B2: Xy dng thut gii. Cn c kin thc lin quan n vn ang gii quyt. Cn xc nh r thut ton s tc ng trn nhng i tng (thng tin) no ? C bao nhiu i tng (bin) cn x l? Mi bin c th c lu tr di dng no, kiu g ? Gi tr ban u ca cc bin ? Hnh dung trc kt xut DL sau khi x l s nh th no ? . . . B3: Th hin thut gii bng lu thut ton (nu c). B4: Ci t thut ton bng mt NNLT c th. Dng mt trnh son tho VB to chng trnh ngun (source code) theo mt NNLT no . B5: Th nghim thut ton, nu sai quay li B2. Cn xc nh li ca thut ton thuc loi no: li v mt c php (syntax error), li lc thc hin chng trnh (run-time error), v li logic. Li c php xy ra lc bin dch chng trnh, do vi phm cc quy nh v mt c php ca NNLT ang s dng. Li ny tng i d khc phc. Li run-time error nh: divide by zero, stack overflow, khng b nh, . . . Li logic (logic error) kh pht hin hn nhiu. B6: Kt thc.

1.2

Ging vin PTT

Lp trnh C++

7 2 CC YU T C BN CA NNLT C/C++ ( . . . tit) B k t NNLT C/C++ ch chp nhn cc k t sau: - Cc k t ch hoa: A, B, C, . . . , Z - Cc k t ch thng: a, b, c, . . . , z - Cc ch s: 0, 1, . . . , 9 - Cc k t du: , . ! ? : . . . - Cc k t trng: ENTER, BACKSPACE, khong trng. - Cc k t c bit khc: + - * / ^ | # $ & % ( ) [ ] _ = ~ . . . Danh hiu (identifier) - Dng t tn cho cc i tng nh hng, bin, hm, . . . - di ti a ca 1 danh hiu (ty theo TBD) thng l 31-32 k t. - Danh hiu hp l c bt u bng mt k t ch ci hoc du gch ni (underscore), tip theo sau l dy cc k t ch hoc s hoc du gch ni, v khng php c khong trng gia. - Nn t danh hiu theo cc gi sau: Nn t tn cho cc i tng mt cch gi nh (Mnemonic). Tn hng c t bng ch hoa. Tn bin, tn hm c t nh sau: t u tin bng ch thng, cc t cn li bt u bng ch hoa. Tn kiu DL do USER nh ngha c bt u bng ch hoa. - Ch : Mi danh hiu phi c khai bo trc khi s dng. TBD s bo li undefined symbol trong qu trnh bin dch chng trnh nu vi phm nguyn tc ny. C phn bit ch hoa v ch thng (Case sensitive). Trong cng mt phm vi (scope), khng c t trng danh hiu.. T kha (keyword) - L t dnh ring v c ng ngha xc nh do NNLT quy nh. Mi NNLT u c mt b t kha ring. NNLT C (version 3.1) th hin cc t kha di dng cc k t mu trng, cc danh hiu di dng cc k t mu vng, s di dng mu xanh l, . . . Ch thch (comment) - c dng lm cho chng trnh d c, d hiu, d bo tr hn. - TBD s b qua nhng ni dung nm trong phn ch thch. - C 2 loi ch thch: Ch thch trn mt dng: k hiu // . . . phn ch thch (cho n cui dng) . . . . Ch thch trn nhiu dng: k hiu /*... phn ch thch (c th tri di trn nhiu dng)... */ Cc kiu d liu c bn (base type) - S nguyn Tn kiu: int Kch thc: 2 bytes v c phm vi biu din gi tr 32768 . . 32767 Cc php ton p dng c trn kiu int:: Cc php ton s hc: +, -, *, /, % Cc php ton so snh: =, ==, != Cc php ton dch chuyn s hc: >>, v = Ln hn hoc bng 2 - nt == So snh bng 2 - nt != So snh khc nhau 2 - nt - Ton t logic K hiu ngha S ngi Ton hng VD ! NOT logic 1 int, float, double, char && AND logic 2 - nt || OR logic 2 - nt - Ton t gn dng thay i tr ca mt bin bng tr ca mt biu thc no . K hiu: = Biu thc gn c dng: = , trong l mt danh hiu hp l (nm v tri), v (nm v phi) l biu thc c cng kiu vi kiu ca . Cch tnh tr ca biu thc gn: TBD tnh tr ca , sau gn tr ny cho . Ton b biu thc gn ny cng tr v mt gi tr l tr ca va tnh c. VD: - C/C++ cho php vit gn cc biu thc gn bng cc ton t gn sau: Dng vit thng thng Dng vit thu gn ngha VD i = i + i += T cng i = i - i -= T tr i = i * i *= T nhn i = i / i /= T chia i = i % i %= T modulo ... - Ton t iu kin: ? : L ton t 3 ngi, v c dng: ? : Trong : thng l mt biu thc so snh hay mt biu thc logic , v l mt biu thc thng thng no Kiu ca biu thc iu kin ph thuc vo kiu ca , . Cch tnh gi tr biu thc iu kin: B1: TBD tnh tr ca B2: Nu c tr !=0 th ton b biu thc iu kin s nhn tr cho bi . Ngc li th TBD s dng tr ca lm tr ca ton b biu thc iu kin. VD:Ging vin PTT Lp trnh C++

11 - Ton t tng (++), gim () mt n v. Biu thc c dng: ++ -++ -- S khc nhau gia 2 dng tin t v hu t ch ny sinh khi biu thc nm trong mt biu thc khc nh sau: Dng tin t: tr ca c thay i trc khi tham gia biu thc chung Dng hu t: biu thc chung s dng tr c ca , sau mi c thay i tr. - Ton t dch chuyn s hc K hiu ngha S ngi Ton hng VD > Dch phi 2 - nt - Ton t thao tc trn tng bt K hiu ngha S ngi Ton hng VD ! o bit 1 int & AND bit 2 - nt | OR bit 2 - nt - Ton t p kiu ( ni trn) - Ton t ly a ch ca: & B nh trong ca my tnh bao gm cc nh lin tip c nh s t 0 n gii hn ca b nh. Mi bin khai bo trong chng trnh s chim 1 vng nh c kch thc qui nh bi kiu khai bo cho bin v c a ch l byte u tin c cp pht. Ta c th xc nh a ch ca bin nh vo ton t & nh sau: & - Ton t sizeof: sizeof() tr v kch thc (s bytes) ca biu thc. sizeof() tr v kch thc (s bytes) ca kiu. u tin v trt t kt hp cc ton t (precedence and associativity) - Trong qu trnh tnh ton tr ca cc biu thc, NNLT C/C++ cn c vo u tin v trt t kt hp ca cc ton t nh sau: - Ton t c u tin cao nht c thc hin trc - Trong trng hp ton hng gia 2 ton t c cng u tin th trt t kt hp (phi hoc tri) ca ton t s qui nh th t thc hin ca cc ton t. Mc Ton t Trt t kt hp 1 () [] -> 2 ! ~ ++ -- - * & (type) sizeof() 3 * / 4 + 5 > 6 < >= 7 == != 8 & 9 ^ 10 | 11 && 12 || 13 ? : 14 = += -= *= /= %= . . .

Ging vin PTT

Lp trnh C++

12 Cu lnh (statement, instruction) C 3 loi cu lnh: Cu lnh n l mt biu thc c kt thc bng du ; v c th tri di trn nhiu dng. Cu lnh n c dng: = ; hay ; hay ; Cu lnh ghp hay cn gi l khi lnh bao gm t 2 cu lnh tr ln, v c t trong cp ngoc nhn { } nh sau: { ; ; ... ; } Cu lnh iu khin c xy dng t cc cu trc iu khin nh: Cu trc r nhnh: cu lnh if . . . else . . . Cu trc la chn: cu lnh switch () . . . Cu trc lp: cu lnh for () . . . , cu lnh while() . . . , cu lnh do . . . while(). Ch : Cu lnh ; l mt cu lnh rng, nhng hp l. (Ch : khai bo bin, khai bo hm nguyn mu cng c kt thc bng du ;) Xut / Nhp d liu n gin trong C/C++ Xut d liu ra mn hnh: Trong C, dng hm printf(. . .) khai bo trong tp tin tiu (xem ti liu) Trong C++, dng i tng cout v ton t