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: _ớ
1
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
− Các ch s th p phân: 0, 1, . ., 9.ữ ố ậ
− Các ký hi u toán h c: +, -, *, /, % , &, ||, !, >, <, = ệ ọ
− Các ký hi u ệ đ c bi t khác: , ;: [ ], {}, #, d u cách, ặ ệ ấ
2. T khoáừ
M t t khoá là m t t đ c qui đ nh tr c trong NNLT v i m t ý nghĩa c đ nh,ộ ừ ộ ừ ượ ị ướ ớ ộ ố ị
th ng dùng đ ch các lo i d li u ho c k t h p thành câu l nh. NSD có th t o raườ ể ỉ ạ ữ ệ ặ ế ợ ệ ể ạ
nh ng t m i đ ch các đ i t ng c a mình nh ng không đ c phép trùng v i tữ ừ ớ ể ỉ ố ượ ủ ư ượ ớ ừ
khoá. D i đây chúng tôi li t kê m t vài t khoá th ng g p, ý nghĩa c a các t này,ướ ệ ộ ừ ườ ặ ủ ừ
s đ c trình bày d n trong các đ m c liên quan.ẽ ượ ầ ề ụ
auto, break, case, char, continue, default, do, double, else, externe, float,
for, goto, if, int, long, register, return, short, sizeof, static, struct, switch,
typedef, union, unsigned, while
M t đ c tr ng c a C++ là các t khoá luôn luôn ộ ặ ư ủ ừ đư c vi t b ng ch th ng.ợ ế ằ ữ ườ
3. Tên g i ọ
Đ phân bi t các đ i t ng v i nhau chúng c n có m t tên g i. H u h t m tể ệ ố ượ ớ ầ ộ ọ ầ ế ộ
đ i t ng đ c vi t ra trong ch ng trình thu c 2 d ng, m t d ng đã có s n trongố ượ ượ ế ươ ộ ạ ộ ạ ẵ
ngôn ng (ví d các t khoá, tên các hàm chu n ), m t s do NSD t o ra dùng ữ ụ ừ ẩ ộ ố ạ để
đ t tên cho h ng, bi n, ki u, hàm các tên g i do NSD t đ t ph i tuân theo m t sặ ằ ế ể ọ ự ặ ả ộ ố
qui t c sau:ắ
− Là dãy ký t liên ti p (không ch a d u cách) và ph i b t ự ế ứ ấ ả ắ đ u b ng ch cáiầ ằ ữ
ho c g ch dặ ạ ư i. ớ
− Phân bi t kí t in hoa và thệ ự ư ng. ờ
− Không đư c trùng v i t khóa. ợ ớ ừ
− S lố ư ng ch cái dùng ợ ữ đ phân bi t tên g i có th ể ệ ọ ể đư c ợ đ t tuỳ ý.ặ
− Chú ý các tên g i có s n c a C++ cũng tuân th theo đúng qui t c trên.ọ ẵ ủ ủ ắ
Trong m t ch ng trình n u NSD đ t tên sai thì trong quá trình x lý s bộ ươ ế ặ ử ơ ộ
(tr c khi ch y ch ng trình) máy s báo l i (g i là l i văn ph m). ướ ạ ươ ẽ ỗ ọ ỗ ạ
Ví d 1 ụ :
• Các tên g i sau đây là đúng (đ c phép): i, i1, j, tinhoc, tin_hoc, luu_luong ọ ượ
• Các tên g i sau đây là sai (không đ c phép): 1i, tin hoc, luu-luong-nuoc ọ ượ
2
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
• Các tên g i sau đây là khác nhau: ha_noi, Ha_noi, HA_Noi, HA_NOI, ọ
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++ở ộ ỏ
3
Ch ng 1. Các khái ni m c b n c a 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 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ệ ử ổ ạ ả
1. 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. ở
2. 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.ư ề ầ ệ ề ố ệ
4
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
− 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àộ ự ạ ị ỏ
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.ổ ợ ấ ậ ợ ầ ấ ộ ả
3. 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.
4. 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.ạ ờ ấ
5
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
− 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ồ ấ ể ụ ể ạ ệ ớ ậ
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.ệ ớ ồ ấ
5. 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).
6. 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.ủ ươ ồ ướ ạ
6
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
− 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.ể ỏ ế ỗ ế
− 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ờ ờ.
7
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
#include <iostream.h> // khai báo t p nguyên m u đệ ẫ ể
void main() // đ c s d ng toán t in cout <<ượ ử ụ ử
{
int h = 2, // Khai báo và kh i t o bi n h = 2ở ạ ế
cout << “Chào các b n, bây gi là ” << h << " gi " ; ạ ờ ờ // in ra màn hình
}
Dòng đ u tiên c a ch ng trình là khai báo t p nguyên m u ầ ủ ươ ệ ẫ iostream.h. Đây là
khai báo b t bu c vì trong ch ng trình có s d ng ph ng th c chu n “ắ ộ ươ ử ụ ươ ứ ẩ cout <<” (in
ra màn hình), ph ng th c này đ c khai báo và đ nh nghĩa s n trong ươ ứ ượ ị ẵ iostream.h.
Không riêng hàm main(), m i hàm khác đ u ph i b t đ u t p h p các câu l nhọ ề ả ắ ầ ậ ợ ệ
c a mình b i d u { và k t thúc b i d u }. T p các l nh b t kỳ bên trong c p d u nàyủ ở ấ ế ở ấ ậ ệ ấ ặ ấ
đ c g i là kh i l nh. Kh i l nh là m t cú pháp c n thi t trong các câu l nh có c uượ ọ ố ệ ố ệ ộ ầ ế ệ ấ
trúc nh ta s th y trong các ch ng ti p theo. ư ẽ ấ ươ ế
III. CÁC B C Đ T O VÀ TH C HI N M T CH NG TRÌNH ƯỚ Ể Ạ Ự Ệ Ộ ƯƠ
1. Qui trình vi t và th c hi n ch ng trìnhế ự ệ ươ
Tr c khi vi t và ch y m t ch ng trình thông th ng chúng ta c n:ướ ế ạ ộ ươ ườ ầ
1. Xác đ nh yêu c u c a ch ng trình. Nghĩa là xác đ nh d li u đ u vào (input)ị ầ ủ ươ ị ữ ệ ầ
cung c p cho ch ng trình và t p các d li u c n đ t đ c t c đ u raấ ươ ậ ữ ệ ầ ạ ượ ứ ầ
(output). Các t p h p d li u này ngoài các tên g i còn c n xác đ nh ki u c aậ ợ ữ ệ ọ ầ ị ể ủ
nó.Ví d đ gi i m t ph ng trình b c 2 d ng: axụ ể ả ộ ươ ậ ạ
2
+ bx + c = 0, c n báo choầ
ch ng trình bi t d li u đ u vào là a, b, c và đ u ra là nghi m x1 và x2 c aươ ế ữ ệ ầ ầ ệ ủ
ph ng trình. Ki u c a a, b, c, x1, x2 là các s th c.ươ ể ủ ố ự
2. Xác đ nh thu t toán gi i.ị ậ ả
3. C th hoá các khai báo ki u và thu t toán thành dãy các l nh, t c vi t thànhụ ể ể ậ ệ ứ ế
ch ng trình thông th ng là trên gi y, sau đó b t đ u so n th o vào trongươ ườ ấ ắ ầ ạ ả
máy. Quá trình này đ c g i là so n th o ch ng trình ngu n.ượ ọ ạ ả ươ ồ
4. D ch ch ng trình ngu n đ tìm và s a các l i g i là l i cú pháp. ị ươ ồ ể ử ỗ ọ ỗ
5. Ch y ch ng trình, ki m tra k t qu in ra trên màn hình. N u sai, s a l iạ ươ ể ế ả ế ử ạ
ch ng trình, d ch và ch y l i đ ki m tra. Quá trình này đ c th c hi n l pươ ị ạ ạ ể ể ượ ự ệ ặ
đi l p l i cho đ n khi ch ng trình ch y t t theo yêu c u đ ra c a NSD. ặ ạ ế ươ ạ ố ầ ề ủ
2. So n th o t p ch ng trình ngu nạ ả ệ ươ ồ
8
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
So n th o ch ng trình ngu n là m t công vi c đ n gi n: gõ n i dung c aạ ả ươ ồ ộ ệ ơ ả ộ ủ
ch ng trình (đã vi t ra gi y) vào trong máy và l u l i nó lên đĩa. Thông th ng khiươ ế ấ ư ạ ườ
đã l u l i ch ng trình lên đĩa l n sau s không c n ph i gõ l i. Có th so n ch ngư ạ ươ ầ ẽ ầ ả ạ ể ạ ươ
trình ngu n trên các b so n th o (editor) khác nhồ ộ ạ ả ưng ph i ch y trong môi trả ạ ư ng tíchờ
h p 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ỳ. ấ
9
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
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ẽ ả ệ ứ ạ ơ
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ấ ữ ươ
10
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
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 << bt_1 ;
cout << bt_2 ;
cout << bt_3 ;
ho c:ặ
cout << bt_1 << bt_2 << bt_3 ;
cũng gi ng câu l nh nh p đây chúng ta cũng có th m r ng l nh in v i nhi uố ệ ậ ở ể ở ộ ệ ớ ề
h n 3 bi u th c. Câu l nh trên cho phép in giá tr c a các bi u th c ơ ể ứ ệ ị ủ ể ứ bt_1, bt_2, bt_3.
Các giá tr này có th là tên c a bi n ho c các k t h p tính toán trên bi n.ị ể ủ ế ặ ế ợ ế
Ví d đ in câu "Chi u dài là " và s 23 và ti p theo là ch "mét", ta có th sụ ể ề ố ế ữ ể ử
d ng 3 l nh sau đây:ụ ệ
cout << "Chi u dài là" ;ề
cout << 23 ;
cout << "mét";
ho c có th ch b ng 1 l nh:ặ ể ỉ ằ ệ
cout << "Chi u dài là 23 mét" ;ề
Tr ng h p ch a bi t giá tr c th c a chi u dài, ch bi t hi n t i giá tr này đãườ ợ ư ế ị ụ ể ủ ề ỉ ế ệ ạ ị
đ c l u trong bi n ượ ư ế cd (ví d đã đ c nh p vào là 23 t bàn phím b i câu l nh ụ ượ ậ ừ ở ệ cin
>> cd tr c đó) và ta c n bi t giá tr này là bao nhiêu thì có th s d ng câu l nh in raướ ầ ế ị ể ử ụ ệ
màn hình.
cout << "Chi u dài là" << cd << "mét" ;ề
Khi đó trên màn hình s hi n ra dòng ch : ẽ ệ ữ "Chi u dài là 23 métề ". Nh v y trongư ậ
tr ng h p này ta ph i dùng đ n ba l n d u phép toán ườ ợ ả ế ầ ấ << ch không ph i m t nhứ ả ộ ư
câu l nh trên. Ngoài ra ph thu c vào giá tr hi n đ c l u trong bi n ệ ụ ộ ị ệ ượ ư ế cd, ch ngươ
trình s in ra s chi u dài thích h p ch không ch in c đ nh thành "chi u dài là 23ẽ ố ề ợ ứ ỉ ố ị ề
mét". Ví d n u ụ ế cd đ c nh p là 15 thì l nh trên s in câu "chi u dài là 15 mét".ượ ậ ệ ẽ ề
M t giá tr c n in không ch là m t bi n nh ộ ị ầ ỉ ộ ế ư cd, cr, mà còn có th là m t bi uể ộ ể
th c, đi u này cho phép ta d dàng yêu c u máy in ra di n tích và chu vi c a hình chứ ề ễ ầ ệ ủ ữ
nh t khi đã bi t ậ ế cd và cr b ng các câu l nh sau:ằ ệ
cout << "Di n tích = " << cd * cr ;ệ
11
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
cout << "Chu vi = " << 2 * (cd + cr) ;
ho c g p t t c thành 1 câu l nh:ặ ộ ấ ả ệ
cout << Di n tích = " << cd * cr << ‘\n’ << " Chu vi = " << 2 * (cd + cr) ;ệ
đây có m t kí t đ c bi t: đó là kí t '\n' kí hi u cho kí t xu ng dòng, khi g pở ộ ự ặ ệ ự ệ ự ố ặ
kí t này ch ng trình s in các ph n ti p theo đ u dòng k ti p. Do đó k t quự ươ ẽ ầ ế ở ầ ế ế ế ả
c a câu l nh trên là 2 dòng sau đây trên màn hình:ủ ệ
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 <iostream.h>.
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 << "Hãy nh p chi u dài: "; cin >> cd;ậ ề
cout << "Và nh p chi u r ng: "; cin >> 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 <iostream.h> // 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 << "Hãy nh p chi u dài: " ; cin >> cd ;ậ ề // nh p d li uậ ữ ệ
cout << "Hãy nh p chi u r ng: " ; cin >> cr ;ậ ề ộ
cout << "Di n tích = " << cd * cr << '\n' ;ệ // in k t quế ả
12
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
cout << "Chu vi = " << 2 * (cd + cr) << '\n';
return ;
}
Ch ng trình này có th gõ vào máy và ch y. Khi ch y đ n câu l nh nh p,ươ ể ạ ạ ế ệ ậ
ch ng trình d ng đ ch nh n chi u dài và chi u r ng, NSD nh p các giá tr c th ,ươ ừ ể ờ ậ ề ề ộ ậ ị ụ ể
ch ng trình s ti p t c th c hi n và in ra k t qu . Thông qua câu l nh nh p d li uươ ẽ ế ụ ự ệ ế ả ệ ậ ữ ệ
và 2 bi n ế cd, cr NSD có th yêu c u ch ng trình cho k t qu c a m t hình ch nh tể ầ ươ ế ả ủ ộ ữ ậ
b t 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 ụ ị ạ ầ ẫ <iomanip.h> đ u ch ngở ầ ươ
trình b ng ch th ằ ỉ ị #include <iomanip.h>.
− 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 << s th ng theo lẽ ẳ ề
trái v i đ r ng ph thu c vào đ r ng c a giá tr đó. Ph ng th c này quiớ ộ ộ ụ ộ ộ ộ ủ ị ươ ứ
đ nh đ r ng dành đ in ra các giá tr là ị ộ ộ ể ị n c t màn hình. N u ộ ế n l n h n đ dàiớ ơ ộ
th c c a giá tr , giá tr s in ra theo l ph i, đ tr ng ph n th a (d u cách) ự ủ ị ị ẽ ề ả ể ố ầ ừ ấ ở
tr c. ướ
− setprecision(n): Ch đ nh s ch s c a ph n th p phân in ra là ỉ ị ố ữ ố ủ ầ ậ n. S số ẽ
đ c làm tròn tr c khi in ra.ượ ướ
− setiosflags(ios::showpoint): Ph ng th c ươ ứ setprecision ch có tác d ng trênỉ ụ
m t dòng in. Đ c đ nh các giá tr đã đ t cho m i dòng in (cho đ n khi đ tộ ể ố ị ị ặ ọ ế ặ
l i giá tr m i) ta s d ng ph ng th c ạ ị ớ ử ụ ươ ứ setiosflags(ios::showpoint).
Ví d sau minh ho cách s d ng các ph ng th c trên. ụ ạ ử ụ ươ ứ
Ví d 3 ụ :
#include <iostream.h> // đ s d ng cout <<ể ử ụ
#include <iomanip.h> // đ s d ng các đ nh d ngể ử ụ ị ạ
#include <conio.h> // đ s d ng các hàm clrscr() và getch()ể ử ụ
void main()
{
13
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
clrscr(); // xoá màn hình
cout << "CHI TIÊU" << endl << "=======" << endl ;
cout << setiosflags(ios::showpoint) << setprecision(2) ;
cout << "Sách v " << setw(20) << 123.456 << endl;ở
cout << "Th c ăn" << setw(20) << 2453.6 << endl;ứ
cout << "Qu n áo l nh" << setw(15) << 3200.0 << endl;ầ ạ
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);
14
Ch ng 1. Các khái ni m c b n c a 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óặ ủ ẫ ộ ả ễ ầ ẫ ụ ỉ
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) ;ỉ ệ ọ ỏ
15
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
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.ầ ả ộ ị ạ ươ ứ ị ạ
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.
2. 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ế ượ ế ướ ạ ị ỉ ủ ứ
16
Ch ng 1. Các khái ni m c b n c a 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:ệ
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 <stdio.h> // đ s d ng các hàm printf() và scanf()ể ử ụ
#include <conio.h> // đ 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
17
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
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:
#include (iostream.h)
void main(); / Gi i phả ương trình b c 1ậ
{
cout << 'Day la chương trình: Gptb1.\nXin chao cac ban';
getch();
}
4. Vi t chế ương trình in n i dung m t bài th nào đó.ộ ộ ơ
5. Vi t chế ương trình in ra 4 dòng, 2 c t g m các s sau và gióng c t:ộ ồ ố ộ
− th ng theo l tráiẳ ề
0.63 64.1
− th ng theo l ph iẳ ề ả
12.78 -11.678
− th ng theo d u ch m th p phânẳ ấ ấ ậ
-124. 6 59.002
65.7 -1200.654
6. Hãy vi t và ch y các chế ạ ương trình trong các ví d 3, 5.ụ
7. Ch ng trình sau khai báo 5 bi n kí t ươ ế ự a, b, c, d, e và m t bi n s ộ ế ố nam. Hãy
đi n thêm các câu l nh vào các dòng … đ ch ng trình th c hi n nhi m v sau:ề ệ ể ươ ự ệ ệ ụ
− Nh p giá tr cho bi n ậ ị ế nam
− Nh p giá tr cho các bi n kí t ậ ị ế ự a, b, c, d, e.
− In ra màn hình dòng ch đ c ghép b i 5 kí t đã nh p và ch "năm" sau đóữ ượ ở ự ậ ữ
in s đã nh p (ố ậ nam). Ví d n u 5 ch cái đã nh p là ụ ế ữ ậ 'H', 'A', 'N', 'O', 'I' và
nam đ c nhap là 2000, thì màn hình in ra dòng ch : ượ ữ HANOI năm 2000.
− Nh p ch ng trình đã s a vào máy và ch y đ ki m tra k t qu .ậ ươ ử ạ ể ể ế ả
#include <iostream.h>
#include <conio.h>
main()
{
18
Ch ng 1. Các khái ni m c b n c a C++ươ ệ ơ ả ủ
int nam;
char a, b, c, d, e;
clrscr();
cin >> nam ;
… ;
cin.get(a); cin.get(b); cin.get(c); … ; … ;
// in k t quế ả
cout << a << … << … << … << … << " nam " << … ;
getch();
}
19