196
TRƯỜNG ĐẠI HC SƯ PHM TPHCM Khoa Toán – Tin hc Tài liệu tham khảo môn NGÔN NGỮ LẬP TRÌNH C/C++ Ging viên: LƯƠNG TRN HY HIN Email: [email protected] Web Course: http://fit.hcmup.edu.vn/~hienlth/C TPHCM – 2009

lap trinh c

Embed Size (px)

DESCRIPTION

day la tai lieu lap trinh c cua dai hoc sp

Citation preview

TRNG I HC S PHM TPHCM Khoa Ton Tin hc

Ti liu tham kho mn

NGN NG LP TRNH C/C++

Ging vin: LNG TRN HY HIN Email: [email protected] Web Course: http://fit.hcmup.edu.vn/~hienlth/C

TPHCM 2009

L I NI UNgn ng lp trnh (NNLT) C/C++ l mt trong nhng ngn ng lp trnh hng i tng mnh v ph bin hin nay do tnh mm do v a nng ca n. Khng ch cc ng dng c vit trn C/C++ m c nhng chng trnh h thng ln u c vit hu ht trn C/C++. C++ l ngn ng lp trnh hng i tng c pht trin trn nn tng ca C, khng nhng khc phc mt s nhc im ca ngn ng C m quan trng hn, C++ cung cp cho ngi s dng (NSD) mt phng tin lp trnh theo k thut mi: lp trnh hng i tng. y l k thut lp trnh c s dng hu ht trong cc ngn ng mnh hin nay, c bit l cc ngn ng hot ng trong mi trung Windows nh Microsoft Access, Visual C++, VB.NET, C++.NET, C#, Hin nay NNLT C/C++ c a vo ging dy trong hu ht cc trng i hc, Cao ng thay th mt s NNLT c nh Pascal N c th mang nhiu tn gi khc nh Tin hc c s, K thut lp trnh, Ngn ng lp trnh bc cao, Ti liu ny ch cp mt phn nh n k thut lp trnh vi C++, bn cnh cng ni mt s im khc bit so vi C. V k thut lp trnh hng i tng (trong C++) s c trang b bi mt gio trnh khc. Tuy nhin ngn gn, trong ti liu ny tn gi C/C++ s c chng ti thay bng C++. Ni dung ti liu ny gm 8 chng. Phn u gm cc chng t 1 n 5 ch yu trnh by v NNLT C++ trn nn tng ca k thut lp trnh cu trc. Cc chng cn li (chng 6, 7 v 8) s trnh by cc cu trc c bn trong C++ l k thut ng gi (lp v i tng), nh ngha php ton mi cho lp v lm vic vi file (sinh vin t tham kho, ging vin ch gii thiu). Tuy c nhiu c gng nhng do thi gian v trnh ngi vit c hn nn chc chn khng trnh khi sai st, v vy rt mong nhn c s gp ca bn c ti liu ny ngy cng mt hon thin hn.

Mi ng gp, xin gi v a ch: LNG TRN HY HIN [email protected]

2

M CL CCHNG I. CC KHI NIM C BN CA C++.................................................................. 9I.1. CC YU T C BN ........................................................................................................................................ 9 I.1.1. Bng k t ca C++ .................................................................................................................................... 9 I.1.2. T kho ....................................................................................................................................................... 9 I.1.3. Tn gi ...................................................................................................................................................... 10 I.1.4. Ch thch trong chng trnh .................................................................................................................... 10 I.2. CC BC TO V THC HIN MT CHNG TRNH ...................................................................... 11 I.2.1. Qui trnh vit v thc hin chng trnh ................................................................................................... 11 I.2.2. Son tho tp tin chng trnh ngun ....................................................................................................... 11 I.2.3. Dch chng trnh ..................................................................................................................................... 12 I.2.4. Chy chng trnh .................................................................................................................................... 12 I.3. VO/RA TRONG C++ ....................................................................................................................................... 12 I.3.1. Vo d liu t bn phm ........................................................................................................................... 13 I.3.2. In d liu ra mn hnh ............................................................................................................................... 13 I.3.3. nh dng thng tin cn in ra mn hnh .................................................................................................... 15 I.3.4. Vo/ra trong C .......................................................................................................................................... 16 I.3.5. In kt qu ra mn hnh .............................................................................................................................. 16 I.3.6. Nhp d liu t bn phm ......................................................................................................................... 18

CHNG II.

KIU D LIU, BIU THC V CU LNH .................................................. 20

