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 d li u cũng c n n i đ l u tr t m th i d li u ươ ơ ư
y. N i d li u đ c l u tr g i b nh . Nh ng v tkhác nhau trong b nh 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 ướ
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 1 0. N uướ ế ươ ế
mu n l u tr m t giá tr t m th i, v trí chính xác n i 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 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. 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 bi nế đ c dùng đ ch a t ng c a 5 s . Khi c n tính đi m trung bình, 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 đ c vi t 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 ). đ 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 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 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 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 l p trình viên. L p trình viên không ư
c n l u tâm v v trí ô nh đ 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 này th truy c p giá tr
2 L p trình c b n C ơ
c a bi n, th m chí 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.d , 5 m t h ng,giá tr toán h c luôn là
5 không th b thay đ i b i b t c ai. T ng t , ươ ‘Black’ m t h ng, bi u th cho màu đen.
Khi đó, 5 đ c g i ượ h ng s (numeric constant), ‘Black’ đ c g i ượ 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) các đ i t ng khác nhau do ế ượ
ng i dùng đ nh nghĩa g iđ 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 m t ch cái hay m t d u g ch d i ( ướ _ ). Các t ti p theo ế
th là các ch cái, các con s hay d u g ch d i. ướ
Arena, s_count, marks40, class_one nh ng đ nh danh đúng. Các d v các đ nh danh sai
1sttest, oh!god, và start... end.
Các đ nh danh th chi u dài tuỳ ý, nh ng s 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. d , n u m t trình biên d ch nh n di n 31 con s ý ế
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 t theo sau t đ u b ng m t chu i các ch cái ho c con s cũng 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 hoa thì xem nh khác nhau d . bi n ADD, add ườ ư ế
Add là khác nhau.
Vi c phân bi t ch hoa 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 ý nghĩa, g i t t ki u d li u c a nó. d , n u tìm t ng c a ế ế
hai s thì tên bi n l u tr t ng nên đ t sum (t ng) ế ư . N u đ t tên ế 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 m t ý nghĩa
đ c bi t trong ng c nh c a t ng ngôn ng , đ c xem “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 ế int s phát sinh m t l i, nh ng đ t tên cho bi n ư ế 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 ế ư
tr c khi dùng bi n đó th t s . B c này đ c g i khai báo bi n. Ta s nói 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 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 nki 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 y, m t ki u d li u s 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ượ
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 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 double đ c dùng cho các s d u ch m đ ng. Ki u ượ float (s th c) chi m 4 byte vàế
có th t i 6 con s ph n sau d u th p phân, trong khi double chi m 8 bytes th 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 ượ ượ
h n trong ph n hàmơ .
Dung l ng nh 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 đ chính xác ph n ượ
th p phân.
Ki u d li u int
ki u d li u l u tr d li u s 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 ‘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 nki 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 floatint.
Ði m khác nhau chính c a chúngki 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