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

Lập Trình Hướng Đối Tượng C++ _ www.bit.ly/taiho123

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


Đ NG NG C (OÀNG T(ÀN(

C++
L P TRÌN( (
NG
Đ )T
NG

Tài li u h c t p
Trang | 1


PH L C
GI I THI U
MÔ) TR

.............................................................................................................7

NG PHÁT TRI N TÍCH H P IDE ................................................... 10

C(

NG

C

B N V C++ ............................................................................ 23

CH


NG

BI N VÀ CÁC KI U D

LI U..................................................... 26

T khóa ................................................................................................................................ 26
Ki u d li u nguyên th y.............................................................................................. 27
Khai báo bi n ..................................................................................................................... 28
Ph m vi tác d ng c a bi n............................................................................................ 29
Kh i t o giá tr cho bi n ................................................................................................ 30
Kh i t o giá tr cho bi n tĩnh static .......................................................................... 31
Gi i thi u v xâu kí t .................................................................................................... 32

C(

NG

H NG .............................................................................................. 34

H ng s nguyên................................................................................................................. 34
H ng s th c có d u ch m đ ng ................................................................................ 34

H ng kí t và h ng xâu kí t ........................................................................................ 35
H ng logic ............................................................................................................................ 36
Đ nh nghĩa m t h ng #define ..................................................................................... 36

Khai báo h ng const ........................................................................................................ 37
C(


NG

TOÁN T

....................................................................................... 38

Toán t gán ......................................................................................................................... 38
Toán t th c hi n phép toán s h c ........................................................................ 39
Toán t gán h p nh t ..................................................................................................... 40
Toán t tăng v{ gi m ...................................................................................................... 40

Toán t logic ...................................................................................................................... 42
Toán t đi u ki n ............................................................................................................. 43
Toán t phân tách ............................................................................................................ 45

Trang |2

C++

Toán t so sánh................................................................................................................. 41


Toán t d ch bit................................................................................................................. 45
Toán t chuy n đ i ki u d li u ................................................................................ 48

Các toán t khác ............................................................................................................... 49
Th t
C(

NG


u tiên c a các toán t ................................................................................... 49
XU T NH P C

B N .................................................................. 52

Xu t d li u chu n cout ................................................................................................. 52
Nh p d li u chu n cin .................................................................................................. 53
Nh p d li u nh l p stringstream .......................................................................... 55
C(

NG

CÁC C U TRÚC L N( Đ) U KHI N ............................................ 58

C u trúc l nh có đi u ki n: if và else ........................................................................ 58

C u trúc l p ......................................................................................................................... 60
C u trúc l a ch n: switch ............................................................................................. 67
C(

NG

HÀM................................................................................................. 72

Khai báo và s d ng hàm.............................................................................................. 73
Ph m vi tác d ng c a bi n............................................................................................ 77
Hàm không tr v giá tr - Hàm void. ....................................................................... 78
Tham bi n và tham tr .................................................................................................... 79
Giá tr m c đ nh c a tham s hình th c .................................................................. 82


Ch ng ch t hàm ................................................................................................................ 83
Hàm n i tuy n ................................................................................................................... 84
({m đ quy ......................................................................................................................... 85

C(

NG

CÁC K) U D

LI U CÓ C U TRÚC.............................................. 88

M ng ...................................................................................................................................... 88
Xâu kí t ............................................................................................................................... 91
C(

NG

CON TR ........................................................................................ 93

Toán t tham chi u & ..................................................................................................... 93
c * ........................................................................................ 94

Khai báo bi n con tr ...................................................................................................... 96
Con tr , m ng và xâu kí t ............................................................................................ 98

Trang |3

C++


Toán t tham chi u ng


Các phép toán s h c 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
C(

NG

B NH

Đ NG .......................................................................... 107

Toán t new và new[] ................................................................................................. 107
Toán t delete và delete[] ......................................................................................... 109
C(

NG

K) U D

LI U STRUCT VÀ CON TR STRUCT ................. 110

Struct .................................................................................................................................. 110
Con tr struct .................................................................................................................. 114
Struct l ng nhau ............................................................................................................ 115

Kích th

C(

c b nh c a struct ................................................................................... 115

NG

CÁC KI U D

LI U KHÁC ...................................................... 117

Ki u d li u t đ nh nghĩa ......................................................................................... 117

Ki u d li u union th

ng ........................................................................................ 117

Ki u d li u union n danh ....................................................................................... 118
Ki u d li u enum......................................................................................................... 118
C(

NG

L P TRÌN( (

NG Đ ) T

NG ........................................ 120


L ch s hình thành ........................................................................................................ 120
L p v{ đ i t

ng ........................................................................................................... 126

Hàm t o và hàm h y .................................................................................................... 130
Ch ng ch t hàm t o ...................................................................................................... 132
Sao chép hàm t o .......................................................................................................... 133
Tính đóng gói Encapsulation ................................................................................ 139

Con tr đ i t

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 |4

C++

L pđ

ng .......................................................................................................... 140


Hàm b n và l p b n ..................................................................................................... 144
Ch ng ch t toán t ....................................................................................................... 147
Tính k th a - Inheritance......................................................................................... 153
Các m c truy c p ........................................................................................................... 156
Tính đa k th a Multiple Inheritance ............................................................... 159


Tính đa hình Polymorphism ................................................................................. 160
Tính tr u t

ng hóa - Abstraction ........................................................................ 172

Hàm m u Template Function ............................................................................... 173
L p m u Template class ......................................................................................... 173
C(

NG

NAMESPACE ............................................................................... 178

T khóa namespace ..................................................................................................... 178
T khóa using ................................................................................................................. 179
Ph m vi c a namespace ............................................................................................. 180
T|i đ nh danh cho namespace ................................................................................. 181

Namespace std ............................................................................................................... 181
C(

NG

NGO I L .................................................................................... 182

M nh đ try catch ....................................................................................................... 182

M nh đ throw ............................................................................................................... 182


Th vi n chu n exception ......................................................................................... 183

C(

NG

LÀM V) C V I FILE................................................................... 186

M file ................................................................................................................................ 186
Đóng file ............................................................................................................................ 188

File văn b n...................................................................................................................... 188

Ki m tra tr ng thái c a các c hi u ....................................................................... 189

Con tr get và put .......................................................................................................... 190
B đ m v{ Đ ng b hóa .............................................................................................. 193

C(

NG

CÁC L P T(

V) N ................................................................. 194

1. L p s ph c complex .............................................................................................. 194

Trang |5


C++

File nh phân.................................................................................................................... 192


2. L p ngăn x p stack .................................................................................................. 196
3. L p h{ng đ i queue................................................................................................. 197

3. L p vector ................................................................................................................... 198
4. L p string .................................................................................................................... 200
5. L p list .......................................................................................................................... 203
6. L p map ....................................................................................................................... 203
7. L p set .......................................................................................................................... 204
(

8. Các l p th vi n nh p xu t................................................................................... 204

NG D N TH C HÀNH ............................................................................... 212

BÀI TH C HÀNH S 1 ................................................................................................. 212
BÀI TH C HÀNH S 2 ................................................................................................. 213
BÀI TH C HÀNH S 3 ................................................................................................. 214
BÀI TH C HÀNH S 4 ................................................................................................. 215
BÀI TH C HÀNH S 5 ................................................................................................. 215
BÀI TH C HÀNH S 6 ................................................................................................. 216
BÀI T P NÂNG CAO ............................................................................................ 218
BÀI T P L N ....................................................................................................... 225
DANH SÁCH HÌNH ............................................................................................... 228
TRA C U T


KHÓA ............................................................................................ 229

C++

TÀI LI U THAM KH O ....................................................................................... 230

Trang |6


GI I THI U
1. C u trúc c a giáo trình
Gi|o trình đ c chia ra làm 17 ch ng và m i ch ng đ c chia làm
các m c khác nhau. C|c ch ng đ c s p x p theo trình t t l p trình
h ng th t c trên C đ n l p trình h ng đ i t ng và các l p th
vi n c b n. Đ c gi có th truy c p vào m c b t kì t ph n ph l c n m
đ u sách. Nhi u m c bao g m các ví d đ mô t cách s d ng. Tôi
khuyên các b n nên đ c các ví d này và có th hi u m i đo n mã
ch ng trình tr c khi đ c ch ng ti p theo.
M t cách th c t t đ tăng l ng ki n th c nh n đ c đó l{ h~y ch nh
s a, b sung mã l nh m i d a trên ví d m u theo h ng t duy c a
c a b n thân đ t đó có th hi u m t c|ch đ y đ v n i dung mà ta
ti p thu đ c.
Sau khi đ c xong giáo trình, tôi còn cung c p m t s bài t p th c hành
đ ngh đ đ c gi nên th nghi m. Hãy gi i nh ng bài t p này, chúng s
r t h u ích và giúp các b n cũng c l i ki n th c môn h c cũng nh hi u
sâu s c h n ph n lý thuy t.

Khi vi t giáo trình này, tôi không th tránh kh i sai sót. R t mong s
đóng góp ý ki n quý báu c a các b n đ c gi cũng nh c|c b n đ ng
nghi p. M i s

đóng góp xin liên h theo đ a ch email:
Hi v ng v i các ý ki n đóng góp c a các b n,
giáo trình này s ngày càng hoàn thi n h n
2. M t vài chú ý v s t

ng thích c a C và C++

Chu n ANSI-C đ c m t t ch c tiêu chu n qu c t th ng nh t đ a
ra Nó đ c chính th c ra m t v{o th|ng
năm
v{ duy t l i vào

Trang |7

C++

M t đi u n a mà đ c gi c n l u ý h~y đ c trang cu i cùng c a cu n
s|ch đ n m đ c m t s thu t ng anh-vi t t ng ng đ c s d ng
trong giáo trình này. Tôi cũng có g ng s d ng tên g i phù h p nh t v i
đ i đa s các giáo trình hi n hành. Tuy nhiên, đ c gi cũng nên n m các
thu t ng ti ng anh t ng ng đ có th tham kh o thêm các tài li u
chuyên môn ti ng anh.


năm
Tuy nhiên ngôn ng C đ~ t n t i tr c đó m t th i gian
kh| d{i v{o năm
Tr c đó có r t nhi u trình d ch không h tr
c|c tính năng m i bao g m c chu n ANSI-C++. Giáo trình này đ c xây
d ng trên c|c ch ng trình d ch hi n đ i h tr đ y đ chu n ANSI-C++.

Tôi đ m b o r ng các ví d s ho t đ ng t t n u đ c gi s d ng m t
trình d ch h tr ANSI-C++. Có nhi u s ch n l a, có th là mi n phí ho c
các ph n m m th ng m i. Trong giáo trình này, tôi gi i thi u đ n các
các b n hai công c biên d ch C++ là GCC MinGW mi n phí và Visual
C++ - th ng m i.
Các ví d trong cu n gi|o trình n{y đ c xây d ng ch y u trên ch
đ console m{n hình DOS Đi u đó có nghĩa l{ nó s d ng ch đ văn
b n đ hi n th các k t qu . M i trình d ch C đ u h tr ch đ d ch
console. V i m t môi tr ng phát tri n tích h p IDE cho C++ mi n phí,
chúng ta có th s d ng ch ng trình Codeblocks ho c Eclipse. Chúng là
các môi tr ng phát tri n tích h p h tr so n th o và biên d ch C++.
Chúng h tr môi tr ng GCC đ biên d ch c C và C++. V i CodeBlocks,
chúng
ta

th
t i
ph n
m m
t i
đa
ch
Đ i v i Eclipse, nó là m t trình
so n th o và biên d ch ngôn ng l p trình chuyên nghi p nh ng ho{n
toàn mi n phí (vì ta có th c u hình k t h p v i các công c biên d ch
kh|c nhau đ t o ra môi tr ng phát tri n tích h p cho các ngôn ng l p
trình khác nhau). Chúng ta có th d‘ng nó đ so n th o và biên d ch
Java, PHP, JSP Python v{ hi n nhiên là c C/C++. Đ}y l{ m t d án mã
ngu n m , tiêu t n hàng tri u đôla c a IBM. Đ t i v b n m i nh t cho
đ n th i đi m n{y năm

l{ Eclipse Helios, ta có th truy c p đ n
đ a ch bên d i1. Đ i v i Eclipse, chúng ta nên s d ng k t h p v i
trình biên d ch C++ là MinGW, nó cũng l{ m t d án m . Chúng ta có th
t i v t i đ a ch bên d i2. V i Eclipse, thì công vi c c u hình ban đ u
t ng đ i ph c t p. Nh ng nó l{ m t trình so n th o tuy t v i. Ta có th
s d ng nó đ so n th o nhi u ngôn ng l p trình b ng c|ch c{i đ t
thêm plugin h tr . Nhi u nhà phát tri n đ~ s d ng Eclipse làm n n t i
/>2 />1

Trang |8

C++

3. Trình biên d ch


cho vi c phát tri n các ng d ng c a mình: Embarcadero s d ng nó đ
phát tri n JBuider, Adobe s d ng nó đ phát tri n Flash Buider và r t
nhi u các hãng ph n m m n i ti ng khác.
N u là m t l p trình viên Java, Eclipse là m t s l a ch n không th
b qua. N u phát tri n Flash theo d án mã ngu n m t Adobe, Eclipse
cũng l{ s l a ch n hoàn h o. N u phát tri n C/C++, v i các trình so n
th o thì Eclipse cũng l{ s l a ch n không t i. Vi c s d ng thành th o
Eclipse s là m t l i th cho chúng ta khi ti n hành nghiên c u Java, l p
trình Web Flex Python sau này.

C++

Bên c nh đó ch’ng tôi cũng gi i thi u môi tr ng phát tri n tích h p
)DE Microsoft Visual Studio Đ}y l{ trình biên d ch th ng m i và là

trình biên d ch chuyên nghi p và n i ti ng nh t trên h đi u hành
Windows. Ta có th s d ng đ phát tri n các ng d ng trên n n NET
ho c các ng d ng Win32. N u mu n phát tri n các ng d ng theo
h ng c a Microsoft, ta nên s d ng Visual Studio. Phiên b n m i nh t
đ n th i đi m này là VS 2010. Nh ng c n l u ý r ng, khi nghiên c u
Visual C++, hãy ch n l a phiên b n dành cho Win32 mà không ph i là
ng d ng CLI (common language infrastructure) b i nó đ c phát tri n
trên n n NET. Và Visual C++ for NET có m t s khác bi t so v i Visual
C++ for Win32.

Trang |9


MÔ) TR

NG PHÁT TRI N TÍCH H P IDE

1. CodeBlocks
Tr c tiên, chúng ta s tìm hi u cách t o d án, biên d ch m t t p tin C++
trên CodeBlocks Đ c gi cũng c n l u ý r ng, CodeBlocks t ch c công vi c
theo các d án. Chúng ta có th biên d ch t ng t p tin cpp m t c|ch đ n l .
Tuy nhiên, làm vi c theo d án s giúp ích cho chúng ta r t nhi u khi làm
vi c v i nh ng tác v l n.
Đ u tiên chúng ta kh i đ ng codeblocks sau đó v{o File > New > Project.
Trong h p tho i hi n ra, chúng ta ch n console application (Hình 1).

Và nh p Go sau đó nh p Next. Trong h p tho i ti p theo, ta ch n C++ và
nh p Next.

Hình 1 T o m i d án trong CodeBlocks


Trong c a s qu n lý d án, ta nh p đôi chu t vào t p main.cpp. N i dung
so n th o s đ c nh p vào trong t p tin này.

N u ta mu n b sung các t p tin khác ho c các l p đ i t
sung chúng t menu File > New.
T r a n g | 10

ng, ta có th b

C++

H p tho i yêu c u đi n thông tin v d án s xu t hi n. H~y đi n tên d án,
v trí l u tr d |n Sau đó nh p Next. Cu i cùng nh p Finish.


Biên d ch ch

ng trình:

+ Nh p vào Build > Build and Run.
+ Ho c nh p phím F9.
đ ng đ nh d ng mã. Khi vi t m t ch ng trình C hay b t kì m t
ch ng trình trên m t ngôn ng l p trình nào
khác, ta c n tuân th quy ph m đ nh d ng mã
ngu n. Có nhi u chu n m c cho c|c đ nh d ng
mã ngu n: chu n Hungary, chu n l c đ{ . Dù
r ng, chúng không nh h ng đ n vi c biên d ch
ch ng trình nh ng ch’ng gi’p ng i đ c có
th d hi u ch ng trình c a chúng ta h n N u

ta không n m v ng các quy ph m này thì có th
s d ng ch c năng đ nh d ng mã ngu n t đ ng
c a CodeBlocks. Hãy kích chu t ph i vào vùng so n th o sau đó ch n
Format this file (Astyle).

T

T đ ng kh i t o ph n thân các ph ng th c c a l p. Đ h tr cho
vi c so n th o CodeBlocks cũng h tr ch c năng kh i t o nhanh mã
ngu n Đ kh i t o nhanh ph n khai b|o th}n ph ng th c c a l p t khai
báo prototype c a nó ch’ng ta đ t tr chu t vào sau khai báo l p (t c v trí
s chèn khai b|o th}n ph ng th c sau đó kích chu t ph i, ch n Insert >
All class methods without implementation.

C++

Trong h p tho i hi n ra, hãy ch n
nh ng ph ng th c mu n kh i t o
ph n th}n t ng ng sau đó nh p
Ok.

Hình 2 Kh i t o th}n ph
T r a n g | 11

ng th c


2. Eclipse Helios
Sau khi t i xong Eclipe Helios v máy, hãy ti n hành gi i nén t p tin.
Ch ng trình Eclipse không yêu c u chúng ta ph i c{i đ t nh ng nó có th

làm vi c n u trên máy tính đ~ c{i m t máy o Java. Đ t i v máy o Java,
chúng ta có th truy c p vào trang ch c a Sun (nay là Oracle) t i đ a ch
sau đ}y3.

Đ xây d ng m t ch

ng trình C/C++ trên Eclipse, chúng ta c n:

- Eclipse Helios for C/C++ (n u phiên b n t i v là dành cho Java, ta c n
ph i c{i đ t thêm plugin h tr ); ho c có th s d ng m t n b n cũ h n
c a Eclipse nh Galileo Europa .
- Công c biên d ch GCC MingW.
- Máy o Java JVM.
Các b

B
B

c c u hình trên Eclipse Helios

c 1. C{i đ t máy o Java.
c 2. Cài MinGW.

B c 3. Gi i nén Eclipse Helios sau đó kh i đ ng nó (nh p vào t p tin
eclipse.exe). Thông th ng, Eclipse s t đ ng c u hình MinGW giúp ta. N u
không, hãy th c hi n b c 4.
B c 4. Vào menu Project > Properties. Trong h p tho i xu t hi n, hãy
ch n C/C++ Build > Settings.

Trong th Tool Settings, ta ch n GCC Assembler > General. Sau đó nh p vào

bi u t ng có d u c ng m u xanh. H p tho i sau s hi n ra:
3

/>
T r a n g | 12

C++

Hình 3 C u hình MinGW trong Eclipse Helios


Hình 4 Ch n đ

ng d n đ n th m c bin c a MinGW

Ta ti n hành hãy nh p tên đ ng d n đ n th m c bin c a MinGW (ho c
nh p v{o n’t File system đ duy t đ n th m c này). M c đ nh khi c{i đ t,
th m c này s là C:\MinGW\bin Sau đó nh p Ok. V y là công vi c c u hình
đ~ ho{n t t.
Xây d ng d án đ u tiên trên Eclipse

Cũng gi ng nh CodeBlocks Eclipse cũng t ch c ch ng trình theo d án.
Đ t o m i m t d án trong Eclipse, chúng ta có ba cách:
- Vào File > New > C++ Project.
- Vào bi u t

ng t o m i d án trên thanh công c , ch n C++ Project.

- Kích chu t ph i vào c a s Project Explorer > ch n New > C++ Project.


Trong h p tho i này, n u ch n m t
d án kh thi (executable), hãy ch n
executable. Ta cũng có th ch n th
vi n dll static library T ng ng
v i d án kh thi, chúng ta có th
ch n Empty Project ho c Hello
World C++ Project. Đ i v i Empty
Project, nó s t o m t d án tr ng.
Ng c l i v i Hello World C++
Project, ta s nh n đ c m t file cpp
ch a n i dung mà chúng ta s th o
lu n trong ch ng ti p theo.

Sau đó hãy nh p vào tên d án và
nh p Next (n u ch a c u hình
MinGW), ho c nh p Finish (n u đ~ hoàn t t vi c c u hình).
Hình 5 - T o m i d án

T r a n g | 13

C++

Ti p đ n, h p tho i sau đ}y s xu t hi n.


T o m i m t file n i dung trong Eclipse. M t ch ng trình trong C
th ng chia làm hai lo i t p: .cpp và .h. T p cpp th ng ch a n i dung
ch ng trình t p h th ng ch a các khai báo.

L i khuyên tr c khi t o m i các file: hãy t o m t th m c chung đ

ch a toàn b n i dung sau này, tôi t m g i th m c n{y l{ th m c src.
Trong th m c src, hãy t o hai th m c, m t th m c cpps và m t th m c
headers Th m c cpps s ch a toàn b t p cpp th m c headers s ch a
toàn b t p .h. T p Main.cpp ch a hàm main s đ c đ t trong th m c src.
Nghĩa l{ ta s có c u tr’c t ng t nh sau:

src

cpps

headers

Main.cpp

Hi n nhiên ta hoàn toàn không nh t thi t
ph i th c hi n theo nh c u tr’c th m c
n{y Tuy nhiên đi u này s làm cho d án
c a ta tr nên sáng s a h n r t nhi u.
Chúng ta có th b sung thêm c|c th m c
ph kh|c nh ng nên tu}n th c u trúc cây
này (ví d khi c n phân bi t các t p tin cpp
thành nhi u lo i kh|c nhau thì trong th
m c cpps, hãy t o thêm c|c th m c con
kh|c

Hình 6 - C u tr’c th m c c a m t d án

Biên d ch m t d án

Đ biên d ch m t d án, hãy nh p vào bi u t

c a Eclipse.

ng sau đ}y trên thay công c

Ch n Run As > Local C/C++ Application.
M t s th thu t giúp so n th o nhanh

T r a n g | 14

C++

Hình 7 - Biên d ch m t d án


Eclipse ch a đ ng m t t p các ti n ích giúp chúng ta so n th o nhanh h n
ít phát sinh l i h n Sau đ}y tôi xin gi i thi u m t vài tính năng giúp các
chúng ta so n th o nhanh h n.
T om im tl p

Vào New > Class. H p tho i sau đ}y s hi n ra

Hình 8 - H p tho i t o m i class
Trong h p tho i này, c n l u ý source folder th m c ch a t p tin s t o
m i th ng s đ c phân tách thành t p .h và .cpp), namespace ph m vi
tác d ng c a nó trong namespace đ c ch đ nh, class name tên c a l p s
t o m i, base class tên c a l p cha mà nó s th a k (b m vào nút add đ
ch n các l p t n t i), constructor và destructor cho phép kh i t o hàm
t o và hàm h y. Chúng ta s tìm hi u nh ng khái ni m này khi làm quen v i
l p trình h ng đ i t ng.
ng th c Getter và Setter


N u khi khai báo m t l p, cùng v i các thu c tính c a nó, thay vì s d ng
hàm t o đ thi t l p giá tr ban đ u, ta có th dùng hàm setter; ho c đ ti p
nh n giá tr t các thu c tính, ta có th dùng các hàm getter. Tôi s gi i
thi u chi ti t h n v c|c ph ng th c này trong ph n l p trình h ng đ i
t ng. Trong ph n này, tôi s h ng d n cách t o chúng b ng thao tác nh p
chu t. Vào menu Source, ch n Generate Getters and Setter. Trong h p tho i
T r a n g | 15

C++

T o nhanh các ph


hi n ra, hãy ch n các thu c tính c n t o ph
đó nh p Ok.

ng th c getter và setter, sau

M t s phím t t khác

Phím t t
Ctrl+Space
main Ctrl+Space
Ctrl+Shift+F
Ctrl+/

Công d ng
B t ch đ g i nh c l nh.
Kh i t o nhanh hàm main.

Đ nh d ng nhanh mã ngu n.
Comment v‘ng m~ đ~ đ c bôi đen n u
v‘ng bôi đen đ~ ch đ comment, thì d u
comment s b h y b .
Tab
D ch toàn b n i dung b bôi đen sang ph i
m t tab.
Shift+Tab
D ch toàn b n i dung b bôi đen sang tr|i
m t tab.
Ctrl+1
Ch nh s a nhanh toàn b các t gi ng v i
t đang đ c bôi đen Sau khi ch nh s a
xong, nh p Enter đ k t thúc.
Ctrl+Shift+/
T o m t kh i comment cho v‘ng văn b n
đ~ b bôi đen
Ctrl+Shift+\
H y b v‘ng văn b n b comment b i kh i
comment.
Trên đ}y tôi đ~ gi i thi u s qua hai ch ng trình so n th o mi n phí đ
l p trình C/C++: CodeBlocks và Eclipse. V i CodeBlocks, ch c n t i và cài
đ t Môi tr ng h tr biên d ch GCC đ~ đ c tích h p s n. V i Eclipse, ta
ph i th c hi n c u hình đ k t h p v i trình biên d ch GCC. N u l{ ng i có
nhi u tr i nghi m v máy tính, thì nên ch n Eclipse b i nó l{ ch ng trình
so n th o r t chuyên nghi p. N u l{ ng i m i ti p xúc máy tính, hãy ch n
CodeBlock vì c{i đ t đ n gi n.
Visual Studio 2010 là m t môi tr ng biên d ch tích h p c a Microsoft. Nó
là trình biên d ch t t nh t, hi n đ i nh t trên h đi u hành Windows. Chúng
ta có th s d ng nó đ biên d ch C++, C#, Visual Basic, J#... Ta s tìm hi u

Visual Studio theo h ng ti p c n v i C++. M t đi u c n l u ý, v i phiên
b n 2010 này, Visual Studio có hai phiên b n dành cho C++: C++ for Net và
C++ for Win32. Chúng ta ch tìm hi u v tính năng C for Win
Trong n i
dung c a giáo trình này, ta s xây d ng các ng d ng Console trên n n
T r a n g | 16

C++

3. Visual Studio 2010 dành cho Visual C++


Win32 mà không th o lu n thêm v Visual C++ for Net b i vì nó thu c m t
ph m tr‘ t ng đ i khác so v i Visual C++ for Win32.
Kh i đ ng Visual Studio 2010.

Đ kh i đ ng VS 2010, ta có th th c hi n m t trong hai cách sau:

 Nh p đ i chu t vào bi u t ng VS 2010 trên n n Desktop.
 Vào Start > All Programs > Microsoft Visual Studio 2010, ch n bi u
t ng VS 2010.

Hình 9 - Giao di n t ng th c a Visual Studio 2010
T o m i d án trong VS 2010.

Trong h p tho i xu t hi n, chúng ta ch n Win32 Console Application.

T r a n g | 17

C++


Cũng nh Eclipse VS cũng qu n lý theo các workspace và các d án. Trong
VS workspace đ c g i là Solution. Trong m i workspace có th ch a
nhi u d án. N u ch a t o m t d án nào, thì khi t o m i m t d án,
workspace s t đ ng đ c t o Đ t o m i m t d án, ta vào File > New
Project (ho c t h p phím t t Ctrl+Shift+N).


Hình 10 - T o d án Win32 Console
M c name: hãy nh p tên d
án mà c n t o.
M c Location: nh p vào nút
Browse đ ch n v trí l u
tr . M c đ nh, Visual Studio
s l u tr d án th m c
Documents.
M c Solution name: t o m t
th m c con trong th m c
d án, hay t o tr c ti p
trong th m c d án.
H p tho i Hình 12 s hi n ra.

Hình 11 - Win32 Application Wizard

+ Windows application: t o ng d ng winform.
+ Console application: t o ng d ng ch y trên DOS.
T r a n g | 18

C++


Nhóm Application Type


+ Dll: t o th vi n dll.

+ Static library: t o th vi n tĩnh
Nhóm Add common header file

+ Alt: t o header t l p th vi n Alt.

+ MFC: t o header t l p th vi n MFC.
Nhóm Additional options

+ Empty project: t o d án r ng không có t p tin.
+ Export symbols: xu t b n các bi u t

ng.

+ Precompiled header: t o t p tin tiêu đ ti n biên d ch.

Hãy ch n Console Application và ch n Empty Project Sau đó nh p Finish.

T o các t p tin trong d án.

Trong c a s Solution Explorer, hãy kích chu t ph i và ch n Add:
- N u t p tin đ~ t n t i, hãy ch n Add Existing )tems Sau đó chúng ta duy t
đ n v trí t n t i t p tin.

Sau khi ch n đ c t p tin c n t o, hãy nh p tên c a t p tin sau đó nh p nút
Add. T p tin m i s đ c b sung vào d án.


T r a n g | 19

C++

- N u t p tin ch a t n t i, hãy ch n Add New Items. Trong c a s xu t hi n,
tùy thu c vào t p tin mà chúng ta c n, hãy ch n lo i t ng ng. Thông
th ng, trong d án c a C++, chúng ta s d ng hai t p tin l{ tiêu đ .h và
th}n ch ng trình cpp Sau đó h~y nh p tên c a t p tin và nh p Ok. T p tin
tiêu đ h th ng ch a các khai báo prototype c a hàm ho c l p. Ngoài ra,
nó có th ch a các hàm macro, các khai báo h ng và bi n toàn c c đ c s
d ng trong toàn b ch ng trình T p tin cpp th ng ch a ph n thân c a
các hàm ho c l p. Khi làm vi c v i các d án trong C++, chúng ta nên tách
ch ng trình th{nh nhi u ph n và nên s d ng các t p tiêu đ đ làm cho
ch ng trình g n gàng và d hi u h n


Hình 12 - B sung thêm m t t p tin
ng cho d án.

Hình 13 - B sung thêm l p đ i t

Nh p Add. C a s sau đ}y s xu t hi n

T r a n g | 20

đ}y ch’ng ta ch n C++

ng


C++

- Add Class: b sung các l p đ i t
class.


Hình 14 - T o l p b ng Class Wizard
- Class name: tên c a l p.
- .h file: tên c a tiêu đ l p cũng l{ tên c a t p tin tiêu đ .
- .cpp file: tên c a t p tin cpp t

ng ng v i l p.

- Base class: n u l p m i t o ra th a k t m t l p khác, hãy nh p tên c a
l p c s v{o đ}y
- Access: m c th a k c a l p đang t o t l p c s .
- Virtual destructor: t o m t ph

ng th c h y o.

- Inline: t o m t ph ng th c inline. Tuy chúng ta có th s d ng t khóa
n{y nh ng c ch làm vi c c a Visual C++ là t đ ng b sung inline khi
biên d ch n u ph ng th c đ c cho là phù h p đ s d ng inline. Đi u đó
có nghĩa l{ chúng ta không c n d‘ng đ n t khóa này.

Biên d ch d án.

- Đ biên d ch toàn b d án mà không th c thi d án, chúng ta vào Build,
ch n Build Solution.
M t s phím t t trong Visual Studio 2010.


T r a n g | 21

C++

- Đ biên d ch và th c thi m t d án, chúng ta nh p vào Debug > Start
Debugging (ho c Start without Debugging).


- T o vùng comment ch’ thích bôi đen v‘ng m~ c n t o chú thích, nh n
t h p Ctrl+K, Ctrl+C.
- H y b v‘ng comment bôi đen v‘ng m~ đ~ comment nh n t h p Ctrl+K,
Ctrl+U.

- Đ nh d ng mã ngu n bôi đen v‘ng m~ c n đ nh d ng, nh n t h p Ctrl+K,
Ctrl+F.
- T đ ng hoàn t t mã và g i nh c l nh: t h p Ctrl+Space.

Visual Studio 2010 không h tr c|c tính năng m nh m cho vi c kh i t o
mã ngu n. Tuy nhiên, n u chúng ta mong mu n làm vi c đ n gi n và hi u
qu h n thì ta có th s d ng ti n ích b tr . M t trong nh ng ti n ích làm
vi c khá hi u qu là Visual Assist. Phiên b n cho đ n th i đi m n{y năm
2010) là 10.6.
Xem bi u đ l p.

Hình 15 - Xem bi u đ l p
T r a n g | 22

C++


Đ quan sát bi u đ l p trong VS 2010, ta nh p chu t ph i vào tên d án
(trong c a s Solution Explorer), ch n Show class diagram Sau đó chúng
ta kéo th các l p đ i t ng vào vùng bi u đ .


Ch

C(

ng

C b n v C++

NG

C

C u trúc c a m t ch

B N V C++

ng trình C

M t cách th c t t nh t đ h c l p trình đó l{ h~y th vi t m t ch ng
trình đ u tiên. N u chúng ta đ~ t ng làm quen v i m t ngôn ng l p trình
n{o đó thì ch c h n ai cũng bi t đ n ví d kinh đi n c a m t ngôn ng l p
trình đó l{ ch ng trình (ello world
[1.]
[2.]
[3.]

[4.]
[5.]
[6.]
[7.]
[8.]

ng trình

K t qu

//my first program
#include <iostream>
using namespace std;
int main()
{
cout (ello world
return 0;
}

Gi i thích v ch

Hello, world !

ng trình

[1.] Các kí t n m sau d u // s không đ c biên d ch m{ nó đ c hi u là
d u comment dòng ch’ thích Trong C cũng nh C vi c chú thích
trên m t dòng s đ c đ t sau d u //. N u mu n t o m t chú thích
nhi u dòng, chúng ta có th s d ng d u /* T o chú thích đây */
[2.] Dòng này b t đ u b ng kí t #include. Ti p đ n là tên t p tin tiêu đ

(ch a c|c th vi n Th vi n iostream đ c đ t trong d u <>. Nó ch a
các hàm xu t nh p c b n. Hàm này là m t ph n c a namespace std.
[3.] Trong C++, các thành ph n c a th vi n chu n đ c khai báo trong
namespace. đ}y l{ namespace std Đ có th truy xu t đ n các thành
ph n c a nó, chúng ta mô t nó b ng t khóa using Trong th vi n
chu n c a C++, đ i t ng cout đ c t ch c trong namespace std.
[4.] B t kì m t ch ng trình C n{o cũng ph i có m t h{m main đ th c
thi ch ng trình M t hàm s đ c khai báo theo c u trúc trên.
T khóa int mô t ki u d li u mà hàm tr v là integer. Chúng ta c n
l u ý r ng trong ch ng trình C thì ta có th tùy ý khai báo là void ho c
int nh ng trong C thì b t bu c ph i khai báo là int. V y int hay void
T r a n g | 23

C++

Mã ch


Ch

ng

C b n v C++

trong tr ng h p này có th c s quan tr ng ? Chúng ta nên luôn khai
báo hàm main có ki u d li u tr v là ki u int. S dĩ nh v y là vì khi
hàm main tr v ki u int thì theo quy c, n u ch ng trình có l i, nó s
tr v m t m~ int kh|c v{ ng c l i, n u ch ng trình không có l i, nó
s tr v mã int 0. L i đ}y l{ l i ch ng trình liên quan đ n quá trình
biên d ch, ch không ph i là l i liên quan đ n cú pháp. Chúng ta s nh n

th y mã mà nó tr v trong dòng thông báo cu i cùng khi biên d ch:
process returned 0 (0x0).
Tên hàm là main. Ti p theo là c p d u ngo c đ n d‘ng đ ch a tham s
đính kèm Thông th ng m t ch ng trình ng d ng s ch a hai tham
s trong hàm main là int argc và char* args[]. Các tham s này g i là
tham s dòng l nh. Ti p theo là d u {}. Bên trong c p d u n{y l{ ch ng
trình chính.
[5.] D u m kh i.
[6.] Đ i t ng cout đ c là C-out) là chu n d‘ng đ xu t d li u ra màn
hình. Chúng ta c n l u ý hàm printf v n ho t đ ng t t trong tr ng h p
này. N u dùng hàm printf thì ta không c n khai b|o th vi n iostream và
namespace std trên. Khi s d ng đ i t ng cout, chúng ta cũng có th
b qua dòng l nh [3.] v{ thay v{o đó ta s vi t std::cout. Khi s d ng đ i
t ng cout, chúng ta có thêm m t cách th c đ xu ng dòng thay vì dùng
\n đó l{ endl Đ i t ng cout th ng đi v i toán t xu t <<. Chúng ta có
th s dùng nhi u toán t này khi mu n xu t nhi u ph n t riêng bi t:
cout string
string
endl
[7.] Câu l nh return d‘ng đ tr v giá tr c a hàm main. N u hàm có tr
v giá tr , thì c n return m t giá tr n{o đó c‘ng ki u d li u tr v v i
hàm. N u hàm là void, thì không c n return.
[8.] D u đóng kh i t ng ng v i m kh i [5].
 Cũng nh C C l{ ngôn ng phân bi t ch hoa và ch th ng.
 K t thúc m t dòng l nh trong C++ bao gi cũng ph i có d u ;
 M t d u ngo c đ n d u ngo c nh n {} bao gi cũng song h{nh Đi u
đó có nghĩa n u dùng d u m thì ph i có d u đóng t ng ng. D u
ngo c đ n th ng dùng sau tên hàm, và bên trong nó là tham s hình
th c ho c trong các l nh có c u trúc. D u ngo c nh n th ng d‘ng đ
quy đ nh ph m vi c a m t kh i l nh (scope). M t cách th c giúp chúng

ta chuyên nghi p h n khi l p trình, là sau d u m , ta nên s d ng ti p

T r a n g | 24

C++

Chú ý:


×