II.1. KIU D LIU N GIN ......................................................................................................................... 20 II.1.1. Khi nim v kiu d liu ......................................................................................................................... 20 II.1.2. Kiu k t ................................................................................................................................................. 21 II.1.3. Kiu s nguyn ......................................................................................................................................... 22 II.1.4. Kiu s thc .............................................................................................................................................. 22 II.2. HNG - KHAI BO V S DNG HNG ................................................................................................... 22 II.2.1. Hng nguyn ............................................................................................................................................. 22 II.2.2. Hng thc .................................................................................................................................................. 23 a. Dng du phy tnh ........................................................................................................................................ 23 b. Dng du phy ng ...................................................................................................................................... 23 II.2.3. Hng k t ................................................................................................................................................. 23 a. Cch vit hng ............................................................................................................................................... 23 b. Mt s hng thng dng ................................................................................................................................ 23 II.2.4. Hng xu k t ........................................................................................................................................... 24 II.2.5. Khai bo hng ........................................................................................................................................... 24 II.3. BIN - KHAI BO V S DNG BIN ....................................................................................................... 25 II.3.1. Khai bo bin ............................................................................................................................................ 25 a. Khai bo khng khi to ................................................................................................................................ 26 b. Khai bo c khi to ...................................................................................................................................... 26 II.3.2. Phm vi ca bin ....................................................................................................................................... 26 II.3.3. Gn gi tr cho bin (php gn)................................................................................................................. 27 II.3.4. Mt s im lu v php gn ................................................................................................................. 27 II.4. PHP TON, BIU THC V CU LNH ................................................................................................. 28 II.4.1. Php ton .................................................................................................................................................. 28 a. Cc php ton s hc: +, -, *, /, % ................................................................................................................. 28 b. Cc php ton t tng, gim: i++, ++i, i--, --i ................................................................................................ 28 c. Cc php ton so snh v lgic ...................................................................................................................... 29 II.4.2. Cc php gn ............................................................................................................................................. 30 II.4.3. Biu thc ................................................................................................................................................... 31 a. Th t u tin ca cc php ton ................................................................................................................... 31 b. Php chuyn i kiu ..................................................................................................................................... 32 II.4.4. Cu lnh v khi lnh ............................................................................................................................... 33

3

II.5. TH VIN CC HM TON HC .............................................................................................................. 33 II.5.1. Cc hm s hc ......................................................................................................................................... 34 II.5.2. Cc hm lng gic .................................................................................................................................. 34

CHNG III.

CU TRC IU KHIN V D LIU KIU MNG .................................... 37

