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

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

Đ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

Đ 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: dnhthanh@hueic.edu.vn. 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 có th t i ph n m m t i đa ch http://www.codeblocks.org/downloads. Đ 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 http://ftp.jaist.ac.jp/pub/eclipse/technology/epp/downloads/release/helios/R/eclipse-cpp-helioswin32.zip 2 http://nchc.dl.sourceforge.net/project/mingw/Automated%20MinGW%20Installer/mingw-getinst/mingw-get-inst-20100831/mingw-get-inst-20100831.exe 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 http://javadl.sun.com/webapps/download/AutoDL?BundleId=41723 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 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 255 signed: -215 -> 215-1 unsigned: 0 -> 216-1 signed: -231 -> 231-1 unsigned: 0 -> 232-1 signed: -231 -> 231-1 unsigned: 0 -> 232-1 signed: -263 -> 263-1 unsigned: 0 -> 264-1 true và false 7 s th p phân 15 s th p phân 15 s th p phân C++ 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. Ch ng Bi n và Các ki u d li u double dài wchar_t Kí t dài 2/4 byte Kích th c trong b nh và mi n giá tr c a các ki u d li u còn ph 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 ; 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; 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. T r a n g | 28 C++ t Ch ng Bi n và Các ki u d li u  N u mu n ch c ch n v kích th c c a ki u d li u mà ta c n s d ng, hãy s d ng hàm sizeof đ x|c đ nh kích th c b nh c a ki u d li u. Hàm sizeof(tên bi n) ho c sizeof(ki u d li u) tr v ki u d li u nguyên. Ch ng trình #include K t qu 4 (trên windows 32 bit) using namespace std; int main() { int a; cout>bi n_n; Các bi n s bi n bi n_n c n đ c khai b|o Thông th ng, nh ng bi n n{y ch a đ c kh i t o giá tr Sau đ}y l{ m t vài ví d v vi c s d ng đ i t ng cout: Ch ng Xu t Nh p c b n nh p ta l i nh p vào m t kí t không ph i là s thì ch ng trình d ch s b qua vi c kh i t o giá tr cho bi n đó Ch ng trình ho{n to{n không phát sinh l i (process returned 0). Khi s d ng đ i t ng cout và cin, ta c n khai báo không gian s d ng namespace là std. Ho c, có th vi t ng n g n h n std:: Ch ng trình Ch ng trình #include #include using namespace std; int main(){ int main(){ std cout (ello cout (ello } } Đ i t ng cin và xâu kí t : trong ví d trên tôi đ~ s d ng đ i t ng cin đ tách m t xâu kí t và gán cho bi n xâu kí t s. Khi s d ng đ i t ng cin v i xâu kí t , c n l u ý m t đi m: đ i t ng cin s d ng vi c trích tách n u nó đ c th y m t kí t tr ng trong xâu kí t đó có nghĩa n u xâu nh p vào l{ Toi di hoc thì nó ch t|ch đ c x}u Toi v{ g|n cho bi n s Đ kh c ph c nh c đi m này c a đ i t ng cin, C++ cung c p cho chúng ta m t hàm khác là hàm getline, có ch c năng t ng t . Cú pháp: getline(chu n_nh p_d _li u, tên_bi n_xâu) Khi nh p xu t d li u t bàn phím và màn hình, tham s chu n_nh p_xu t_d _li u luôn s d ng là cin. N u làm vi c v i t p tin file, thì tham s này s t ng ng v i tên c a file. Chúng ta s tìm hi u tr ng h p này trong ch ng c a giáo trình. Ch ng trình #include #include using namespace std; { T r a n g | 54 C++ int main() Ch ng string s; Xu t Nh p c b n cout Nhap ten cout Chao ban getline(cin, s); return 0; s } Nh p d li u nh l p stringstream Đ s d ng l p stringstream, chúng ta c n khai báo t p header là . L p này cho phép m t đ i t ng d a trên c s c a xâu có th đ c chuy n đ i nh m t lu ng stream. Trong th vi n sstream, ta có ba l p đ i t ng lu ng x}u c b n: stringstream, istringstream và ostringstream. Các lu ng này có th đ c s d ng đ tách ho c chèn xâu, nó đ c bi t h u d ng khi chuy n m t xâu thành s v{ ng c l i. Ví d , n u mu n tách m t s integer t m t x}u ta có th vi t nh sau string mystr int mynum; stringstream(mystr)>>mynum; Đ}y không ph i là cách th c duy nh t giúp ta chuy n đ i m t xâu thành s Trong th vi n string, cung c p cho ch’ng ta c|c h{m đ th c thi công vi c đó nh h{m atof x}u s th c thành s th c), atoll (xâu thành s nguyên dài thành s nguyên dài),... Tuy nhiên, các hàm này ch y u làm vi c v i xâu kí t c a C, t c là char*. Ví d sau đ}y s cho th y cách s d ng l p stringstream đ nh p d li u t bàn phím. Ch ng trình #include using namespace std; int main() T r a n g | 55 C++ #include Ch { ng Xu t Nh p c b n string mystr; int mynum; getline(cin,mystr); stringstream(mystr)>>mynum; couta; sum+=a; } cout0) cout x la so duong cout x la so duong if((x>0)&&(y>0)) { } cout y la so duong endl N u có nhi u câu l nh ch u s chi ph i c a câu l nh if, thì chúng s c đ t trong kh i l nh. đ Trong tr ng h p n u bi u_th c đi u_ki n sai, ta c n th c thi m t m nh đ kh|c Khi đó ta s s d ng thêm t khóa else. Cú pháp: if(bi u_th c đi u_ki n đúng) { }else { } Ví d if (x%2==0) cout x la so chan cout x la so le else Ví d if(x>0) T r a n g | 59 C++ C u trúc if (l n else) có th l ng v{o nhau Khi đó ch’ng ta s có m t c u trúc l nh ph c h p. ng Ch cout x C|c c u trúc l nh đi u khi n else if(x>n; 2 Nhap n 1 while (n>0){ cout[...]... 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... 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... 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:... 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. .. u s d ng h p lí ch ng trình s r t sáng s a và d đ c ng trình in ra dòng ch Chao ban ban co khoe khong ng trình in ra hai dòng ch trên hai dòng phân bi t (oa ky ng trình in ra tam gi|c đ u v i c|c đ nh là các d u * * * * C++ Bài t p 1 1 Hãy vi t ch 2 Hãy vi t ch Vietnam v{ 3 Hãy vi t ch T r a n g | 25 Ch C( ng Bi n và Các ki u d li u NG BI N VÀ CÁC KI U D LI U T ng ng v i ch ng trình (ello world ch’ng... ta nên s d ng ti p T r a n g | 24 C++ Chú ý: Ch ng C b n v C++ d u đóng thông th ng các trình so n th o s h tr m t cách t đ 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... 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... s gi i thi u trong ph n l p trình h ng đ i t ng trong C++ T khóa trong C++ có th có m t ho c nhi u t N u t khóa có nhi u t , thì gi a các t có d u g ch chân (_) Kí t tr ng và các kí t đ c bi t không đ c phép s d ng trong t khóa, tên hàm, tên bi n Tên c a chúng không đ c b t đ u b ng kí t s T r a n g | 26 C++ T khóa 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,... 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... 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~

Ngày đăng: 18/10/2015, 23:52

Tài liệu cùng người dùng

Tài liệu liên quan