Tải bản đầy đủ (.pdf) (19 trang)

Chương 1. Các khái niệm cơ bản của doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (417.71 KB, 19 trang )

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

×