1. Trang chủ
  2. » Công Nghệ Thông Tin

C++ lập trình hướng đối tượng

231 181 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề C++ Lập trình hướng đối tượng
Tác giả Lê Ngọc Hoàng Thành
Trường học Trường Đại học Công Nghệ Thông Tin - Đại học Quốc Gia TP.HCM
Chuyên ngành Lập trình hướng đối tượng
Thể loại Sách giáo trình
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 231
Dung lượng 4,34 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

DANH SÁCH HÌNH ..... Vào menu Source, ch n Generate Getters and Setters... Cũng nh Eclipse VS cũng qu n lý theo các workspace và các d án... Hình 11 - Win Application Wizard... Tên hàm l

Trang 2

Đ NG NG C HOÀNG THÀNH

Tài li u h c t p C++

Theo dõi b n c p nh t trên blog c a tôi

Trang 3

T r a n g | 2

PH L C

GI I THI U .7

MÔI TR NG PHÁT TRI N TÍCH H P IDE 10

CH 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

CH 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

CH 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 so sánh 41

Toán t logic 42

Toán t đi u ki n 43

Toán t phân tách 45

Trang 4

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 u tiên c a các toán t 49

CH NG XU T NH P C B N

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

CH NG CÁC C U TRÚC L NH ĐI U KHI N

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

CH 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

Hàm đ quy 85

CH NG CÁC KI U D LI U CÓ C U TRÚC 88

M ng 88

Xâu kí t 91

CH NG CON TR

Toán t tham chi u & 93

Toán t tham chi u ng c * 94

Khai báo bi n con tr 96

Con tr , m ng và xâu kí t 98

Trang 5

T r a n g | 4

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

CH NG B NH Đ NG 107

Toán t new và new 107

Toán t delete và delete 109

CH NG KI 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 b nh c a struct 115

CH 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

CH NG L P TRÌNH H NG Đ I 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

Hàm t o sao chép 133

Tính đóng gói – Encapsulation 139

Con tr đ i t ng 140

L p đ 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 6

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

CH 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

CH NG NGO I L 182

M nh đ try…catch 182

M nh đ throw 182

Th vi n chu n exception 183

CH NG LÀM VI 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

File nh phân 192

B đ m và Đ ng b hóa 193

CH NG CÁC L P TH VI N

1 L p s ph c complex 194

Trang 7

T r a n g | 6

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

H 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

DANH SÁCH HÌNH 228

TRA C U T KHÓA

TÀI LI U THAM KH O 230

Trang 8

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

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

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

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 9

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

3 Trình biên d ch

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 có th t i ph n m m t i đ a ch bên d i1 Đ 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 i2 Đ 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 i3 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 ng cho vi c phát tri n các ng d ng c a mình: Embarcadero s d ng

1 http www codeblocks org downloads

2 http ftp jaist ac jp pub eclipse technology epp downloads release helios R

eclipse-cpp-helios-win zip

3 http nchc dl sourceforge net project mingw Automated MinGW Installer

mingw-get-inst mingw-get-mingw-get-inst- mingw-get-inst-20100831.exe

Trang 10

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

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

IDE 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 11

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

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

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

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 ng, ta có th b

sung chúng t menu File New

Trang 12

mã ngu n: chu n Hungary, chu n l c đà Dù

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

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 ng th c

Trang 13

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 đây4

Đ 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 c c u hình trên Eclipse Helios

B c 1 Cài đ t máy o Java

Trang 14

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

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

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

Trang 15

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

T ch c t p tin. 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:

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

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 ng sau đây trên thay công c

c a Eclipse

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

Ch n Run As Local C C Application

M t s th thu t giúp so n th o nhanh

src cpps

headers

Main.cpp Hình 6 - C u trúc th m c c a m t d án

Trang 16

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 o m i m t l 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

T o nhanh các ph 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 Setters Trong h p

Trang 17

main – Ctrl+Space Kh i t o nhanh hàm main

Ctrl+Shift+F Đ nh d ng nhanh mã ngu n

Ctrl+/ 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

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

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

Visual Studio 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 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

Trang 18

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 Win

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 ch n bi u

