
Bài 2 Bi n và Ki u d li uế ể ữ ệ
M c tiêu:ụ
K t thúc bài h c này, b n có th :ế ọ ạ ể
Hi u và s d ng đ c bi n (variables)ể ử ụ ượ ế
Phân bi t s khác nhau gi a bi n và h ng (constants)ệ ự ữ ế ằ
N m v ng và s d ng các ki u d li u khác nhau trong ch ng trình C ắ ữ ử ụ ể ữ ệ ươ
Hi u và s d ng các toán t s h c.ể ử ụ ử ố ọ
Gi i thi uớ ệ
B t c ch ng trình ng d ng nào c n x lý d li u cũng c n có n i đ l u tr t m th i d li uấ ứ ươ ứ ụ ầ ử ữ ệ ầ ơ ể ư ữ ạ ờ ữ ệ
y. N i mà d li u đ c l u tr g i là b nh . Nh ng v trí khác nhau trong b nh có th đ cấ ơ ữ ệ ượ ư ữ ọ ộ ớ ữ ị ộ ớ ể ượ
xác đ nh b i các đ a ch duy nh t. Nh ng ngôn ng l p trình tr c đây yêu c u l p trình viên qu nị ở ị ỉ ấ ữ ữ ậ ướ ầ ậ ả
lý m i v trí ô nh thông qua đ a ch , cũng nh giá tr l u trong nó. Các l p trình viên dùng nh ngỗ ị ớ ị ỉ ư ị ư ậ ữ
đ a ch này đ truy c p ho c thay đ i n i dung c a các ô nh . Khi ngôn ng l p trình phát tri n,ị ỉ ể ậ ặ ổ ộ ủ ớ ữ ậ ể
vi c truy c p hay thay đ i giá tr ô nh đã đ c đ n gi n hoá nh s ra đ i c a khái ni m bi n .ệ ậ ổ ị ớ ượ ơ ả ờ ự ờ ủ ệ ế
2.1 Bi n (variable)ế
M t ch ng trình ng d ng có th qu n lý nhi u lo i d li u. Trong tr ng h p này, ch ng trìnhộ ươ ứ ụ ể ả ề ạ ữ ệ ườ ợ ươ
ph i ch đ nh b nh cho m i đ n v d li u. Khi ch đ nh b nh , có hai đi m c n l u ý nh sau :ả ỉ ị ộ ớ ỗ ơ ị ữ ệ ỉ ị ộ ớ ể ầ ư ư
1. Bao nhiêu b nh s đ c gánộ ớ ẽ ượ
2. M i đ n v d li u đ c l u tr đâu trong b nh .ỗ ơ ị ữ ệ ượ ư ữ ở ộ ớ
Tr c đây, các l p trình viên ph i vi t ch ng trình theo ngôn ng máy g m các mã 1 và 0. N uướ ậ ả ế ươ ữ ồ ế
mu n l u tr m t giá tr t m th i, v trí chính xác n i mà d li u đ c l u tr trong b nh máyố ư ữ ộ ị ạ ờ ị ơ ữ ệ ượ ư ữ ộ ớ
tính ph i đ c ch đ nh. V trí này là m t con s c th , g i là đ a ch b nh .ả ượ ỉ ị ị ộ ố ụ ể ọ ị ỉ ộ ớ
Các ngôn ng l p trình hi n đ i cho phép chúng ta s d ng các tên t ng tr ng g i là bi nữ ậ ệ ạ ử ụ ượ ư ọ ế
(variable), ch đ n m t vùng b nh n i mà các giá tr c th đ c l u tr .ỉ ế ộ ộ ớ ơ ị ụ ể ượ ư ữ
Ki u d li u quy t đ nh t ng s b nh đ c ch đ nh. Nh ng tên đ c gán cho bi n giúp chúng taể ữ ệ ế ị ổ ố ộ ớ ượ ỉ ị ữ ượ ế
s d ng l i d li u khi c n đ n.ử ụ ạ ữ ệ ầ ế
Chúng ta đã quen v i cách s d ng các ký t đ i di n trong m t công th c. Ví d , di n tích hìnhớ ử ụ ự ạ ệ ộ ứ ụ ệ
ch nh t đ c tính b i :ữ ậ ượ ở
Di n tích = A = chi u dài x chi u r ng = L x Bệ ề ề ộ
Cách tính lãi su t đ n gi n đ c cho nh sau:ấ ơ ả ượ ư
Ti n lãi = I = S ti n ban đ u x Th i gian x T l /100 = P x T x R /100ề ố ề ầ ờ ỷ ệ
Các ký t A, L, B, I, P, T, R là các bi n và là các ký t vi t t t đ i di n cho các giá tr khác nhau.ự ế ự ế ắ ạ ệ ị
Bi n và Ki u d li uế ể ữ ệ 1