III.1. CU TRC R NHNH ................................................................................................................................ 37 III.1.1. Cu lnh iu kin if ............................................................................................................................ 37 a. ngha .......................................................................................................................................................... 37 b. C php .......................................................................................................................................................... 37 c. c im........................................................................................................................................................ 37 d. V d minh ho .............................................................................................................................................. 38 III.1.2. Cu lnh la chn switch ..................................................................................................................... 39 a. ngha .......................................................................................................................................................... 39 b. C php .......................................................................................................................................................... 39 c. Cch thc hin ............................................................................................................................................... 39 d. V d minh ho .............................................................................................................................................. 39 III.1.3. Cu lnh nhy goto............................................................................................................................... 40 a. ngha .......................................................................................................................................................... 40 b. C php .......................................................................................................................................................... 41 c. V d minh ho .............................................................................................................................................. 41 III.2. CU TRC LP ............................................................................................................................................ 41 III.2.1. Lnh lp for .......................................................................................................................................... 42 a. C php .......................................................................................................................................................... 42 b. Cch thc hin ............................................................................................................................................... 42 c. V d minh ho .............................................................................................................................................. 42 d. c im........................................................................................................................................................ 43 e. Lnh for lng nhau ........................................................................................................................................ 44 III.2.2. Lnh lp while ...................................................................................................................................... 45 a. C php .......................................................................................................................................................... 45 b. Thc hin ....................................................................................................................................................... 45 c. c im........................................................................................................................................................ 45 d. V d minh ho .............................................................................................................................................. 45 III.2.3. Lnh lp do ... while ............................................................................................................................. 48 a. C php .......................................................................................................................................................... 48 b. Thc hin ....................................................................................................................................................... 48 c. c im........................................................................................................................................................ 48 d. V d minh ho .............................................................................................................................................. 48 III.2.4. Li ra ca vng lp: break, continue .................................................................................................... 49 a. Lnh break ..................................................................................................................................................... 49 b. Lnh continue ................................................................................................................................................ 49 III.2.5. So snh cch dng cc cu lnh lp ..................................................................................................... 50 III.3. MNG D LIU ........................................................................................................................................... 50 III.3.1. Mng mt chiu ................................................................................................................................... 50 a. ngha .......................................................................................................................................................... 50 b. Khai bo......................................................................................................................................................... 51 c. Cch s dng ................................................................................................................................................. 52 d. V d minh ho .............................................................................................................................................. 52 III.3.2. Xu k t............................................................................................................................................... 54 a. Khai bo......................................................................................................................................................... 54 b. Cch s dng ................................................................................................................................................. 54 c. Phng thc nhp xu (#include ) ............................................................................................ 55 d. Mt s hm x l xu (#include ) ................................................................................................... 56 III.4. a. b. c. MNG HAI CHIU ....................................................................................................................................... 60 Khai bo......................................................................................................................................................... 60 S dng .......................................................................................................................................................... 60 V d minh ho .............................................................................................................................................. 61

4

CHNG IV.

HM V CHNG TRNH ................................................................................ 68

IV.1. CON TR V S HC A CH .................................................................................................................. 68 IV.1.1. a ch, php ton & ............................................................................................................................ 68 IV.1.2. Con tr ................................................................................................................................................. 69 a. ngha .......................................................................................................................................................... 69 b. Khai bo bin con tr..................................................................................................................................... 69 c. S dng con tr, php ton * ......................................................................................................................... 69 IV.1.3. Cc php ton vi con tr .................................................................................................................... 70 a. Php ton gn................................................................................................................................................. 70 b. Php ton tng gim a ch ........................................................................................................................... 70 c. Php ton t tng gim .................................................................................................................................. 71 d. Hiu ca 2 con tr .......................................................................................................................................... 71 e. Php ton so snh .......................................................................................................................................... 71 IV.1.4. Cp pht ng, ton t cp pht, thu hi new, delete ........................................................................... 72 IV.1.5. Con tr v mng, xu k t ................................................................................................................... 73 a. Con tr v mng 1 chiu ................................................................................................................................ 73 b. Con tr v xu k t ....................................................................................................................................... 74 c. Con tr v mng hai chiu ............................................................................................................................. 74 IV.1.6. Mng con tr ........................................................................................................................................ 76 a. Khi nim chung ............................................................................................................................................ 76 b. Mng xu k t ............................................................................................................................................... 76 IV.2. HM .............................................................................................................................................................. 77 IV.2.1. Khai bo v nh ngha hm................................................................................................................. 77 a. Khai bo......................................................................................................................................................... 77 b. nh ngha hm ............................................................................................................................................. 77 c. Ch v khai bo v nh ngha hm ............................................................................................................ 79 IV.2.2. Li gi v s dng hm........................................................................................................................ 79 IV.2.3. Hm vi i mc nh .......................................................................................................................... 80 IV.2.4. Khai bo hm trng tn ........................................................................................................................ 81 IV.2.5. Bin, i tham chiu ............................................................................................................................ 82 IV.2.6. Cc cch truyn tham i ..................................................................................................................... 83 a. Truyn theo tham tr ...................................................................................................................................... 83 b. Truyn theo dn tr........................................................................................................................................ 84 c. Truyn theo tham chiu ................................................................................................................................. 86 IV.2.7. Hm v mng d liu ........................................................................................................................... 87 a. Truyn mng 1 chiu cho hm....................................................................................................................... 87 b. Truyn mng 2 chiu cho hm....................................................................................................................... 88 c. Gi tr tr li ca hm l mt mng ............................................................................................................... 90 d. i v gi tr tr li l xu k t ..................................................................................................................... 93 e. i l hng con tr ........................................................................................................................................ 94 IV.2.8. Con tr hm.......................................................................................................................................... 95 a. Khai bo......................................................................................................................................................... 95 b. Khi to ......................................................................................................................................................... 95 c. S dng con tr hm ...................................................................................................................................... 95 d. Mng con tr hm .......................................................................................................................................... 96 IV.3. QUI .......................................................................................................................................................... 97 IV.3.1. Khi nim qui .................................................................................................................................. 97 IV.3.2. Lp cc bi ton gii c bng qui ................................................................................................ 98 IV.3.3. Cu trc chung ca hm qui ............................................................................................................ 98 IV.4. T CHC CHNG TRNH ....................................................................................................................... 99 IV.4.1. Cc loi bin v phm vi ...................................................................................................................... 99 a. Bin cc b .................................................................................................................................................... 99 b. Bin ngoi .................................................................................................................................................... 100 IV.4.2. Bin vi mc ch c bit ................................................................................................................. 102 a. Bin hng v t kho const .......................................................................................................................... 102 b. Bin tnh v t kho static ........................................................................................................................... 103 c. Bin thanh ghi v t kho register ............................................................................................................... 103

5

d. Bin ngoi v t kho extern ....................................................................................................................... 104 IV.4.3. Cc ch th tin x l .......................................................................................................................... 105 a. Ch th bao hm tp tin #include .................................................................................................................. 105 b. Ch th macro #define .................................................................................................................................. 105 c. Cc ch th bin dch c iu kin #if, #ifdef, #ifndef ................................................................................. 106

CHNG V.

D LIU KIU CU TRC V HP .............................................................. 113

V.1. KIU CU TRC ........................................................................................................................................ 113 V.1.1. Khai bo, khi to ................................................................................................................................... 113 V.1.2. Truy nhp cc thnh phn kiu cu trc.................................................................................................. 114 V.1.3. Php ton gn cu trc ............................................................................................................................ 115 V.1.4. Cc v d minh ho ................................................................................................................................. 116 V.1.5. Hm vi cu trc ..................................................................................................................................... 118 a. Con tr v a ch cu trc ........................................................................................................................... 118 b. a ch ca cc thnh phn ca cu trc ...................................................................................................... 120 c. i ca hm l cu trc ............................................................................................................................... 120 d. Gi tr hm l cu trc ................................................................................................................................. 124 V.1.6. Cu trc vi thnh phn kiu bit ............................................................................................................. 127 a. Trng bit .................................................................................................................................................... 127 b. c im...................................................................................................................................................... 127 V.1.7. Cu lnh typedef ..................................................................................................................................... 128 1. Hm sizeof() ..................................................................................................................................................... 128

V.2. CU TRC T TR V DANH SCH LIN KT ..................................................................................... 128 V.2.1. Cu trc t tr ......................................................................................................................................... 129 V.2.2. Khi nim danh sch lin kt .................................................................................................................. 130 V.2.3. Cc php ton trn danh sch lin kt ..................................................................................................... 131 a. To phn t mi ........................................................................................................................................... 131 b. Chn phn t mi vo gia .......................................................................................................................... 131 c. Xo phn t th i khi danh sch ................................................................................................................ 132 d. Duyt danh sch........................................................................................................................................... 132 e. Tm kim ..................................................................................................................................................... 132 V.3. KIU HP................................................................................................................................................... 135 V.3.1. Khai bo .................................................................................................................................................. 135 V.3.2. Truy cp .................................................................................................................................................. 136 V.4. KIU LIT K............................................................................................................................................. 136

CHNG VI.

LP V I TNG ........................................................................................ 142

VI.1. LP TRNH C CU TRC V LP TRNH HNG I TNG ....................................................... 142 VI.1.1. Phng php lp trnh cu trc .......................................................................................................... 142 VI.1.2. Phng php lp trnh hng i tng ............................................................................................ 143 VI.2. LP V I TNG ................................................................................................................................. 145 VI.2.1. Khai bo lp ....................................................................................................................................... 145 VI.2.2. Khai bo cc thnh phn ca lp (thuc tnh v phng thc) .......................................................... 146 a. Cc t kha private v public ...................................................................................................................... 146 b. Cc thnh phn d liu (thuc tnh) ............................................................................................................. 146 c. Cc phng thc (hm thnh vin).............................................................................................................. 146 VI.2.3. Bin, mng v con tr i tng ........................................................................................................ 147 a. Thuc tnh ca i tng ............................................................................................................................. 148 b. S dng cc phng thc ............................................................................................................................ 148 c. Con tr i tng ......................................................................................................................................... 149 VI.3. I CA PHNG THC, CON TR this .............................................................................................. 151 VI.3.1. Con tr this l i th nht ca phng thc ..................................................................................... 151 VI.3.2. Tham s ng vi i con tr this........................................................................................................ 151 VI.4. HM TO (Constructor) ............................................................................................................................. 152

6

VI.4.1. Hm to (hm thit lp)...................................................................................................................... 152 a. Cch vit hm to ........................................................................................................................................ 152 b. Dng hm to trong khai bo ....................................................................................................................... 153 c. Dng hm to trong cp pht b nh ........................................................................................................... 153 d. Dng hm to biu in cc i tng hng ........................................................................................... 154 e. V d minh ha ............................................................................................................................................ 154 VI.4.2. Lp khng c hm to v hm to mc nh ...................................................................................... 155 a. Nu lp khng c hm to ........................................................................................................................... 155 b. Nu trong lp c t nht mt hm to...................................................................................................... 156 VI.4.3. Hm to sao chp (Copy Constructor) ............................................................................................... 157 a. Hm to sao chp mc nh ......................................................................................................................... 157 b. Cch xy dng hm to sao chp................................................................................................................. 159 c. Khi no cn xy dng hm to sao chp...................................................................................................... 159 d. V d v hm to sao chp ........................................................................................................................... 161 VI.5. HM HY (Destructor)............................................................................................................................... 163 VI.5.1. Hm hy mc nh ............................................................................................................................. 163 VI.5.2. Quy tc vit hm hy ......................................................................................................................... 163 VI.5.3. Vai tr ca hm hy trong lp DT ..................................................................................................... 164 VI.6. CC HM TRC TUYN (inline) .............................................................................................................. 164 VI.6.1. u nhc im ca hm .................................................................................................................... 164 VI.6.2. Cc hm trc tuyn ............................................................................................................................ 165 VI.6.3. Cch bin dch v dng hm trc tuyn ............................................................................................. 165 VI.6.4. S hn ch ca trnh bin dch ........................................................................................................... 166

CHNG VII.

HM BN, NH NGHA PHP TON CHO LP .................................... 168

VII.1. HM BN (Friend function) ....................................................................................................................... 168 VII.1.1. Hm bn ............................................................................................................................................. 168 VII.1.2. Tnh cht ca hm bn ....................................................................................................................... 169 VII.1.3. Hm bn ca nhiu lp....................................................................................................................... 170 VII.2. NH NGHA PHP TON CHO LP ...................................................................................................... 173 VII.2.1. Tn hm ton t ................................................................................................................................. 174 VII.2.2. Cc i ca hm ton t ..................................................................................................................... 174 VII.2.3. Thn ca hm ton t ......................................................................................................................... 174 a. Cch dng hm ton t ................................................................................................................................ 175 b. Cc v d v nh ngha chng ton t ........................................................................................................ 175

CHNG VIII.

CC DNG NHP/XUT V FILE............................................................. 180

VIII.1. NHP/XUT VI CIN/COUT ..................................................................................................................... 180 VIII.1.1. Ton t nhp >> ................................................................................................................................. 181 VIII.1.2. Cc hm nhp k t v xu k t ......................................................................................................... 182 a. Nhp k t .................................................................................................................................................... 182 b. Nhp xu k t ............................................................................................................................................. 182 VIII.1.3. Ton t xut , > bi n_1 ; cin >> bi n_2 ; cin >> bi n_3 ;

hoc:cin >> bi n_1 >> bi n_2 >> bi n_3 ;

bi n_1, bi n_2, bi n_3 l cc bin c s dng lu tr cc gi tr NSD nhp vo t bn phm. Khi nim bin s c m t c th hn trong chng 2, y bi n_1, bi n_2, bi n_3 c hiu l cc tn gi ch 3 gi tr khc nhau. Hin nhin c th nhp d liu nhiu hn 3 bin bng cch tip tc vit tn bin vo bn phi sau du >> ca cu lnh.

Khi chy chng trnh nu gp cc cu lnh trn chng trnh s "tm dng" ch NSD nhp d liu vo cho cc bin. Sau khi NSD nhp xong d liu, chng trnh s tip tc chy t cu lnh tip theo sau ca cc cu lnh trn.Cch thc nhp d liu ca NSD ph thuc vo loi gi tr ca bin cn nhp m ta gi l kiu, v d nhp mt s c cch thc khc vi nhp mt chui k t. Gi s cn nhp di hai cnh ca mt hnh ch nht, trong cnh di c qui c bng tn bin cd v chiu rng c qui c bi tn bin cr. Cu lnh nhp s nh sau:cin >> cd >> cr ;

Khi my dng ch nhp d liu NSD s g gi tr c th ca cc chiu di, rng theo ng th t trong cu lnh. Cc gi tr ny cn cch nhau bi t nht mt du trng (ta qui c gi du trng l mt trong 3 loi du c nhp bi cc phm sau: phm spacebar (du cch), phm tab (du tab) hoc phm Enter (du xung dng)). Cc gi tr NSD nhp vo cng c hin th trn mn hnh NSD d theo di. V d nu NSD nhp vo 23 11 th chng trnh s gn gi tr 23 cho bin cd v 11 cho bin cr. Ch : gi s NSD nhp 2311 (khng c du cch gia 23 v 11) th chng trnh s xem 2311 l mt gi tr v gn cho cd. My s tm dng ch NSD nhp tip gi tr cho bin cr. I.3.2. In d li u ra mn hnh in gi tr ca cc biu thc ra mn hnh ta dng cu lnh sau:cout nam ; ; cin.get(a); cin.get(b); cin.get(c); ; ; // in k t qu cout