t ng VS 2010

Hình 9 - Giao di n t ng th c a Visual Studio

T o m i d án trong VS 2010

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

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

Trang 19

Windows application t o ng d ng winform

Console application t o ng d ng ch y trên DOS

Hình 11 - Win Application Wizard

Trang 20

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 Items Sau đó chúng ta duy t

đ n v trí t n t i t p tin

- 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

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

Trang 21

Hình 12 - B sung thêm m t t p tin

- Add Class b sung các l p đ i t ng cho d án đây chúng ta ch n C++

class

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

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

Trang 22

- 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 và th c thi m t d án, chúng ta nh p vào Debug Start

Debugging ho c Start without Debugging

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

Trang 23

Visual Studio không h tr các tính năng m nh m cho vi c kh i t o

nhanh mã ngu n Nh ng ta có th s d ng ti n ích Visual Assist Phiên b n

cho đ n th i đi m này năm là

Xem bi u đ l p

Đ 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 đ

Hình 15 - Xem bi u đ l p

Trang 24

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 Hello world

my first program include iostream using namespace std int main

{ cout<< Hello world return 0;

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

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

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

Trang 25

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

D u m kh i

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

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

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

Trang 26

đ ng Sau đó hãy nh p n i dung c n thi t vào bên trong c p d u này

Đi u đó s tránh kh i s nh m l n khi ch ng trình có quá nhi u d u

đóng m

 Đ nh n bi t đ c ph m vi nh h ng c a các kh i l nh – hãy s d ng

phím tab đ t o ra s l i lõm khi vi t mã ch ng trình Nh trong ví d

trên, đ i t ng cout và hàm return s nh y vào m t tab so v i d u kh i

l nh t ng ng Đ ng bao gi ti t ki m s d ng phím tab và phím enter N u s d ng h p lí ch ng trình s r t sáng s a và d đ c

Bài t p 1

1 Hãy vi t ch ng trình in ra dòng ch Chao ban ban co khoe khong

2 Hãy vi t ch ng trình in ra hai dòng ch trên hai dòng phân bi t

Vietnam và Hoa ky

3 Hãy vi t ch ng trình in ra tam giác đ u v i các đ nh là các d u *

*

* *

Trang 27

m t vài chi ti t Chúng ta có m t vài dòng l nh, biên d ch chúng và sau đó

ch y ch ng trình đ thu k t qu Dĩ nhiên ta có th làm nhanh h n tuy

nhiên vi c l p trình không ch đ n thu n là in ra các dòng thông báo đ n

gi n lên màn hình Đ đi xa h n chúng ta s vi t m t ch ng trình th c thi

m t tác v h u ích là giúp chúng ta tìm hi u v khái ni m bi n

Gi s có hai giá tr 5 và 2 Ta c n l u hai giá tr này vào b nh Bây

gi , n u tôi mu n c ng thêm vào s th nh t và l u l i giá tr này cho nó,

ti p theo tôi mu n l y hi u c a s th nh t sau khi thay đ i v i s th hai

Ti n trình x lý công vi c trên có th đ c vi t trên C nh sau

s đ c quy đ nh b i m t ki u d li u nào đó Trong tr ng h p ví d

c a chúng ta, bi n có ki u d li u là int Ki u d li u th ng có hai lo i:

ki u d li u nguyên th y primitive data type và ki u d li u tham chi u

reference data type Chúng ta s th o lu n chi ti t v chúng trong ph n

ti p theo Nh ng ta có th hi u r ng, m t ki u d li u đ n gi n và có c u

trúc trong C là ki u d li u nguyên th y Đ i v i ki u d li u tham chi u, tôi

s gi i thi u trong ph n l p trình h ng đ i t ng trong C++

Trang 28

Ch ng Bi n và Các ki u d li u

B ng t khóa chu n trong C++

asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern,

false, float, for, friend, goto, if, inline, int ,long, mutable, namespace, new, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this, throw, true, try,

typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while

B ng t khóa b sung trong C++

and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq

Ki u d li u nguyên th y

Khi l p trình chúng ta l u các bi n trong b nh máy tính nh ng

máy tính c n ph i bi t lo i d li u mà chúng ta mu n l u Đi u này giúp

b o đ m đ s l ng ô nh c n thi t đ l u d li u

Trong máy tính, b nh đ c t ch c theo các byte M t byte là m t

đ n v đo l ng t i thi u mà chúng ta có th qu n lý trong C++ M t byte có

th l u m t bi n char Thêm vào đó máy tính cũng qu n lý nh ng ki u d

li u ph c t p h n B ng sau đây li t kê các ki u d li u và kích th c t ng

ng

char Kí t ho c s nguyên bé 1 byte signed -128 ->127

unsigned -> 255 short S nguyên ng n 2 byte signed -215 -> 215-1

unsigned -> 216-1 int S nguyên 4 byte signed -231 -> 231-1

unsigned -> 232-1 long S nguyên dài 4 byte signed -231 -> 231-1

unsigned -> 232-1 long long S nguyên c c dài 8 byte signed -263 -> 263-1

unsigned -> 264-1 bool Giá tr logic – true false 1 byte true và false

double S th p phân ch m đ ng 8 byte s th p phân

long S th p phân ch m đ ng 8 byte s th p phân

Trang 29

thu c vào h th ng và ch ng trình d ch t ng ng Giá tr đ c đ a ra

đây là trên h th ng Windows 32 bit và trình d ch GCC MinGW Nh ng đ i

v i h th ng khác, các giá tr này có th thay đ i (ví d ki u int và long trên

Windows bit và bit là byte nh ng trên Linux bit là byte và trên

Linux 64 bit là 8 byte

Khai báo bi n

Nh ví d trên, ta th y r ng, mu n s d ng m t bi n trong C++, ta

c n khai báo bi n v i ki u d li u mà ta mong mu n C u trúc khai báo

Tên ki u d li u> <Tên bi n>;

Ví d

int a; //Khai báo bi n a ki u nguyên

float mynumber; //Khai báo bi n mynumber ki u float

bool istrue; //Khai báo bi n istrue ki u bool

long num1, num2, num3; //Khai báo ba bi n num1, num2, num3 cùng ki u

long

Chú ý

 N u khi khai báo bi n thu c các ki u nguyên mà ta không s d ng khai báo

có d u signed ho c không d u unsigned thì ch ng trình d ch m c đ nh

s quy đ nh là ki u nguyên có d u

int mynum;

t ng đ ng signed int mynum

 Đ i v i ki u char thì có ngo i l Chúng ta nên khai báo t ng minh là signed char ho c unsigned char

 Đ i v i signed int và unsigned int có th vi t đ n gi n là signed ho c

unsigned

Trang 30

khai báo trong m t kh i l nh nào, thì nó ch có tác d ng trong kh i l nh đó

Bi n đ c khai báo theo ki u này g i là bi n c c b (ho c bi n đ a ph ng

N u m t bi n đ c khai báo ngoài t t c các kh i l nh (k c hàm main thì

bi n đó có tác d ng trong toàn b ch ng trình và g i là bi n toàn c c

float n;

{//Kh i l nh 2

Trang 31

Các bi n toàn c c có th đ c s d ng trong toàn b ch ng trình nó

có th đ c g i trong các hàm, trong hàm chính main Còn bi n c c b đ c

khai báo trong kh i l nh nào, thì nó ch có th đ c s d ng trong kh i l nh

đó

Trong m t s tình hu ng, bi n có th đ c khai báo trong d u ngo c

đ n tình hu ng này th ng g p khi nghiên c u các l nh có c u trúc thì

Trang 32

Ch ng Bi n và Các ki u d li u

type tên_bi n (giá_tr _kh i_t o int a

Bây gi , ta có th vi t l i đo n ch ng trình tính toán giá tr c a các

bi n trên, b ng cách s d ng giá tr kh i t o m c đ nh này

int a (5);

int b (2);

a = a + 1; // a=6 int result (a – b); //result = 4 cout<<result<<endl;

2 Hãy ch n m t cách kh i t o tùy ý, đ vi t ch ng trình tính giá tr c a

bi u th c delta b b-4*a*c, v i a, b, c l n l t nh n các giá tr 1, 5, 3

Kh i t o giá tr cho bi n tĩnh static

M t bi n đ c khai báo b ng t khóa static thì nó ch kh i t o giá tr đúng

m t l n khi bi n đ c t o ra Thông th ng nh ng bi n này đ c đ t vào

trong m t t p tiêu đ h đ s d ng cho toàn b ch ng trình Ví d sau đây

minh h a cho giá tr c a bi n static s không kh i t o l n th hai trong

vòng l p

Trang 33

Gi i thích: bi n x đ c kh i t o trong vòng l p for, n u không có t khóa

static thì trong m i l n l p, bi n này s đ c kh i t o l i và giá tr in ra s

luôn là 3 Tuy nhiên trong tr ng h p này ta s d ng t khóa static do đó

giá tr c a bi n x ch đ c kh i t o m t l n duy nh t Trong nh ng l n l p

ti p theo, giá tr c a x v n đ c l u l i K t qu ta nh n đ c nh trên

Gi i thi u v xâu kí t

M t bi n có th dùng đ l u m t lo i d li u không ph i s , nh ng nó

l i ch a nhi u kí t không nh ki u char mà chúng ta s g i nó là ki u xâu

kí t

Trong th vi n ngôn ng l p trình C++, nó cung c p cho chúng ta ki u

xâu n m trong l p string C n l u ý r ng đ bi u di n m t bi n thu c ki u

xâu, chúng ta có th s d ng khai báo m ng kí t , ho c con tr kí t nh

trong ngôn ng C, ho c s d ng khai báo ki u string Khi s d ng ki u khai

báo tham chi u c a l p string ta c n có khai báo t p tiêu đ là string

Khai báo nguyên th y Khai báo tham chi u

Trang 34

return 0;

}

Chúng ta c n l u ý r ng, dù là m t bi n thu c ki u d li u tham chi u

string thì ta v n có th s d ng hai ki u kh i t o nh trên Đi u này ch có

th áp d ng cho ki u string mà thôi Các ki u d li u tham chi u khác

không th s d ng hai cách kh i t o này

Đ bi t thêm thông tin v ki u string các b n nên tham kh o thêm thông

tin v l p string đ c cung c p trong m c 4 c a ch ng 17 trong cùng giáo

trình này

Trang 35

ngay khi h ng đ c t o ra Thông th ng ng i ta cũng s d ng các ch

cái đ đ t tên cho h ng Tên h ng không ch a các kí t đ t bi t, kí t tr ng

hay b t đ u b ng s không đ c trùng v i t khóa Trong C++, tên h ng

th ng đ c vi t hoa toàn b H ng th ng đ c chia ra làm: h ng s

nguyên, h ng s th c, h ng kí t , h ng xâu và h ng logic

H ng s nguyên

H ng s nguyên là các h ng có giá tr là s nguyên H ng s nguyên

có th đ c bi u di n d i d ng th p phân, bát phân, ho c th p l c phân

N u h ng s nguyên d i d ng th p phân thì có giá tr nh s th p

phân bình th ng N u là h ng s nguyên bát phân, thì nó b t đ u b ng s 0

(ví d N u là h ng s nguyên th p l c phân, thì nó b t đ u b ng 0x (ví

d x b Các quy t c chuy n đ i s qua l i gi a các h đã đ c nghiên c u

trong h c ph n Nh p môn tin h c

N u h ng s là s nguyên có d u ho c không d u, có th có m t vài

cách khai báo t ng ng

H ng nguyên có d u và không d u

75 //int 75u //unsigned int 75l //long

75ul //unsigned long

Các ti n t và h u t trong hai cách s d ng trên có th vi t th ng ho c

vi t hoa x hay X là nh nhau ho c ul hay UL là nh nhau

H ng s th c có d u ch m đ ng

Chúng ta kh o sát s th c d i d ng s th p phân d u ch m đ ng

ho c d i d ng khoa h c (hay còn g i là d ng lũy th a d ng E – t ng ng

v i lũy th a Ví d 314.159e-2 t ng ng v i 3.14159 hay 6.02e23

t ng ng v i 6.02*1023

Trang 36

dòng đ t tab Sau đây là m t vài kí t đ c bi t đó và ý nghĩa c a chúng

M t h ng xâu kí t có th ch a n i dung trên nhi u dòng Khi đó đ

vi t n i dung dòng m i, thì cu i dòng tr c đó ta b sung thêm kí t \

Các xâu kí t có th đ c ghép v i nhau nh vào kí t tr ng

Ví d

Hom nay toi di hoc\

Ngay mai toi o nha

Xâu kí t vi t trên nhi u dòng

Toi yeu lap trinh Xâu kí t ghép

Trang 37

Khi s d ng h ng xâu kí t v i ki u d li u là wchar t ta c n thêm

ti n t L bên tr c xâu kí t đó Ví d L Xau ki tu wchar t

Các quy t c trên có th áp d ng cho b t kì h ng xâu kí t thu c ki u

d li u nào char wchar t string ho c m ng kí t t ng ng

H ng logic

H ng logic có hai giá tr là true đúng và false sai M t bi u th c

logic s có ki u d li u là bool Nó ch có th nh n m t trong hai giá tr true

và false Trong C, ta ch có th s d ng ki u s nguyên short int long đ

quy đ nh giá tr c a bi u th c logic: n u giá tr nh n đ c là 0 – t ng ng

v i giá tr sai ng c l i, n u giá tr nh n đ c là khác 0 – t ng ng v i giá

tr đúng Cách quy đ nh này v n còn ho t đ ng t t trên C++ Tuy nhiên, trong C ng i ta đã đ nh nghĩa hai h ng s true và false và ki u d li u

bool H ng s true t ng ng v i giá tr 1 và h ng s false t ng ng v i

giá tr 0 Ta hoàn toàn có th s d ng giá tr true (ho c 1 và false (ho c 0

Đ nh nghĩa m t h ng #define

Khi đ nh nghĩa m t tên g i cho h ng, ta có th s d ng nó th ng

xuyên mà không c n ph i s p x p l i các bi n chi ph i b nh Đ đ nh

nghĩa m t h ng, ta c n s d ng t khóa define

#define tên_h ng giá_tr

#define PI 3.14 define NewLine \n’

Trong ví d trên tôi đã đ nh nghĩa hai h ng PI và Newline Trong

ch ng trình tôi ch c n g i nó đ s d ng, mà không c n tri u g i đ n giá

Trang 38

Th c ch t, #define không ph i là m t câu l nh trong C++, nó ch là

m t đ nh h ng ti n x lý directive for the preprocessor Cho nên ta c n

l u ý r ng, k t thúc ph n khai báo này, không có d u ch m ph y

Khai báo h ng const

Đ khai báo m t h ng, ta s d ng t khóa const C u trúc khai báo

nh sau

const ki u_d _li u tên_h ng giá tr ; const int a

const char x \t’;

Trong ví d trên, ta có th th y cách khai báo h ng t ng t nh khai

báo bi n, ch có duy nh t m t đi m khác bi t là ta ph i b sung t khóa

const vào tr c khai báo này H ng và bi n cũng t ng t nhau Chúng ch

khác nhau m t đi m duy nh t là giá tr c a h ng không th thay đ i, còn

bi n thì có th thay đ i

Trang 39

toán giá tr c a chúng Các phép toán th c thi trên các bi n ho c h ng g i là

các toán t Và khi đó các bi n ho c h ng đó g i là các toán h ng

Toán t gán

Toán t gán dùng đ gán giá tr cho m t bi n Ví d a

Câu l nh gán s th c hi n gán giá tr bên ph i cho bi n bên trái Ta cũng

có th gán giá tr c a hai bi n cho nhau Ví d a b

Hãy quan sát và suy ng m đo n ch ng trình sau:

Ch ng trình

include iostream using namespace std int main

{ int a, b;

không thay đ i Dòng l nh th c hi n vi c gán giá tr c a bi n b cho

bi n a khi đó b v n không thay đ i; a nh n giá tr c a b, t c là Dòng l nh

Trang 40

Chúng ta c n chú ý r ng, toán t gán th c hi n theo nguyên t c ph

i-sang-trái Nghĩa là luôn l y giá tr v ph i đ gán cho v trái Khi đó giá tr

c a bi n v trái thay đ i, còn v ph i không thay đ i Toán t gán có th

th c hi n trong các bi u th c ph c t p h n

a = b + 2; Giá tr c a a b ng giá tr c a b c ng thêm 2

a = a + 1; Tăng giá tr c a a lên 1

/ Phép chia (chia l y ph n nguyên đ i v i hai s nguyên

% Chia l y d ch v i hai s nguyên

Chú ý r ng, phép chia có th th c hi n trên s nguyên ho c s th c

N u th c hi n phép chia trên hai s nguyên thì đây chính là k t qu c a

phép chia l y ph n nguyên Còn n u nó th c hi n trên hai s th c (ho c

m t s th c và m t s nguyên , thì k t qu đ c th c hi n trên phép chia

bình th ng Nh v y, theo m c đ nh hai s nguyên (ho c th c th c hi n

phép toán t ng ng thì nó s tr v k t qu nguyên (ho c th c N u phép

toán th c hi n trên m t s nguyên và m t s th c nó s t đ ng chuy n

đ i v ki u cao h n thành s th c V y làm th nào đ th c hi n phép chia

3 cho 2, n u ta mu n nh n đ c k t qu là 1.5 Ta bi t r ng và là hai s

nguyên, n u ta th c hi n phép chia thì ta thu đ c s nguyên – là k t

qu c a phép chia l y ph n nguyên 3/2, t c là 1 Mu n thu đ c k t qu

1.5, ta c n chuy n đ i 3 và 2 v d ng s th c b ng m t trong các cách sau

Ngày đăng: 17/05/2014, 19:26

HÌNH ẢNH LIÊN QUAN

Hình 1 – T o m i d   án trong CodeBlocks - C++ lập trình hướng đối tượng
Hình 1 – T o m i d án trong CodeBlocks (Trang 11)
Hình 2 – Kh i t o thân ph ng th c - C++ lập trình hướng đối tượng
Hình 2 – Kh i t o thân ph ng th c (Trang 12)
Hình 5 - T o m i d  án - C++ lập trình hướng đối tượng
Hình 5 T o m i d án (Trang 14)
Hình 7 - Biên d ch m t d  án - C++ lập trình hướng đối tượng
Hình 7 Biên d ch m t d án (Trang 15)
Hình 8 - H p tho i t o m i class - C++ lập trình hướng đối tượng
Hình 8 H p tho i t o m i class (Trang 16)
Hình 9 - Giao di n t ng th  c a Visual Studio - C++ lập trình hướng đối tượng
Hình 9 Giao di n t ng th c a Visual Studio (Trang 18)
Hình 13 - B   sung thêm l p đ i t ng - C++ lập trình hướng đối tượng
Hình 13 B sung thêm l p đ i t ng (Trang 21)
Hình 14 - T o l p b ng Class Wizard - C++ lập trình hướng đối tượng
Hình 14 T o l p b ng Class Wizard (Trang 22)
Hình 15 - Xem bi u đ  l p - C++ lập trình hướng đối tượng
Hình 15 Xem bi u đ l p (Trang 23)
Hình 17 – Tham chi u trong con tr - C++ lập trình hướng đối tượng
Hình 17 – Tham chi u trong con tr (Trang 95)
Hình 18 – Tham chi u ng c trong con tr - C++ lập trình hướng đối tượng
Hình 18 – Tham chi u ng c trong con tr (Trang 96)
Hình 19 –  Tăng Gi m đ a ch  c a con tr - C++ lập trình hướng đối tượng
Hình 19 – Tăng Gi m đ a ch c a con tr (Trang 102)
Hình 20 – Minh h a s  đ  l p - C++ lập trình hướng đối tượng
Hình 20 – Minh h a s đ l p (Trang 126)
Hình 23 –  Mô hình t ng tác  qu n lý Nhà n c. - C++ lập trình hướng đối tượng
Hình 23 – Mô hình t ng tác qu n lý Nhà n c (Trang 225)

TỪ KHÓA LIÊN QUAN

w