Xem ví d sau đây :ụ
Tính t ng đi m cho 5 sinh viên và hi n th k t qu . Vi c tính t ng đ c th c hi n theo h ng d nổ ể ể ị ế ả ệ ổ ượ ự ệ ướ ẫ
sau.
Hi n th giá tr t ng c a 24, 56, 72, 36 và 82ể ị ị ổ ủ
Khi giá tr t ng đ c hi n th , giá tr này không còn đ c l u trong b nh máy tính. Gi s , n uị ổ ượ ể ị ị ượ ư ộ ớ ả ử ế
chúng ta mu n tính đi m trung bình, thì giá tr t ng đó ph i đ c tính m t l n n a.ố ể ị ổ ả ượ ộ ầ ữ
T t h n là chúng ta s l u k t qu vào b nh máy tính, và s l y l i nó khi c n đ n.ố ơ ẽ ư ế ả ộ ớ ẽ ấ ạ ầ ế
sum = 24 + 56 + 72 + 36 + 82
đây, Ởsum là bi nế đ c dùng đ ch a t ng c a 5 s . Khi c n tính đi m trung bình, có th th cượ ể ứ ổ ủ ố ầ ể ể ự
hi n nh sau:ệ ư
Avg = sum / 5
Trong C, t t c bi n c n ph i đ c khai báo tr c khi dùng chúng.ấ ả ế ầ ả ượ ướ
Chúng ta hãy xét ví d nh p hai s và hi n th t ng c a chúng trong ví d 1.ụ ậ ố ể ị ổ ủ ụ
Ví d 1:ụ
BEGIN
DISPLAY ‘Enter 2 numbers’
INPUT A, B
C = A + B
DISPLAY C
END
A, B và C trong đo n mã trên là các bi n. Tên bi n giúp chúng ta tránh ph i nh đ a ch c a v trí bạ ế ế ả ớ ị ỉ ủ ị ộ
nh . Khi đo n mã đ c vi t và th c thi, h đi u hành đ m nhi m vi c c p không gian nh cònớ ạ ượ ế ự ệ ề ả ệ ệ ấ ớ
tr ng cho nh ng bi n này. H đi u hành ánh x m t tên bi n đ n m t v trí xác đ nh trong b nhố ữ ế ệ ề ạ ộ ế ế ộ ị ị ộ ớ
(ô nh ). Và đ tham chi u t i m t giá tr riêng bi t trong b nh , chúng ta ch c n ch ra tên c aớ ể ế ớ ộ ị ệ ộ ớ ỉ ầ ỉ ủ
bi n. Trong ví d trên, giá tr c a hai bi n đ c nh p t ng i dùng và chúng đ c l u tr n i nàoế ụ ị ủ ế ượ ậ ừ ườ ượ ư ữ ơ
đó trong b nh . Nh ng v trí này có th đ c truy c p thông qua các tên bi n A và B. Trong b cộ ớ ữ ị ể ượ ậ ế ướ
k ti p, giá tr c a hai bi n đ c c ng và k t qu đ c l u trong bi n th 3 là bi n C. Cu i cùng,ế ế ị ủ ế ượ ộ ế ả ượ ư ế ứ ế ố
giá tr bi n C đ c hi n th . ị ế ượ ể ị
Trong khi m t vài ngôn ng l p trình cho phép h đi u hành xóa n i dung trong ô nh và c p phátộ ữ ậ ệ ề ộ ớ ấ
b nh này đ dùng l i thì nh ng ngôn ng khác nh C yêu c u l p trình viên xóa vùng nh khôngộ ớ ể ạ ữ ữ ư ầ ậ ớ
s d ng thông qua mã ch ng trình. Trong c hai tr ng h p, h đi u hành đ u lo vi c c p phátử ụ ươ ả ườ ợ ệ ề ề ệ ấ
và thu h i ô nh .ồ ớ
H đi u hành ho t đ ng nh m t giao di n gi a các ô nh và l p trình viên. L p trình viên khôngệ ề ạ ộ ư ộ ệ ữ ớ ậ ậ
c n l u tâm v v trí ô nh mà đ cho h đi u hành đ m nhi m. V y vi c đi u khi n b nh (vầ ư ề ị ớ ể ệ ề ả ệ ậ ệ ề ể ộ ớ ị
trí mà d li u thích h p l u tr ) s do h đi u hành đ m trách, ch không ph i l p trình viên.ữ ệ ợ ư ữ ẽ ệ ề ả ứ ả ậ
2.2 H ng ằ(constant)
Trong tr ng h p ta dùng bi n, giá tr đ c l u s thay đ i. M t bi n t n t i t lúc khai báo đ nườ ợ ế ị ượ ư ẽ ổ ộ ế ồ ạ ừ ế
khi thoát kh i ph m vi dùng nó. Nh ng câu l nh trong ph m vi kh i mã này có th truy c p giá trỏ ạ ữ ệ ạ ố ể ậ ị
2 L p trình c b n Cậ ơ ả

