Professional Documents
Culture Documents
Session 02 - Concept
Session 02 - Concept
Mc tiu:
Kt thc bi hc ny, bn c th:
Hiu v s dng c bin (variables)
Phn bit s khc nhau gia bin v hng (constants)
Nm vng v s dng cc kiu d liu khc nhau trong chng trnh C
Hiu v s dng cc ton t s hc.
Gii thiu
Bt c chng trnh ng dng no cn x l d liu cng cn c ni lu tr tm thi d liu y.
Ni m d liu c lu tr gi l b nh. Nhng v tr khc nhau trong b nh c th c xc nh
bi cc a ch duy nht. Nhng ngn ng lp trnh trc y yu cu lp trnh vin qun l mi v tr
nh thng qua a ch, cng nh gi tr lu trong n. Cc lp trnh vin dng nhng a ch ny
truy cp hoc thay i ni dung ca cc nh. Khi ngn ng lp trnh pht trin, vic truy cp hay
thay i gi tr nh c n gin ho nh s ra i ca khi nim bin .
2.1 Bin (variable)
Mt chng trnh ng dng c th qun l nhiu loi d liu. Trong trng hp ny, chng trnh phi
ch nh b nh cho mi n v d liu. Khi ch nh b nh, c hai im cn lu nh sau :
1. Bao nhiu b nh s c gn
2. Mi n v d liu c lu tr u trong b nh.
Trc y, cc lp trnh vin phi vit chng trnh theo ngn ng my gm cc m 1 v 0. Nu mun
lu tr mt gi tr tm thi, v tr chnh xc ni m d liu c lu tr trong b nh my tnh phi
c ch nh. V tr ny l mt con s c th, gi l a ch b nh.
Cc ngn ng lp trnh hin i cho php chng ta s dng cc tn tng trng gi l bin (variable),
ch n mt vng b nh ni m cc gi tr c th c lu tr.
Kiu d liu quyt nh tng s b nh c ch nh. Nhng tn c gn cho bin gip chng ta s
dng li d liu khi cn n.
Chng ta quen vi cch s dng cc k t i din trong mt cng thc. V d, din tch hnh ch
nht c tnh bi :
Din tch = A = chiu di x chiu rng = L x B
Cch tnh li sut n gin c cho nh sau:
Tin li = I = S tin ban u x Thi gian x T l/100 = P x T x R /100
Cc k t A, L, B, I, P, T, R l cc bin v l cc k t vit tt i din cho cc gi tr khc nhau.
23
Xem v d sau y :
Tnh tng im cho 5 sinh vin v hin th kt qu. Vic tnh tng c thc hin theo hng dn sau.
Hin th gi tr tng ca 24, 56, 72, 36 v 82
Khi gi tr tng c hin th, gi tr ny khng cn c lu trong b nh my tnh. Gi s, nu
chng ta mun tnh im trung bnh, th gi tr tng phi c tnh mt ln na.
Tt hn l chng ta s lu kt qu vo b nh my tnh, v s ly li n khi cn n.
sum = 24 + 56 + 72 + 36 + 82
y, sum l bin c dng cha tng ca 5 s. Khi cn tnh im trung bnh, c th thc hin
nh sau:
Avg = sum / 5
Trong C, tt c bin cn phi c khai bo trc khi dng chng.
Chng ta hy xt v d nhp hai s v hin th tng ca chng 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 on m trn l cc bin. Tn bin gip chng ta trnh phi nh a ch ca v tr b
nh. Khi on m c vit v thc thi, h iu hnh m nhim vic cp khng gian nh cn trng
cho nhng bin ny. H iu hnh nh x mt tn bin n mt v tr xc nh trong b nh ( nh).
V tham chiu ti mt gi tr ring bit trong b nh, chng ta ch cn ch ra tn ca bin. Trong v
d trn, gi tr ca hai bin c nhp t ngi dng v chng c lu tr ni no trong b nh.
Nhng v tr ny c th c truy cp thng qua cc tn bin A v B. Trong bc k tip, gi tr ca
hai bin c cng v kt qu c lu trong bin th 3 l bin C. Cui cng, gi tr bin C c hin
th.
Trong khi mt vi ngn ng lp trnh cho php h iu hnh xa ni dung trong nh v cp pht b
nh ny dng li th nhng ngn ng khc nh C yu cu lp trnh vin xa vng nh khng s
dng thng qua m chng trnh. Trong c hai trng hp, h iu hnh u lo vic cp pht v thu
hi nh.
H iu hnh hot ng nh mt giao din gia cc nh v lp trnh vin. Lp trnh vin khng cn
lu tm v v tr nh m cho h iu hnh m nhim. Vy vic iu khin b nh (v tr m d
liu thch hp lu tr) s do h iu hnh m trch, ch khng phi lp trnh vin.
2.2
Hng (constant)
24
Lp trnh c bn C
nh danh (Identifier)
Cc quy tc t tn bin khc nhau tu ngn ng lp trnh. Tuy nhin, vi quy c chun c tun
theo nh :
Tn bin phi bt u bng mt k t ch ci.
Cc k t theo sau k t u bng mt chui cc ch ci hoc con s v cng c th bao gm k
t c bit nh du gch di.
Trnh dng k t O ti nhng v tr m c th gy lm ln vi s khng (0) v tng t ch ci l
(ch thng ca ch hoa L) c th lm ln vi s 1.
Tn ring nn trnh t tn cho bin.
Theo tiu chun C cc ch ci thng v hoa th xem nh khc nhau v d. bin ADD, add v Add
l khc nhau.
Vic phn bit ch hoa v ch thng khc nhau tu theo ngn ng lp trnh. Do , tt nht nn
t tn cho bin theo cch thc chun.
Tn mt bin nn c ngha, gi t v m t r kiu d liu ca n. V d, nu tm tng ca hai s
th tn bin lu tr tng nn t l sum (tng). Nu t tn l s hay ab12 th khng hay lm.
25
2.3.2
T kha (Keywords)
Cc s nguyn.
V d : 10 hay 178993455.
Cc s thc.
V d : 15.22 hay 15463452.25.
Cc s dng.
Cc s m.
Tn.
V d : John.
Gi tr lun l.
V d : Y hay N.
Khi d liu c lu tr trong cc bin c kiu d liu khc nhau, n yu cu dung lng b nh s
khc nhau.
Dung lng b nh c ch nh cho mt bin ty thuc vo kiu d liu ca n.
ch nh b nh cho mt n v d liu, chng ta phi khai bo mt bin vi mt kiu d liu c
th.
Khai bo mt bin c ngha l mt vng nh no c gn cho bin. Vng b nh sau ny s
c tham chiu thng qua tn ca bin. Dung lng b nh c cp cho bin bi h iu hnh ph
thuc vo kiu d liu c lu tr trong bin. V vy, mt kiu d liu s m t loi d liu ph hp
vi bin.
Dng thc chung cho vic khai bo mt bin:
Kiu d liu (Tn bin)
Kiu d liu thng c dng trong cc cng c lp trnh c th c phn chia thnh:
26
Lp trnh c bn C
1 Kiu d liu s - lu tr gi tr s.
2 Kiu d liu k t lu tr thng tin m t
Nhng kiu d liu ny c th c tn khc nhau trong cc ngn ng lp trnh khc nhau. V d, mt
kiu d liu s c gi trong C l int trong khi ti Visual Basic c gi l integer. Tng t,
mt kiu d liu k t c t tn l char trong C trong khi trong Visual Basic n c t tn l
string. Trong bt c trng hp no, cc d liu c lu tr lun ging nhau. im khc duy nht l
cc bin c dng trong mt cng c phi c khai bo theo tn ca kiu d liu c h tr bi
chnh cng c .
C c 5 kiu d liu c bn. Tt c nhng kiu d liu khc da vo mt trong s nhng kiu ny. 5
kiu d liu l:
int l mt s nguyn, v c bn n biu th kch c t nhin ca cc s nguyn (integers).
float v double c dng cho cc s c du chm ng. Kiu float (s thc) chim 4 byte v c
th c ti 6 con s phn sau du thp phn, trong khi double chim 8 bytes v c th c ti 10 con
s phn thp phn.
char chim 1 byte v c kh nng lu mt k t n (character).
void c dng in hnh khai bo mt hm khng tr v gi tr. iu ny s c ni r hn
trong phn hm.
Dung lng nh v phm vi gi tr ca nhng kiu ny thay i theo mi loi b x l v vic ci t
cc trnh bin dch C khc nhau.
Lu : Cc con s du chm ng c dng biu th cc gi tr cn c chnh xc phn thp
phn.
Kiu d liu int
L kiu d liu lu tr d liu s v l mt trong nhng kiu d liu c bn trong bt c ngn ng
lp trnh no. N bao gm mt chui ca mt hay nhiu con s.
Th d trong C, lu tr mt gi tr s nguyn trong mt bin tn l num, ta khai bo nh sau:
int num;
Bin num khng th lu tr bt c kiu d liu no nh Alan hay abc. Kiu d liu s ny cho
php cc s nguyn trong phm vi -32768 ti 32767 c lu tr. H iu hnh cp pht 16 bit (2
byte) cho mt bin c khai bo kiu int. V d: 12322, 0, -232.
Nu chng ta gn gi tr 12322 cho num th bin ny l bin kiu s nguyn
v 12322 l hng s nguyn.
Kiu d liu s thc (float)
Mt bin c kiu d liu s thc c dng lu tr cc gi tr cha phn thp phn. Trnh bin
dch phn bit cc kiu d liu float v int.
im khc nhau chnh ca chng l kiu d liu int ch bao gm cc s nguyn, trong khi kiu d
liu float c th lu gi thm c cc phn s.
V d, trong C, lu tr mt gi tr float trong mt bin tn gi l num, vic khai bo s nh
sau :
27
float num;
Bin khai bo l kiu d liu float c th lu gi tr thp phn c chnh xc ti 6 con s.
Bin ny c cp pht 32 bit (4 byte) ca b nh. V d: 23.05, 56.5, 32.
Nu chng ta gn gi tr 23.5 cho num, th bin num l bin s thc v 23.5 l
mt hng s thc.
Kiu d liu double
Kiu d liu double c dng khi gi tr c lu tr vt qu gii hn v dung lng ca kiu
d liu float. Bin c kiu d liu l double c th lu tr nhiu hn khong hai ln s cc ch s
ca kiu float.
S cc ch s chnh xc m kiu d liu float hoc double c th lu tr ty thuc vo h iu
hnh c th ca my tnh.
Cc con s c lu tr trong kiu d liu float hay double c xem nh nhau trong h thng
tnh ton. Tuy nhin, s dng kiu d liu float tit kim b nh mt na so vi kiu d liu
double.
Kiu d liu double cho php chnh xc cao hn (ti 10 con s). Mt bin khai bo kiu d
liu double chim 64 bit (8 byte) trong b nh.
Th d trong C, lu tr mt gi tr double cho mt bin tn num, khai bo s nh sau:
double num;
Nu chng ta gn gi tr 23.34232324 cho num, th bin num l bin kiu
double v 23.34232324 l mt hng kiu double.
Kiu d liu char
Kiu d liu char c dng lu tr mt k t n.
Mt kiu d liu char c th lu mt k t n c bao ng trong hai du nhy n (). Th d
kiu d liu char nh: a, m, $ %.
Ta c th lu tr nhng ch s nh nhng k t bng cch bao chng bn trong cp du nhy n.
Khng nn nhm ln chng vi nhng gi tr s. V d, 1, 5 v 9 s khng c nhm ln vi
nhng s 1, 5 v 9.
Xem xt nhng cu lnh ca m C di y:
char gender;
gender='M';
Hng u tin khai bo bin gender ca kiu d liu char. Hng th hai lu gi mt gi tr khi
to cho n l M. Bin gender l mt bin k t v M l mt hng k t. Bin ny c cp pht
8 bit (1 byte) trong b nh.
Kiu d liu void
28
Lp trnh c bn C
C c mt kiu d liu c bit gi l void. Kiu d liu ny ch cho trnh bin dch C bit rng
khng c d liu ca bt c kiu no. Trong C, cc hm s thng tr v d liu thuc mt kiu
no . Tuy nhin, khi mt hm khng c g tr v, kiu d liu void c s dng ch ra
iu ny.
2.4.1 Nhng kiu d liu c bn v dn xut
Bn kiu d liu (char, int, float v double) m chng ta tho lun trn c s dng cho vic
trnh by d liu thc s trong b nh ca my tnh. Nhng kiu d liu ny c th c sa i sao
cho ph hp vi nhng tnh hung khc nhau mt cch chnh xc. Kt qu, chng ta c c cc kiu
d liu dn xut t nhng kiu c bn ny.
Mt b t (modifier) c s dng thay i kiu d liu c bn nhm ph hp vi cc tnh hung
a dng. Ngoi tr kiu void, tt c cc kiu d liu khc c th cho php nhng b t ng trc
chng. B t c s dng vi C l signed, unsigned, long v short. Tt c chng c th c p
dng cho d liu kiu k t v kiu s nguyn. B t long cng c th c p dng cho double.
Mt vi b t nh :
1.
2.
3.
unsigned
long
short
khai bo mt bin kiu dn xut, chng ta cn t trc khai bo bin thng thng mt trong
nhng t kha ca b t. Mt gii thch chi tit v cc b t ny v cch thc s dng chng c
trnh by bn di.
Cc kiu c du (signed) v khng du(unsigned)
Khi khai bo mt s nguyn, mc nh l mt s nguyn c du. Tnh quan trng nht ca vic
dng signed l b sung cho kiu d liu char, v char l kiu khng du theo mc nh.
Kiu unsigned ch r rng mt bin ch c th c gi tr dng. B t ny c th c s dng vi
kiu d liu int v kiu d liu float. Kiu unsigned c th p dng cho kiu d liu float trong
vi trng hp nhng iu ny gim bt tnh kh chuyn (portability) ca m lnh.
Vi vic thm t unsigned vo trc kiu d liu int, min gi tr cho nhng s dng c th
c tng ln gp i.
Ta xem nhng cu lnh ca m C cung cp bn di, n khai bo mt bin theo kiu unsigned
int v khi to bin ny c gi tr 23123.
unsigned int varNum;
varNum = 23123;
Ch rng khng gian cp pht cho kiu bin ny vn gi nguyn. Ngha l, bin varNum c
cp pht 2 byte nh khi n dng kiu int. Tuy nhin, nhng gi tr m mt kiu unsgned int h tr
s nm trong khong t 0 n 65535, thay v l -32768 ti 32767 m kiu int h tr. Theo mc
nh, int l mt kiu d liu c du.
Cc kiu long v short
Chng c s dng khi mt s nguyn c chiu di ngn hn hoc di hn chiu di bnh
thng. Mt b t short c p dng cho kiu d liu khi chiu di yu cu ngn hn chiu di
29
Phm vi
-128 ti 127
0 ti 255
-128 ti 127
-32,768 ti 32,767
0 ti 65,535
Ging nh kiu int
-128 ti 127
0 ti 65, 535
Ging nh kiu short int
-2,147,483,648 ti 2,147,483,647
Ging nh kiu long int
0 ti 4,294,967,295
6 con s thp phn
10 con s thp phn
10 con s thp phn
}
Chng ta xem li v d cng hai s v hin th tng chng trc. M gi nh sau :
V d 3:
BEGIN
INPUT A, B
C = A + B
DISPLAY C
END
Trong v d ny, cc gi tr cho hai bin A v B c nhp. Cc gi tr c cng v tng c lu cho
bin C bng cch dng cu lnh C = A + B. Trong cu lnh ny, A v B l nhng bin v k hiu + gi
l ton t. Chng ta s ni v ton t s hc ca C phn sau y. Tuy nhin, c nhng loi ton t
khc trong C s c bn ti phn k tip.
2.5
Nhng ton t s hc c s dng thc hin nhng thao tc mang tnh s hc. Chng c chia
thnh hai lp : Ton t s hc mt ngi (unary) v ton t s hc hai ngi (binary).
Bng 2.2 lit k nhng ton t s hc v chc nng ca chng.
Cc ton t mt ngi
++
--
Chc nng
Ly i s
Tng mt gi tr
Gim mt gi tr
Chc nng
Cng
Tr
Nhn
Ly phn d
Chia
Ly s m
Trong C, cc ton t hai ngi c chc nng ging nh trong cc ngn ng khc. Nhng ton t
nh +, -, * v / c th c p dng cho hu ht kiu d liu c sn trong C. Khi ton t / c p
dng cho mt s nguyn hoc k t, bt k phn d no s c ct b. V d, 5/2 s bng 2 trong
php chia s nguyn. Ton t % s cho ra kt qu l s d ca php chia s nguyn. V d: 5%2
s c kt qu l 1. Tuy nhin, % khng th c s dng vi nhng kiu c du chm ng.
Chng ta hy xem xt mt v d ca ton t s m.
9^2
y 9 l c s v 2 l s m.
S bn tri ca ^ l c s v s bn phi ^ l s m.
Kt qu ca 9^2 l 9*9 = 81.
Thm v d khc:
31
5^3
C ngha l:
5*5*5
Do : 5 ^ 3 = 5 * 5 * 5 = 125.
Ghi ch: Nhng ngn ng lp trnh nh Basic, h tr ton t m. Tuy nhin, ANSI C khng h tr k
hiu ^ cho php tnh ly tha. Ta c th dng cch khc tnh ly tha trong C l dng hm pow()
c nh ngha trong math.h. C php ca n th hin qua v d sau:
...
#include<math.h>
void main(void)
{
.
/* the following function will calculate x to the power y. */
z = pow(x, y);
.
}
V d sau trnh by tt c ton t hai ngi c dng trong C. Ch rng ta cha ni v hm
printf() v getchar(). Chng ta s bn trong nhng phn sau.
V d 4:
#include<stdio.h>
main()
{
int x,y;
x = 5;
y = 2;
printf("The integers are
printf("The addition gives
printf("The subtraction gives
printf("The multiplication gives
printf("The division gives
printf("The modulus gives
getchar();
}
:
:
:
:
:
:
Kt qu l:
The
The
The
The
The
The
integers are
:
addition gives
:
subtraction gives
:
multiplication gives :
division gives
:
modulus gives
:
5 & 2
7
3
10
2
1
32
Lp trnh c bn C
Ton t tr mt ngi
K hiu ging nh php tr hai ngi. Ly i s ch ra hay thay i du i s ca mt gi
tr. V d:
a = -75;
b = -a;
Kt qu ca vic gn trn l a c gn gi tr -75 v b c gn cho gi tr 75 (-(- 75)). Du
tr c s dng nh th gi l ton t mt ngi v n ch c mt ton hng.
Ni mt cch chnh xc, khng c ton t mt ngi + trong C. V vy, mt lnh gn nh.
invld_pls = +50;
khi m invld_pls l mt bin s nguyn l khng hp l trong chun ca C. Tuy nhin, nhiu
trnh bin dch khng phn i cch dng nh vy.
Cc ton t Tng v Gim
C bao cha hai ton t hu ch m ta khng tm thy c trong nhng ngn ng my tnh
khc. Chng l ++ v --. Ton t ++ thm vo ton hng ca n mt n v, trong khi ton t
-- gim i ton hng ca n mt n v.
C th:
x = x + 1;
c th c vit l:
x++;
v:
x = x - 1;
c th c vit l:
x--;
C hai ton t ny c th ng trc hoc sau ton hng, chng hn:
x = x + 1;
c th c vit li l
x++ hay ++x;
V cng tng t cho ton t --.
S khc nhau gia vic x l trc hay sau trong ton t mt ngi tht s c ch khi n c
dng trong mt biu thc. Khi ton t ng trc ton hng, C thc hin vic tng hoc gim
gi tr trc khi s dng gi tr ca ton hng. y l tin x l (pre-fixing). Nu ton t i
sau ton hng, th gi tr ca ton hng c s dng trc khi tng hoc gim gi tr ca n.
y l hu x l (post-fixing). Xem xt v d sau :
a = 10;
33
b = 5;
c = a * b++;
Trong biu thc trn, gi tr hin thi ca b c s dng cho tnh ton v sau gi tr ca b
s tng sau. Tc l, c c gn 50 v sau gi tr ca b c tng ln thnh 6.
Tuy nhin, nu biu thc trn l:
c = a * ++b;
th gi tr ca c s l 60, v b s l 6 bi v b c tng 1 trc khi thc hin php nhn vi a,
sau gi tr c gn vo c.
Trong trng hp m tc ng ca vic tng hay gim l ring l th ton t c th ng trc
hoc sau ton hng u c.
Hu ht trnh bin dch C sinh m rt nhanh v hiu qu i vi vic tng v gim gi tr. M
ny s tt hn so vi khi ta dng ton t gn. V vy, cc ton t tng v gim nn c dng
bt c khi no c th.
Tm tt bi hc
Thng thng, khi chng trnh ng dng cn x l d liu, n cn c ni no lu tr tm
thi d liu ny. Ni m d liu c lu tr gi l b nh.
Cc ngn ng lp trnh hin i ngy nay cho php chng ta s dng cc tn tng trng gi l
bin (variable), dng ch n mt vng trong b nh ni m cc gi tr c th c lu tr.
Khng c gii hn v s v tr b nh m mt chng trnh c th dng.
Mt hng (constant) l mt gi tr khng bao gi b thay i.
Tn ca cc bin (variable), cc hm (function), cc nhn (label) v cc i tng khc nhau do
ngi dng nh ngha gi l nh danh.
Tt c ngn ng dnh mt s t nht nh cho mc ch ring. Nhng t ny c gi l l t
kha (keywords).
Cc kiu d liu chnh ca C l character, integer, float, double v void.
Mt b t c s dng thay i kiu d liu c bn sao cho ph hp vi nhiu tnh hung a
dng. Cc b t c s dng trong C l signed, unsigned, long v short.
C h tr hai loi ton t s hc: mt ngi v hai ngi.
Ton t tng ++ v ton t gim -- l nhng ton t mt ngi. N ch hot ng trn bin kiu
s.
Ton t hai ngi s hc l +, -, *, /, %, n ch tc ng ln nhng hng s, bin hay biu thc.
Ton t phn d % ch p dng trn cc s nguyn v cho kt qu l phn d ca php chia s
nguyn.
34
Lp trnh c bn C
S 10 l mt _______________.
K t u ca nh danh c th l mt s.
Kiu d liu _______ c dng ch cho trnh bin dch C bit rng khng c gi tr
c tr v.
(True / False)
(True / False)
no
B. % v ^
D. Khng cu tr li no c
35
Bi tp t lm
1.
Ct B
8
10.34
Tn nh danh sai
ABC
Hng s nguyn
abc
Hng k t
23
Double
12112134.86868686886
S chm ng
_A1
Tn nh danh ng
$abc
A
Hng dn : Nhiu mc trn ct A c th tng ng ti mt mc n ti ct B.
2. Tnh gi tr ca cc bin sau mi cu lnh di y:
a. int a = 4^4
b. int a = 23.34
c. a = 10
b = a + a++
d. a = -5
b = -a
36
Lp trnh c bn C