1. Trang chủ
  2. » Cao đẳng - Đại học

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

231 1,9K 0

Đ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

Định dạng
Số trang 231
Dung lượng 4,89 MB

Nội dung

Đ 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Ừ KHÓA LIÊN QUAN