c a bi n, và th m chí có th thay đ i giá tr c a bi n. Trong th c t , đôi khi c n s d ng m t vàiủ ế ậ ể ổ ị ủ ế ự ế ầ ử ụ ộ
kho n m c mà giá tr c a chúng không bao gi b thay đ i.ả ụ ị ủ ờ ị ổ
M t h ng là m t giá tr không bao gi b thay đ i. Ví d , ộ ằ ộ ị ờ ị ổ ụ 5 là m t h ng, mà giá tr toán h c luôn làộ ằ ị ọ
5 và không th b thay đ i b i b t c ai. T ng t , ể ị ổ ở ấ ứ ươ ự ‘Black’ là m t h ng, nó bi u th cho màu đen.ộ ằ ể ị
Khi đó, 5 đ c g i là ượ ọ h ng sằ ố (numeric constant), ‘Black’ đ c g i là ượ ọ h ng chu iằ ỗ (string
constant).
2.3 Đ nh danh (Identifier)ị
Tên c a các bi n (variables), các hàm (functions), các nhãn (labels) và các đ i t ng khác nhau doủ ế ố ượ
ng i dùng đ nh nghĩa g i là đ nh danh. Nh ng đ nh danh này có th ch a m t hay nhi u ký t . Kýườ ị ọ ị ữ ị ể ứ ộ ề ự
t đ u tiên c a đ nh danh ph i là m t ch cái hay m t d u g ch d i ( ự ầ ủ ị ả ộ ữ ộ ấ ạ ướ _ ). Các ký t ti p theo cóự ế
th là các ch cái, các con s hay d u g ch d i.ể ữ ố ấ ạ ướ
Arena, s_count, marks40, và class_one là nh ng đ nh danh đúng. Các ví d v các đ nh danh sai làữ ị ụ ề ị
1sttest, oh!god, và start... end.
Các đ nh danh có th có chi u dài tuỳ ý, nh ng s ký t trong m t bi n đ c nh n di n b i trìnhị ể ề ư ố ự ộ ế ượ ậ ệ ở
biên d ch thì thay đ i theo trình biên d ch. Ví d , n u m t trình biên d ch nh n di n 31 con s có ýị ổ ị ụ ế ộ ị ậ ệ ố
nghĩa đ u tiên cho m t tên đ nh danh thì các câu sau s hi n th cùng m t k t qu :ầ ộ ị ẽ ể ị ộ ế ả
Đây là bi n testing.... testingế
Đây là bi n testing.... testing ... testingế
Các đ nh danh trong C có phân bi t ch hoa và ch th ng, c th , arena thì khác ARENA.ị ệ ữ ữ ườ ụ ể
2.3.1 Các nguyên t c cho vi c ch đắ ệ ỉ tặ tên
Các quy t c đ t tên bi n khác nhau tuỳ ngôn ng l p trình. Tuy nhiên, vài quy c chu n đ c tuânắ ặ ế ữ ậ ướ ẩ ượ
theo nh :ư
Tên bi n ph i b t đ u b ng m t ký t ch cái.ế ả ắ ầ ằ ộ ự ữ
Các ký t theo sau ký t đ u b ng m t chu i các ch cái ho c con s và cũng có th bao g mự ự ầ ằ ộ ỗ ữ ặ ố ể ồ
ký t đ c bi t nh d u g ch d i.ự ặ ệ ư ấ ạ ướ
Tránh dùng ký t O t i nh ng v trí mà có th gây l m l n v i s không (0) và t ng t ch cáiự ạ ữ ị ể ầ ẫ ớ ố ươ ự ữ
l (ch th ng c a ch hoa L) có th l m l n v i s 1. ữ ườ ủ ữ ể ầ ẫ ớ ố
Tên riêng nên tránh đ t tên cho bi n.ặ ế
Theo tiêu chu n C các ch cái th ng và hoa thì xem nh khác nhau ví d . bi n ADD, add vàẩ ữ ườ ư ụ ế
Add là khác nhau.
Vi c phân bi t ch hoa và ch th ng khác nhau tuỳ theo ngôn ng l p trình. Do đó, t t nh tệ ệ ữ ữ ườ ữ ậ ố ấ
nên đ t tên cho bi n theo cách th c chu n. ặ ế ứ ẩ
Tên m t bi n nên có ý nghĩa, g i t và mô t rõ ki u d li u c a nó. Ví d , n u tìm t ng c aộ ế ợ ả ả ể ữ ệ ủ ụ ế ổ ủ
hai s thì tên bi n l u tr t ng nên đ t là sum (t ng)ố ế ư ữ ổ ặ ổ . N u đ t tên là ế ặ s hay ab12 thì không hay
l m.ắ
Bi n và Ki u d li uế ể ữ ệ 3

