Xem mẫu

  1. Đ I H C QU C GIA HÀ N I TRƯ NG Đ I H C CÔNG NGH Khoa Công ngh Thông tin PH M H NG THÁI Bài gi ng NGÔN NG L P TRÌNH C/C++ Hà N i – 2003
  2. L I NÓI Đ U Ngôn ng l p trình (NNLT) C/C++ là m t trong nh ng ngôn ng l p trình hư ng ñ i tư ng m nh và ph bi n hi n nay do tính m m d o và ña năng c a nó. Không ch các ng d ng ñư c vi t trên C/C++ mà c nh ng chương trình h th ng l n ñ u ñư c vi t h u h t trên C/C++. C++ là ngôn ng l p trình hư ng ñ i tư ng ñư c phát tri n trên n n t ng c a C, không nh ng kh c ph c m t s như c ñi m c a ngôn ng C mà quan tr ng hơn, C++ cung c p cho ngư i s d ng (NSD) m t phương ti n l p trình theo k thu t m i: l p trình hư ng ñ i tư ng. Đây là k thu t l p trình ñư c s d ng h u h t trong các ngôn ng m nh hi n nay, ñ c bi t là các ngôn ng ho t ñ ng trong môi tru ng Windows như Microsoft Access, Visual Basic, Visual Foxpro … Hi n nay NNLT C/C++ ñã ñư c ñưa vào gi ng d y trong h u h t các trư ng Đ i h c, Cao ñ ng ñ thay th m t s NNLT ñã cũ như FORTRAN, Pascal … T p bài gi ng này ñư c vi t ra v i m c ñích ñó, trang b ki n th c và k năng th c hành cho sinh viên b t ñ u h c vào NNLT C/C++ t i Khoa Công ngh , Đ i h c Qu c gia Hà N i. Đ phù h p v i chương trình, t p bài gi ng này ch ñ c p m t ph n nh ñ n k thu t l p trình hư ng ñ i tư ng trong C++, ñó là các k thu t ñóng gói d li u, phương th c và ñ nh nghĩa m i các toán t . Tên g i c a t p bài gi ng này nói lên ñi u ñó, có nghĩa n i dung c a bài gi ng th c ch t là NNLT C ñư c m r ng v i m t s ñ c ñi m m i c a C++. V k thu t l p trình hư ng ñ i tư ng (trong C++) s ñư c trang b b i m t giáo trình khác. Tuy nhiên ñ ng n g n, trong t p bài gi ng này tên g i C/C++ s ñư c chúng tôi thay b ng C++. N i dung t p bài gi ng này g m 8 chương. Ph n ñ u g m các chương t 1 ñ n 6 ch y u trình bày v NNLT C++ trên n n t ng c a k thu t l p trình c u trúc. Các chương còn l i (chương 7 và 8) s trình bày các c u trúc cơ b n trong C++ ñó là k thu t ñóng gói (l p và ñ i tư ng) và ñ nh nghĩa phép toán m i cho l p. Tuy ñã có nhi u c g ng nhưng do th i gian và trình ñ ngư i vi t có h n nên ch c ch n không tránh kh i sai sót, vì v y r t mong nh n ñư c s góp ý c a b n ñ c ñ bài gi ng ngày càng m t hoàn thi n hơn. Tác gi .
  3. Chương 1. Các khái ni m cơ b n c a C++ CHƯƠNG 1 CÁC KHÁI NI M CƠ B N C A C++ Các y u t cơ b n Môi trư ng làm vi c c a C++ Các bư c ñ t o và th c hi n m t chương trình Vào/ra trong C++ I. CÁC Y U T CƠ B N M t ngôn ng l p trình (NNLT) b c cao cho phép ngư i s d ng (NSD) bi u hi n ý tư ng c a mình ñ gi i quy t m t v n ñ , bài toán b ng cách di n ñ t g n v i ngôn ng thông thư ng thay vì ph i di n ñ t theo ngôn ng máy (dãy các kí hi u 0,1). Hi n nhiên, các ý tư ng NSD mu n trình bày ph i ñư c vi t theo m t c u trúc ch t ch thư ng ñư c g i là thu t toán ho c gi i thu t và theo ñúng các qui t c c a ngôn ng g i là cú pháp ho c văn ph m. Trong giáo trình này chúng ta bàn ñ n m t ngôn ng l p trình như v y, ñó là ngôn ng l p trình C++ và làm th nào ñ th hi n các ý tư ng gi i quy t v n ñ b ng cách vi t thành chương trình trong C++. Trư c h t, trong m c này chúng ta s trình bày v các qui ñ nh b t bu c ñơn gi n và cơ b n nh t. Thông thư ng các qui ñ nh này s ñư c nh d n trong quá trình h c ngôn ng , tuy nhiên ñ có m t vài khái ni m tương ñ i h th ng v NNLT C++ chúng ta trình bày sơ lư c các khái ni m cơ b n ñó. Ngư i ñ c ñã t ng làm quen v i các NNLT khác có th ñ c lư t qua ph n này. 1. B ng ký t c a C++ H u h t các ngôn ng l p trình hi n nay ñ u s d ng các kí t ti ng Anh, các kí hi u thông d ng và các con s ñ th hi n chương trình. Các kí t c a nh ng ngôn ng khác không ñư c s d ng (ví d các ch cái ti ng Vi t). Dư i ñây là b ng kí t ñư c phép dùng ñ t o nên nh ng câu l nh c a ngôn ng C++. − Các ch cái la tinh (vi t thư ng và vi t hoa): a .. z và A .. Z. Cùng m t ch cái nhưng vi t thư ng phân bi t v i vi t hoa. Ví d ch cái 'a' là khác v i 'A'. − D u g ch dư i: _ − Các ch s th p phân: 0, 1, . ., 9. 1
  4. Chương 1. Các khái ni m cơ b n c a C++ − Các ký hi u toán h c: +, -, *, /, % , &, ||, !, >,
  5. Chương 1. Các khái ni m cơ b n c a C++ 4. Chú thích trong chương trình M t chương trình thư ng ñư c vi t m t cách ng n g n, do v y thông thư ng bên c nh các câu l nh chính th c c a chương trình, NSD còn ñư c phép vi t vào chương trình các câu ghi chú, gi i thích ñ làm rõ nghĩa hơn chương trình. M t chú thích có th ghi chú v nhi m v , m c ñích, cách th c c a thành ph n ñang ñư c chú thích như bi n, h ng, hàm ho c công d ng c a m t ño n l nh ... Các chú thích s làm cho chương trình sáng s a, d ñ c, d hi u và vì v y d b o trì, s a ch a v sau. Có 2 cách báo cho chương trình bi t m t ño n chú thích: − N u chú thích là m t ño n kí t b t kỳ liên ti p nhau (trong 1 dòng ho c trên nhi u dòng) ta ñ t ño n chú thích ñó gi a c p d u ñóng m chú thích /* (m ) và */ (ñóng). − N u chú thích b t ñ u t m t v trí nào ñó cho ñ n h t dòng, thì ta ñ t d u // v trí ñó. Như v y // s d ng cho các chú thích ch trên 1 dòng. Như ñã nh c trên, vai trò c a ño n chú thích là làm cho chương trình d hi u ñ i v i ngư i ñ c, vì v y ñ i v i máy các ño n chú thích s ñư c b qua. L i d ng ñ c ñi m này c a chú thích ñôi khi ñ t m th i b qua m t ño n l nh nào ñó trong chương trình (nhưng không xoá h n ñ kh i ph i gõ l i khi c n dùng ñ n) ta có th ñ t các d u chú thích bao quanh ño n l nh này (ví d khi ch y th chương trình, g l i ...), khi c n s d ng l i ta có th b các d u chú thích. Chú ý: C p d u chú thích /* ... */ không ñư c phép vi t l ng nhau, ví d dòng chú thích sau là không ñư c phép /* Đây là ño n chú thích /* ch a ño n chú thích này */ như ño n chú thích con */ c n ph i s a l i như sau: • ho c ch gi l i c p d u chú thích ngoài cùng /* Đây là ño n chú thích ch a ño n chú thích này như ño n chú thích con */ • ho c chia thành các ño n chú thích liên ti p nhau /* Đây là ño n chú thích */ /*ch a ño n chú thích này*/ /*như ño n chú thích con */ II. MÔI TRƯ NG LÀM VI C C A C++ 1. Kh i ñ ng - Thoát kh i C++ Kh i ñ ng C++ cũng như m i chương trình khác b ng cách nh p ñúp chu t lên bi u tư ng c a chương trình. Khi chương trình ñư c kh i ñ ng s hi n ra giao di n g m có menu công vi c và m t khung c a s bên dư i ph c v cho so n th o. M t con 3
  6. Chương 1. Các khái ni m cơ b n c a C++ tr nh p nháy trong khung c a s và chúng ta b t ñ u nh p n i dung (văn b n) chương trình vào trong khung c a s so n th o này. M c ñích c a giáo trình này là trang b nh ng ki n th c cơ b n c a l p trình thông qua NNLT C++ cho các sinh viên m i b t ñ u nên chúng tôi v n ch n trình bày giao di n c a các trình biên d ch quen thu c là Turbo C ho c Borland C. V các trình biên d ch khác ñ c gi có th t tham kh o trong các tài li u liên quan. Đ k t thúc làm vi c v i C++ (so n th o, ch y chương trình ...) và quay v môi trư ng Windows chúng ta n Alt-X. 2. Giao di n và c a s so n th o a. Mô t chung Khi g i ch y C++ trên màn hình s xu t hi n m t menu x xu ng và m t c a s so n th o. Trên menu g m có các nhóm ch c năng: File, Edit, Search, Run, Compile, Debug, Project, Options, Window, Help. Đ kích ho t các nhóm ch c năng, có th n Alt+ch cái bi u th cho menu c a ch c năng ñó (là ch cái có g ch dư i). Ví d ñ m nhóm ch c năng File n Alt+F, sau ñó d ch chuy n h p sáng ñ n m c c n ch n r i n Enter. Đ thu n ti n cho NSD, m t s các ch c năng hay dùng còn ñư c g n v i m t t h p các phím cho phép ngư i dùng có th ch n nhanh ch c năng này mà không c n thông qua vi c m menu như ñã mô t trên. M t s t h p phím c th ñó s ñư c trình bày vào cu i ph n này. Các b chương trình d ch h tr ngư i l p trình m t môi trư ng tích h p t c ngoài ch c năng so n th o, nó còn cung c p nhi u ch c năng, ti n ích khác giúp ngư i l p trình v a có th so n th o văn b n chương trình v a g i ch y chương trình v a g l i … Các ch c năng liên quan ñ n so n th o ph n l n gi ng v i các b so n th o khác (như WinWord) do v y chúng tôi ch trình bày tóm t t mà không trình bày chi ti t ñây. b. Các ch c năng so n th o Gi ng h u h t các b so n th o văn b n, b so n th o c a Turbo C ho c Borland C cũng s d ng các phím sau cho quá trình so n th o: − D ch chuy n con tr : các phím mũi tên cho phép d ch chuy n con tr sang trái, ph i m t kí t ho c lên trên, xu ng dư i 1 dòng. Đ d ch chuy n nhanh có các phím như Home (v ñ u dòng), End (v cu i dòng), PgUp, PgDn (lên, xu ng m t trang màn hình). Đ d ch chuy n xa hơn có th k t h p các phím này cùng phím Control (Ctrl, ^) như ^PgUp: v ñ u t p, ^PgDn: v cu i t p. − Chèn, xoá, s a: Phím Insert cho phép chuy n ch ñ so n th o gi a chèn và ñè. Các phím Delete, Backspace cho phép xoá m t kí t t i v trí con tr và 4
  7. Chương 1. Các khái ni m cơ b n c a C++ trư c v trí con tr (xoá lùi). − Các thao tác v i kh i dòng: Đ ñánh d u kh i dòng (th c ch t là kh i kí t li n nhau b t kỳ) ta ñưa con tr ñ n v trí ñ u n Ctrl-KB và Ctrl-KK t i v trí cu i. Cũng có th thao tác nhanh hơn b ng cách gi phím Shift và dùng các phím d ch chuy n con tr quét t v trí ñ u ñ n v trí cu i, khi ñó kh i kí t ñu c ñánh d u s chuy n m u n n. M t kh i ñư c ñánh d u có th dùng ñ c t, dán vào m t nơi khác trong văn b n ho c xoá kh i văn b n. Đ th c hi n thao tác c t dán, ñ u tiên ph i ñưa kh i ñã ñánh d u vào b nh ñ m b ng nhóm phím Shift-Delete (c t), sau ñó d ch chuy n con tr ñ n v trí m i c n hi n n i dung v a c t và n t h p phím Shift-Insert. M t ño n văn b n ñư c ghi vào b nh ñ m có th ñư c dán nhi u l n vào nhi u v trí khác nhau b ng cách l p l i t h p phím Shift-Insert t i các v trí khác nhau trong văn b n. Đ xoá m t kh i dòng ñã ñánh d u mà không ghi vào b nh ñ m, dùng t h p phím Ctrl-Delete. Khi m t n i dung m i ghi vào b nh ñ m thì nó s xoá (ghi ñè) n i dung cũ ñã có, do v y c n cân nh c ñ s d ng phím Ctrl-Delete (xoá và không lưu l i n i dung v a xoá vào b ñ m) và Shift-Delete (xoá và lưu l i n i dung v a xoá) m t cách phù h p. − T h p phím Ctrl-A r t thu n l i khi c n ñánh d u nhanh toàn b văn b n. c. Ch c năng tìm ki m và thay th Ch c năng này dùng ñ d ch chuy n nhanh con tr văn b n ñ n t c n tìm. Đ th c hi n tìm ki m b m Ctrl-QF, tìm ki m và thay th b m Ctrl-QA. Vào t ho c nhóm t c n tìm vào c a s Find, nhóm thay th (n u dùng Ctrl-QA) vào c a s Replace và ñánh d u vào các tuỳ ch n trong c a s bên dư i sau ñó n Enter. Các tuỳ ch n g m: không phân bi t ch hoa/thư ng, tìm t ñ c l p hay ñ ng trong t khác, tìm trong toàn văn b n hay ch trong ph n ñư c ñánh d u, chi u tìm ñi ñ n cu i hay ngư c v ñ u văn b n, thay th có h i l i hay không h i l i … Đ d ch chuy n con tr ñ n các vùng khác nhau trong m t menu hay c a s ch a các tuỳ ch n ta s d ng phím Tab. d. Các ch c năng liên quan ñ n t p − Ghi t p lên ñĩa: Ch n menu File\Save ho c phím F2. N u tên t p chưa có (còn mang tên Noname.cpp) máy s yêu c u cho tên t p. Ph n m r ng c a tên t p ñư c m c ñ nh là CPP. − So n th o t p m i: Ch n menu File\New. Hi n ra c a s so n th o tr ng và tên file t m th i l y là Noname.cpp. − So n th o t p cũ: Ch n menu File\Open ho c n phím F3, nh p tên t p ho c d ch chuy n con tr trong vùng danh sách t p bên dư i ñ n tên t p c n so n r i n Enter. Cũng có th áp d ng cách này ñ so n t p m i khi không nh p 5
  8. Chương 1. Các khái ni m cơ b n c a C++ vào tên t p c th . − Ghi t p ñang so n th o lên ñĩa v i tên m i: Ch n menu File\Save As và nh p tên t p m i vào r i n Enter. e. Ch c năng d ch và ch y chưng trình − Ctrl-F9: Kh i ñ ng ch c năng d ch và ch y toàn b chương trình. − F4: Ch y chương trình t ñ u ñ n dòng l nh hi n t i (ñang ch a con tr ) − F7: Ch y t ng l nh m t c a hàm main(), k c các l nh con trong hàm. − F8: Ch y t ng l nh m t c a hàm main(). Khi ñó m i l i g i hàm ñư c xem là m t l nh (không ch y t ng l nh trong các hàm ñư c g i). Các ch c năng liên quan ñ n d ch chương trình có th ñư c ch n thông qua menu Compile (Alt-C). f. Tóm t t m t s phím nóng hay dùng − Các phím kích ho t menu: Alt+ch cái ñ i di n cho nhóm menu ñó. Ví d Alt-F m menu File ñ ch n các ch c năng c th trong nó như Open (m file), Save (ghi file lên ñĩa), Print (in n i dung văn b n chương trình ra máy in), … Alt-C m menu Compile ñ ch n các ch c năng d ch chương trình. − Các phím d ch chuy n con tr khi so n th o. − F1: m c a s tr giúp. Đây là ch c năng quan tr ng giúp ngư i l p trình nh tên l nh, cú pháp và cách s d ng. − F2: ghi t p lên ñĩa. − F3: m t p cũ ra s a ch a ho c so n th o t p m i. − F4: ch y chương trình ñ n v trí con tr . − F5: Thu h p/m r ng c a s so n th o. − F6: Chuy n ñ i gi a các c a s so n th o. − F7: Ch y chương trình theo t ng l nh, k c các l nh trong hàm con. − F8: Ch y chương trình theo t ng l nh trong hàm chính. − F9: D ch và liên k t chương trình. Thư ng dùng ch c năng này ñ tìm l i cú pháp c a chương trình ngu n trư c khi ch y. − Alt-F7: Chuy n con tr v nơi gây l i trư c ñó. − Alt-F8: Chuy n con tr ñ n l i ti p theo. 6
  9. Chương 1. Các khái ni m cơ b n c a C++ − Ctrl-F9: Ch y chương trình. − Ctrl-Insert: Lưu kh i văn b n ñư c ñánh d u vào b nh ñ m. − Shift-Insert: Dán kh i văn b n trong b nh ñ m vào văn b n t i v trí con tr . − Shift-Delete: Xoá kh i văn b n ñư c ñánh d u, lưu nó vào b nh ñ m. − Ctrl-Delete: Xoá kh i văn b n ñư c ñánh d u (không lưu vào b nh ñ m). − Alt-F5: Chuy n sang c a s xem k t qu c a chương trình v a ch y xong. − Alt-X: thoát C++ v l i Windows. 3. C u trúc m t chương trình trong C++ M t chương trình C++ có th ñư c ñ t trong m t ho c nhi u file văn b n khác nhau. M i file văn b n ch a m t s ph n nào ñó c a chương trình. V i nh ng chương trình ñơn gi n và ng n thư ng ch c n ñ t chúng trên m t file. M t chương trình g m nhi u hàm, m i hàm ph trách m t công vi c khác nhau c a chương trình. Đ c bi t trong các hàm này có m t hàm duy nh t có tên hàm là main(). Khi ch y chương trình, các câu l nh trong hàm main() s ñư c th c hi n ñ u tiên. Trong hàm main() có th có các câu l nh g i ñ n các hàm khác khi c n thi t, và các hàm này khi ch y l i có th g i ñ n các hàm khác n a ñã ñư c vi t trong chương trình (tr vi c g i quay l i hàm main()). Sau khi ch y ñ n l nh cu i cùng c a hàm main() chương trình s k t thúc. C th , thông thư ng m t chương trình g m có các n i dung sau: − Ph n khai báo các t p nguyên m u: khai báo tên các t p ch a nh ng thành ph n có s n (như các h ng chu n, ki u chu n và các hàm chu n) mà NSD s dùng trong chương trình. − Ph n khai báo các ki u d li u, các bi n, h ng ... do NSD ñ nh nghĩa và ñư c dùng chung trong toàn b chương trình. − Danh sách các hàm c a chương trình (do NSD vi t, bao g m c hàm main()). C u trúc chi ti t c a m i hàm s ñư c ñ c p ñ n trong chương 4. Dư i ñây là m t ño n chương trình ñơn gi n ch g m 1 hàm chính là hàm main(). N i dung c a chương trình dùng in ra màn hình dòng ch : Chào các b n, bây gi là 2 gi . #include // khai báo t p nguyên m u ñ void main() // ñư c s d ng toán t in cout
  10. Chương 1. Các khái ni m cơ b n c a C++ int h = 2, // Khai báo và kh i t o bi n h = 2 cout
  11. Chương 1. Các khái ni m cơ b n c a C++ C++ (Borland C, Turbo C). M c ñích c a so n th o là t o ra m t văn b n chương trình và ñưa vào b nh c a máy. Văn b n chương trình c n ñư c trình bày sáng s a, rõ ràng. Các câu l nh c n gióng th ng c t theo c u trúc c a l nh (các l nh ch a trong m t l nh c u trúc ñư c trình bày th t vào trong so v i ñi m b t ñ u c a l nh). Các chú thích nên ghi ng n g n, rõ nghĩa và phù h p. 3. D ch chương trình Sau khi ñã so n th o xong chương trình ngu n, bư c ti p theo thư ng là d ch ( n t h p phím Alt-F9) ñ tìm và s a các l i g i là l i cú pháp. Trong khi d ch C++ s ñ t con tr vào nơi gây l i (vi t sai cú pháp) trong văn b n. Sau khi s a xong m t l i NSD có th dùng Alt-F8 ñ chuy n con tr ñ n l i ti p theo ho c d ch l i. Đ chuy n con tr v ngư c l i l i trư c ñó có th dùng Alt-F7. Quá trình s a l i − d ch ñư c l p l i cho ñ n khi văn b n ñã ñư c s a h t l i cú pháp. S n ph m sau khi d ch là m t t p m i g i là chương trình ñích có ñuôi EXE t c là t p mã máy ñ th c hi n.T p này có th lưu t m th i trong b nh ph c v cho quá trình ch y chương trình ho c lưu l i trên ñĩa tuỳ theo tuỳ ch n khi d ch c a NSD. Trong và sau khi d ch, C++ s hi n m t c a s ch a thông báo v các l i (n u có), ho c thông báo chương trình ñã ñư c d ch thành công (không còn l i). Các l i này ñư c g i là l i cú pháp. Đ d ch chương trình ta ch n menu \Compile\Compile ho c \Compile\Make ho c nhanh chóng hơn b ng cách n t h p phím Alt-F9. 4. Ch y chương trình n Ctrl-F9 ñ ch y chương trình, n u chương trình chưa d ch sang mã máy, máy s t ñ ng d ch l i trư c khi ch y. K t qu c a chương trình s hi n ra trong m t c a s k t qu ñ NSD ki m tra. N u k t qu chưa ñư c như mong mu n, quay l i văn b n ñ s a và l i ch y l i chương trình. Quá trình này ñư c l p l i cho ñ n khi chương trình ch y ñúng như yêu c u ñã ñ ra. Khi chương trình ch y, c a s k t qu s hi n ra t m th i che khu t c a s so n th o. Sau khi k t thúc ch y chương trình c a s so n th o s t ñ ng hi n ra tr l i và che khu t c a s k t qu . Đ xem l i k t qu ñã hi n n Alt-F5. Sau khi xem xong ñ quay l i c a s so n th o n phím b t kỳ. IV. VÀO/RA TRONG C++ Trong ph n này chúng ta làm quen m t s l nh ñơn gi n cho phép NSD nh p d li u vào t bàn phím ho c in k t qu ra màn hình. Trong ph n sau c a giáo trình chúng ta s kh o sát các câu l nh vào/ra ph c t p hơn 9
  12. Chương 1. Các khái ni m cơ b n c a C++ 1. Vào d li u t bàn phím Đ nh p d li u vào cho các bi n có tên bi n_1, bi n_2, bi n_3 chúng ta s d ng câu l nh: cin >> bi n_1 ; cin >> bi n_2 ; cin >> bi n_3 ; ho c: cin >> bi n_1 >> bi n_2 >> bi n_3 ; bi n_1, bi n_2, bi n_3 là các bi n ñư c s d ng ñ lưu tr các giá tr NSD nh p vào t bàn phím. Khái ni m bi n s ñư c mô t c th hơn trong chương 2, ñây bi n_1, bi n_2, bi n_3 ñư c hi u là các tên g i ñ ch 3 giá tr khác nhau. Hi n nhiên có th nh p d li u nhi u hơn 3 bi n b ng cách ti p t c vi t tên bi n vào bên ph i sau d u >> c a câu l nh. Khi ch y chương trình n u g p các câu l nh trên chương trình s "t m d ng" ñ ch NSD nh p d li u vào cho các bi n. Sau khi NSD nh p xong d li u, chương trình s ti p t c ch y t câu l nh ti p theo sau c a các câu l nh trên. Cách th c nh p d li u c a NSD ph thu c vào lo i giá tr c a bi n c n nh p mà ta g i là ki u, ví d nh p m t s có cách th c khác v i nh p m t chu i kí t . Gi s c n nh p ñ dài hai c nh c a m t hình ch nh t, trong ñó c nh dài ñư c qui ư c b ng tên bi n cd và chi u r ng ñư c qui ư c b i tên bi n cr. Câu l nh nh p s như sau: cin >> cd >> cr ; Khi máy d ng ch nh p d li u NSD s gõ giá tr c th c a các chi u dài, r ng theo ñúng th t trong câu l nh. Các giá tr này c n cách nhau b i ít nh t m t d u tr ng (ta qui ư c g i d u tr ng là m t trong 3 lo i d u ñư c nh p b i các phím sau: phím spacebar (d u cách), phím tab (d u tab) ho c phím Enter (d u xu ng dòng)). Các giá tr NSD nh p vào cũng ñư c hi n th trên màn hình ñ NSD d theo dõi. Ví d n u NSD nh p vào 23 11 ↵ thì chương trình s gán giá tr 23 cho bi n cd và 11 cho bi n cr. Chú ý: gi s NSD nh p 2311 ↵ (không có d u cách gi a 23 và 11) thì chương trình s xem 2311 là m t giá tr và gán cho cd. Máy s t m d ng ch NSD nh p ti p giá tr cho bi n cr. 2. In d li u ra màn hình Đ in giá tr c a các bi u th c ra màn hình ta dùng câu l nh sau: cout
  13. Chương 1. Các khái ni m cơ b n c a C++ cout
  14. Chương 1. Các khái ni m cơ b n c a C++ Di n tích = 253 Chu vi = 68 ñây 253 và 68 l n lư t là các giá tr mà máy tính ñư c t các bi u th c cd * cr, và 2 * (cd + cr) trong câu l nh in trên. Chú ý: ñ s d ng các câu l nh nh p và in trong ph n này, ñ u chương trình ph i có dòng khai báo #include . Thông thư ng ta hay s d ng l nh in ñ in câu thông báo nh c NSD nh p d li u trư c khi có câu l nh nh p. Khi ñó trên màn hình s hi n dòng thông báo này r i m i t m d ng ch d li u nh p vào t bàn phím. Nh vào thông báo này NSD s bi t ph i nh p d li u, nh p n i dung gì và như th nào ... ví d : cout > cd; cout > cr; khi ñó máy s in dòng thông báo "Hãy nh p chi u dài: " và ch sau khi NSD nh p xong 23 ↵, máy s th c hi n câu l nh ti p theo t c in dòng thông báo "Và nh p chi u r ng: " và ch ñ n khi NSD nh p xong 11 ↵ chương trình s ti p t c th c hi n các câu l nh ti p theo. Ví d 2 : T các th o lu n trên ta có th vi t m t cách ñ y ñ chương trình tính di n tích và chu vi c a m t hình ch nh t. Đ chương trình có th tính v i các b giá tr khác nhau c a chi u dài và r ng ta c n lưu giá tr này vào trong các bi n (ví d cd, cr). #include // khai báo t p nguyên m u ñ dùng ñư c cin, cout void main() // ñây là hàm chính c a chương trình { float cd, cr ; // khai báo các bi n có tên cd, cr ñ ch a ñ dài các c nh cout > cd ; // nh p d li u cout > cr ; cout
  15. Chương 1. Các khái ni m cơ b n c a C++ kỳ ch không ch trong trư ng h p hình có chi u dài 23 và chi u r ng 11 như trong ví d c th trên. 3. Đ nh d ng thông tin c n in ra màn hình M t s ñ nh d ng ñơn gi n ñư c chúng tôi trình bày trư c ñây. Các ñ nh d ng chi ti t và ph c t p hơn s ñư c trình bày trong các ph n sau c a giáo trình. Đ s d ng các ñ nh d ng này c n khai báo file nguyên m u ñ u chương trình b ng ch th #include . − endl: Tương ñương v i kí t xu ng dòng '\n'. − setw(n): Bình thư ng các giá tr ñư c in ra b i l nh cout
  16. Chương 1. Các khái ni m cơ b n c a C++ getch(); // t m d ng (ñ xem k t qu ) return ; // k t thúc th c hi n hàm main() } Chương trình này khi ch y s in ra b ng sau: CHI TIÊU ======== Sách v 123.46 Th c ăn 2453.60 Qu n áo l nh 3200.00 Chú ý: toán t nh p >> ch y u làm vi c v i d li u ki u s . Đ nh p kí t ho c xâu kí t , C++ cung c p các phương th c (hàm) sau: − cin.get(c): cho phép nh p m t kí t vào bi n kí t c, − cin.getline(s,n): cho phép nh p t i ña n-1 kí t vào xâu s. các hàm trên khi th c hi n s l y các kí t còn l i trong b nh ñ m (c a l n nh p trư c) ñ gán cho c ho c s. Do toán t cin >> x s ñ l i kí t xu ng dòng trong b ñ m nên kí t này s làm trôi các l nh sau ñó như cin.get(c), cin.getline(s,n) (máy không d ng ñ nh p cho c ho c s). Vì v y trư c khi s d ng các phương th c cin.get(c) ho c cin.getline(s,n) nên s d ng phương th c cin.ignore(1) ñ l y ra kí t xu ng dòng còn sót l i trong b ñ m. Ví d ño n l nh sau cho phép nh p m t s nguyên x (b ng toán t >>) và m t kí t c (b ng phương th c cin.get(c)): int x; char c; cin >> x; cin.ignore(1); cin.get(c); 4. Vào/ra trong C Trong ph n trên chúng tôi ñã trình bày 2 toán t vào/ra và m t s phương th c, hàm nh p và ñ nh d ng trong C++. Ph n này chúng tôi trình bày các câu lênh nh p xu t theo khuôn d ng cũ trong C. Hi n nhiên các câu l nh này v n dùng ñư c trong chương trình vi t b ng C++, tuy nhiên ch nên s d ng ho c các câu l nh c a C++ ho c c a C, không nên dùng l n l n c hai vì d gây nh m l n. Do ñó m c này ch có 14
  17. Chương 1. Các khái ni m cơ b n c a C++ giá tr tham kh o ñ b n ñ c có th hi u ñư c các câu l nh vào/ra trong các chương trình vi t theo NNLT C cũ. a. In k t qu ra màn hình Đ in các giá tr bt_1, bt_2, …, bt_n ra màn hình theo m t khuôn d ng mong mu n ta có th s d ng câu l nh sau ñây: printf(dòng ñ nh d ng, bt_1, bt_2, ..., bt_n) ; trong ñó dòng ñ nh d ng là m t dãy kí t ñ t trong c p d u nháy kép (“”) qui ñ nh khuôn d ng c n in c a các giá tr bt_1, bt_2, …, bt_n. Các bt_i có th là các h ng, bi n hay các bi u th c tính toán. Câu l nh trên s in giá tr c a các bt_i này theo th t xu t hi n c a chúng và theo qui ñ nh ñư c cho trong dòng ñ nh d ng. Ví d , gi s x = 4, câu l nh: printf(“%d %0.2f”, 3, x + 1) ; s in các s 3 và 5.00 ra màn hình, trong ñó 3 ñư c in dư i d ng s nguyên (ñư c qui ñ nh b i “%d”) và x + 1 (có giá tr là 5) ñư c in dư i d ng s th c v i 2 s l th p phân (ñư c qui ñ nh b i “%0.2f”). C th , các kí t ñi sau kí hi u % dùng ñ ñ nh d ng vi c in g m có: d in s nguyên dư i d ng h th p phân o in s nguyên d ng h 8 x, X in s nguyên d ng h 16 u in s nguyên d ng không d u c in kí t s in xâu kí t e, E in s th c d ng d u ph y ñ ng f in s th c d ng d u ph y tĩnh − Các kí t trên ph i ñi sau d u %. Các kí t n m trong dòng ñ nh d ng n u không ñi sau % thì s ñư c in ra màn hình. Mu n in % ph i vi t 2 l n (t c %%). Ví d câu l nh: printf(“T l h c sinh gi i: %0.2f %%”, 32.486) ; s in câu “T l h c sinh gi i: “, ti p theo s in s 32.486 ñư c làm tròn ñ n 2 s l th p phân l p vào v trí c a “%0.2f”, và cu i cùng s in d u “%” (do có %% trong dòng ñ nh d ng). Câu ñư c in ra màn hình s là: T l h c sinh gi i: 32.49% Chú ý: M i bt_i c n in ph i có m t ñ nh d ng tương ng trong dòng ñ nh d ng. 15
  18. Chương 1. Các khái ni m cơ b n c a C++ Ví d câu l nh trên cũng có th vi t: printf(“%s %0.2f” , “T l h c sinh gi i: “, 32.486); trong câu l nh này có 2 bi u th c c n in. Bi u th c th nh t là xâu kí t “T l h c sinh gi i:” ñư c in v i khuôn d ng %s (in xâu kí t ) và bi u th c th hai là 32.486 ñư c in v i khuôn d ng %0.2f (in s th c v i 2 s l ph n th p phân). − N u gi a kí t % và kí t ñ nh d ng có s bi u th ñ r ng c n in thì giá tr in ra s ñư c gióng c t sang l ph i, ñ tr ng các d u cách phía trư c. N u ñ r ng âm (thêm d u tr − phía trư c) s gióng c t sang l trái. N u không có ñ r ng ho c ñ r ng b ng 0 (ví d %0.2f) thì ñ r ng ñư c t ñi u ch nh ñúng b ng ñ r ng c a giá tr c n in. − D u + trư c ñ r ng ñ in giá tr s kèm theo d u (dương ho c âm) − Trư c các ñ nh d ng s c n thêm kí t l (ví d ld, lf) khi in s nguyên dài long ho c s th c v i ñ chính xác g p ñôi double. Ví d 4 : main() { int i = 2, j = 3 ; printf(“Chương trình tính t ng 2 s nguyên:\ni + j = %d”, i+j); } s in ra: Chương trình tính t ng 2 s nguyên: i + j = 5. b. Nh p d li u t bàn phím scanf(dòng ñ nh d ng, bi n_1, bi n_2, ..., bi n_n) ; L nh này cho phép nh p d li u vào cho các bi n bi n_1, …, bi n_n. Trong ñó dòng ñ nh d ng ch a các ñ nh d ng v ki u bi n (nguyên, th c, kí t …) ñư c vi t như trong mô t câu l nh printf. Các bi n ñư c vi t dư i d ng ñ a ch c a chúng t c có d u & trư c m i tên bi n. Ví d câu l nh: scanf(“%d %f %ld”, &x, &y, &z) ; cho phép nh p giá tr cho các bi n x, y, z trong ñó x là bi n nguyên, y là bi n th c và z là bi n nguyên dài (long). Câu l nh: 16
  19. Chương 1. Các khái ni m cơ b n c a C++ scanf(“%2d %f %lf %3s”, &i, &x, &d, s); cho phép nh p giá tr cho các bi n i, x, d, s, trong ñó i là bi n nguyên có 2 ch s , f là bi n th c (ñ dài tùy ý), d là bi n nguyên dài và s là xâu kí t có 3 kí t . Gi s NSD nh p vào dãy d li u: 12345 67abcd ↵ thì các bi n trên s ñư c gán các giá tr như sau: i = 12, x = 345, d = 67 và s = “abc”. Kí t d và d u enter (↵) s ñư c lưu l i trong b nh và t ñ ng gán cho các bi n c a l n nh p sau. Cu i cùng, chương trình trong ví d 3 ñư c vi t l i v i printf() và scanf() như sau: Ví d 5 : #include // ñ s d ng các hàm printf() và scanf() #include // ñ s d ng các hàm clrscr() và getch() void main() { clrscr(); // xoá màn hình printf("CHI TIÊU\n=======\n") ; printf("Sách v %20.2f\n" , 123.456) ; printf("Th c ăn %20.2f\n" , 2453.6) ; printf(“Qu n áo l nh %15.2f\n" , 3200.0) ; getch(); // t m d ng (ñ xem k t qu ) return ; // k t thúc th c hi n hàm main() } BÀI T P 1. Nh ng tên g i nào sau ñây là h p l : −x − 123variabe − tin_hoc − toan tin − so-dem − RADIUS − one.0 − number# − Radius − nam2000 2. B n hãy th vi t m t chương trình ng n nh t có th ñư c. 3. Tìm các l i cú pháp trong chương trình sau: 17
  20. Chương 1. Các khái ni m cơ b n c a C++ #include (iostream.h) void main(); / Gi i phương trình b c 1 { cout > nam ; …; cin.get(a); cin.get(b); cin.get(c); … ; … ; 18