Trang | 1
ĐNG NGC HOÀNG THÀNH
LP TRÌNH HNG
ĐI TNG
Tài liu hc tp
C
++
Theo dõi bn cp nht trên blog ca tôi.
Trang | 2
C++
PH LC
GII THIU 7
MÔI TRNG PHÁT TRIN TÍCH HP IDE 10
CHNG C BN V C++ 23
CHNG BIN VÀ CÁC KIU D LIU 26
T khóa 26
Kiu d liu nguyên thy 27
Khai báo bin 28
Phm vi tác dng ca bin 29
Khi to giá tr cho bin 30
Khi to giá tr cho bin tĩnh static 31
Gii thiu v xâu kí t 32
CHNG HNG 34
Hng s nguyên 34
Hng s thc có du chm đng 34
Hng kí t và hng xâu kí t 35
Hng logic 36
Đnh nghĩa mt hng #define 36
Khai báo hng const 37
CHNG . TOÁN T 38
Toán t gán 38
Toán t thc hin phép toán s hc 39
Toán t gán hp nht 40
Toán t tăng và gim 40
Toán t so sánh 41
Toán t logic 42
Toán t điu kin 43
Toán t phân tách 45
Trang | 3
C++
Toán t dch bit 45
Toán t chuyn đi kiu d liu 48
Các toán t khác 49
Th t u tiên ca các toán t 49
CHNG XUT NHP C BN
Xut d liu chun cout 52
Nhp d liu chun cin 53
Nhp d liu nh lp stringstream 55
CHNG CÁC CU TRÚC LNH ĐIU KHIN
Cu trúc lnh có điu kin if và else 58
Cu trúc lp 60
Cu trúc la chn switch 67
CHNG HÀM 72
Khai báo và s dng hàm 73
Phm vi tác dng ca bin 77
Hàm không tr v giá tr - Hàm void. 78
Tham bin và tham tr 79
Giá tr mc đnh ca tham s hình thc 82
Chng cht hàm 83
Hàm ni tuyn 84
Hàm đ quy 85
CHNG CÁC KIU D LIU CÓ CU TRÚC 88
Mng 88
Xâu kí t 91
CHNG CON TR
Toán t tham chiu & 93
Toán t tham chiu ngc * 94
Khai báo bin con tr 96
Con tr, mng và xâu kí t 98
Trang | 4
C++
Các phép toán s hc trên con tr 100
Con tr tr vào con tr 102
Con tr void 104
Con tr null 105
Con tr hàm 105
CHNG B NH ĐNG 107
Toán t new và new 107
Toán t delete và delete 109
CHNG KIU D LIU STRUCT VÀ CON TR STRUCT 110
Struct 110
Con tr struct 114
Struct lng nhau 115
Kích thc b nh ca struct 115
CHNG CÁC KIU D LIU KHÁC 117
Kiu d liu t đnh nghĩa 117
Kiu d liu union thng 117
Kiu d liu union n danh 118
Kiu d liu enum 118
CHNG LP TRÌNH HNG ĐI TNG 120
Lch s hình thành 120
Lp và đi tng 126
Hàm to và hàm hy 130
Chng cht hàm to 132
Hàm to sao chép 133
Tính đóng gói – Encapsulation 139
Con tr đi tng 140
Lp đc khai báo nh t khóa struct và union 141
Con tr this 141
Thành viên tĩnh – T khóa static 143
Trang |
C++
Hàm bn và lp bn 144
Chng cht toán t 147
Tính k tha - Inheritance 153
Các mc truy cp 156
Tính đa k tha – Multiple Inheritance 159
Tính đa hình – Polymorphism 160
Tính tru tng hóa - Abstraction 172
Hàm mu – Template Function 173
Lp mu – Template class 173
CHNG NAMESPACE 178
T khóa namespace 178
T khóa using 179
Phm vi ca namespace 180
Tái đnh danh cho namespace 181
Namespace std 181
CHNG NGOI L 182
Mnh đ try…catch 182
Mnh đ throw 182
Th vin chun exception 183
CHNG LÀM VIC VI FILE 186
M file 186
Đóng file 188
File văn bn 188
Kim tra trng thái ca các c hiu 189
Con tr get và put 190
File nh phân 192
B đm và Đng b hóa 193
CHNG CÁC LP TH VIN
1. Lp s phc complex 194
Trang | 6
C++
2. Lp ngăn xp stack 196
3. Lp hàng đi queue 197
3. Lp vector 198
4. Lp string 200
5. Lp list 203
6. Lp map 203
7. Lp set 204
8. Các lp th vin nhp xut 204
HNG DN THC HÀNH 212
BÀI THC HÀNH S 1 212
BÀI THC HÀNH S 2 213
BÀI THC HÀNH S 3 214
BÀI THC HÀNH S 4 215
BÀI THC HÀNH S 5 215
BÀI THC HÀNH S 6 216
BÀI TP NÂNG CAO 218
BÀI TP LN
DANH SÁCH HÌNH 228
TRA CU T KHÓA
TÀI LIU THAM KHO 230
Trang | 7
C++
GII THIU
1. Cu trúc ca giáo trình
Giáo trình đc chia ra làm 17 chng và mi chng đc chia làm
các mc khác nhau. Các chng đc sp xp theo trình t t lp trình
hng th tc trên C đn lp trình hng đi tng và các lp th
vin c bn. Đc gi có th truy cp vào mc bt kì t phn ph lc nm
đu sách Nhiu mc bao gm các ví d đ mô t cách s dng. Tôi
khuyên các bn nên đc các ví d này và có th hiu mi đon mã
chng trình trc khi đc chng tip theo.
Mt cách thc tt đ tăng lng kin thc nhn đc đó là hãy chnh
sa, b sung mã lnh mi da trên ví d mu, theo hng t duy ca
ca bn thân đ t đó có th hiu mt cách đy đ v ni dung mà ta
tip thu đc.
Sau khi đc xong giáo trình, tôi còn cung cp mt s bài tp thc hành
đ ngh đ đc gi nên th nghim. Hãy gii nhng bài tp này chúng s
rt hu ích và giúp các bn cũng c li kin thc môn hc cũng nh hiu
sâu sc hn phn lý thuyt.
Mt điu na mà đc gi cn lu ý hãy đc trang cui cùng ca cun
sách đ nm đc mt s thut ng anh-vit tng ng đc s dng
trong giáo trình này. Tôi cũng có gng s dng tên gi phù hp nht vi
đi đa s các giáo trình hin hành. Tuy nhiên, đc gi cũng nên nm các
thut ng ting anh tng ng đ có th tham kho thêm các tài liu
chuyên môn ting anh.
Khi vit giáo trình này, tôi không th tránh khi sai sót Rt mong s
đóng góp ý kin quý báu ca các bn đc gi cũng nh các bn đng
nghip. Mi s đóng góp xin liên h theo đa ch email:
Hi vng vi các ý kin đóng góp ca các bn,
giáo trình này s ngày càng hoàn thin hn.
2. Mt vài chú ý v s tng thích ca C và C++
Chun ANSI-C đc mt t chc tiêu chun quc t thng nht đa
ra Nó đc chính thc ra mt vào tháng năm và duyt li vào
Trang | 8
C++
năm Tuy nhiên ngôn ng C đã tn ti trc đó mt thi gian
khá dài vào năm Trc đó có rt nhiu trình dch không h tr
các tính năng mi bao gm c chun ANSI-C++. Giáo trình này đc xây
dng trên các chng trình dch hin đi h tr đy đ chun ANSI-C++.
Tôi đm bo rng các ví d s hot đng tt nu đc gi s dng mt
trình dch h tr ANSI-C++. Có nhiu s chn la, có th là min phí hoc
các phn mm thng mi. Trong giáo trình này, tôi gii thiu đn các
các bn hai công c biên dch C++ là GCC MinGW – min phí và Visual
C++ - thng mi.
3. Trình biên dch
Các ví d trong cun giáo trình này đc xây dng ch yu trên ch
đ console màn hình DOS Điu đó có nghĩa là nó s dng ch đ văn
bn đ hin th các kt qu. Mi trình dch C đu h tr ch đ dch
console Vi mt môi trng phát trin tích hp IDE cho C++ min phí,
chúng ta có th s dng chng trình Codeblocks hoc Eclipse. Chúng là
các môi trng phát trin tích hp h tr son tho và biên dch C++.
Chúng h tr môi trng GCC đ biên dch c C và C++. Vi CodeBlocks
chúng ta có th ti phn mm ti đa ch bên di
1
. Đi vi Eclipse nó là
mt trình son tho và biên dch ngôn ng lp trình chuyên nghip
nhng hoàn toàn min phí (vì ta có th cu hình kt hp vi các công c
biên dch khác nhau đ to ra môi trng phát trin tích hp cho các
ngôn ng lp trình khác nhau. Chúng ta có th dùng nó đ son tho và
biên dch Java, PHP, JSP, Python… và hin nhiên là c C/C++. Đây là mt
d án mã ngun m, tiêu tn hàng triu đôla ca IBM. Đ ti v bn mi
nht cho đn thi đim này năm là Eclipse Helios, ta có th truy
cp đn đa ch bên di
2
. Đi vi Eclipse chúng ta nên s dng kt hp
vi trình biên dch C++ là MinGW, nó cũng là mt d án m. Chúng ta có
th ti v ti đa ch bên di
3
. Vi Eclipse thì công vic cu hình ban
đu tng đi phc tp. Nhng nó là mt trình son tho tuyt vi. Ta
có th s dng nó đ son tho nhiu ngôn ng lp trình bng cách cài
đt thêm plugin h tr. Nhiu nhà phát trin đã s dng Eclipse làm nn
tng cho vic phát trin các ng dng ca mình: Embarcadero s dng
1
httpwwwcodeblocksorgdownloads
2
httpftpjaistacjppubeclipsetechnologyeppdownloadsreleaseheliosReclipse-cpp-helios-
winzip
3
httpnchcdlsourceforgenetprojectmingwAutomatedMinGWInstallermingw-get-
instmingw-get-inst-mingw-get-inst-20100831.exe
Trang |
C++
nó đ phát trin JBuider Adobe s dng nó đ phát trin Flash Buider và
rt nhiu các hãng phn mm ni ting khác.
Nu là mt lp trình viên Java Eclipse là mt s la chn không th
b qua. Nu phát trin Flash theo d án mã ngun m t Adobe Eclipse
cũng là s la chn hoàn ho. Nu phát trin C/C++, vi các trình son
tho thì Eclipse cũng là s la chn không ti. Vic s dng thành tho
Eclipse s là mt li th cho chúng ta khi tin hành nghiên cu Java, lp
trình Web, Flex, Python… sau này
Bên cnh đó chúng tôi cũng gii thiu môi trng phát trin tích hp
IDE Microsoft Visual Studio Đây là trình biên dch thng mi và là
trình biên dch chuyên nghip và ni ting nht trên h điu hành
Windows Ta có th s dng đ phát trin các ng dng trên nn NET
hoc các ng dng Win32. Nu mun phát trin các ng dng theo
hng ca Microsoft ta nên s dng Visual Studio Phiên bn mi nht
đn thi đim này là VS 2010. Nhng cn lu ý rng, khi nghiên cu
Visual C hãy chn la phiên bn dành cho Win32 mà không phi là
ng dng CLI (common language infrastructure bi nó đc phát trin
trên nn NET. Và Visual C for NET có mt s khác bit so vi Visual
C++ for Win32.
Trang | 10
C++
MÔI TRNG PHÁT TRIN TÍCH HP IDE
CodeBlocks
Trc tiên chúng ta s tìm hiu cách to d án, biên dch mt tp tin C++
trên CodeBlocks Đc gi cũng cn lu ý rng CodeBlocks t chc công vic
theo các d án. Chúng ta có th biên dch tng tp tin cpp mt cách đn l.
Tuy nhiên, làm vic theo d án s giúp ích cho chúng ta rt nhiu khi làm
vic vi nhng tác v ln.
Đu tiên chúng ta khi đng codeblocks sau đó vào File > New Project.
Trong hp thoi hin ra, chúng ta chn console application Hình
Và nhp Go sau đó nhp Next. Trong hp thoi tip theo, ta chn C++ và
nhp Next.
Hình 1 – To mi d án trong CodeBlocks
Hp thoi yêu cu đin thông tin v d án s xut hin. Hãy đin tên d án,
v trí lu tr d án Sau đó nhp Next. Cui cùng nhp Finish
Trong ca s qun lý d án, ta nhp đôi chut vào tp main.cpp. Ni dung
son tho s đc nhp vào trong tp tin này.
Nu ta mun b sung các tp tin khác hoc các lp đi tng, ta có th b
sung chúng t menu File New
Trang | 11
C++
Biên dch chng trình:
+ Nhp vào Build > Build and Run.
+ Hoc nhp phím F.
T đng đnh dng mã. Khi vit mt chng trình C hay bt kì mt
chng trình trên mt ngôn ng lp trình nào
khác, ta cn tuân th quy phm đnh dng mã
ngun. Có nhiu chun mc cho các đnh dng
mã ngun: chun Hungary, chun lc đà Dù
rng, chúng không nh hng đn vic biên dch
chng trình nhng chúng giúp ngi đc có
th d hiu chng trình ca chúng ta hn Nu
ta không nm vng các quy phm này thì có th
s dng chc năng đnh dng mã ngun t đng
ca CodeBlocks Hãy kích chut phi vào vùng son tho sau đó chn
Format this file Astyle.
T đng khi to phn thân các phng thc ca lp. Đ h tr cho
vic son tho CodeBlocks cũng h tr chc năng khi to nhanh mã
ngun Đ khi to nhanh phn khai báo thân phng thc ca lp t khai
báo prototype ca nó chúng ta đt tr chut vào sau khai báo lp (tc v trí
s chèn khai báo thân phng thc sau đó kích chut phi, chn Insert >
All class methods without implementation
Trong hp thoi hin ra, hãy chn
nhng phng thc mun khi to
phn thân tng ng sau đó nhp
Ok
Hình 2 – Khi to thân phng thc
Trang | 12
C++
2. Eclipse Helios
Sau khi ti xong Eclipe Helios v máy, hãy tin hành gii nén tp tin.
Chng trình Eclipse không yêu cu chúng ta phi cài đt nhng nó có th
làm vic nu trên máy tính đã cài mt máy o Java. Đ ti v máy o Java,
chúng ta có th truy cp vào trang ch ca Sun nay là Oracle ti đa ch
sau đây
4
.
Đ xây dng mt chng trình C/C trên Eclipse chúng ta cn:
- Eclipse Helios for C/C++ (nu phiên bn ti v là dành cho Java, ta cn
phi cài đt thêm plugin h tr; hoc có th s dng mt n bn cũ hn
ca Eclipse nh Galileo, Europa….
- Công c biên dch GCC – MingW.
- Máy o Java JVM.
Các bc cu hình trên Eclipse Helios
Bc 1. Cài đt máy o Java.
Bc 2. Cài MinGW.
Bc 3. Gii nén Eclipse Helios sau đó khi đng nó (nhp vào tp tin
eclipseexe. Thông thng Eclipse s t đng cu hình MinGW giúp ta. Nu
không, hãy thc hin bc 4.
Bc 4. Vào menu Project > Properties Trong hp thoi xut hin, hãy
chn CC Build Settings
Hình 3 – Cu hình MinGW trong Eclipse Helios
Trong th Tool Settings ta chn GCC Assembler General. Sau đó nhp vào
biu tng có du cng mu xanh. Hp thoi sau s hin ra:
4
httpjavadlsuncomwebappsdownloadAutoDLBundleId
Trang | 13
C++
Hình 4 – Chn đng dn đn th mc bin ca MinGW
Ta tin hành hãy nhp tên đng dn đn th mc bin ca MinGW (hoc
nhp vào nút File system đ duyt đn th mc này Mc đnh khi cài đt,
th mc này s là C:\MinGW\bin Sau đó nhp Ok Vy là công vic cu hình
đã hoàn tt.
Xây dng d án đu tiên trên Eclipse
Cũng ging nh CodeBlocks Eclipse cũng t chc chng trình theo d án.
Đ to mi mt d án trong Eclipse chúng ta có ba cách
- Vào File New C Project
- Vào biu tng to mi d án trên thanh công c, chn C++ Project.
- Kích chut phi vào ca s Project Explorer > chn New C Project
Tip đn, hp thoi sau đây s xut hin.
Trong hp thoi này, nu chn mt
d án kh thi executable hãy chn
executable. Ta cũng có th chn th
vin dll static library Tng ng
vi d án kh thi, chúng ta có th
chn Empty Project hoc Hello
World C++ Project. Đi vi Empty
Project nó s to mt d án trng.
Ngc li vi Hello World C++
Project, ta s nhn đc mt file cpp
cha ni dung mà chúng ta s tho
lun trong chng tip theo.
Sau đó hãy nhp vào tên d án và
nhp Next (nu cha cu hình
MinGW hoc nhp Finish nu đã hoàn tt vic cu hình
Hình 5 - To mi d án
Trang | 14
C++
To mi mt file ni dung trong Eclipse. Mt chng trình trong C
thng chia làm hai loi tp: .cpp và .h. Tp cpp thng cha ni dung
chng trình tp h thng cha các khai báo.
T chc tp tin. Hãy to mt th mc chung đ cha toàn b ni dung sau
này, tôi tm gi th mc này là th mc src Trong th mc src hãy to hai
th mc, mt th mc cpps và mt th mc headers Th mc cpps s cha
toàn b tp cpp th mc headers s cha toàn b tp .h. Tp Main.cpp
cha hàm main s đc đt trong th mc src Nghĩa là ta s có cu trúc
tng t nh sau:
Hin nhiên ta hoàn toàn không nht thit
phi thc hin theo nh cu trúc th mc
này Tuy nhiên điu này s làm cho d án
ca ta tr nên sáng sa hn rt nhiu.
Chúng ta có th b sung thêm các th mc
ph khác nhng nên tuân th cu trúc cây
này (ví d khi cn phân bit các tp tin cpp
thành nhiu loi khác nhau thì trong th
mc cpps hãy to thêm các th mc con
khác
Biên dch mt d án
Đ biên dch mt d án, hãy nhp vào biu tng sau đây trên thay công c
ca Eclipse
Hình 7 - Biên dch mt d án
Chn Run As Local CC Application
Mt s th thut giúp son tho nhanh
src
cpps
headers
Main.cpp
Hình 6 - Cu trúc th mc ca mt d án
Trang |
C++
Eclipse cha đng mt tp các tin ích giúp chúng ta son tho nhanh hn
ít phát sinh li hn Sau đây tôi xin gii thiu mt vài tính năng giúp các
chúng ta son tho nhanh hn.
To mi mt lp
Vào New Class Hp thoi sau đây s hin ra
Hình 8 - Hp thoi to mi class
Trong hp thoi này, cn lu ý source folder – th mc cha tp tin s to
mi thng s đc phân tách thành tp h và cpp namespace – phm vi
tác dng ca nó trong namespace đc ch đnh class name – tên ca lp s
to mi base class – tên ca lp cha mà nó s tha k (bm vào nút add đ
chn các lp tn ti constructor và destructor – cho phép khi to hàm
to và hàm hy. Chúng ta s tìm hiu nhng khái nim này khi làm quen vi
lp trình hng đi tng.
To nhanh các phng thc Getter và Setter
Nu khi khai báo mt lp, cùng vi các thuc tính ca nó thay vì s dng
hàm to đ thit lp giá tr ban đu, ta có th dùng hàm setter hoc đ tip
nhn giá tr t các thuc tính, ta có th dùng các hàm getter. Tôi s gii
thiu chi tit hn v các phng thc này trong phn lp trình hng đi
tng. Trong phn này tôi s hng dn cách to chúng bng thao tác nhp
chut. Vào menu Source, chn Generate Getters and Setters. Trong hp
Trang | 16
C++
thoi hin ra, hãy chn các thuc tính cn to phng thc getter và setter
sau đó nhp Ok
Mt s phím tt khác
Phím tt
Công dng
Ctrl+Space
Bt ch đ gi nhc lnh.
main – Ctrl+Space
Khi to nhanh hàm main.
Ctrl+Shift+F
Đnh dng nhanh mã ngun.
Ctrl+/
Comment vùng mã đã đc bôi đen nu
vùng bôi đen đã ch đ comment, thì du
comment s b hy b.
Tab
Dch toàn b ni dung b bôi đen sang phi
mt tab.
Shift+Tab
Dch toàn b ni dung b bôi đen sang trái
mt tab.
Ctrl+1
Chnh sa nhanh toàn b các t ging vi
t đang đc bôi đen Sau khi chnh sa
xong, nhp Enter đ kt thúc.
Ctrl+Shift+/
To mt khi comment cho vùng văn bn
đã b bôi đen
Ctrl+Shift+\
Hy b vùng văn bn b comment bi khi
comment.
Trên đây tôi đã gii thiu s qua hai chng trình son tho min phí đ
lp trình CC CodeBlocks và Eclipse Vi CodeBlocks ch cn ti và cài
đt Môi trng h tr biên dch GCC đã đc tích hp sn. Vi Eclipse ta
phi thc hin cu hình đ kt hp vi trình biên dch GCC. Nu là ngi có
nhiu tri nghim v máy tính, thì nên chn Eclipse bi nó là chng trình
son tho rt chuyên nghip. Nu là ngi mi tip xúc máy tính, hãy chn
CodeBlock vì cài đt đn gin.
3. Visual Studio 2010 dành cho Visual C++
Visual Studio là mt môi trng biên dch tích hp ca Microsoft Nó
là trình biên dch tt nht, hin đi nht trên h điu hành Windows Chúng
ta có th s dng nó đ biên dch C C Visual Basic J Ta s tìm hiu
Visual Studio theo hng tip cn vi C++. Mt điu cn lu ý, vi phiên
bn này Visual Studio có hai phiên bn dành cho C++: C++ for Net và
C++ for Win32. Chúng ta ch tìm hiu v tính năng C for Win Trong ni
dung ca giáo trình này ta s xây dng các ng dng Console trên nn
Trang | 17
C++
Win32 mà không tho lun thêm v Visual C for Net bi vì nó thuc mt
phm trù tng đi khác so vi Visual C for Win
Khi đng Visual Studio 2010.
Đ khi đng VS 2010, ta có th thc hin mt trong hai cách sau
Nhp đi chut vào biu tng VS 2010 trên nn Desktop
Vào Start All Programs Microsoft Visual Studio chn biu
tng VS 2010.
Hình 9 - Giao din tng th ca Visual Studio
To mi d án trong VS 2010.
Cũng nh Eclipse VS cũng qun lý theo các workspace và các d án. Trong
VS workspace đc gi là Solution. Trong mi workspace có th cha
nhiu d án. Nu cha to mt d án nào, thì khi to mi mt d án,
workspace s t đng đc to Đ to mi mt d án, ta vào File New
Project (hoc t hp phím tt CtrlShiftN
Trong hp thoi xut hin, chúng ta chn Win Console Application
Trang | 18
C++
Hình 10 - To d án Win Console
Mc name: hãy nhp tên d
án mà cn to.
Mc Location: nhp vào nút
Browse đ chn v trí lu
tr. Mc đnh Visual Studio
s lu tr d án th mc
Documents
Mc Solution name: to mt
th mc con trong th mc
d án, hay to trc tip
trong th mc d án.
Hp thoi Hình 12 s hin ra.
Nhóm Application Type
Windows application to ng dng winform
Console application to ng dng chy trên DOS.
Hình 11 - Win Application Wizard
Trang |
C++
Dll to th vin dll.
+ Static library: to th vin tĩnh
Nhóm Add common header file
+ Alt: to header t lp th vin Alt.
+ MFC: to header t lp th vin MFC.
Nhóm Additional options
+ Empty project: to d án rng không có tp tin.
Export symbols xut bn các biu tng.
+ Precompiled header: to tp tin tiêu đ tin biên dch.
Hãy chn Console Application và chn Empty Project Sau đó nhp Finish
To các tp tin trong d án.
Trong ca s Solution Explorer, hãy kích chut phi và chn Add:
- Nu tp tin đã tn ti, hãy chn Add Existing Items Sau đó chúng ta duyt
đn v trí tn ti tp tin.
- Nu tp tin cha tn ti, hãy chn Add New Items Trong ca s xut hin,
tùy thuc vào tp tin mà chúng ta cn, hãy chn loi tng ng. Thông
thng, trong d án ca C chúng ta s dng hai tp tin là tiêu đ .h và
thân chng trình cpp Sau đó hãy nhp tên ca tp tin và nhp Ok Tp tin
tiêu đ h thng cha các khai báo prototype ca hàm hoc lp. Ngoài ra,
nó có th cha các hàm macro, các khai báo hng và bin toàn cc đc s
dng trong toàn b chng trình Tp tin cpp thng cha phn thân ca
các hàm hoc lp. Khi làm vic vi các d án trong C++, chúng ta nên tách
chng trình thành nhiu phn và nên s dng các tp tiêu đ đ làm cho
chng trình gn gàng và d hiu hn
Sau khi chn đc tp tin cn to, hãy nhp tên ca tp tin sau đó nhp nút
Add. Tp tin mi s đc b sung vào d án.
Trang | 20
C++
Hình 12 - B sung thêm mt tp tin
- Add Class b sung các lp đi tng cho d án. đây chúng ta chn C++
class
Hình 13 - B sung thêm lp đi tng
Nhp Add. Ca s sau đây s xut hin
Trang | 21
C++
Hình 14 - To lp bng Class Wizard
- Class name: tên ca lp.
- .h file: tên ca tiêu đ lp cũng là tên ca tp tin tiêu đ.
- .cpp file: tên ca tp tin cpp tng ng vi lp.
- Base class nu lp mi to ra tha k t mt lp khác, hãy nhp tên ca
lp c s vào đây
- Access mc tha k ca lp đang to t lp c s.
- Virtual destructor to mt phng thc hy o.
- Inline: to mt phng thc inline. Tuy chúng ta có th s dng t khóa
này nhng c ch làm vic ca Visual C là t đng b sung inline khi
biên dch nu phng thc đc cho là phù hp đ s dng inline. Điu đó
có nghĩa là chúng ta không cn dùng đn t khóa này.
Biên dch d án.
- Đ biên dch và thc thi mt d án, chúng ta nhp vào Debug Start
Debugging hoc Start without Debugging
- Đ biên dch toàn b d án mà không thc thi d án, chúng ta vào Build,
chn Build Solution.
Mt s phím tt trong Visual Studio 2010.
Trang | 22
C++
- To vùng comment chú thích bôi đen vùng mã cn to chú thích, nhn
t hp Ctrl+K, Ctrl+C.
- Hy b vùng comment: bôi đen vùng mã đã comment nhn t hp Ctrl+K,
Ctrl+U.
- Đnh dng mã ngun bôi đen vùng mã cn đnh dng, nhn t hp Ctrl+K,
Ctrl+F.
- Đnh dng nhanh mã ngun bôi đen vùng mã lnh, nhn t hp Ctrl+K,
Ctrl+F.
- T đng hoàn tt mã và gi nhc lnh: t hp Ctrl+Space.
Visual Studio không h tr các tính năng mnh m cho vic khi to
nhanh mã ngun. Nhng ta có th s dng tin ích Visual Assist Phiên bn
cho đn thi đim này năm là
Xem biu đ lp.
Đ quan sát biu đ lp trong VS 2010, ta nhp chut phi vào tên d án
(trong ca s Solution Explorer chn Show class diagram Sau đó chúng
ta kéo th các lp đi tng vào vùng biu đ.
Hình 15 - Xem biu đ lp
Chng C bn v C++
Trang | 23
C++
CHNG C BN V C++
Cu trúc ca mt chng trình C
Mt cách thc tt nht đ hc lp trình đó là hãy th vit mt chng
trình đu tiên. Nu chúng ta đã tng làm quen vi mt ngôn ng lp trình
nào đó thì chc hn ai cũng bit đn ví d kinh đin ca mt ngôn ng lp
trình đó là chng trình Hello world
Mã chng trình
Kt qu
my first program
include iostream
using namespace std
int main
{
cout<<Hello world
return 0;
}
Hello world
Gii thích v chng trình
Các kí t nm sau du s không đc biên dch mà nó đc hiu là
du comment dòng chú thích Trong C cũng nh C vic chú thích
trên mt dòng s đc đt sau du //. Nu mun to mt chú thích
nhiu dòng, chúng ta có th s dng du /* To chú thích đây */
Dòng này bt đu bng kí t #include. Tip đn là tên tp tin tiêu đ
(cha các th vin Th vin iostream đc đt trong du <>. Nó cha
các hàm xut nhp c bn. Hàm này là mt phn ca namespace std
Trong C++, các thành phn ca th vin chun đc khai báo trong
namespace đây là namespace std Đ có th truy xut đn các thành
phn ca nó, chúng ta mô t nó bng t khóa using Trong th vin
chun ca C++, đi tng cout đc t chc trong namespace std
Bt kì mt chng trình C nào cũng phi có mt hàm main đ thc
thi chng trình Mt hàm s đc khai báo theo cu trúc trên.
T khóa int mô t kiu d liu mà hàm tr v là integer. Chúng ta cn
lu ý rng trong chng trình C thì ta có th tùy ý khai báo là void hoc
int nhng trong C thì bt buc phi khai báo là int. Vy int hay void
Chng C bn v C++
Trang | 24
C++
trong trng hp này có thc s quan trng Chúng ta nên luôn khai
báo hàm main có kiu d liu tr v là kiu int. S dĩ nh vy là vì khi
hàm main tr v kiu int thì theo quy c, nu chng trình có li nó s
tr v mt mã int khác và ngc li, nu chng trình không có li, nó
s tr v mã int 0. Li đây là li chng trình liên quan đn quá trình
biên dch, ch không phi là li liên quan đn cú pháp. Chúng ta s nhn
thy mã mà nó tr v trong dòng thông báo cui cùng khi biên dch:
process returned 0 (0x0).
Tên hàm là main. Tip theo là cp du ngoc đn dùng đ cha tham s
đính kèm Thông thng mt chng trình ng dng s cha hai tham
s trong hàm main là int argc và char* args[] Các tham s này gi là
tham s dòng lnh. Tip theo là du {}. Bên trong cp du này là chng
trình chính.
Du m khi.
Đi tng cout đc là C-out là chun dùng đ xut d liu ra màn
hình. Chúng ta cn lu ý hàm printf vn hot đng tt trong trng hp
này. Nu dùng hàm printf thì ta không cn khai báo th vin iostream và
namespace std trên. Khi s dng đi tng cout, chúng ta cũng có th
b qua dòng lnh và thay vào đó ta s vit stdcout Khi s dng đi
tng cout, chúng ta có thêm mt cách thc đ xung dòng thay vì dùng
\n đó là endl Đi tng cout thng đi vi toán t xut <<. Chúng ta có
th s dùng nhiu toán t này khi mun xut nhiu phn t riêng bit:
coutstringstringendl
Câu lnh return dùng đ tr v giá tr ca hàm main. Nu hàm có tr
v giá tr, thì cn return mt giá tr nào đó cùng kiu d liu tr v vi
hàm. Nu hàm là void, thì không cn return.
Du đóng khi tng ng vi m khi
Chú ý
Cũng nh C C là ngôn ng phân bit ch hoa và ch thng.
Kt thúc mt dòng lnh trong C++ bao gi cũng phi có du ;
Mt du ngoc đn du ngoc nhn {} bao gi cũng song hành Điu
đó có nghĩa nu dùng du m thì phi có du đóng tng ng Du
ngoc đn thng dùng sau tên hàm và bên trong nó là tham s hình
thc hoc trong các lnh có cu trúc Du ngoc nhn thng dùng đ
quy đnh phm vi ca mt khi lnh scope Mt cách thc giúp chúng
ta chuyên nghip hn khi lp trình là sau du m, ta nên s dng tip