2.3.2 T khóa (Keywords)ừ
T t c các ngôn ng dành m t s t nh t đ nh cho m c đích riêng. Nh ng t này có m t ý nghĩaấ ả ữ ộ ố ừ ấ ị ụ ữ ừ ộ
đ c bi t trong ng c nh c a t ng ngôn ng , và đ c xem là “t khóa”. Khi đ t tên cho các bi n,ặ ệ ữ ả ủ ừ ữ ượ ừ ặ ế
chúng ta c n b o đ m r ng không dùng b t c t khóa nào làm tên bi n.ầ ả ả ằ ấ ứ ừ ế
Tên ki u d li u t t c đ c coi là t khóa.ể ữ ệ ấ ả ượ ừ
Do v y, đ t tên cho m t bi n là ậ ặ ộ ế int s phát sinh m t l i, nh ng đ t tên cho bi n làẽ ộ ỗ ư ặ ế integer thì
không.
Vài ngôn ng l p trình yêu c u l p trình viên ch ra tên c a các bi n cũng nh ki u d li u c a nóữ ậ ầ ậ ỉ ủ ế ư ể ữ ệ ủ
tr c khi dùng bi n đó th t s . B c này đ c g i là khai báo bi n. Ta s nói rõ b c này trongướ ế ậ ự ướ ượ ọ ế ẽ ướ
ph n ti p theo khi th o lu n v các ki u d li u. Ði u quan tr ng c n nh bây gi là b c nàyầ ế ả ậ ề ể ữ ệ ề ọ ầ ớ ờ ướ
giúp h đi u hành th t s c p phát m t kho ng không gian vùng nh cho bi n tr c khi b t đ uệ ề ậ ự ấ ộ ả ớ ế ướ ắ ầ
s d ng nó.ử ụ
2.4 Các ki u d li u (Data types)ể ữ ệ
Các lo i d li u khác nhau đ c l u tr trong bi n là :ạ ữ ệ ượ ư ữ ế
S (Numbers)ố
•Các s nguyên. ố
Ví d : 10 hay 178993455.ụ
•Các s th c.ố ự
Ví d : 15.22 hay 15463452.25.ụ
•Các s d ng.ố ươ
•Các s âm.ố
Tên.
Ví d : John.ụ
Giá tr lu n lý.ị ậ
Ví d : Y hay N.ụ
Khi d li u đ c l u tr trong các bi n có ki u d li u khác nhau, nó yêu c u dung l ng b nhữ ệ ượ ư ữ ế ể ữ ệ ầ ượ ộ ớ
s khác nhau.ẽ
Dung l ng b nh đ c ch đ nh cho m t bi n tùy thu c vào ki u d li u c a nó.ượ ộ ớ ượ ỉ ị ộ ế ộ ể ữ ệ ủ
Ð ch đ nh b nh cho m t đ n v d li u, chúng ta ph i khai báo m t bi n v i m t ki u d li uể ỉ ị ộ ớ ộ ơ ị ữ ệ ả ộ ế ớ ộ ể ữ ệ
c th .ụ ể
Khai báo m t bi n có nghĩa là m t vùng nh nào đó đã đ c gán cho bi n. Vùng b nh đó sau nàyộ ế ộ ớ ượ ế ộ ớ
s đ c tham chi u thông qua tên c a bi n.ẽ ượ ế ủ ế Dung l ng b nh đ c c p cho bi n b i h đi uượ ộ ớ ượ ấ ế ở ệ ề
hành ph thu c vào ki u d li u đ c l u tr trong bi n. Vì v y, m t ki u d li u s mô t lo iụ ộ ể ữ ệ ượ ư ữ ế ậ ộ ể ữ ệ ẽ ả ạ
d li u phù h p v i bi n.ữ ệ ợ ớ ế
D ng th c chung cho vi c khai báo m t bi n:ạ ứ ệ ộ ế
Ki u d li uể ữ ệ (Tên bi n)ế
Ki u d li u th ng đ c dùng trong các công c l p trình có th đ c phân chia thành:ể ữ ệ ườ ượ ụ ậ ể ượ
4 L p trình c b n Cậ ơ ả

1 Ki u d li u s - l u tr giá tr s .ể ữ ệ ố ư ữ ị ố
2 Ki u d li u ký t – l u tr thông tin mô tể ữ ệ ự ư ữ ả
Nh ng ki u d li u này có th có tên khác nhau trong các ngôn ng l p trình khác nhau. Ví d , m tữ ể ữ ệ ể ữ ậ ụ ộ
ki u d li u s đ c g i trong C là ể ữ ệ ố ượ ọ int trong khi đó t i Visual Basic đ c g i là ạ ượ ọ integer. T ng t ,ươ ự
m t ki u d li u ký t đ c đ t tên là ộ ể ữ ệ ự ượ ặ char trong C trong khi đó trong Visual Basic nó đ c đ t tênượ ặ
là string. Trong b t c tr ng h p nào, các d li u đ c l u tr luôn gi ng nhau. Ði m khác duyấ ứ ườ ợ ữ ệ ượ ư ữ ố ể
nh t là các bi n đ c dùng trong m t công c ph i đ c khai báo theo tên c a ki u d li u đ cấ ế ượ ộ ụ ả ượ ủ ể ữ ệ ượ
h tr b i chính công c đó.ỗ ợ ở ụ
C có 5 ki u d li u c b n. T t c nh ng ki u d li u khác d a vào m t trong s nh ng ki u này.ể ữ ệ ơ ả ấ ả ữ ể ữ ệ ự ộ ố ữ ể
5 ki u d li u đó là:ể ữ ệ
int là m t s nguyên, v c b n nó bi u th kích c t nhiên c a các s nguyên (ộ ố ề ơ ả ể ị ỡ ự ủ ố integers).
float và double đ c dùng cho các s có d u ch m đ ng. Ki u ượ ố ấ ấ ộ ể float (s th c)ố ự chi m 4 byte vàế
có th có t i 6 con s ph n sau d u th p phân, trong khiể ớ ố ầ ấ ậ double chi m 8 bytes và có th có t iế ể ớ
10 con s ph n th p phân.ố ầ ậ
char chi m 1 byte và có kh năng l u m t ký t đ n (ế ả ư ộ ự ơ character).
void đ c dùng đi n hình đ khai báo m t hàm không tr v giá tr . Ði u này s đ c nói rõượ ể ể ộ ả ề ị ề ẽ ượ
h n trong ph n hàmơ ầ .
Dung l ng nh và ph m vi giá tr c a nh ng ki u này thay đ i theo m i lo i b x lý và vi c càiượ ớ ạ ị ủ ữ ể ổ ỗ ạ ộ ử ệ
đ t các trình biên d ch C khác nhau. ặ ị
L u ý:ư Các con s d u ch m đ ng đ c dùng đ bi u th các giá tr c n có đ chính xác ph nố ấ ấ ộ ượ ể ể ị ị ầ ộ ở ầ
th p phân.ậ
Ki u d li u intể ữ ệ
Là ki u d li u l u tr d li u s và là m t trong nh ng ki u d li u c b n trong b t cể ữ ệ ư ữ ữ ệ ố ộ ữ ể ữ ệ ơ ả ấ ứ
ngôn ng l p trình nào. Nó bao g m m t chu i c a m t hay nhi u con s .ữ ậ ồ ộ ỗ ủ ộ ề ố
Thí d trong C, đ l u tr m t giá tr s nguyên trong m t bi n tên là ‘num’, ta khai báo nhụ ể ư ữ ộ ị ố ộ ế ư
sau:
int num;
Bi n ếnum không th l u tr b t c ki u d li u nào nh “Alan” hay “abc”.ể ư ữ ấ ứ ể ữ ệ ư Ki u d li u sể ữ ệ ố
này cho phép các s nguyên trong ph m vi -32768 t i 32767 đ c l u tr . H đi u hành c pố ạ ớ ượ ư ữ ệ ề ấ
phát 16 bit (2 byte) cho m t bi n đã đ c khai báo ki u int. Ví d : 12322, 0, -232.ộ ế ượ ế ụ
N u chúng ta gán giá tr 12322 cho ế ị num thì bi n này là bi n ki u s nguyên và 12322 là h ng sế ế ể ố ằ ố
nguyên.
Ki u d li u s th c (float)ể ữ ệ ố ự
M t bi n có ki u d li u s th c đ c dùng đ l u tr các giá tr ch a ph n th p phân. Trìnhộ ế ể ữ ệ ố ự ượ ể ư ữ ị ứ ầ ậ
biên d ch phân bi t các ki u d li u ị ệ ể ữ ệ float và int.
Ði m khác nhau chính c a chúng là ki u d li u ể ủ ể ữ ệ int ch bao g m các s nguyên, trong khi ki uỉ ồ ố ể
d li u ữ ệ float có th l u gi thêm c các phân s .ể ư ữ ả ố
Bi n và Ki u d li uế ể ữ ệ 5