You are on page 1of 126

Ti liu hng dn lp trnh C

Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

LI M U
Cho mng cc bn n vi bi hc lp trnh C/C++ .
Ti s l ngi hng dn (hay l thy gio nu bn thch

) trong sut cc bi hc.

Vy ti l ai? Tn ti, hay l nickname ca ti l M@teo21. Ti tng vit rt nhiu bi hng


dn khc trn http://www.siteduzero.com, ti cng chnh l ngi to nn trang web ny.
V y khng phi l ln u tin ti vit nhng bi hng dn c bn
Nhng khoan hy ni v ti , hy ni v chnh bn thn cc bn.

Bn khng h bit t g v lp trnh.


Cng khng chc bit lp trnh l g nhng... chc chn l bn ang mun hc lp trnh
ng khng?
V bn phi xc nh chnh xc mc tiu ca mnh l: hc lp trnh.
Nhng lp trnh C / C++... ngha l g?
V c tht s tt nu ta bt u hc t n?
V bn bit lp trnh trc cha?
C phi chng ta c th lm tt c mi th trn my tnh vi n?
Nhim v quan trng ca chng ny l tr li tt c nhng cu hi n gin nh th.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

-1-

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

CHNG I NHNG IU C BN V
NGN NG LP TRNH C
1) "lp trnh" l g?
Lp trnh l g ?
Lp trnh bng ngn ng lp trnh
no ?
Lp trnh c kh khng ?
Trc Nghim Kin Thc.

5) Cng c tnh ton


Nhng tnh ton c bn.
Phng php vit rt gn.
Th vin ton hc.
Trc Nghim Kin Thc.

6) Conditions (iu kin)


Condition "if... else".
Boolean, trung tm ca nhng
condition.
Condition "switch".
Ternary : nhng conditions rt gn.

2) Cng c cn c hc lp trnh
Nhng cng c cn thit cho lp
trnh.
Cc bn c th chn... Dev-C++
Hay l... Visual C++
V ci ny na... Code::Blocks.
Hoc Mac... Xcode.

7) Loops (vng lp)


Th no l vng lp.
Vng lp while.
Vng lp do... while.
Vng lp for.

3) Chng trnh u tin ca bn


Console hay l ca s ?
Nhng dng code ti thiu cn phi
c.
Vit mt tin nhn ra mn hnh.
Nhng ch thch, v cng tin dng !

8) Test Program: Hn hay km, tr chi u


tin ca bn
Chun b v mt vi gi .
p n.
tng ci tin.

4) Th gii ca nhng bin s


Cng vic ca b nh.
Cch khai bo mt bin.
Hin th gi tr ca bin s.
Cch gn gi tr vo bin s.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

9) Function
Cch to v gi mt function.
Xem thm vi v d hiu r hn.

-2-

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bi 1: Lp trnh l g?
Chng ta bt u t mt cu hi n gin nht c th.
Nu bn bit iu ny trc , ti vn khuyn bn nn c li n. Ti s bt u bi hng
dn t zero, dnh mt ngi khng bit t g v lp trnh.

lp trnh (programmer, program) ngha l g?

Vng ti s trnh lm ging nh thy gio dy vn ca ti. Ti s khng a ra cho bn ngun


gc ca t lp trnh (programmer, program). Nhng d sao i na n xut pht t mt t latin
"programmeus".
Ni n gin, lp trnh ngha l to nn nhng "chng trnh my tnh". Nhng chng trnh i
hi my tnh thc hin tt c cng vic.
My tnh bn cha y cc chng trnh tt c mi th loi:
Calculator chnh l mt chng trnh.
Cc cng c x l vn bn ca bn cng l chng trnh.
Cc software dng chat cng l chng trnh.
Tr chi in t cng l chng trnh.
Tm li, nhng chng trnh khp mi ni trn my tnh v cho php thc hin bt c iu g.
Bn c th to ra mt chng trnh mang tnh cch mng nu bn may mn, hoc thc hin mt
game nh nhau 3D trn internet. My tnh ca bn c th lm tt c (tr nhng vic nh lm ra
caf)

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

-3-

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Tr chi ni ting Half-life 2, c lp trnh bng C++

Xin lu rng ti khng ni ngi ta lm ra tr chi ny hon ton ch thng qua vic nh
my vit code. ti l chng ta c th lm nhng iu , nhng chc chn l ngoi vic g
phm ra, bn cn c rt nhiu vic khc lm.

Bn s khng bt u hc lp trnh bng vic to ra mt game 3D. Chng khc no t mnh kt


thc tt c . Chng ta hy bt u t nhng iu c bn. u tin l lm sao hin th ln mn
hnh mt tin nhn.
Bn phi hc tng th tng th mt, v t t bn s c kh nng thc hin nhng chng trnh
vi kh ngy cng gia tng. Mc ch ca ton b bi hng dn ny gip bn c kh nng
xoay s trn bt k chng trnh no c vit bng ngn ng C hay C++

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

-4-

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Lp trnh bng ngn ng no?


Tht s m ni, my tnh ng l mt c my k l: n ch nhn v gi li nhng s 0 v 1.
V d, nu dch cu: thc hin php tnh 3 + 5 v ngn ng my tnh, n s c dng nh sau:
0010110110010011010011110.
(dy s trn do ti ch ra y , tht s th ti khng gii vic dch ra ngn ng my tnh )
Nhng s m bn thy trn, l ngn ng ca my tnh, gi l ngn ng nh phn (language
binary). My tnh ca bn ch hiu c ngn ng ny. Nhng bn v ti, chng ta hon ton
khng th hiu v hc c ngn ng .
V y chnh l vn u tin ca chng ta:
Lm cch no giao tip vi my tnh n gin hn vic dng nhng s 0 hay 1?
My tnh ca bn khng ni c ting Anh cng nh ting Vit. V khng ai quan nim phi
vit mt chng trnh bng ngn ng nh phn, k c nhng nh lp trnh in nht cng khng
lm chuyn .
tng l phi to ra mt ngn ng mi n gin hn v sau n s c chuyn sang ngn
ng nh phn. y l vic ca nhng nh lp trnh chuyn v ngn ng. V cc chng trnh
trnh ny uc to ra bi h, chng ta s khng cn phi thc hin li, tht l may mn phi
khng?
Ni n gin:
Nu bn vit mt lnh bng ngn ng lp trnh no vi ni dung:
thc hin php tnh 3+5
th chng trnh dch s chuyn thnh nhng dng nh sau:
"0010110110010011010011110"
Ti s lp mt biu gip bn hiu r hn:

Biu cc k n gin v vic thi hnh mt chng trnh


Dch gi: Mr. Hung
daihung.pham@yahoo.fr

-5-

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

y ti ch dng nhng t ng n gin gii thch, nhng trong tin hc mi vn u c


mt thut ng ring.
Sut cc bi hc, bn s phi hc khng t nhng thut ng . iu gip bn c th d dng
biu t nhng vn v tin hc, hn na, bn c th hiu c ca mt nh lp trnh no
m bn s tr chuyn sau ny. Hn l lc , nhng ngi xung quanh s nhn cc bn vi nh
mt khc thng, l l do m bn phi ch n vic hc nhng thut ng
Quay li vi biu trn:
Trong u tin: Chng trnh c vit bng ngn ng lp trnh n gin. Cm t Ngn
ng lp trnh n gin cn uc gi l ngn ng bc cao. (high-level programming
language).
C rt nhiu cp bc trong ngn ng lp trnh. V ngn ng bc cng cao cng gn v ging
vi ngn ng ca chng ta (cng ging nh ting Vit hay ting Anh). Ngn ng bc cao gip ta
d dng hn trong s dng, nhng n vn c mt vi thiu st m bn s thy v sau. C rt
nhiu ngn ng bc cao hay thp trong tin hc, trong s bn c th dng lp trnh.
V y l mt vi v d:
C
C++
Java
Visual Basic
Delphi
vv...
Ni thm rng y ti khng sp xp chng theo cp bc ca ngn ng, v th bn ng ngh
rng ngn ng u tin s dng d dng hn hay ngc li. ch l mt vi v d bt cht
ny ra trong u ca ti.
(Cn rt nhiu ngn ng khc na m ti khng lit k ra ht, v s rt di nu ghi ht ra
cc bn b qua cho).

, xin

Mt s ngn ng c bc cao hn cc ngn ng khc (v mt l thuyt th d dng s dng hn),


chng ta s xem xt iu ny sau, c bit l s khc nhau gia ngn ng C v C++.
Mt t ng khc m ta phi nm l: m ngun (code source). n gin l phn m ca
chng trnh c vit bng ngn ng bc cao. V tt c nhng m ngun s c dch thnh
ngn ng nh phn.
Trong giai on tip theo, chng trnh bin dch s dch ngn ng bc cao (C hay C++)
sang nh phn. Chng trnh ny c tn l compiler. Vic bin dch gi l compilation.
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

-6-

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Quan trng: cc ngn ng lp trnh bc cao khc nhau s c cc compiler khc nhau. Ni
cch khc, chng ta khng th dch ngn ng C++ cng vi cch m ta dch ngn ng Delphi.

V sau bn s nhn thy, cng mt ngn ng s c nhiu compilers khc nhau (compiler ca
Microsoft, compiler GNU... ti s ni v chng nhng chng sau). Rt may mn l nhng
compiler gn nh ging nhau (i khi chng c nhng khc bit nh v ti s ch cho bn).

Cui cng, chng trnh nh phn c to ra bi compiler c gi l: executable. Cc chng


trnh ny trn Windows c ui .exe ging nh EXEcutable.

Quay li vi biu va ri nhng thay bng nhng thut ng tin hc chnh xc:

Cng mt biu nhng biu ny dng cc thut ng chnh xc hn.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

-7-

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Ti sao chn hc C/C++?


Nh ti ni vi bn trn, c rt nhiu ngn ng bc cao. Chng ta s bt u bng mt trong
s .
Nhng m bn phi c mt s la chn gia:

Mt ngn ng lp trnh c bc rt cao: d dng s dng, "thng dng", nh Visual


basic. Nhng cc ngn ng ny c rt nhiu khuyt im: u tin l phi mua bn quyn
s dng, gi thnh mc, v b nhiu hn ch. V d, chng trnh m bn vit s ch
chy c trn Windows, ng ngh n vic chy n trn Linux hay Macinstosh! Hay
trn ht, bn khng c th lm tt c nhng g bn mun vi dng ngn ng ny, v iu
khin bn cm thy hn ch khi s dng.

Mt ngn ng khc v tr tng i thp hn (nhng n khng thp lm u!): c


th n s hi kh hn visual basic, nhng chc chn mt iu l vi mt ngn ng nh C
(hay C++) s gip bn hc thm rt nhiu trong vic lp trnh cng nh hiu thm cch
hot ng ca my tnh. V sau hon ton kh nng hc thm mt vi ngn ng
khc nu bn mun. Bn s t ch hn. Mt khc, ngn ng C v C++ c s dng kh
rng ri. N c dng lp trnh phn ln cc chng trnh bn bit. Cui cng, lp
trnh trn C hay C++, bn khng cn phi mua bt k chng trnh no vt ngoi ti tin
ca bn, v ngn ng ny hon ton min ph!

V l l do thc y ti hng dn bn ngn ng C trc tin. Ti khng h ni rng chng ta


bt buc phi bt u t y, nhng la chn ny s gip bn c c nhng kin thc bn vng
v lp trnh.
Ti xem nh y chnh l ngn ng lp trnh u tin ca bn, v bn khng bit t g v lp trnh
trc . Cng c th, bn bit lp trnh ri, nhng vic hc li t c bn khng nh hng
xu t no phi khng
Khoan , c mt ci m ti vn cha hiu: Ti s hc mt ngn ng gi l C / C++ hay ti
s hc 2 ngn ng khc nhau mt l C v mt l C++?

Cu tr li tt nht l bn s cng lc hc c 2 ngn ng. Khng phi l bn phi tng cng


lm vic ln hai ln u
m l 2 ngn ng ny kh ging nhau. (Khi ti ni n 2 ngn ng
cng lc, ti s vit C / C++).

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

-8-

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

V chng ta phi hiu r s khc nhau gia C v C++ trc khi bt u:

Giai on u, lc cc my tnh c khi lng tnh bng tn v c kch thc to nh ngi


nh, ngi ta sng to ra mt ngn ng lp trnh gi l Algol.

Sau nhiu ci tin, ngi ta to ra mt ngn ng mi gi l CPL, v chnh n pht


trin thnh BCPL, sau n c mang tn l ngn ng B. (Cc bn khng cn phi
nm tt c nhng iu ny, ti vit ra ch c thm cht dng v v lch s m thi ).

V trong mt ngy p tri, ngi ta hon tt vic to ra mt ngn ng mi gi l ...


ngn ng C. Qua cc sa i, ngn ng ny vn l mt trong nhng ngn ng c s
dng nhiu nht cho n hm nay.

Khng lu sau , ngi ta xut thm vo ngn ng C mt vi th ci tin, v ngn


ng mi ny c gi l ngn ng C++ hon ton da trn nn tng ca C. Ngn ng
C++ khng c g khc C ngoi tr mt s ci c thm vo. (Nhng ci l g? Chng
ta s thy v sau).

C rt nhiu cch hc lp trnh. Nhiu ngi ngh rng tt hn ht l hc ngay t C++. iu


cng ng, chng tng i ging nhau, C++ ch l C c thm vo nhng du +. Ngn
ng C khng phi l ngn ng gi ci b lng qun, ngc li n c s dng rt nhiu trong
thi i hin nay. N l nn tng ca nhng h iu hnh ln nh Unix hay Windows.
Nu bn bt u bng ngn ng C, sau ny bn hc ngn ng C++ s nhanh v d dng hn. V
bn s khng cn phi hc li tt c nhng g bit, bn ch cn hc nhng ci c thm vo
C++ (v y chnh l u ti cn ni ).

C mt s hiu lm khi c ngi cho rng ngn ng C++ tt hn C, tht ra th n ch cho


php bn lp trnh theo cch khc. C th ni, n ch gip vic lp trnh ca ta nhanh hn v d
dng hn trong vic t chc m ngun ca chng trnh.

Nm vng vn : C v C++ khng phi l 2 ngn ng cnh tranh, i lp vi nhau. Chng ta


u c th dng 2 ngn ng ny lp trnh nhng ci tng t. Ch l dng 2 phng php lp
trnh khc nhau .
iu thun li hn l sau ny c th dng C hay C++ ty theo mun v mc ch ca cc bn.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

-9-

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Lp trnh c kh khng ?
y chnh l cu hi khin bn phi suy ngh nhiu ng khng?
V c phi chng ta bt buc phi l mt nh ton hc cc gii sau nhiu nm hc tp c th
bt u vi vic lp trnh?
Cu tr li khin bn yn tm hn l iu khng ng.
Bn khng cn phi c mt ng cp ton hc tht cao. Nhng kin thc bn cn bt u hc
chnh l:

Php cng (Ti hi vng bn nm vng n


Php tr (hic... hic... )
Php nhn ( )
Php chia

Ti hi vng cc bn bit tt c nhng php tnh .


V chc chn l ti s gii thch cho
bn trong phn tip theo, lm sao my tnh c th thc hin cc php tnh c bn.
Tm li, v ton hc th khng c g kh khn bn vt qua.
Tt c ch ph thuc vo chng trnh m bn mun thc hin, nu l chng trnh lin quan
n ton hc, bn bt buc phi hiu bit nhiu v ton. Nu bn mun lm mt game 3D th i
hi bn phi c kin thc v hnh hc khng gian.
hc ngn ng C / C++, bn khng cn thit phi c nhng kin thc cao cp no c.
Nhng u l ci kh khn ?
Chng ta cn phi bit my tnh hot ng nh th no c th hiu chng ta ang lm nhng
g. V im ny, hy yn tm, ti s c gng ht sc hng dn cho cc bn.
Mt ngi lp trnh cng cn phi c mt vi c im nh sau:

Kin tr: mt chng trnh c th s khng chy tt trong giai don u, v vy bn phi
nhn ni!
T duy tt: chc hn l bn khng cn phi gii lm v ton, ci bn cn l suy ngh mt
cch logic.
Nh nhng: Ngi ta khng nh my bng vic g ba ln bn phm.
iu cng
khng gip chng trnh ca bn chy tt hn t no u.

Tm li mt cch n gin, vic hc lp trnh khng i hi bn phi tht s c kin thc chuyn
su trong mt lnh vc no . Mt ngi dt ton vn c th vit ra mt chng trnh, ci cn
thit chnh l kh nng suy ngh ca bn.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 10 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Tng Kt:

to ra c mt chng trnh my tnh, ngi ta phi vit nhng chng trnh da


trn mt loi ngn ng m my tnh c th bin dch li hiu. Ngi ta gi l
Ngn ng lp trnh.

C rt nhiu loi ngn ng my tnh c phn theo nhiu cp . Nhng ngn ng cao
cp th d s dng hn nhng cha chc s mang li hiu qu cao hn nhng ngn ng
cp thp.

Ngn ng lp trnh C m chng ta ang c hc trong ti liu ny c gi l ngn ng


cp thp v n cng ang l ngn ng lp trnh ph bin nht th gii hin nay.

Source code l tp hp vn bn do bn vit ra th hin ngha ca ngn ng lp trnh.

Compiler l mt chng trnh bin dch c kh nng dch source code sang ngn ng nh
phn, sau chuyn thnh chng trnh Executable (.exe). Chng ta phi bit rng trong
chng trnh nh phn th khng cn cha source code.

Vic lp trnh khng i hi bn phi c mt kin thc chuyn su v mt lnh vc no


nh Ton hc (ngoi tr mt s trng hp chng trnh bn vit i hi phi s dng
nhng cng thc ton hc chuyn su, vd nh cc phn mm m ha). Tuy nhin, mt t
duy logic, nhy bn l iu tht s cn thit i vi mt lp trnh vin.

Ch! Chng ta kt thc bi 1 ri, nhng cc bn vn cha thy bt k dng code no ging nh
chng ta thng nht trc .
Trong chng tip theo, cc bn s bt u hc cch lp trnh vi nhng cng c u tin. Bn s
c hng dn ci t nhng chng trnh cn thit cho bt k ngi hc lp trnh no.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 11 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

TRC NGHIM KIN THC.


Phn ny s gip bn kim tra li kin thc hc c, bn ch vic chn cu tr li ng nht
thi.
Nhng file no c to ra t vic lp trnh ?
A. Nhng file *.exe chy trn Windows
B. Nhng hnh nh (*.jpg, *.png, *.bmp...)
C. Nhng on vidos (*.avi, *.mov...)
Gia C v C++, ngn ng no cho php ta lp trnh tt hn ?
A. C
B. C++
C. C hai u mnh m nh nhau
Chng trnh dch ngn ng cao cp thnh ngn ng nh phn gi l :
A. Programer
B. Brumisateur
C. Compiler
Ngn ng no bn s hc trong giai on u ?
A. C
B. C++
C. C hai

p n:
1234-

A
C
C
C

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 12 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bi 2: Mt vi cng c cn c hc lp trnh
Sau bi m u, chng ta s bt u i su vo bi hc bng cch tr li cu hi Cn s dng
chng trnh no lp trnh?
S khng c vn g qu kh khn trong bi ny, chng ta s dnh cht thi gian tm hiu v
mt s phn mm mi.
Hy tn hng thi gian ny bi v trong cc bi tip theo, chng ta s thc s hc cch lp trnh
v c l s khng c thi gian cho bn nh mt gic u nh.

Nhng cng c cn thit cho vic lp trnh:


Vy theo bn, chng trnh m chng ta ang cn l g ?
Nu nh cc bn c theo di k ni dung bi hc trc th hn l bn phi bit t nht 1 ci tn
no ch.
Bn bit iu ti ang mun ni m ng khng ???
Vng, l trnh bin dch (compiler), mt chng trnh chuyn dng bin dch ngn ng
C/C++ ca bn sang ngn ng nh phn ca my tnh.
Nh ti tng ni s qua cho cc bn bi trc, chng ta c 1 vi trnh bin dch ph bin
cho ngn ng lp trnh C/C++. Vic la chn trnh bin dch no tht s khng phi l vn
qu kh.
No, vy ngoi ra chng ta cn cn nhng g na?
Ti s khng bn phi thc mc thm, di y l nhng hnh trang ti thiu cho mt lp
trnh vin:

Mt chng trnh son tho vn bn (text editor program) vit m ngun (source
code) ca chng trnh. Trn l thuyt th thc hin vic ny chng ta ch cn s dng
phn mm Notepad trong Windows hoc Vi trong Linux l .
Nhng s l tng hn khi bn s dng mt trnh son tho vn bn c th t m mu
sc cc thnh phn trong m ngun nhm gip bn xc nh r rng hn khi cn thit.

Mt chng trnh bin dch m ngun (compiler) gip dch ngn ng lp trnh
C/C++ ca bn sang ngn ng nh phn ca my tnh.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 13 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Mt chng trnh tm v sa li (debugger) gip bn theo di cc li trong chng


trnh ca mnh. Tin khng vui l cho ti by gi chng ta vn cha pht minh ra chc
nng hiu chnh sa cha nhng li ca chng trnh. iu cng ng ngha vi
vic nu bn nm r cch hot ng ca debugger, n s gip bn tm ra li mt cch
d dng, ch vy thi.

Thi gian u, nu bn l ngi thch mo him th bn c th lm vic m khng cn ti


debugger nhng ti tin chc rng khng sm th mun bn cng s cn n n thi.
T nhng iu trn chng ta s thy c 2 trng hp:
TH1: lp trnh, chng ta s phi dng 3 chng trnh ring bit, v y cng l cch
phc tp nht, nhng s tht l n c th hot ng. Chng hn nh vi Linux, nhiu lp
trnh vin vn thch s dng 3 chng trnh ring bit cho cng vic lp trnh ca h. Ti
s khng ni chi tit v vic ny trong bi ny m ti s ch bn mt cch n gin hn.

TH2: Chng ta c chng trnh no bao gm 3 trong 1 khng? Tc l mt chng trnh


c cha 3 thng text editor, compiler v debugger. Cu tr li l c v ngi ta gi
nhng chng trnh ny l IDE.

Chng ta c mt vi IDE ph bin v s c mt cht kh khn trong thi gian u bn c th


chn cho mnh mt IDE ph hp. Nhng c mt iu chc chn l trong mi trng hp, bn
u c th lp trnh vi bt k loi IDE no.

Chn IDE ph hp vi bn:


S kh th v khi gii thiu cho bn mt vi IDE ni ting nht m ti bit. D nhin tt c u l
min ph, hehe. C nhn ti hi ln xn trong vic s dng IDE cho mnh, ti c th dng mi
ngy mt IDE khc nhau ty cm hng.

Mt trong nhng IDE a thch ca ti l Code :: Blocks. N hon ton min ph v


hot ng c trn hu ht cc h iu hnh my tnh ph bin ngy nay. Ti khuyn
bn nn bt u hc lp trnh vi phn mm ny (thm ch n vn rt tt cho tt c mi
ngi v sau). Thng ny c th chy mt m trn Windows, Mac v Linux.

Khng th khng nhc ti mt sn phm ni ting trn Windows, n l phn mm


Microsoft Visual C ++. C rt nhiu phin bn tnh ph (tt nhin l mc vcl). Nhng
may thay, c mt phin bn min ph tn l Visual C++ Express, thng ny tht s rt
ngon lnh (n ch khc phin bn tnh ph mt s im nh nht thi). Phin bn min
ph ny cung cp cc chc nng rt y v c mt b module hiu chnh li tuyt vi
(debugging). Em ny th tt nhin l ch chy c trong mi trng Windows

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 14 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

i vi h iu hnh Mac OS X, cc bn c th s dng mt phn mm tn l Xcode,


thng c cung cp sn trn cc a ci t Mac OS X. IDE ny c cc lp trnh
vin lm vic trn h iu hnh Mac nh gi rt cao. V hin nhin lun, n ch chy
c trn Mac OS X.
Lu mt cht vi ngi dng Linux: C rt nhiu IDE cho h iu hnh ny, nhng c
v nhng lp trnh vin c kinh nghim li thch th vi vic tch bit mi th ra thay
v s dng IDE 3 trong 1, cng ch hi kh hn mt cht thi. Trong trng hp ca
chng ta by gi, ti khuyn cc bn nn ci t Code :: Blocks d bn ang dng Linux,
ch yu l c th thun tin hn trong vic theo di bi vit ca ti thi.
Vy th ci IDE no l tt nht ?

Tt c nhng IDE ti va gii thiu cho bn u c th gip bn lp trnh tt m khng c vn


g. C th s c ci ny cung cp nhiu ty chn tt hn, ci kia li cho ta trc quan sinh ng d
nhn, d xi hn. Nhng trong mi trng hp, chng trnh m bn to ra s u ging nhau d
cho bn s dng IDE no. V vy ng qu quan trng ha vic la chn IDE tt nht.
Ni t ny n gi th ti quyt nh s s dng Code :: Blocks. Nu bn mun theo di nhng
g ti sp ni di y mt cch trc quan sinh ng nht, ti ngh bn nn ci t phn mm
ny u tin.

Code :: Blocks (Windows, Mac, Linux)


Code :: Blocks IDE l hon ton min ph v c th ci t c trn h iu hnh Windows,
Mac v Linux.
Hin ti IDE ny ch mi c phin bn ting Anh thi, ng iu ny ngn cn bn s dng
n.
Hy nh rng, trong sut qu trnh hc lp trnh, bn s cn bt gp nhiu ti liu khc c vit
bng ting Anh, v by gi chng ta li c thm 1 l do chnh ng trau di kh nng ngoi
ng ng khng no.
Xin mi bn ti Code :: Blocks v theo link ny http://www.codeblocks.org/downloads/binaries
(hoc c th ln google search l ra ngay thi m).

Nu bn l ngi dng Windows, hy ti v phin bn c ui mingw-setup.exe, bi v


ch c phin bn ny mi tch hp sn compiler trong , nu ti nhng phin bn khc
thi bn s phi vt v bin dch chng trnh y.

Nu bn ang dng Linux th ch vic chn phin bn ph hp vi nh phn phi h iu


hnh ca bn.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 15 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Cui cng l vi Mac OS X, ch n gin l ti v phin bn mi nht trong danh sch


cc phin bn m bn nhn thy trn website.
Hy cn thn ti cho ng phin bn cho h iu hnh Windows ca bn. Bn c th xem
hnh di r hn.

Nu khng nm r th c ti phin bn c ui mingw-setup.exe nh hnh trn:

Giao din chnh ca Code::Blocks sau khi ci t v chy chng trnh.


Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 16 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Quan st hnh trn chng ta thy c 4 vng ln c nh s, ti s gii thiu s cho cc bn v


chng nh:
1. Thanh cng c (toolbar): N cha rt nhiu nt chc nng nhng ch mt s t trong l
c s dng thng xuyn. Ti s ni v nhng nt ny sau.
2. Danh sch cc tp tin d n (list of project files): Khu vc bn tri ny hin th danh sch
cc tp tin c cha m ngun (source code) trong chng trnh ca bn. Lu rng hnh
nh ny c chp khi cha c project no c to, do bn khng thy bt k danh
sch tp tin no c hin th.
3. Khu vc chnh (main area): y chnh l ch dnh cho bn vit m ngun (source code).
4. Khu vc thng bo (notification area): Hay cn c gi l death zone vng cht
chc, ni ny s hin th li bin dch nu m ca bn c vn , v iu ny vn thng
xuyn xy ra.

No, hy nhn vo hnh di v ti 4 nt c bit trn thanh cng c. Bn s thy cc nt


chc nng theo th t: Buil, Run, Build and Run, Rebuild. Tt c nhng nt chc nng ny s
c s dng rt thng xuyn:

Ti s ni cho bn bit chc nng ca nhng nt ny:


1. Build: Hay cn gi l bin dch. Nt chc nng ny s chuyn tt c cc tp tin cha m
ngun trong d n ca bn n trnh bin dch thc thi nhng tc v. Nu xy ra li
(chc chn l s xy ra ko sm th mun thi), thc thi s khng hon thnh v bn s
nhn thy thng bo khu vc bn di Code :: Blocks nh phn trn gii thiu.
2. Run: Hay cn gi l chy chng trnh. Nt ny gip chng trnh ca bn chy ln sau
khi c bin dch, iu ny gip bn kim tra xem chng trnh bn vit hot ng
nh th no, c ng nh bn mun. Theo nh th t th bn s bin dch trc ri sau
chy chng trnh, nhng c mt nt th 3 gip bn hp 2 qu trnh ny li trong 1 c
click chut

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 17 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

3. Build and Run: Chc hn l bn khng cn phi l mt thin ti hiu c ci nt th


3 ny ch l mt s giao lu kt hp t 2 nt u tin. y dng nh s l nt bn
dng thng xuyn nht. Lu rng, nu c bt k li no xy ra trong qu trnh bin
dch, chng trnh s khng chy c v tt c nhng g bn nhn c l mt ng
thng bo li pha di nh.
4. Rebuild: Bin dch li. Khi bn bin dch chng trnh th thc t, Code :: Blocks s bin
dch li nhng tp tin m bn thay i. i khi ti l i khi thi nh bn s
cn Code :: Blocks bin dch li tt c cc tp tin. Chng ta s c bit khi no chng ta
cn s dng chc nng ny v c th nhng g n s lm trong nhng bi tip theo. Ti
thi im hin ti ti ngh chng ta khng nn nhi nht qu nhiu. Tm thi nt chc
nng gn nh khng cn thit i vi chng ta.
Ti cng khuyn cc bn nn tp thi quen s dng cc phm tt thay v nhp chut vo
cc nt chc nng. Vic ny s gip cc bn tit kim c kh nhiu thi gian v n
din ra rt thng xuyn. Chng hn nh Build and Run, cc bn ch cn bm F9 l
c.

Cch to mt d n (Project) mi:


to mt project mi, tht s rt n gin: Bn ch cn chn File / New / Project hoc nhp
chut thng vo dng Create new project trn khu vc chnh trc mt bn.

C 2 cch to 1 Project mi
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 18 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Trong ca s va m ra (xem hnh sau), chn Console application

Nh bn thy, Code::Blocks xut rt nhiu loi chng trnh khc nhau s dng cc
th vin ph bin nh SDL (2D), OpenGL (3D), Qt v wxWidgets (Windows) Hin ti
th nhng biu tng ny ch nhn cho p thi ch chng vn cha c ci t trn
my tnh ca bn, bn nn lt qua chng.
Chng ta s tp trung vo cc loi chng trnh khc cc bi hc sau ny, thi gian ny
chng ta s phi nm vng v Console trc, bi v tht s bn vn cha trnh
lm vic vi cc loi chng trnh khc u.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 19 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Tip theo bm Go to mt project mi.

Chng trnh s hi bn mun to project cho ngn ng C hay C++. Hy chn C v click next.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 20 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Chng trnh s yu cu bn t tn cho project v chn khu vc lu tr n. Sau bm next.

ca s cui cng ny chng ta c th chn compiler bin dch chng trnh sau ny. Ti
thng chn compiler tn GNU GCC v tt c nh mc nh. ng qun nh du chn vo
2 chc nng Debug v Release nh.

Cui cng ch cn bm Finish l xong.


Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 21 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Code::Blocks gip bn to mt d n mi vi mt cht m ngun (source code) c vit sn


trong . Nhn vo pha bn tri mn hnh khu vc hin th danh sch tp tin m ngun.
hin th cc tp tin cn thit. t nht bn s thy 1 tp tin l main.c
Trong tp tin ny bn s thy c vi dng code mc nh c vit sn khi nhp chut tri 2
ln vo n.

Vy l cc bc gii thiu v IDE Code::Blocks xong v bn bit cch to project cho


ring mnh ri ng khng.
Tm thi ti xin php khng hng dn cch ci t 2 IDE cn li (Visual Studio Express v
Xcode). Nhng ti ngh cc bn hon ton d sc thc hin nhng thao tc ny ng khng. Cn
v link ti phn mm th ch cn nh Google l c ng khng no.

Tng kt

bt u hc lp trnh bn cn c ti thiu 3 cng c: Trnh son tho vn bn (text


editor), trnh bin dch (compiler) cng vi mt trnh tm v sa li (debugger).

Cc bn c th ci nhng chng trnh trn ring bit hoc ci mt chng trnh bao gm
3 trong 1, gi l IDE.

Code::Blocks, Visual Studio Express, Xcode l nhng IDE rt ph bin v thch hp cho
cc bn trong thi im hin ti.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 22 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bi 3: Chng trnh u tin ca bn


Chng ta chun b xong sn chi, chng ta s bt u cuc chi ngay by gi, bn ang cm
thy th no?
Mc ch ca phn hng dn ny gip bn c th to ra chng trnh u tin cho chnh
mnh!
Chng trnh u tin ca bn:

Console hay ca s ?
on m ti thiu
Vit mt tin nhn ln mn hnh
Nhng ch thch, kh tin dng !
TRC NGHIM KIN THC.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 23 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Console hay l ca s?
C 2 loi chng trnh :

Nhng chng trnh dng ca s.


Nhng chng trnh dng console.

Nhng chng trnh dng ca s:


Ti ngh rng cc bn bit ci ny, ly mt v d in hnh:

Chng trnh paint

l mt chng trnh dng ca s, cc bn rt mun to ra nhng chng trnh nh th ny


ng khng?
Vi C, chng ta hon ton c kh nng lm c. Nhng cc bn cha sc to ra chng vo
lc ny.
Tt hn l ta bt u vi vic to ra mt chng trnh dng console.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 24 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Nhng chng trnh dng ca s c ging vi nhng chng trnh dng console
khng?

Nhng chng trnh di dng console:


Console chnh l nhng chng trnh xut hin u tin trn th gii. Vo thi k , my tnh
ch c kh nng to ra nhng dng ch en v trng v khng mnh hin th nhng ca s
nhiu mu sc v hiu ng nh bn thy hin nay.
Sau , Windows cho ra i my tnh c kh nng chy nhng chng trnh dng ca s. V
vy m sn phm ca h c dng rng ri, khin phn ln ngi s dng qun mt s tn ti
ca console.
V ti chc l bn ang mun bit console l g phi khng?
Ti c mt tin rt mi cho bn y! console vn tn ti! Linux gi li s thch s dng
console. V y l hnh dng ca console trn Linux:

Mt v d v console trong Linux

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 25 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

l console v nhng c im cn ch l:

Console ngy nay khng ch hin th trng v en.


Console khng c nhng ngi mi s dng cho n lm.
Console l mt cng c mnh m nu nh chng ta bit cch s dng.

Vit mt chng trnh dng console n gin v l tng hn cho nhng ngi mi hc lp
trnh (s khng h n gin nu bt u hc bng cch to ra mt chng trnh dng ca s)
Ghi thm rng, console ngy nay c ci tin rt nhiu: hin th c nhiu mu sc, v bn
c th t mt hnh nh no ln nn ca console. V y l hnh nh mt console c to
dng kh honh trng trn HH linux

H h.. kh kinh d

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 26 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Trn h iu hnh Windows c console hay khng?


C nhng n b giu i, ta c th ni nh th.
Bn c th gi n bng cch vo Start => run => nhp cmd.
V y chnh l console ca Windows, tht k diu:

Console trn Windows

Nu bn ang s dng Windows, chng trnh u tin bn sp to ra s tng t nh th.


Vi vic bt u t console, bn s hc c nhng kin thc lp trnh nn tng cn thit c
th to ra nhng chng trnh dng ca s v sau nn ng nn ch nh!

Nhng dng code ti thiu cn phi c.


Trn bt k cng c lp trnh no, chng ta u phi vit ra t nht mt on code, tuy rng
chng khng thc hin iu g nhng l iu bt buc.
l on code ti thiu m ta sp sa tm hiu ngay sau y. Hu ht cc chng trnh vit
bng ngn ng C u phi s dng.
Ti s s dng IDE (Integrated Development Environment) Code::Blocks hng dn bn.
iu bn cn lm sau khi m Code::Blocks l to mt project mi nh ti hng dn bi
trc (vo menu chn File / New / Project, chn Console Application v chn ngn ng C).

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 27 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Code::Blocks to sn mt on m ti thiu m chng ta cn:


C Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf ("Hello world!\n");
return 0;
}

Cn ghi ch l c mt dng trng cui on code. c thc hin bng cch nhn
phm "ENTER" sau du " } ". Mi tp tin C bnh thng u phi kt thc bng mt dng trng
v cng khng c g nghim trng nu bn khng thc hin n, ch l compiler c th s hin th
mt thng tin warning thng bo.
Ghi ch th 2 l dng
int main ( )
cng c th c vit thnh:
int main (int argc, char *argv[ ])
C hai cch vit u ng, nhng cch vit th 2 thng dng hn rt nhiu. Ti s s dng cch
vit ny nhng bi hng dn k tip. Hin gi, bn c s dng cch vit no cng khng quan
trng v ta vn cha c kin thc hiu c ngha v cch hot ng ca chng.
Nu bn ang s dng mt IDE khc, hy copy on code trn vo file main.c
Hy lu li. Ti bit l chng ta vn cha lm g c, nhng hy lu li, y l mt thi quen tt
cn tp. Bnh thng bn ch dng duy nht mt file source "main.c" (nhng file cn li l file
project c to bi IDE ca bn).

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 28 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

ngha on m ti thiu trn:


on code vi bn tht rc ri nhng vi ti l on code hin th mt tin nhn ln mn
hnh.
Chng ta bt u hc cch c v hiu chng .
Bt u t 2 dng u tin, chng c v ging nhau:
C Code:
#include <stdio.h>
#include <stdlib.h>
y chnh l nhng dng c bit thng thy u nhng file source v d dng nhn bit v
n bt u t du #. Ta gi chng l preprocessor directives (nhng ch th tin x l) v n
s c c bng mt chng trnh gi l preprocessor (chng trnh tin x l), chng trnh
ny s chy u tin khi ta thc hin compilation.
Chng ta thy hnh v n gin v compilation chng trc. Nhng qu trnh thc s
khng h d dng nh vy, c rt nhiu th din ra trong . Ti s ni sau ny, ti thi im
hin ti, cc bn ch cn bit cch vit nhng dng u tin vo file ca bn l .
Nhng nhng dng ngha l g? Ti rt mun bit iu !
T include ting Anh c ngha l t vo, bao gm. N cho php thm vo project mt s file.
Nhng file ny s c s dng trong qu trnh compilation.
y c 2 dng, vy l s c 2 file c thm vo. Nhng file ny c tn l stdio.h v stdlib.h.
l nhng file tn ti trc trong source v lun sn sng khi bn gi ra. Chng ta
thng gi n l th vin (library). V nhng file ny cha nhng on code c vit sn cho
php hin th mt on vn ln mn hnh.
Ghi ch: Th vin ting anh l library. Bn hy nm vng ngha dch chnh xc ca n.
Ti ngh vit nam mnh ch gi l th vin thi nh?

Nu khng c nhng file th vin , ta khng th no ghi c mt on vn ln mn hnh.


V nguyn tc, my tnh ca bn s khng hiu g c.
Tm li, 2 dng u tin cho php ta ghi mt tin nhn ln mn hnh "d dng".

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 29 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

C Code:
int main ( )
{
printf ("Hello world!\n");
return 0;
}

Ci m bn thy trn, ngi ta gi l mt function. Mt chng trnh C hu nh cu to bi


cc function, Ti thi im ny, chng trnh ca chng ta ch c mt function duy nht.
Mt function cho php chng ta tp hp li cc lnh cho my tnh, nhng lnh ny cho php ta
thc hin chnh xc mt iu g . V d, ta c th vit mt function m_mt_tp_tin trong
cha ng nhng ch dn v cch m mt tp tin cho my tnh.
Li ch l, mt khi function c vit ra, bn khng cn phi ni thm g na c. My tnh s
bit lm vic bng cch no.
Vn cn qu sm chng ta tm hiu chi tit v nhng thnh phn cu to nn mt function.
Chng ta ch xem xt nhng phn chnh ca n. cu u tin, ch th hai (main) l tn ca
function. Theo nguyn tc, main l mt tn c bit, n ch dng t cho function chnh ca
chng trnh, v lc no chng trnh cng s bt u t function main.
Mt function lun c m u v kt thc, gii hn bi nhng du { v }. Tt c function main
ca chng ta u nm trong . Nu bn theo kp nhng g ti ni, th function main ca
chng ta gm 2 dng:
C Code:
printf ("Hello world!\n");
return 0;
Ta gi nhng dng nm trong mt function l cc instruction. (Hy nm vng nhng t ng
ny ).
(instruction: ch th, ch dn, cu lnh)

Mi mt instruction l mt lnh dnh cho my tnh, v n yu cu my tnh phi thc hin chnh
xc mt hnh ng g .
Nh ti ni vi bn, cng vic ca nhng ngi lp trnh l ng no vit nhng
instruction, v khi bn thnh thc, bn s c th to ra nhng function nh function
m_mt_tp_tin hay function nhn_vt_i_ti trong mt game no .
Mt chng trnh khng g khc hn l to nn mt dy cc instruction: instruction hy lm ci
ny instruction hy lm ci kia... Bn ra nhng lnh c sp t v my tnh s thc hin
cc lnh .
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 30 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Quan trng: Tt c cc instruction u kt thc bng mt du chm phy ; . Hay


ni khc hn l c im nhn bit mt instruction. Nu bn qun chng, chng trnh ca
bn s khng dch c.
Dng u tin:
C Code:
printf ("Hello world!\n");
Yu cu my tnh hin th ln mn hnh "Hello world!". Khi chng trnh bn chy n dng
ny, n s hin th tin nhn ra mn hnh, sau chuyn sang instruction k tip.
C Code:
return 0;
C ngha l kt thc,
yu cu gi gi tr 0.

dng ny biu th rng ta n giai on kt thc function main v

Vy th ti sao chng trnh phi tr v s 0?

Trn thc t, mi chng trnh khi kt thc s gi v mt gi tr, v d nh ni rng tt c hot


ng tt (0= tt c hot ng tt, nhng s khc c ngha l error). Hu nh nhng gi tr
ny khng h c s dng, nhng thc t n vn tn ti.
Chng trnh ca bn cng c th chy khi khng c return 0; nhng s chnh xc v ng hn
nu ta thm vo.
Vy l! Chng ta tm hiu mt t v cch hot ng ca on m ti thiu trn.
Hn l cc bn vn cn mt s nghi vn khc v chng ta khng tm hiu su lm. Nhng bn
hy yn tm, tt c nhng cu hi s tng t tng t mt c gii p. Ti khng mun gii thch
cho bn tt c trong mt ln, nu khng u c bn s hon ton ri bem, ti m bo.
n gi, bn vn theo kp ti ng khng? Bn khng cn thit phi c gng c ht mt mch
u. Hy ngh ngi v sau lm vic vi tinh thn minh mn nht.
Tt c nhng g ti va hng dn cho bn u l nn tng, cn nu bn cm thy khng c vn
g th ta tip tc.
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 31 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Ti s v cho bn li mt biu tng hp vi nhng t ng ta va hc:

Test chng trnh


Nhanh thi, bn ch cn bin dch chng trnh ri chy. (Nhn vo nt Build & Run trong
Code::Blocks).
Nu bn vn cha lu file li, Code::Blocks s yu cu bn save file li, hy thc hin iu .

Nu compilation khng thc hin c v bn c li dng My-program - Release"


uses an invalid compiler. Skipping... Nothing to be done iu c ngha l bn ti v
s dng phin bn Code::Blocks khng c mingw (compiler). Hy quay v site Code::Blocks ti
v phin bn c mingw.
V y l chng trnh u tin ca bn:

Chng trnh u tin ca bn!


Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 32 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Chng trnh hin th "Hello world!" (dng th nht).


Nhng dng k tip c to ra bi Code::Blocks v gii thch rng chng trnh c chy
trong khong thi gian 0.021s k t lc bt u.
Sau Code::Blocks yu cu bn nhn vo mt phm bt k ng ca s li. Chng trnh ca
bn s dng li.
Vng, ti bit rng ci chng c ngha g c, ging nh mt tr a nhng l tt c nhng
g bn va hc c.
Nhng d sao, cng l chng trnh u tin ca bn, hy nh li cm gic , c th n s
theo bn sut c i y.
Khng phi vy sao ?...
Trc khi bn cho ti thy v mt ca bn lc ny, ti xin php chng ta bc sang phn tip
theo, khng chm tr.

Vit mt tin nhn ln mn hnh


K t by gi, chng ta s t vit code ca mnh vo chng trnh.
Nhim v ca cc bn l hin th tin nhn Xin chao ln mn hnh.
Ging nh trc console s m ra. Tin nhn Xin chao s xut hin trong .
Lm cch no vit mt tin nhn ln mn hnh?
Vic ny kh n gin. Nu bn s dng li on code trn, bn ch cn thay "Hello world!"
bng "Xin chao" trong cu c cha printf.
Ti ni printf l mt instruction. N ra lnh cho my tnh: Hy hin th cho ti mt tin nhn
ln mn hnh.
Cn bit thm rng printf l mt function c vit bi nhng lp trnh vin i trc.
function ny u ? Ti ch thy tn ti mi function main m thi !

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 33 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bn c nh hai dng ny ch ?
C Code:
#include <stdio.h>
#include <stdlib.h>
Ti ni vi bn rng n cho php ta thm vo chng trnh nhng th vin. V nhng th
vin cha y nhng function c vit sn bn trong. stdio.h cha ng nhng function
cho php hin th mt ci g ln mn hnh (v d nh function printf), nhng n i hi ngi
s dng phi nh ra mt ci g (y l nhng function m ta s thy sau ny).
My tnh, cho bn i!
Trong function main, chng ta gi function printf.
gi mt function rt n gin: ta ch cn ghi ra tn ca n, k tip l m ngoc ng ngoc "(
)", v mt du chm phy ";".
printf ( );
Nhng cng vic ca bn vn cha xong u. Chng ta phi cho function printf mt tin nhn
hin th. Hy m ngoc ( ) sau printf. Trong , m ngoc kp " " . Cui cng nh iu g bn
cn my tnh hin th bn trong.
C Code:
printf ("Xin chao");
Ti hi vng rng bn khng qun mt du chm phy " ; " cui cng, ti nhc li l n rt quan
trng! N cho php my tnh hiu rng instruction ca ta kt thc y.
V y l code source m bn phi c c:
C Code:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
printf ("Xin chao");
system ("PAUSE");
return 0;
}

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 34 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Chng ta c 3 instruction yu cu my tnh thc hin:


1. Hin th Xin chao ln mn hnh.
2. a chng trnh vo giai on ngh, hin th tin nhn "Press any key to continue" v
ch i cho n khi ta nh thm 1 phm bt k ln bn phm chuyn sang instruction
tip theo.
3. Function main kt thc, tr v 0. Chng trnh kt thc.
Vic a chng trnh vo trng thi ngh c ngha nh th no? Chng ta c c
php xa i cu lnh system(PAUSE) hay khng?
C ch,
s thy.

chc chn l bn c th. Hy th chy chng trnh khng c instruction ny v bn

Chng trnh s khng dng li. Ni r hn l, my tnh s hin th tin nhn Xin chao v tt
chng trnh. Ca s ca console s hin ra v bin mt vi vn tc nh sng, bn s khng c
thi gian nhn ra iu g.
Tht ngu ngc, phi khng?
Ghi thm l, vi mt s IDE, nh l ti ni trc , n s t ng dng li cui chng
trnh. Trong trng hp instruction system(PAUSE) coi nh v dng, bn c th xa n i.
V chng ta hy test chng trnh vi pause, v n s hin th:

Cui cng, chng trnh hin th "Xin chao" c hon thnh.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 35 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Nhng tht s n khng hon ton hin th xin chao, c mt dng khc cng hin th
sau n.
Tha bn, khng c vic g nghim trng y c, chng ta s hc cch sa cha n ngay y.
Bn mun kt qu s a ra mn hnh mt dng khc nm di dng Xin chao ca chng ta,
tng t nh vic g phm "enter" xung dng khi chat vy.
Tt nhin khi chat hay vit code source bn s xung dng bng cch nhn enter, nhng chng ta
ang ni n vic xung dng cho on vn c in ra mn hnh console.
lm iu chng ta phi s dng nhng k t c bit.

Nhng k t c bit:
Nhng k t c bit l nhng k t cho my tnh hiu rng ta mun xung dng hay nhn tab
cch khong ...
Nhng k t ny tng i d dng nhn bit. Trc chng lc no cng c mt du anti-slash
\, k tip l mt ch ci hay mt s, \n v \t l 2 k t c bit c s dng kh thng xuyn
m bn chc chn cn dng. Bn cnh ti s cung cp cho bn 1 danh sch cc k t c bit
khc tham kho trong trng hp bn cn n chng.

Danh sch cc k t c bit bn c th s dng khi lp trnh

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 36 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Trong trng hp ny, chng ta ch cn thm vo \n xung dng.


#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
printf ("Xin chao"\n);
system ("PAUSE");
return 0;
}
V by gi chng trnh ca bn r rng hn ri.

Mt chng trnh hin th r rng

Bn c th vit trong printf duy nht mt k t \n , iu c ngha l bn mun xung


dng cu k tip. Bn hy tp vit nhng cu th ny:
printf ("Xin chao\nTam biet\n");
N s hin th Xin chao cu u tin v Tam biet cu k tip.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 37 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

V d khi s dng Code::Blocks phin bn mi:


Cng l mt chng trnh in ra mn hnh cu Xin chao! nhng khi vit bng Code::Blocks
phin bn hin ti th ch n gin nh sau:
C Code:
#include <stdio.h>
#include <stdlib.h>
int main( )
{
printf ("Xin chao!");
return 0;
}
Chng trnh hin th:

Code::Blocks phin bn mi chng trnh t ng dng li v t ng xung dng cui.

Bn c th nhn ra rng khi dng Code::Blocks, bn khng cn phi thm \n xung dng cng
nh cu lnh system (PAUSE) dng chng trnh nh nhng dng code ti hng dn
bn trc .
Code::Blocks thay chng ta lm vic (IDE ny kh thng minh ng khng)

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 38 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Hi chng Grard
Xin cho, ti tn l Grard v ti mun sa i chng trnh vi tn l Hello Grard.
Ch vy thi, nhng tht bt ng khi my tnh khng hin th chnh xc nhng g ti
mun. Ti phi lm g by gi?
u tin xin cho bn, Grard
y l mt cu hi kh hay dnh cho ti, v ti rt vui khi thy rng bn bt u c nhng
tng ci tin chng trnh.
V y l cu tr li, ti c mt tin hi bun dnh cho bn: console trn Windows khng hin th
c nhng du trng m, nhng ngc li trn Linux ta c th lm iu .
Trong trng hp ny bn c 2 la chn:

Chuyn sang Linux: la chn ny kh l phc tp v lc ti phi gii thch cho ring
bn cch s dng Linux. Nu bn cha trnh s dng vo lc ny, hy qun la
chn ny i.
Khng s dng nhng du trng m. Cch ny hi min cng nhng lc ny bn
phi la chn n. Console ca Windows c nhng hn ch, n ch hin th nhng tin
nhn khng c du.

V bn s ghi l:
C Code:
printf ("Hello Gerard\n");
Ti xin cm n bn Grard gip ti nh li vn ny
ps: Nu tn cc bn cng c du nh bn Grard, th cng lm tng t vy nh.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 39 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Nhng li ch thch, v cng tin dng!


Trc khi kt thc phn ny, ti nht thit phi ch cho bn mt ci kh hay, m ta gi chng l
cc comment. Trn cc ngn ng lp trnh ta lun c th thm vo nhng ghi ch vo trong m
ngun ca bn. V i vi ngn ng C bn cng c th lm nh vy.
C ngha l bn thm vo mt on vn vo code source gii thch l phi lm g , dng
ny c nhim v g, k hiu ny cho mc ch g ..v.v..
tht s l mt iu khng th thiu v k c nhng thin ti v lp trnh cng cn phi thm
vo cc ch thch y hay kia. Nhng ghi ch ny s gip bn c th:

D dng i vo trng tm ca nhng g bn vit. V ta c th d dng qun mt nguyn


tc hot ng chng trnh m bn vit.
Bn c th mt nhiu ngy suy ngh li
iu , bn s cn nhng ch thch ca bn thn bn c th t hiu li ngha ca
vic mnh lm.
Nu bn a m ngun ca bn cho mt ai khc v nu ngi khng hiu nhiu lm
v nguyn tc hot ng chng trnh ca bn, th nhng ghi ch s gip h lm quen
nhanh hn.
Cui cng, ci cho php ti c th thm nhng ch thch vo nhng on m trong bi
hc khi hng dn cho bn. iu gip ti gii thch cho bn tt hn v tc dng ca
nhng dng code.

C nhiu cch thm vo mt li ch thch. Tt c ph thuc vo chiu di ca li ch thch


m bn mun vit:

Nu ngn: ch gm 1 dng, hoc vi t. Trong trng hp bn nh vo double slash


( // ) sau l ch thch ca bn.

V d:
C Code:
// Day la mot chu thich ngan.
hoc
printf ("Xin chao"); // instruction nay hien thi len man hinh "Xin chao"

Nu li ch thch ca bn di: bn c nhiu ci thut li, bn cn vit rt nhiu cu v


trn rt nhiu dng. Trong trng hp ny :
i.
ii.

m u li ch thch: hy nh mt slash sau nh du sao (/*)


kt thc: nh du sao ri sau l slash (*/)

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 40 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

V d:
C Code:
/* y l mt ch thch gm nhiu dng */
Tr li vi chng trnh hin th Xin chao, v thm vo nhng li ch thch luyn tp:

C Code:
/*
Sau day la nhung preprocessor directives.
Nhung dong nay cho phep them mot so file vao project cua ban, nhung file nay thuong duoc
chung ta goi ten la thu vien
Nho vao cac file thu vien, chung ta luon co nhung ham san sang lam viec.
vi du nhu ham printf: hien thi mot doan van len man hinh
*/
#include <stdio.h>
#include <stdlib.h>
/*
Sau day la function chinh cua chuong trinh ten la main. Nho function nay ma chuong trinh cua
ban co the bat dau
Chuong trinh nay se hien thi Xin chao len man hinh, dua chuong trinh vao trang thai pause,
ket thuc
*/
int main(int argc, char *argv[])
{
printf ("Xin chao"); // instruction nay hien thi Xin chao len man hinh
return 0; // Chuong trinh tra ve gia tri 0 va ket thuc
}
Trn y l mt chng trnh vi nhng dng ch thch
Khi ta bin dch chng trnh, tt c nhng ch thch s c b qua, my tnh s khng c cc
dng ny. Nhng ch thch s khng xut hin khi ta chy chng trnh, chng ch dnh cho
nhng ngi lp trnh.
Bnh thng th ta khng ghi ch mi dng code ca chng trnh. Ti ni rng vit ch
thch trong code source l mt iu quan trng nhng chng ta cn bit khi no cn dng n, v
ch thch tng dng nh vy s tn thi gian v ch.
VD nh khi mi ngi bit rng printf l hm hin th mt tin nhn ln mn hnh, bn khng
cn phi ch thch thm na v tc dng ca n mi ln lp trnh.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 41 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Tt hn l bn hy ch thch nhiu ci trong mt ln, chng hn nh gii thch ngha ca


mt dy instruction no , n s c s dng vo vic g.
V ngi lp trnh ch cn ng qua nhng li ch thch, h s t hiu ly ton b.
Nm vng: Nhng li ch thch hng dn ngi lp trnh trong code source, n cho php
chng ta nhn ra n, v vy hy tp ch thch tng nhm cng lc hn l bn ch thch cho tng
dng.

V kt thc bi hc ny, ti xin trch dn mt lut ca IBM:


Nu c nhng ch thch m bn khng hiu chng trnh hot ng th no, hy xa b tt c.
Nh bn nhn thy, chng ta vn cha hon ton kt thc ht ton b bi hc.
V y cng l ln u tin bn thy th no l m lp trnh tht s, cc t ng, cc k hiu, c
th khin u c hi chong vng mt t.
Tht ra iu cng bnh thng thi, tt c ai cng u nh vy trong ln u tin.
Trc khi bn bc sang mt giai on mi, bn hy test li nhng g bn bit.
Ti c trnh vic dy bn nhiu th trong mt lc, n gin l bn s khng lnh ng c g c
nu bn hc mt cch qu nhanh v nhi nht.
V ti xin bo trc cho bn bit, trong cc phn tip theo s c rt nhiu iu mi l m bn
cha bit.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 42 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

TRC NGHIM KIN THC.


Mt dng preprocessor directives c bt u bi
A. #
B. {
C. //
Tn ca function chnh trong chng trnh l ?
A. printf
B. master
C. main
Th vin l g?
A. Nhng file source c vit trc gm cc function lun sn sng ch
bn gi ra.
B. Mt file cho php bn vit mt on vn ln mn hnh
C. Mt ni ta c th mn nhng quyn sch v khoa hc vin tng
Mt instruction lun c kt thc bi k t no ?
A. /*
B. ;
C. }
Tn ca hm cho php hin th mt on vn ln mn hnh ?
A. printf
B. print
C. afficher
K t no cho php ta xung dng khi hin th tin nhn ln mn hnh console?
A. \t
B. \n
C. Ch n gin l nhn phm enter xung dng.
Ch thch ch dnh cho mt dng bt u bi :
A. /*
B. */
C. //

p n:
1A
2C
3A

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

4B
5A
6B

7C

- 43 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bi 4: Th gii ca cc bin s (variable)


y l mt chng quan trng, v bn cn phi tp trung nhiu (Ni cch khc, y khng phi
thi im bn phn tch ng bay ca mt con rui ang quanh qun bn cnh).
Tm tt li nhng g hc:
nhng bi trc trc, bn c hc cch to mt project mi trn IDE Code::Blocks.
Ti c bit gii thch vi bn rng vic to ra mt chng trnh trn ca s kh phc tp (v
ti cng khng ni vi bn v vic to ra mt game 3D chi trn mng ).
Chng ta bt u hc lp trnh vi vic hc cch lm vic trn console. V chng ta hc
nhng iu kh hay ho nh vic hin th mt tin nhn ln mn hnh.
Ti bit rng bn sp sa bo vi ti rng ci cha gip bn iu g c.
V ti thi im ny, bn vn cha bit cch lm th no gi ra mt bin s, th m tt c nhng
ngn ng lp trnh nh C u bt buc phi s dng.
No chng ta hy ni v n !
Vy th chnh xc bin s l g ?
Ti s gii thch tt c v n trong phn ny, bn s khng phi ch i lu u, nhn mt cch
tng qut chng ta s hc cch a nhng con s vo trong b nh ca my tnh.
Ti s bt u vi nhng li gii thch v b nh ca my tnh, nguyn tc hot ng, my tnh
c th nh bao nhiu th khc nhau?
Vn ny c th n gin i vi mt s ngi, nhng bi ging ca ti ch dnh cho nhng
ngi vn cha bit b nh my tnh l g.
Phn ny ta s hc :
Cng vic ca b nh:

Khai bo mt bin s
Hin th gi tr mt bin s
Lu li gi tr c chn
TRC NGHIM KIN THC.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 44 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Cng vic ca b nh
Bi ging ny c mi lin h trc tip vi b nh ca my tnh.
Con ngi cng nh my tnh u cn lu gi li mt s ci g , con ngi ch c duy nht b
no nhng trn my tnh th c nhiu dng b nh khc nhau.
Ti sao my tnh cn nhiu loi b nh khc nhau? Mt b nh duy nht khng cho my
tnh, c phi vy khng?
Khng, thc t ngi ta ch cn mt b nh c tc lu nhanh v kh nng cha ln ( c
th lu li nhiu th quan trng).
Nhng cho n thi im hin ti, chng ta vn cha to c nhng b nh ging nh vy.
V cc b nh nhanh th t tin nn cc b nh c t chc thnh nhiu cp, cp c dung
lng t th nhanh nhng t tin hn cp c dung lng cao hn. Nhng b nh c tc lu
cng nhanh s c dung lng cng nh.
Vy my tnh ca chng ta c lp t gm:
Nhng b nh c tc lu nhanh nhng kh nng cha nh.
Nhng b nh c tc lu chm nhng kh nng cha ln hn rt nhiu.
Bn vn theo kp ti ch

Nhng khc bit v b nh:


cho bn d hiu, y l nhng loi b nh khc nhau c trong mt my tnh c sp xp t
nhanh n chm:
1.
2.
3.
4.

Registers: B nh cc nhanh c t trc tip trong b x l ca my tnh (processor).


Memory cache: Lm cu ni gia registers v RAM.
Main memory (RAM): L mt b nh m chng ta s dng thng xuyn nht.
cng (Hard Disk Drive): Ci ny cc bn bit n nhiu nht, ngi ta thng lu tr
d liu y.

Nhng registers ch c th cha c mt vi s, tri ngc hn vi cng c th cha mt s


lng ln cc tp tin.
Khi ti ni mt b nh chm l ang da theo thang o my tnh, 8 phn nghn giy
vo n cng tht s l qu lu!

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 45 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

C cn phi nm tt c nhng iu ny?


T by gi, cc bn s hc v lp trnh, v cc bn thng ch lm vic trn RAM nn cc bn
cn bit i cht v n. Chng ta s tm hiu cch c v lu cc tp tin ln cng (nhng c l
l trong cc bi hc sau). Cn v Memory cache v registers th khng cn phi chm n v my
tnh ca bn s t lm vic .
Trong ngn ng lp trnh bc thp, nh assembler (vit tt ca "ASM"), mt ngn ng ti
tng s dng, chng ta phi lm vic trc tip vi registers, vic lm mt php ton nhn
n gin tht s l c mt qu trnh chin u gian nan! May mn l vic trn C (v trn
nhiu ngn ng lp trnh khc) thc hin n gin hn rt nhiu.
Cn phi ni thm mt iu quan trng cui cng: ch c cng gi li tt c nhng g m n
cha. Tt c cc b nh khc (registers, Memory cache, RAM) u l nhng b nh nht
thi: khi m bn tt my tnh i th tt c d liu trong s mt i.
May mn l d liu trong cng ca bn vn khng i nhc nh my tnh ca bn tnh
trng no khi bt ln.

Hnh nh ca RAM:
Chng ta sp sa lm vic vi RAM, ti ngh rng ti nn gii thiu n vi bn
y l my tnh ca bn:

Cc bn bit th no l bn phm, chut, mn hnh v thng my.


By gi chng ta ch quan tm n thng my ca bn, trung tm ca my tnh, n cha tt c
cc loi b nh:

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 46 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Ci m ta ang hng th tm hiu nm bn trong thng my, khi m ra:

Bn c cm thy thch n khng?


Cc bn hy yn tm, ti s khng yu cu cc bn phi bit chng hot ng nh th no, ti
ch mun bn bit ch tm thy RAM trong thng my, n nm trong ch nht mu .
Ti s khng ch ra nhng b nh khc (registers v cache) nm u v n kh nh c th
thy c bng mt ca chng ta.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 47 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

V y l hnh dng tht s ca RAM:

Biu ca RAM:
Nu ta nhn mt cch bnh thng trn RAM th chng thy c g c. Nhng, iu quan trng
l cn bit bn trong n hot ng nh th no. y chnh l iu ti mun hng dn cc bn.
Ti s v cho cc bn mt biu v cch hot ng ca RAM, n cc k n gin.
nm c biu ny th iu v cng tt i vi bn.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 48 -

Nu bn

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21
Biu hot ng ca RAM

Nh bn thy, n c chia lm 2 ct:


o

Mt ct a ch (address): a ch l mt s cho php my tnh c th xc inh v


tr trong RAM. N bt u t a ch 0 v kt thc a ch 3 448 765 900 126...
Hic, ti khng h bit r s lng a ch cha trong RAM, ti ch bit rng n c
rt nhiu. Bi v n ph thuc vo dung lng b nh m bn c. Ch c th ni
l, bn c RAM, bn c th vo nhiu th.

V mi a ch cha mt gi tr (mt s, value): My tnh ca bn a vo RAM


nhng s ny c th nh ngay lp tc. V ngi ta ch c th a vo mt s
cho mt a ch trong RAM!

V RAM khng th cha g khc ngoi nhng con s.


Vy lm cch no chng ta c th lu li nhng ch ci ?
l mt cu hi th v, trn thc t, i vi my tnh th nhng ch ci cng l nhng con s!
Mt cu vn chnh l mt dy nhng con s !
C mt bng vit v s tng ng gi ch ci v s (bng m ASCII), v d s 67 tng ng vi
ch Y, ti khng ni nhiu v vn ny, nu c c hi chng ta s tm hiu v n sau.
Tr li vi biu ca chng ta. Hy xem xt mt vn n gin: nu my tnh mun lu li
gi tr 5 (c th l s mng sng ca nhn vt m bn chi trong game no ), n s t s 5 vo
mt v tr no trong b nh.(V d ti a ch 3 062 199 902).
Sau , khi mun tm li gi tr ny, my tnh s n b nh n 3 062 199 902, ti n tm
thy 5 !
V l nguyn tc hot ng ca b nh, c th bn vn cn mt cht mp m (u l li ch
ca vic t mt s vo mt a ch ca b nh?), bn s hiu r hn vn ny nhng phn
sau ca bi hng dn.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 49 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Cch khai bo mt bin s


Bn hy tin ti rng mt t gii thiu v b nh s rt tin li v tt hn cho bn, gip bn c th
tng tng d dng hn.
Nhng by gi chng ta phi bit lm cch no s dng n.
Vy th no l mt bin s ?
Ch n gin l mt thng tin nh c lu tr trong RAM.
Chng ta gi n l bin s v n c th thay i trong qu trnh thc hin chng trnh. V
d, s 5 va ri ca chng ta c kh nng b gim i (khi m nhn vt bn cht th mng sng s
gim xung). Khi m gi tr ny tin n 0 th tr chi s kt thc, game over.
Cc bn s thy chng trnh ca chng ta s cha y nhng bin s.
Trn ngn ng C, mt bin s c 2 thnh phn:

Mt gi tr: l s m n cha, v d nh 5.
Mt tn gi: tn gi ny s gip ta nhn ra n. Trn ngn ng C, chng ta khng cn phi
nh a ch ca bin s, chng ta ch cn ch ra tn ca bin s. V b dch (Compiler) s
thc hin vic chuyn i gia ch v s.

Gi tn mt bin s:
Trong ngn ng ca chng ta, bin s ch s mng sng ca nhn vt trong mt tr chi in t
no thng c gi l mng sng nhn vt, hoc mt tn no khc cng loi.
Trong ngn ng C, mi bin s c mt tn gi, nhng khng phi mun t tn th no ty theo
thch ca bn cng c u. Di y l mt s nguyn tc khi t tn cho bin s:

Chng ta ch c th t tn n bng nhng ch ci vit thng hay vit hoa v nhng con
s (abcABC012).
Tn ca bin s phi bt u bng mt ch ci. Chng ta khng c s dng khong
trng , thay vo chng ta c th s dng k t _ (underscore). l k t duy
nht khng thuc dng ch ci hay s c php s dng.
Bn cng khng c php s dng ch ci mang du trng m. (v d ).

V mt iu ht sc quan trng m bn cn phi nm l trong ngn ng C (C++ cng nh


th) c s khc nhau gia ch thng v ch hoa: chieu_rong, CHIEU_RONG v
CHieu_RoNg l tn ca 3 bin s khc nhau trong ngn ng C. i vi chng ta th chng c v
hon ton ging nhau! V y l cc bin s c t tn chnh xc: mangsongNhanvat,
mangsong_nhanvat, ho, ten, so_dien_thoai, sodidong.
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 50 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Mi ngi c cch thc gi tn bin s khc nhau. Trong phn ny, ti gii thiu cho bn cch
thc gi tn bin s ca ring ti:

Tn ca bin s, ti lun bt u bng ch ci thng.


Nu tn ca bin s gm nhiu ch, th mi ch ti s vit hoa k t u tin

Ti thch bn thc hin ging nh ti, v iu gip chng ta c th lm vic d dng vi


nhau.

Bn hy t cho bin s nhng tn gi r rng. Chng ta c th rt ngn tn ca


mangsong_NhanVat bng ms_NV. iu c th gip tn gi ngn hn, nhng khng h
r rng khi bn vit chng trnh. Bn ng ngi vic t tn di cho bin s v iu s
gip chng trnh ca bn d c, d hiu hn.

Nhng dng ca bin s:


Cc bn c th xem my tnh khng khc g mt c my ln dnh cho cng vic tnh ton, n
khng bit g khc hn ngoi nhng con s.
V ti c mt tin c bit l c nhiu dng bin s !
V d, c nhng s t nhin dng:
45
398
7650
Cng c nhng s thc:
75,909
1,7741
9810,7
Hn na cng c nhng s nguyn m:
-87
-916
V nhng s thc m:
-76,9
-100,11

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 51 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

V chic my tnh ng thng ca bn cn s h tr! Khi bn yu cu n lu li mt s, bn


phi ni con s thuc dng no. My tnh ca bn khng th no c kh nng t nhn bit
chng, iu gip n rt nhiu trong vic t t chc, v hn ch vic s dng b nh mt cch
v ch.
Khi bn to mt bin s, phi ghi n thuc dng no.
y l nhng dng bin s c bn thng dng trong ngn ng C (s cn mt s loi bin s
khc trong C++):

Type

Dung lng (octets)

Gi tr chp nhn
-128 n 127

signed char 1
int

2 (on processor 16 bits)


-32 768 n 32 767
4 (on processor 32 bits) -2 147 483 648 n 2 147 483 647

long

-2 147 483 648 n 2 147 483 647

float

-3.4*10-38 n 3.4*1038

double

-1.7*10-308 n 1.7*10308

3 dng u cho php chng ta khai bo nhng s nguyn (1, 2 ,3 ,4...)


2 dng cui khai bo nhng s thc (13.8, 16.911...)

float v double cho php khai bo nhng s thc rt ln.


Nu nhng bn khng hiu r lm v ly tha ca 10, ti s ni r hn cho bn rng
nhng s dng double c th lu li s c vit bi s 1 v 308 s 0 tip theo !
10000000000000000000000000000000000000000000000000 00000000000000000000
(xin li nhng ti khng rnh ghi ht 308 s 0 cho bn nhn thy u)
.
Bn cn lu rng int v long c v nh ging nhau nhng thc s th int s nh hn
long, nhng ngy nay b nh pht trin rt nhiu v chng ta lun ch cha
nhng s v cng ln, chng ta khng cn ch lm n s khc bit ca chng. Thc t
ti ch thng dng nhng dng char, long v double.
V bn s thy phn ln chng ta ch s dng nhng s t nhin v n d dng s dng.

Hy ch vi nhng s thc! My tnh ca bn khng hiu du phy l g u,


chng ta ch s dng du chm. Bn khng th vit 54,9, thay vo l 54.9!
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 52 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

V khng ch nh vy! i vi nhng bin s dng s t nhin (char, int, long), cn c thm cc
loi c bit khc mang tn unsigned (khng c du), ti chng ta ch c c th a vo
nhng s t nhin. s dng, ch cn t unsigned pha trc :

Nh bn thy, nhng bin dng unsigned khng th cha nhng s m, nhng n c li th l


m rng gii hn cha nhng s dng ln gp i (v d: signed char c gii hn 128, trong khi
unsigned char c gii hn 255).

Bn cn lu rng dng bin s char nn c khai bo hoc c signed, hoc


unsigned, khng nn ng mt mnh. L do n gin l dng bin s ny s c du hay
khng du ty vo cc loi my tnh khc nhau. Trc khi khai bo mt bin s, hy suy
ngh dng bin s no bn s cn dng n.

Ti sao phi to ra 3 dng bin s cho nhng s t nhin nh vy? Chng ta ch cn


1 dng l ri m, khng phi vy sao?
Ngi ta to nhiu dng bin s khc nhau nh th tit kim b nh. Khi m chng ta bo
my tnh rng chng ta cn mt bin s dng char, th my tnh s s dng b nh t hn khi
chng ta bo rng cn b nh dng long.
Vic ny s c ngha trong giai on b nh my tnh cn nhiu gii hn. Ngy nay, RAM my
tnh tin tin hn rt nhiu nn vic ny khng cn l vn tht s na. Chng ta khng cn
ngh nhiu n vic chn dng bin s no s dng. Nu bin s ca bn c nhu cu nhn mt
gi tr tng i ln th hy ngh n vic s dng long.
Ti ni nghim tc rng bn khng cn phi suy ngh nhiu lm v cch chn dng bin s trong
thi im hin ti.
Chng ta ch cn phn bit s khc bit gia dng s nguyn v s thc:

i vi s t nhin, ngi ta thng dng int.


i vi s thc, ngi ta thng dng double.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 53 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Khai bo mt bin s
Cui cng chng ta cng n c y, v by gi bn hy to mt project mi ly tn l
variables.(bin s)
Bn s thy lm cch no chng ta khai bo mt bin s, hay ni cch khc l bn s yu cu
quyn s dng mt t b nh ca my tnh.
Bn ch cn lm theo trnh t sau:
1. Ch ra dng ca bin s cn to.
2. Nhn phm spacebar cch khong.
3. Ch ra tn ca bin s cn to.
4. Cui cng l chm phy ; ng qun iu .
V d nu nh ti mun khai mt bin s mangsongNhanVat, ti s lm nh sau:
C Code:
int mangsongNhanVat;
Ch n gin vy thi!
V mt vi v d kh ngu khc :
C Code:
int diemToan;
double tongChiPhiNhanDuoc;
unsigned soluongNguoiChuanBiXemTenCuaMotBienSoKhaLaDai;
Ti ngh bn cng hiu c nguyn tc ca n ri.
Vic chng ta va lm gi l variable declaration (khai bo bin s), hy nm vng thut ng
ny

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 54 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bn phi thc hin vic khai bo bin s v tr bt u ca cc function. V trong thi im ny


chng ta ch c c duy nht mt function (function main), bn hy khai bo bin s nh sau:
C Code:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) // Tuong tu voi int main( )
{
int mangsongNhanVat;
return 0;
}
Nu bn thc hin vic dch v chy chng trnh vo lc ny th chc hn bn s ngc nhin
rng chng c g xy ra c
Gii thch
Trc khi bn cho rng ti a vi bn th hy nghe ti gii thch vi li.
Thc t n mt vi th din ra nhng bn khng th no thy c. Khi m chng trnh
chy n on m khai bo bin s ca bn, n ch yu cu my tnh mt cch lch s rng n s
s dng mt t khong trng trong RAM ca my tnh.
Nu khng c vn g, my tnh s tr li dng i, t nhin nh nh my vy .
Vn ch xy ra khi b nh ca bn khng cn khong trng na. May mn l iu
ny v cng kh xy ra nu s dng nhng bin s dng int lm y b nh ca my
tnh.
V bin s ca bn c to ra mt cch hon ho.
C mt iu bn cn bit: nu bn c nhiu bin s cn khai bo v cc bin s ny
cng mt dng, bn khng cn thit phi khai bo mi bin s cho mi dng. Bn ch
cn phn bit cc bin s bi nhng du phy trn cng mt dng :

C Code:
int mangsongNhanVat, capdoTroChoi, capdoNhanVat;

on code ny khai bo 3 bin s dng int cho cc bin s mangsongNhanVat,


capdoTroChoi, capdoNhanVat.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 55 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

V by gi ?
Sau khi khai bo xong bin s, chng ta c th a cho chng nhng gi tr.
a gi tr vo bin s
Khng c g l kh khn, nu bn mun cho bin s mangsongNhanVat mt gi tr, bn ch cn
lm nh sau :
C Code:
mangsongNhanVat = 5;
Vy l xong ri, bn khng cn lm thm iu g khc. Bn ch cn t tn ca bin s, cho mt
du bng, k tip l gi tr bn mun t vo n. y chng ta cho mangsongNhanVat gi tr 5.
Di y l chng trnh hon thin:
C Code:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int mangsongNhanVat;
mangsongNhanVat = 5;
return 0;
}

V khi chy chng trnh th mn hnh vn cha c g thay i, n ch din ra trong b nh.
Ti mt b nh no trong my tnh, gi tr 5 c t vo. Tuyt vi ng khng?
V hay hn na l:
C Code:
int mangsongNhanVat;
mangsongNhanVat = 5;
mangsongNhanVat = 4;
mangsongNhanVat = 3;
Trong v d ny, khi chy chng trnh, bin nhn gi tr 5 u tin, sau l 4 v cui cng l
3. Vic ny din ra v cng nhanh trn my tnh, chng trnh kt thc khi bn cha kp chp
mt xong
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 56 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Gi tr ca mt bin s mi
y l mt cu hi kh quan trng m ti mun nhn mnh :
Khi m ta khai bo mt bin, th n s nhn gi tr no u tin ?
Thc t, khi m my tnh bn c dng ny :
C Code:
int mangsongNhanVat;
ng l bin s chim 1 v tr trong b nh ca RAM. Nhng gi tr ca bin s lc ny l bao
nhiu ? L 0 lc khi u ng khng ?
Cu tr li l khng. Khng, khng v khng. Khng c gi tr no lc khi u c. B nh s
ginh ch cho bin s nhng ti v tr , gi tr s khng i. My tnh s khng h xa nhng
g c t vo trc (c th v tr c dng cho mt chng trnh c tng chy
trn my tnh trc y)
Nu v tr ny vn cha s dng qua ln no th c th n s mang gi tr l 0. Nhng nu mt
chng trnh no khc s dng qua ri th n c th mang gi tr l 368, 18 hay mt s no
khc bt k.
Chng ta cn phi ch k vn ny trnh cc sai st v sau. Tt nht bn hy gn cho n
gi tr ngay sau khi va khai bo xong. Trnh bin dch c th hiu c nu nh ta khai bo v
gn gi tr mt bin s trong cng mt lc:
C Code:
int mangsongNhanVat = 5;
Nh trn, bin s mangsongNhanVat c khai bo v nhn tc khc gi tr 5.
Li ch ca vic ny l bn lun chc rng bin s lun nhn gi tr chnh xc nh bn mun.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 57 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Nhng constants (hng s)


i khi chng ta cn s dng nhng gi tr khng i trong sut qu trnh s dng chng trnh.
C ngha l sau khi khai bo, bin s s nhn mt gi tr m khng cch no c th thay i
c.
Nhng bin s ny chng ta gi l cc constants (hng s), l do l gi tr m n mang s lun
c gi nguyn nh th.
khai bo mt constant, ta lm nh sau: chng ta thm t const trc dng bin s m bn
khai bo.
Mt khc, chng ta bt buc phi gn cho n mt gi tr ngay trong thi im bn khai bo n.
Ging nh cch m ta thy va ri. Sau , bn khng th no thay i gi tr na, v mi
th c qui nh xong ht ri.
V d v cch khai bo mt constants:
C Code:
const MANGSONG_NHANVAT_KHOIDAU = 5;
Vic ti ch s dng nhng ch ci in hoa t tn cho constants l khng bt buc.
Lm nh th gip ti c th d dng phn bit nhng bin s vi nhng constants. Ghi
thm rng ti vn s dng du underscore _ vo v tr ca khong trng .

Sau , bn c th s dng constants nh mt bin s bnh thng. Khc bit duy nht l nu
bn th thay i gi tr ca n sau v thc hin dch chng trnh th compiler s bo li.
Ti gi n l death zone (hay l vng cht). Trong trng hp , compiler s hin th ln
mn hnh: [Warning] assignment of read-only variable 'MANGSONG_NHANVAT_KHOIDAU'
(Dch ra: bn tht l ngu ngc, ti sao bn li c gng thay i gi tr ca mt constant ch?)

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 58 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Hin th gi tr ca bin s
Chng ta bit cch hin th mt on vn vi function printf.
By gi, chng ta s xem lm sao hin th mt gi tr ca bin s cng vi function ny.
Chng ta cng s s dng printf vi phng php c, nhng thm vo mt k t c bit ti v tr
m chng ta mun gi tr ca bin s .
V d :
C Code:
printf ("Ban con %d hoisinh");
K t c bit m ti ni vi bn l mt % sau l nhng ch ci d . Nhng k t
ny cho php chng ta hin th dng ca bin s.
d c ngha l ti mun hin th mt s dng int.
Cn rt nhiu k t c bit khc c th s dng. Nhng d dng, lc ny bn ch cn nm
nhng loi sau:
Format Type
"%d"

int

"%ld"

long

"%f"

float

"%f"

double

Cn lu rng format dng hin th mt float v mt double l ging nhau.


Ti s ni cho bn bit nhng k t c bit khc v sau.
Chng ta sp xong ri, chng ta ch ra v tr cn hin th mt s, nhng chng ta vn cha ni
l hin th s no. V th chng ta cn ch cho function printf bit phi hin th bin s no.
Bng cch nh tn ca bin s sau khi thm vo mt du phy sau khi kt thc du ging
nh sau:
C Code:
printf ("Ban con %d hoisinh", mangsongNhanVat);
%d s thay th bi bin s m ta ch ra sau du phy, trng hp ny l mangsongNhanVat.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 59 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Chng ta th chy chng trnh nh ?


<----------------------C Code:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int mangsongNhanVat = 5; // Khoi dau, ban co 5 lan hoi sinh
printf ("Ban co %d lan hoi sinh\n", mangsongNhanVat);
printf ("**** B U M ****\n"); // Ban bi trung mot phat sung vao dau
mangsongNhanVat = 4; // Ban bi mat mot lan hoi sinh !
printf ("Xin chia buon, ban chi con %d lan hoi sinh !\n\n", mangsongNhanVat);
return 0;
}

Ci ny gn ging nh mt game in t ri (bn hy tng tng nhiu mt t)


Chng trnh hin th ci ny ra mn hnh:
Console:
Ban co 5 lan hoi sinh
**** B U M ****
Xin chia buon, ban chi con 4 lan hoi sinh !

Press any key to continue.


Bn phi hiu c iu g din ra trong chng trnh ca bn :
1. u tin, nhn vt c 5 mng sng, chng ta hin th bng printf
2. Sau , bm nhn vt trng phi mt pht sng vo u.
3. Cui cng, nhn vt cn 4 mng sng, chng ta hin th bng printf.
n gin l nh vy.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 60 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Hin th nhiu bin s trong mt function printf


Chng ta lun c th hin th gi tr ca nhiu bin s ch trong mt function printf duy nht.
Ch ny s hin th %ld v ch kia hin th %lf, ty theo bn mun, sau ch ra theo th t ln
lt nhng bin s tng ng, cch nhau bi nhng du phy.
V d :
printf ("Ban co %d lan hoi sinh va dang o man choi thu %d", mangsongNhanVat, capdo);
Hy ch ra nhng gi tr ca bn theo ng th t. %d u tin s thay th bng bin s u
tin (mangsongNhanVat), v %d th hai s thay th bi bin s th hai (capdo). Nu nh bn
nhm ln v tr, nhng g bn mun hin th s khng cn ng na.
V chng ta hy th test li mt t, ghi thm rng trong on code bn di ti khng ghi nhng
dng trn cng (nhng preprocessor directives bt u bi nhng #), v ti s gi nh rng
bn s lun thm n vo u chng trnh.
C Code:
int main(int argc, char *argv[])
{
int mangsongNhanVat = 5, capdo = 1;
printf ("Ban co %d lan hoi sinh va ban dang o man choi thu %d\n", mangsongNhanVat, capdo);
return 0;
}

V n s hin th:
Console:
Ban co 5 lan hoi sinh va ban dang o man choi thu 1

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 61 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Cch gn gi tr cho bin s


Nhng bin s bt u lm bi hc ny th v hn ri nh. Chng ta s hc cch yu cu ngi
dng nhp mt s vo console. S ny s c mt bin s lu li. Mt khi bn thc hin c
iu ny, bn c th lm thm rt nhiu vic sau .
yu cu ngi dng a vo mt ci g vo trong console, chng ta s s dng mt
function khc, v function ny c sn trong th vin ca bn: function l scanf
Cch s dng scanf kh ging vi printf. Bn phi t %d hay %lf trong cp du "..." gii
thch vi my tnh rng bn mun ngi dng a vo mt s nguyn hay mt s thc. Sau
bn phi ch ra tn ca bin s s nhn ly gi tr .
Bn s thy iu trong v d ny :
C Code:
scanf ("%d", &tuoi);
Chng ta phi t %d (hoc %lf) trong cp du "..."
Mt khc chng ta thm vo & trc tn ca bin s.
Vy ti sao phi thm & trc tn ca bin s ?
Ti s khng gii thch cho bn tt c y. Nhng hy tin ti, ti s gii thch cho bn vn
ny trong mt bi khc sau ny, ti ha y !
Tr li, khi m chng trnh ca bn chy n scanf, n s dng li v i ngi s dng a
vo mt s. S ny s c a vo bin s tuoi .

Hy ch , c mt vi s khc nhau gia printf v scanf ! gn mt gi tr dng


float, ta dng format "%f", nhng gn mt gi tr dng double ta dng format "%lf"

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 62 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

y l mt chng trnh nh yu cu bit tui ca ngi s dng v n s hin th ra sau :


Code C:
int main(int argc, char *argv[])
{
int tuoi = 0; // Khoi tao bien so gia tri la 0
printf ("Ban bao nhieu tuoi?\n");
scanf ("%d", &tuoi); // May tinh yeu cau nhap tuoi voi scanf
printf ("Oh! tuoi cua ban la %d !\n\n", tuoi);
return 0;
}

Console:
Ban bao nhieu tuoi?
20
Oh! tuoi cua ban la 20 !

Chng trnh s dng li v hin th Ban bao nhieu tuoi? . Du nhy s xut hin trn mn
hnh. Cc bn phi nh vo mt s t nhin (tui ca bn). Sau nhn Enter xc nhn, v
chng trnh s tip tc hot ng.
Sau , chng trnh s hin th gi tr ca bin s tuoi ln mn hnh (Oh! tuoi cua ban la 20
!).
Nguyn tc hot ng l nh vy.
Nh vo function scanf chng ta c th yu cu ngi s dng a ra mt s thng tin c nhn.
Vit thm rng bn ch c th a vo mt s t nhin :

Nu bn nhp vo mt s thc, v d nh 2.9, n s t ng lm trn, ngha l n ch


gi li phn nguyn. Trong trng hp ny s 2 s c bin s lu li.
Nu bn nh vo bt k mt ch ci no (ydf ), bin s s khng thay i gi tr.
iu ny cng tt v trc chng ta gn cho bin s gi tr 0. Sau khi nhp nhng ch
ci vo th ngay lp tc, chng trnh hin th 0 tuoi , chng t scanf khng c thc
hin. Nu sau khi khai bo bin s chng ta khng gn cho n gi tr no, chng trnh
bn c th hin th bt c ci g !

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 63 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Chng ta sp kt thc bi hc v cc bin s


Ti xin nhc li l bin s s c s dng thng xuyn khi lp trnh. Nu nh bn hiu rng
bin s l mt thng tin c a vo b nh tm thi th bn hiu bi ging ny. Khng c
iu g khc ngoi vic bn cn bit nhng dng bin s (char, int, long, double).
Hy t luyn tp cch hin th nhng bin s ln mn hnh v cch nhp vo gi tr mt bin s
bng bn phm vi scanf.
Trong chng tip theo, chng ta s hc cch lm sao thc hin cc tnh ton trn ngn ng C.
Yu cu bn phi s dng tt printf v scanf.

TRC NGHIM KIN THC.


Khi ta khai bo mt bin s, b nh no s c s dng ?
A.
B.
C.
D.

Registers
Memory cache
RAM (main memory)
Hard Disk Drive

Khi tt my tnh, b nh no s khng b mt d liu ?


A.
B.
C.
D.

Registers
Memory cache
RAM (main memory)
Hard Disk Drive

Bin s no khng c t tn chnh xc ?


A.
B.
C.

vitriMenu
chieurongCaS
tuoi_Capital

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 64 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Dng bin s no c th lu tr s 76.8 ?


A.
B.
C.
D.

char
long
double
int

Dng bin s no c th lu tr s -1000 ?


A.
B.
C.

int
unsigned int
unsigned double

Nu nh bin s "taikhoanNganHang" thuc dng int c gi tr l 6 500 000 , mn hnh s


hin th on m ny th no ?
Code:
printf("Ban co %d dong trong tai khoan", taikhoanNganHang);
A. Ban co %d dong trong tai khoan
B. Ban co 6 500 000 dong trong tai khoan
C. Ban co d dong trong tai khoan, taikhoanNganHang

p n:
123456-

C
D
B
C
A
B

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 65 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bi 5: Cc cng c tnh ton


Ti ni vn ny phn trc: my tnh ca cc bn cng ging nh mt c my tnh ton
khng l.
Khi m bn mun nghe nhc, xem film hay chi game in t, my tnh ca bn khng lm iu
g khc hn vic tnh ton
phn ny ti s hng dn cho cc bn thc hin phn ln nhng php tnh m my tnh c th
thc hin. Cc bn bit th no l bin s, v tng l chng ta s thc hin nhng tnh ton
trn cc bin s : hy cho mt bin s gi tr no , sau hy nhn n ln, v gi tr nhn
c s a vo mt bin s khc .v.v
K c khi bn khng phi l mt fan ca ton hc, cc bn cng nn bit ni dung ca phn
hng dn ny.
S tht l nu bn khng bit cch thc hin php cng, bn khng th no c th thc hin vic
lp trnh.
Ni dung bi hc ny s gm:
Nhng php ton c bn

Nhng cch vit rt gn


Th vin ton hc
TRC NGHIM KIN THC.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 66 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Nhng php ton c bn


Nhng g chng ta s tm hiu khng c g khc ngoi nhng php ton bnh thng, my tnh
ca bn l mt c my tnh ton n gin v n ch c th lm nhng php ton:

Php cng
Php tr
Php nhn
Php chia
Php module (Ti s gii thch nu nh bn khng bit n l g)

Nu nh bn mun s dng nhng php ton phc tp hn (bnh phng, ly tha, logarit, v
mt s nhng php ton khc m bn thch) th bn phi lp trnh ra n, c ngha l bn s hng
dn my tnh lm cch no th thc hin nhng php ton .
May mn l bn c th mn nhng quyn sch ny trong th vin ca ngn ng C: c rt nhiu
function ton hc c vit sn. Bn khng cn phi vit li chng na
Chng ta bt u vi php cng.
thc hin mt php cng, chng ta s dng k t + (ng khng nh?
)
Bn cn phi a kt qu nhn c vo trong mt bin s. Chng ta s s dng bin s
ketqua dng int thc hin php tnh:
C Code:
int ketqua = 0;
ketqua = 5 + 3;
Bn khng cn phi c mt u c pro v tnh ton c th hiu rng ketqua s mang gi tr
8 sau khi ta chy chng trnh.
Chc chn l, mn hnh s khng hin th bt c iu g nu nh ta ch s dng on m trn,
hy thm vo mt function printf.
Trn mn hnh s cho ta :
Console:
Ket qua = 8
V l php cng.
V vi nhng php ton khc, cng tng t, ch cn thay i k t tnh ton :
Php cng: +
Php tr: Php nhn: *
Php chia: /
Module: %
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 67 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Nu nh bn tng tnh ton trn my tnh ca bn th chc hn l bn bit nhng k t ny .


"Du tr" tng ng vi du gch ngang "-", "du nhn" tng ng du sao "*", "du chia"
tng ng du slash "/" v "module" s tng ng vi du phn trm "%".
Khng c g c bit kh khn s dng c chng. hai php tnh cui cng (php chia v
module) c mt s khc bit nh, chng ta s ni r hn.

Php chia
Php chia hot ng bnh thng trn my tnh nu nh khng c s d. V d, 6 / 3 bng 2, my
tnh ca bn s cho mt kt qu ng, khng h sai st.
By gi chng ta th thc hin mt php chia c d nh 5 / 2.
5 / 2 theo nh ta tnh s cho kt qu l 2.5.
Tuy nhin! hy xem k kt qu ca on m ny :
C Code:
int ketqua=0;
ketqua = 5 / 2;
printf ("5 / 2 = %d",ketqua);
Console:
Ket qua = 2
C mt vn ln y, chng ta yu cu my tnh thc hin 5 / 2, chng ta ch i kt qu l
2.5, nhng my tnh cho kt qu l 2 !
C mt ci g k l y. Khng l my tnh ca chng ta b ngu php tnh ny ?
Thc s, khi my tnh nhn c nhng s 5 v 2, my tnh ca bn thc hin php tnh vi
dng s t nhin, iu c ngha l my tnh lm trn kt qu, n ch gi li phn nguyn
(s 2).
Ti bit ri! ti v bin s ketqua m chng ta khai bo c dng int! nu n dng
double th n s cha mt s thc!
Cng khng phi.
Hy th li on m trn nhng chng ta i bin s ketqua thnh double, n cng ch hin
th kt qu l 2.
Nu nh ta mun my tnh hin th mt kt qu chnh xc, chng ta phi bin i nhng s 5 v
2 v dng s thc, ngha l 5.0 v 2.0 (i vi chng ta, chng ging nhau nhng i vi my
tnh, nhng s thc khc vi s t nhin v n s thc hin php ton vi dng s thc) :

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 68 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

C Code:
double ketqua = 0;
ketqua = 5.0 / 2.0;
printf ("5 / 2 = %lf", ketqua);
Console:
Ket qua = 2.500000
Mc d n hin th mt dy nhng s 0 pha sau nhng kt qu ny hon ton chnh xc.
c im ny ca php chia rt quan trng, bn cn ch :
5/2=2
10 / 3 = 3
4/5=0
Nhng s trong php tnh phi thuc dng s thc :
5.0 / 2.0 = 2.5
10.0 / 3.0 = 3.33333
4.0 / 5.0 = 0.8
Thc t, nu ta thc hin php tnh 5 / 2 , dng s t nhin. My tnh s tr li cu hi:
Trong 5, c bao nhiu ln 2 ?. Cu tr li l 2 ln. Ging nh vy, trong 10, c bao nhiu ln
3 ? p n l 3 ln .
Nhng lm sao gi li s d ca php chia ?
V y chnh l cng vic ca php module.
Php module
Module l mt php ton cho ta s d ca mt php chia. Module t c bit n hn cc php
ton c bn cn li, nhng n gip my tnh c th thc hin y tt c nhng php ton vi
nhng s t nhin. Module c biu th bi k t %.
Mt s v d :
5%2=1
14 % 3 = 2
4%2=0
Module 5 % 2 l s d ca 5 / 2, bng 1. My tnh tnh ton nh sau 5 = 2 * 2 + 1 (module cho
kt qu 1).
Tng t, 14 % 3, tnh nh sau 14 = 3 * 4 + 2 (module cho kt qu 2).
Cui cng, 4 % 2, php chia khng c d nn module s cho kt qu l 0.
V khng ni g nhiu hn v module, ti ch gii thch vi nhng bn no cha bit.
V ti c thm mt tin tt na, chng ta bit tt c nhng php ton c bn.
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 69 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Nhng tnh ton s dng bin s


Vn ny kh l th, bn bit cch s dng cc php ton c bn, chng ta hy luyn tp
bng cch tnh ton vi nhiu bin s, bn c th thc hin :
C Code:
ketqua = so1 + so2;
on m ny tnh tng ca cc bin s so1 v so2, sau kt qu s a vo bin s ketqua.
Ah! ti c mt tng cho bn y, by gi bn c kh nng thc hin mt cng c tnh ton
nh. Chc m, ti bo m cc bn c th lm c !
Hy tng tng mt chng trnh i hi ngi s dng nhp vo 2 s hng. l gi tr ca 2
bin s, sau bn hy thc hin tng ca 2 bin s ny, kt qu l gi tr ca bin s ketqua .
Sau bn hin th n ln mn hnh. Chng trnh ny kh n gin, hy luyn tp vi n.
y l kt qu:
C Code:
int main(int argc, char *argv[])
{
int ketqua = 0, so1 = 0, so2 = 0;
// Chung ta yeu cau nguoi su dung nhap vao gia tri cua so1 va so2 :
printf ("Gia tri so thu 1 : ");
scanf ("%d", &so1);
printf ("Gia tri so thu 2 : ");
scanf ("%d", &so2);
// Thuc hien phep tinh :
ketqua = so1 + so2;
// Va ta hien thi len man hinh :
printf ("%d + %d = %d\n", so1, so2, ketqua);
return 0;
}
Console:
Gia tri so thu 1 : 30
Gia tri so thu 2 : 25
30 + 25 = 55

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 70 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Cc bn c th th chng trnh ny vi bt k s hng no (nu s hng khng nm ngoi


gii hn ca bin s dng int), my tnh ca bn s hon thnh php tnh vi vn tc nh sng .
Ti khuyn bn hy to thm cc chng trnh s dng nhng php ton khc (php tr, php
nhn)
Bn hon ton c th thc hin vi nhiu bin s hn na, khng vn g nu nh ta dng 3
bin s cng lc:
C Code:
ketqua = so1 + so2 + so3;

Phng php vit rt gn


Nh ti ni vi cc bn, chng ta khng cn php ton no mi hc na, l tt c.
Chng ta khng cn thm cc php ton no khc v chng ta c th to ra chng.
Tht kh tin nu nh ti ni rng mt game 3D ch s dng khng g khc ngoi php cng v
php tr. Nhng hon ton l s tht.
V cng ging nh di y, trong C c nhng phng php gip ta vit ngn gn nhng php
ton.
Ti sao phi dng phng php vit rt gn ?
Ti v chng ta thng xuyn phi lp li mt php ton. Bn s hiu r hn nhng g ti ni.
Vi ci gi l increment.

Incrementing (Phng php tng gi tr)


Bn s thy rng bn s phi thng xuyn tng gi tr mt bin s ln 1. V d nh bin s ca
bn l sohang . V ta lm nh sau:
C Code:
sohang = sohang + 1;
V chuyn g din ra y? Chng ta ly sohang + 1, v sau chng ta a gi tr nhn c
vo chnh sohang . Nu s hng ny c gi tr ban u l 4 th n s thnh 5, nu l 8 th s
thnh 9
Thao tc ny s c s dng li. Nhng nh lp trnh u l nhng ngi c bit li bing,
hu nh h u khng hng th vi vic vit li mt ci no c (vic ny kh mt nhc !).
V h to ra mt cch vit rt gn gi l increment. on m sau cng biu th iu tng t
vi on m ta va thy trn :
C Code:
sohang++;

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 71 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

on m ny kh ngn so vi nhng g ta thy trc , n c ngha l thm 1 vo bin s


sohang . Ch cn vit tn bin s, sau thm vo hai du +, v ng qun du chm phy t
cui cng.
Ch l nh vy, chng ta s gp li n thng xuyn v c rt nhiu trng hp cn s dng
phng php ny.
Nu bn chu mt t, bn s thy du hiu ny c tm thy trong C++ . V
vi con mt ca mt nh lp trnh, bn c th hiu c ngha ca n!
C++ c ngha l ngn ng C c tng thm mt cp , mc d vy so vi C n
khng h hn.

Decrementing (Phng php gim gi tr)


n gin c th hiu l phng php ny tri ngc hon ton vi increment. Chng ta s gim
gi tr ca bin s i 1.
V chng ta cng s s dng n thng xuyn nh increment.
Nu nh ta vit n y :
C Code:
sohang = sohang - 1;
Th y l dng rt gn :
C Code:
sohang--;
Hn l bn c th t on ra c, v tr ta t ++, th thay th bng --. Nu bin s c gi tr l
6 ban u, th n s thnh 5 sau khi thc hin decrement.

Nhng dng vit rt gn khc


Trong C cn nhiu cch vit rt gn khc cng hot ng tng t. Tt c cc php ton c bn :
+ - * / u c phng php vit rt gn.
N gip ta phi vit li tn ca bin s cng mt dng.
V nu bn mun tng ln 2 ln gi tr ca mt bin s :
C Code:
sohang = sohang * 2;
Bn c th vit di dng rt gn :
C Code:
sohang *= 2;
Nu s l 5 lc ban u th sau n s tr thnh 10.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 72 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Vi nhng php ton c bn khc cng hot ng y nh vy, y l mt chng trnh lm v d :


C Code:
int sohang = 5;
sohang += 4; // sohang tro thanh 9...
sohang -= 3; // ... sohang tro thanh 2
sohang *= 5; // ... sohang tro thanh 25
sohang /= 3; // ... sohang tro thanh 1
sohang %= 3; // ... sohang tro thanh 2 (vi 5 = 1 * 3 + 2)
l nhng cch vit rt gn m bn s s dng trong mt ngy no ,
increment v y l phng php vit rt gn c s dng nhiu nht.

hy nm vng

Th vin ton hc
Trong ngn ng C, tn ti mt s ci gi l nhng th vin standard , l nhng th vin
c bn lun sn sng s dng, v c s dng thng xuyn.
Ti xin nhc li, th vin l tp hp nhng function c vit sn bi nhng nh lp trnh
khc trc trnh vic phi vit li.
Chng ta tng s dng function printf v scanf trong th vin stdio.h .
Chng ta phi bit rng cn nhiu th vin khc na, trong c math.h, n cha mt s ln
nhng function ton hc c vit trc.
Ngoi php ton c bn m bn bit, th th vin ton hc cha nhng php ton
phc tp khc m ti chc l bn s cn n, v d nh l cc hm ly tha (nu nh bn
khng bit y l g th c th bn cn qu tr hay l bn hc ton vn cha ).
Trong trng hp, chng ta mun thc hin nhng php tnh ly tha trong C! Lm sao tnh mt
s m 2 ? Bn c th vit 5 trong on m ca bn, nhng my tnh s khng hiu ci l g
c t nht bn phi gii thch cho n bng cch s dng nhng th vin ton hc !
c th s dng nhng function trong th vin ton hc, chng ta bt buc phi thm
preprocessor directives u chng trnh:
C Code:
#include <math.h>
Mt khi m bn lm iu , bn c th s dng tt c cc function trong th vin ny.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 73 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Ti ngh l ti nn gii thiu chng vi bn. Ti s khng lm mt list y y, v n c rt


nhiu, cc ngn tay ng thng ca ti s phng ln trc khi kt thc phn hng dn ny.
Ti ch hng dn cc bn mt s function chnh, nhng function c v quan trng nht.
C th trnh ton hc ca bn khng hiu lm cch no c th vit c nhng
function ny. Nu ng l nh vy, bn khng cn phi lo lng g c. Ch cn c, vic ny
khng c hi cho bn u.
V ti s cho bn mt li khuyn min ph: hy ch tm vo nhng tit ton, h khng ni
nh ti y u .

fabs
Function ny s tr v gi tr tuyt i ca mt s, trong ton hc vit l |x|.

Nu bn a function ny gi tr l -53, n s tr v gi tr 53.


Nu bn a function ny gi tr l 53, n s tr v gi tr 53.

C Code:
double giatri_tuyetdoi = 0, sohang = -27;
giatri_tuyetdoi = fabs(sohang); // gia tri tuyet doi cua sohang se la 27
Function ny s tr v mt s dng double v vy bin s ca bn a vo cng phi thuc
dng double.
Trong th vin stdlib.h cng c mt function tng t gi l abs , n cng hot
ng nh vy, ch tr vic n s dng nhng s nguyn int v n tr v gi tr dng s
nguyn int.

ceil
Function ny s tr v gi tr dng s nguyn nu nh ta a cho n mt s thc.
l mt dng lm trn. N s lun cho mt s nguyn c gi tr ln hn.
V d, nu nh ta cho n gi tr l 26.512, function s tr li 27.
N s dng v tr li gi tr dng double:

C Code:
double lamtronLen = 0, sohang = 52.71;
lamtronLen = ceil(sohang); // lamtronLen se bang 53

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 74 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

floor
Tri ngc vi function ceil, function ny cho ta s nguyn c gi tr nh hn.
Nu nh ta cho n 37.91, function floor s tr li 37.
C Code:
double lamtronXuong = 0, sohang = 37.91;
lamtronXuong = ceil(sohang); // gia tri cua lamtronXuong se bang 37

pow
Function ny cho php tnh ly tha mt s. Chng ta phi ch ra cho n 2 gi tr: s hng v cp
ly tha ca s . y l cu trc ca function ny:
C Code:
pow(sohang, capLuyThua);
V d, 2 ly tha 3 (chng ta thng ghi l 2^3 trn my tnh), l php ton 2 * 2 * 2, cho kt
qu l 8 :
C Code:
double ketqua = 0, sohang = 2;
ketqua = pow(sohang, 3); // ketqua se duoc 2^3 = 8
Bn c th s dng function ny tnh bnh phng ca mt s.

sqrt
Function ny tnh cn bc 2 ca mt s, n cho ta gi tr dng double.
C Code:
double ketqua = 0, sohang = 100;
ketqua = sqrt(sohang); // ketqua tro thanh 10

sin, cos, tan


y l 3 function c s dng trong lng gic.
Cch hot ng ca chng nh nhau, tr v gi tr dng double.
Chng ta phi cho n gi tr radian.
(mt radian bng 180 )
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 75 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

asin, acos, atan


y l nhng function arc sinus (arcsin), arc cosinus (arccos) v arc tangente (arctan), cc
function lng gic khc.
Cng hot ng tng t nh trn, tr v gi tr dng double.

exp
Function tnh exponential, hay cn gi l ly tha c s e. Tr v gi tr dng double.
VD: exp(4) = e4

log
Function tnh logarit t nhin, l logarit c s e. (chng ta thng ghi l ln )
ngy trc cn i hc ng thy bo c ci ny l lc n be

log10
Function ny tnh le logarit c s 10 ca mt s.
ng thy bo c l lc mi

Li kt:
Tm li, ti khng ni v cc function khc. (Tht s l ti khng bit l chng c dng
lm g )
Vi nhng function ny bn c th s dng cho phn ln cc trng hp lin quan n ton hc.
Xin ni thm ln na, nu bn khng hiu nhng iu ti ni trn th cng khng c g nghim
trng c v nhng php ton ny chng ta khng nht thit cn n. Tr khi bn phi lm mt
chng trnh tnh ton mt vn khoa hc no .
D g bn cng nn nm vng function floor, ceil, v pow, n rt cn thit cho chng ta trong
tnh ton.
Bi hng dn chi tit v cc cng thc ton ti xin nhng cho nhng thy gio dy ton. Nu
bn vn cn i hc, ti cho bn mt li khuyn chn thnh: Hy hc tt mn ton, iu s
gip ch rt nhiu trong lp trnh. Nhng chng ta rt t khi phi tnh ly tha v tip tuyn khi
vit chng trnh, n ph thuc vo chng trnh m chng ta vit, ti ni li.
V d, nu c ai trong cc bn hng th vi nhng vic lin quan n 3D (ti s hng dn v
3D sau), bn cn phi c mt s hiu bit v hnh hc khng gian ( th, vec-t)
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 76 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

TRC NGHIM KIN THC.

"Du nhn" trn my tnh l k hiu no ?


A. *
B. +
C. /
D. E. %

Mt cu hi n gin v module
Kt qu s l bao nhiu: 17 % 5 ?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 5
G. 15

"Ketqua" s mang gi tr bao nhiu ?


C Code:
int ketqua = 0;
ketqua = (8 / 3) - 2;
A.
B.
C.
D.

-2
0
1
2

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 77 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Phng php ny l g ?
C Code:
sohang++;
A.
B.
C.

Increment
Increasing
Supplementation

Bin s "sohang" s mang gi tr bao nhiu ?


C Code:
int sohang = 4;
sohang--;
sohang *= 4;
sohang %= 12;
sohang += 1;
A.
B.
C.
D.

1
4
12
14

Function no sau y s lm trn 5.47 thnh 5 ?


A. pow
B. ceil
C. floor
D. sqrt

p n:
123456-

A
C
B
A
A
C

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 78 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bi 6: Condition (iu kin)


Trong bi 1, ta thy rng c rt nhiu ngn ng lp trnh, trong mt s ngn ng hot ng
tng t nhau, v d nh ngn ng PHP kh ging vi C, tuy nhin ngi ta s dng PHP
thit k web nhiu hn.
Cc ngn ng thng c mt s im ging nhau do chng cng s dng li cc nguyn tc c
bn ca ngn ng i trc. Ngn ng C c to ra cch y kh lu, v m hnh ca phn ln
cc ngn ng mi hin gi u c to ra da trn C.
Nguyn tc c bn th c rt nhiu nh cch khai bo bin s, cc cch thc hin php tnh (hu
nh cc ngn ng lp trnh u ging nhau mt ny!) v cch s dng condition.
Phn ny gm :

Condition "if... else"


Boolean, trung tm ca nhng conditions
Condition "switch"
Ternaries: nhng condition rt gn
TRC NGHIM KIN THC.

Condition ifelse
Chng ta thng mun kim tra gi tr ca mt bin s. V d Nu bin s maymoc c gi tr l
50, hy thc hin cng vic . Hoc nu bin s nh hn 50, nh hn hoc bng 50, ln hn,
ln hn hoc bng
iu c th c thc hin trong C thng qua vic s dng condition ifelse. Condition
dng kim tra gi tr ca bin s. V bit cch s dng n, chng ta s i theo s sau:
1.
2.
3.
4.
5.
6.

Mt s k t cn bit trc khi bt u.


Test if
Test else
Test else if
Cch thit lp nhiu conditions cng lc
Nhng sai phm thng gp m ngi mi hc cn trnh

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 79 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Mt vi k hiu c bn cn bit trc khi hc cch s dng condition


ifelse trn C
Chng ta cn phi thuc lng bng k hiu ny:

Hy ch , kim tra bng nhau, ta cn nhp 2 k t == . Nhng ngi bt


u hc lp trnh thng mc li ch nhp mt k t =, chng khng c cng ngha trong
ngn ng C, ti s ni v vn ny di.

if
Chng ta s thc hin mt chng trnh n gin, n s ni vi my tnh:
NU bin s tha iu kin ...
TH thc hin ...
.
Trong ting anh, t nu s dch thnh if , t ny cng c s dng trong C khai bo
mt condition.
vit mt condition if, u tin hy vit t if, k m ngoc n. Trong ngoc n, hy vit
iu kin.
Sau , m mt du gp { v hy ng li pha sau }. Trong s cha tt c nhng instruction
s c thc hin nu iu kin tha mn.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 80 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Chng ta s vit nh sau:


C Code:
if (/* iu kin ca bn */)
{
// Cc Instructions s c thc hin nu nh iu kin tha mn
}
Ti v tr ch thch iu kin ca bn , chng ta s vit mt iu kin kim tra bin s.
V d chng ta c th kim tra mt bin s tuoi s cha gi tr l tui ca bn. Chng ta s
xt xem bn c phi l ngi trng thnh hay khng, c ngha l tui ca bn c ln hn hoc
bng 18 hay khng:
C Code:
if (tuoi >= 18)
{
printf ("Ban la nguoi truong thanh !");
}
K t >= c ngha l ln hn hoc bng , chng ta thy trong bng lit k cc k t c bit
trn.
Cc du gp {...} khng bt buc nu bn trong n ch cha duy nht mt instruction.
Bn c th vit nh bn di nhng ti khuyn bn hy lun t nhng du gp chng
trnh bn c r rng.
C Code:
if (tuoi >= 18)
printf ("Ban la nguoi truong thanh !");

Test th on code trn


Nu nh bn mun test nhng on m trc xem if hot ng nh th no, chng ta phi t
condition if bn trong mt function main v ng qun khai bo bin s tui, v cho n mt gi
tr no theo thch ca bn.
Ti ngh rng bn c th t mnh vit ra on m ny v sau chy th n.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 81 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

y l on m hon chnh:
C Code:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long tuoi = 20;
if (tuoi >= 18)
{
printf ("Ban la nguoi truong thanh !\n");
}
return 0;
}
y, bin s tui bng 20, vy Ban la nguoi truong thanh ! s c hin th
Hy th thay i gi tr ca bin s. Cho gi tr mi l 15: iu kin khng tha mn v Ban la
nguoi truong thanh ! khng hin th ln ny.
Hy gi li on m ny s dng cho v d tip theo.
Vn cn gii thch
Cch bn t nhng du gp { } khng quan trng, chng trnh ca bn s cng chy tt nu
nh bn vit tt c trn cng mt hng. V d:
C Code:
if (tuoi >= 18) { printf ("Ban la nguoi truong thanh !"); }
Mc d bn c th vit nh vy nhng cch vit ny khng h c khuyn khch (iu ny
thc s rt quan trng nh).
Thc s l vit tt c trn cng mt hng s khin cho vic c on m ca bn v cng kh
khn. Bn cn tp cch trnh by m ngun ca mnh ngay t by gi, nu khng sau ny khi
bn vit cc chng trnh ln hn, bn s khng tm thy c ci bn cn tm trong !
Hy th trnh by li m ngun ca bn theo cch thc ca ti: mt du gp m { duy nht trn 1
hng, cc dng sau l cc instruction (nhn tab c th cch v bn phi ), sau mt
du gp ng } duy nht trn mt hng.
C rt nhiu cch thc hay trnh by m ngun v n khng lm thay i hot ng
ca chng trnh.
Trong sut qu trnh t gi v sau bn s bt gp cc on m c trnh by bi cc
style hi khc. Nhng v c bn hu ht cc on m u c cch trnh by thong v
d nhn.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 82 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

else ni nu khng
Chng ta bit cch vit condition n gin, hy i xa hn mt cht: iu kin khng tha mn
(sai), chng ta s yu cu my tnh thi hnh mt instruction khc.
Trong ngn ng ca chng ta, iu s c ghi vi dng tng t nh sau :
NU bin s tha iu kin...
TH thc hin ...
NU KHNG hy thc hin ...
Ch cn thm vo t else sau du gp kt thc ca if.
Mt v d nh :
C Code:
if (tuoi >= 18) // Neu tuoi lon hon hoac bang 18
{
printf ("Ban la nguoi truong thanh !");
}
else // Neu khong...
{
printf ("Hehe, ban con la con nit !");
}
Ta c th hiu n gin: nu nh bin s tui c gi tr ln hn hoc bng 18, s hin th Ban
la nguoi truong thanh !
Nu khng hin th Hehe, ban con la con nit !

else if ni nu khng nu
Chng ta thy bng cch no to mt nu v mt nu khng . Chng ta cng c th
to mt nu khng nu. Nu nh iu kin u khng tha mn, chng ta s kim tra bin s
vi mt iu kin khc. Nu khng nu t bn trong if v else.
Chng ta yu cu my tnh:
NU bin s tha iu kin 1
TH thc hin vic 1
NU KHNG NU bin s tha iu kin 2
TH thc hin vic 2
NU KHNG thc hin vic 3

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 83 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Dch sang ngn ng C:


C Code:
if ( tuoi >= 18) // Neu tuoi lon hon hoac bang 18
{
printf ("Ban la nguoi truong thanh !");
}
else if ( tuoi > 4 ) // Neu khong, Neu tuoi nho hon 18 va lon hon 4
{
printf ("Hehe, ban con la con nit !");
}
else // Neukhong...
{
printf ("Oe oe"); // Ngon ngu tre so sinh, ban khong the hieu duoc dau
}
My tnh s thc hin nhng kim tra theo th t:
u tin n s kim tra if u tin: nu nh iu kin c tha mn, n s thi hnh cc
instructions c trong cc du gp {...} u tin.
Nu khng, n s i n nu khng nu kim tra cc iu kin mi: nu ng, th
n s thi hnh cc instruction trong cc du gp {...} th 2 ca else if.
Cui cng, nu khng c iu kin no c tha mn, n s chy nhng instruction ca
else nu khng
else v else if khng bt buc phi c. Cn phi c t nht mt if to
mt condition
Chng ta c th t bao nhiu else if nu nh ta mun. Chng ta c th vit nh sau:
NU bin s tha iu kin 1
TH thc hin vic 1
NU KHNG NU bin s tha iu kin 2
TH thc hin vic 2
NU KHNG NU bin s tha iu kin 3
TH thc hin vic 3
NU KHNG NU bin s tha iu kin 4
TH thc hin vic 4
NU KHNG thc hin vic 5

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 84 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Thit lp nhiu iu kin cng lc


Ta c th kim tra nhiu iu kin cng lc trong if. V d, cc bn mun xem th nu nh tui
ln hn 18 V nh hn 25.
Chng ta cn phi s dng cc k hiu sau y:
K hiu

ngha

&&

||

HOC

KHNG

Test V
on m s dng k hiu va nu
C Code:
if (age > 18 && age < 25);
Nhng k hiu && c ngha l V. Din dt bng ngn ng ca chng ta : Nu tui ln
hn 18 V b hn 25

Test HOC
to mt HOC, chng ta s dng 2 k t ||.
Chng ta hy tng tng mt chng trnh kim tra v quyt nh quyn m ti khon ngn
hng. m mt ti khon ngn hng, tui khch hng khng c nh qu (chng ta s ty
tin t iu kin tui phi ln hn 30) hoc khch hng c nhiu tin (tt nhin ngn hng s
dang tay n cho k c khi tui bn b hn 10)
y l on m nhn bit quyn m mt ti khon ngn hng :
C Code:
if (tuoi > 30 || tien > 100000)
{
printf("Chao mung ban den voi chung toi !");
}
else
{
printf("Cut !");
}
iu kin s c tha mn nu ngi ny c tui trn 30 hoc c s tin nhiu hn 100.000
euros.
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 85 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Test KHNG
K t cui cng cn li test l du chm than. Trong tin hc, du chm than c ngha l
Khng
Cc bn phi t k t ny trc iu kin ni rng Nu iu ny khng ng :
C Code:
if (!(tuoi < 18))
on m trn c th dch l Nu ngi ny khng phi l tr con
Nu du ! pha trc b ly i, on m s c ngha tri ngc : Nu ngi ny l tr
con

Mt s li thng gp ca ngi mi hc
ng qun c n 2 du ==
Nu chng ta mun kim tra xem ngi ny c phi 18 tui hay khng, chng ta phi ghi:
C Code:
if (tuoi == 18)
{
printf ("Ban vua moi truong thanh !");
}
ng qun vic t 2 k t bng trong mt if, nh th ny : ==
Nu bn ch t mi mt k t =, th bin s ca bn s nhn gi tr 18 (ging nh ta hc trong
phn bin s). Tt c nhng iu ta mun y, l kim tra gi tr ca bin s ch khng phi
thay i n! Hy ch im ny, c rt nhiu ngi trong cc bn ch t mt du = v khi
chng trnh bn c bt u th tt nhin l n khng chy ging nh h mun.
Du chm phy d tha

Mt li khc rt thng xuyn ca nhng ngi mi bt u hc lp trnh: c khi cc


bn t mt du chm phy sau dng ca if.
if l mt condition, chng ta s khng t du chm phy cui condition m phi l
cui mt instruction.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 86 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

on code sau y s khng chy v c mt du chm phy cui condition if :


C Code:
if (tuoi == 18); // dau cham phay nay KHONG duoc phep o day
{
printf ("Ban chi vua moi truong thanh");
}
C mt vn kh khn na l "condition if...else..." khng bit phi dch nh th no l ng,
v nu dch l "iu kin if...else..." th c th bn s nhm ln bi iu kin bn trong du ngoc
(...), nu dch l "hm iu kin..." th c th hiu nhm l cn t mt du chm phy cui
cng v n cng l mt hm.
Nn mnh quyt nh, gi l "condition" nu cp n "if...else...", gi "iu kin" nu cp
n iu kin bn trong (...) ca if.

Booleans, trung tm ca nhng conditions


Chng ta s tm hiu chi tit hn v cch thc hot ng ca condition ifelse.
Thc t, condition c tc ng bi mt th m trong tin hc ngi ta gi l nhng Boolean.
y l mt khi nim kh quan trng, cn phi nghe r (ng hn l phi nhn r
)

Mt s v d c th hiu r hn
Trong nhng bi hc v Vt LHa hc, thy gio ca ti thng c thi quen bt u t mt
s th nghim nh trc khi ging v mt khi nim mi.
By gi ti s bt chc ng y
Bn hy chy th on m n gin sau :
C Code:
if (1)
{
printf ("Dung");
}
else
{
printf ("Sai");
}
Kt qu :
Console:
Dung

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 87 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Nhng ??? Chng ta khng h a iu kin vo trong if, chng ta ch cho n mt s. Vy


ngha l g ?
Chng ta th mt v d khc, by gi bn hy thay th 1 bi 0 :
C Code:
if (0)
{
printf ("Dung");
}
else
{
printf ("Sai");
}
Kt qu:
Console:
Sai
Th mt s nhng v d khc, thay th 0 bi bt k mt s nguyn no,nh l 4,15, 226 ,-10, -36
.v.v...
Mi ln nh vy, n a ra kt qu l g ? N tr li l : iu ng .
Tm tt li cc th nghim trn: nu t 0, iu kin khng tha mn, v nu chng ta vo
gi tr 1 hay bt k mt s hng no, iu kin tha mn.

Gii thch
Thc t, mi khi ta kim tra mt iu kin trong mt if, n s tr v gi tr l 1 nu iu ng
v 0 nu iu sai.
V d :
C Code:
if (tuoi >= 18)
y, chng ta cn kim tra iu kin tuoi >= 18.
Gi nh rng tui c gi tr l 23, s cho kt qu ng, v my tnh thay th tuoi >= 18
bi 1. Sau , my tnh s ghi nh mt if (1) . Khi m s ny l 1, nh chng ta thy, my
tnh s hiu l iu kin ny l ng, v n s thi thnh cc instruction khi iu kin ng.
Tng t nu nh iu kin ny l sai, my tnh s thay th tuoi >= 18 bi s 0, v ngay tc
khc my tnh hiu iu kin l sai. My tnh s thi hnh instruction ca else .

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 88 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Kim tra vi mt bin s


By gi chng ta lm ci khc: gi kt qu ca iu kin vo trong mt bin s, nh chng ta
lm mt php tnh (bi v i vi my tnh iu kin cng l mt php tnh !).
C Code:
int tuoi = 20;
int truongthanh = 0;
truongthanh = tuoi >= 18;
printf ("truongthanh co gia tri: %ld\n", truongthanh);
Consle:
Truongthanh co gia tri: 1
Nh cc bn va thy, iu kin tuoi >= 18 tr v gi tr 1 v 20>=18 (ng).
Bin s truongthanh nhn gi tr 1, chng ta kim chng bng cch lm mt printf thy r
truongthanh thay i gi tr t 0 thnh 1.
Thc hin li v d trn, cho tui = 10. Trong trng hp ny, truongthanh c gi tr 0.

Bin s truongthanh l mt Boolean


Hy nm vng :
Bin s nhn gi tr 0 v 1 c gi l mt Boolean.
V :
0 = Sai
1 = ng
Chnh xc hn, 0 = sai v tt c cc s cn li l ng ( c kim chng). n gin, chng
ta khng s dng nhng s khc, s dng 0 v 1 ni iu l ng hay sai
Trong ngn ng C, khng c dng bin s Boolean . Mt dng bin s mi l bool c
thm vo trong C++ , s dng to ra nhng bin s dng Boolean.
Trong thi im ny, chng ta ch lm vic trn C, chng ta khng c cc dng bin s c bit
khc.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 89 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Booleans trong cc conditions


Chng ta s lm mt kim tra condition "if" bng cch s dng mt boolean :
C Code:
int truongthanh = 1;
if (truongthanh)
{
printf ("Ban la nguoi truong thanh !");
}
else
{
printf ("Ban la con nit");
}
V bin s truongthanh mang gi tr 1, iu kin ng, "Ban la nguoi truong thanh !" s hin th.
iu ny rt tin li, ngi khc c iu kin ca bn s c d dng hn. Khi h thy if
(truongthanh) th h c th hiu l Nu bn l ngi trng thnh
Nhng iu kin dng boolean thng r rng v d hiu nhng t nht bn cng phi t tn r
rng cho bin s, nh ti ni k t khi bt u.
y l mt v d khc gip bn hiu r hn :
C Code:
if (truongthanh && nam)
C ngha l "Nu bn la ngi trng thnh v bn l nam".
nam y l mt bin s khc dng boolean c gi tr l 1 nu bn l nam, v 0 nu bn l n.
Cu hi : nu chng ta vit if (truongthanh == 1) th n vn hot ng ng khng?
Vn hot ng nh bnh thng nhng nu ghi l if (truongthanh) th d hiu hn
Nm vng vn : nu bin s ca bn mang gi tr l mt s, hy vit iu kin di dng if
(variable == number) .
Ngc li, nu bin s ca bn mang gi tr l mt boolean (c ngha l s mang gi tr 1 hoc 0
ni rng iu l ng hay sai), th hy vit iu kin di dng if (boolean).

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 90 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Condition "switch"
Chng ta thy rng condition "if... else" l dng condition c dng thng xuyn nht.
i khi "if... else" b lp li kh thng xuyn. Xem v d ny:
C Code:
if (tuoi == 2)
{
printf ("Chao baby !");
}
else if (tuoi == 6)
{
printf ("Chao nhoc !");
}
else if (tuoi == 12)
{
printf ("Chao cau be !");
}
else if (tuoi == 16)
{
printf ("Chao chang trai !");
}
else if (tuoi == 18)
{
printf ("Chao anh !");
}
else if (tuoi == 68)
{
printf ("Chao ong !");
}
else
{
printf ("Toi khong co cau chao danh cho ban ");
}

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 91 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Thit lp mt switch
Nhng ngi lp trnh rt ght vic lm mt vic g nhiu ln, chng ta c c hi chng
minh iu ny trc . V trnh lp i lp li nhiu ln vic kim tra gi tr ca mi mt bin
s, ngi ta to ra mt cu trc khc ngoi "if... else"
V ngi ta gi n l "switch".y l mt switch c thc hin trn v d m ta va thy :
C Code:
switch (tuoi)
{
case 2:
printf("Chao baby !");
break;
case 6:
printf("Chao nhoc !");
break;
case 12:
printf("Chao cau be !");
break;
case 16:
printf("Chao chang trai !");
break;
case 18:
printf("Chao anh!");
break;
case 68:
printf("Chao ong !");
break;
default:
printf("Toi khong co cau chao danh cho ban ");
break;
}
Hy ly v d ca ti lm c s cho vic to mt switch khc ca ring bn. Tuy rng chng ta t
s dng n, nhng vic ny kh tin li v n gip ta vit t hn.
ngha vit "switch (bienso)" l "Ti s kim tra gi tr ca bin s bienso".
Tip bn hy m mt du gp v ng n li pha sau { }
Bn trong, bn s to nn tt c cc trng hp: case 1, case 2, case 4, case 5, case 45

Cc bn bt buc phi ghi instruction break cui mi trng hp. Nu bn khng


lm, n s c nhng instruction dnh cho cc trng hp khc pha di.
Instruction break ; l lnh yu cu my tnh ra khi nhng du gp.
Cui cng, trng hp default tng ng vi else m chng ta bit trc . Nu bin
s khng mang gi tr no c nu ra trc , th my tnh s c instruction nm trong
default.
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 92 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

To mt menu vi switch
switch thng xuyn c s dng to nhng menu trn console.
Trn console, to mt menu, chng ta s dng printf hin th nhng la chn khc nhau.
Mi la chn s c nh s, ngi s dng phi nhp vo s ca la chn m h mun
y l mt v d m console s phi hin th:
Console:
=== Menu ===
1. Pho
2. Bun bo Hue
3. Mi Quang
4. Thit cay
Lua chon cua ban ?
(Bn cn phi bit l khi ti nh ra cc dng ny ti ang cm thy rt i bng)

V y l nhim v ca cc bn: Hy to li mt menu nh th nh vo hm printf (qu d), s


dng scanf lu li la chn ca ngi s dng vo bin s luachonMenu (qu d ), v cui
cng hy s dng mt switch ni vi ngi s dng bit rng "Bn la chn ".
No, tin hnh thi.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 93 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

p n
y l kt qu m ti mong mun rng t bn c th tm ra :
C Code:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int luachonMenu;
printf("=== Menu ===\n\n");
printf("1. Pho\n");
printf("2. Bun bo Hue\n");
printf("3. Mi Quang\n");
printf("4. Thit cay\n");
printf("\nLua chon cua ban ? ");
scanf("%d", &luachonMenu);
printf("\n");
switch (luachonMenu)
{
case 1:
printf("Ban da chon Pho. Lua chon tuyet voi !");
break;
case 2:
printf("Ban da chon Bun bo Hue. Lua chon chinh xac !");
break;
case 3:
printf("Ban da chon Mi Quang. Qua tuyet !");
break;
case 4:
printf("Ban da chon Thit cay. Hay den quan nhau !");
break;
default:
printf("Ban da khong nhap dung so can thiet, ban khong duoc an gi het !");
break;
}
printf("\n\n");
return 0;
}

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 94 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Ti hi vng rng bn khng qun vic t "default" cui ca switch !


Trn thc t, nu bn lp trnh th bn phi ngh n tt c cc trng hp. Bn ni r rng
rng hy nhp vo mt s t 1 n 4, nhng s c mt thng n no s nhp vo 10 hay c
th l gkfhgs. Tt nhin khng phi l iu chng ta mong mun.
Tm li bn hy lun cn trng: ng bao gi tin tng vo ngi dng, i khi h c th nhp
vo bt c ci g.
Hy tin on trc mt trng hp default hoc mt else nu bn thc hin v d trn
bi if.
Ti khuyn bn hy lm quen vi cch hot ng ca nhng menu trn console. V chng ta
s thng xuyn lp trnh nhng chng trnh chy trn console v ti chc l bn s cn n.

Ternary: nhng conditions rt gn


C mt cch khc vit nhng condition, nhng rt him.
Chng ta gi l ternary expression.
C th, n cng tng t nh "if... else", ch tr vic tt c ch nm trn 1 dng !
Thay v phi gii thch di dng, ti s cho bn 2 condition ging nhau: ci th nht s dng
if... else, v ci th 2 cng nh th nhng s s dng dng ternary.
Mt condition if... else c bit n kh nhiu
Hy gi nh rng chng ta c mt bin s dng boolean truongthanh mang gi tr ng (1), v
sai (0) nu ngi l con nt.
Chng ta mun thay i gi tr ca bin s tuoi da vo hot ng ca boolean, s cho gi tr
18 nu ngi trng thnh v 17 nu ngi l con nt. Ti ng rng y l mt
v d kh ngu ngc, nhng gii thiu cho bn thy lm cch no chng ta c th s dng
nhng ternary.
Chng ta s thc hin iu vi if... else :
C Code:
if (truongthanh)
tuoi = 18;
else
tuoi = 17;

Ch thch rng ti xa i nhng du gp { .. } v y ch c mt instruction duy nht, ti


gii thch cho bn iu ny trc .
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 95 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Condition ternary
y l mt on m hon ton tng t on m va ri, nhng ln ny chng ta s vit di
dng ternary:
C Code:
tuoi = (truongthanh) ? 18 : 17;
Cc ternary cho php, ch trn 1 dng, thay i gi tr ca bin s da vo hot ng ca mt
iu kin. y, iu kin ca chng ta ch n gin l truongthanh , nhng n cn c th
hot ng trn bt k iu kin khc khng k l di hay ngn.
Du chm hi "?" y c ngha l c phi bn l ngi trng thnh ? . Nu ng, n s a
gi tr 18 vo bin s tuoi, nu khng ( du ":" c ngha l else y), n s a gi tr 17.
Nhng ternary tht s khng cn thit, v c nhn ti ngh l khng nn s dng n nhiu qu v
n c th khin cho vic c mt on m kh khn hn.
Tuy nhin, bn cng phi hiu r n v s c mt ngy, bn ri vo mt on m vi y nhng
ternary vi mi cch . Bn s hiu c n hot ng nh th no.
V k t giy pht ny, bn s thc hin cc condition khp mi ni trong chng trnh ca bn,
v vy tt hn bn hy luyn tp vi n
y l mt tng luyn tp (ln ny s khng c p n
): hy to mt cng c tnh ton
trn console. Hin th u tin menu yu cu ngi s dng chn la nhng php tnh: (cng,
tr, nhn, chia c th thm vo cn bc 2, bng cch s dng th vin ton hc)
Khi m ngi s dng la chn xong, hy yu cu h nhp vo cc gi tr cn thit v hin th
p n!
Bn s s dng nhng g bn hc c t trong phn ny, ti mun nhn mnh mt im khc:
nhng boolean.
Tht s cc k quan trng vic nm vng rng boolean l nhng bin s c ngha l ng hay sai
ty theo gi tr ca n (0 l sai, 1 l ng).
Chng tip theo s s dng li nhng boolean v cc condition, v vy bn hy chun b tt
trc khi sn sng
C gng ln no !

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 96 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bi 7: Loop (Vng Lp)


Chng ta bit lm cch no thit lp nhng conditions, by gi chng ta s hc cch thc
hin cc vng lp.
Vy loop (vng lp) l g ?
L mt phng php gip ta c th lp li nhiu ln mt nhm cc instructions. Rt tin li, c
bit l trong bi thc hnh u tin ang i bn sau khi kt thc phn ny
Hy th gin, khng c g phc tp c. phn trc, chng ta thy th no l nhng Boolean,
tng i kh nut.
Nhng by gi th tri chy hn ri, v bi thc hnh sp ti cng khng khin bn gp qu
nhiu rc ri u.
Ni chung l hy c hiu r n, v chng ta chun b bc vo chng th II, v s c nhiu iu
hng th hn rt nhiu.

Th no l mt vng lp?
Tng t nh cc conditions, c nhiu cch thc hin mt vng lp. Nhng d thc hin bng
cch no, th chng u thc hin mt chc nng: lp li nhiu ln cc instruction.
Chng ta s tm hiu 3 dng vng lp thng s dng trong C:
1.
2.
3.

while
do... while
for

Biu th hin cch hot ng ca cc vng lp

My tnh thc hin nhng instruction t cao xung thp (ging nh mi khi)
i.
ii.
iii.

Khi n cui ca vng lp, n quay tr li instruction u tin.


N li c nhng instruction t cao xung thp...
... V li bt u t instruction u tin.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 97 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Vn xy ra l nu ta khng dng n li th my tnh s khng ngng lp li nhng instruction


ny. iu ny khng khin ta bn tm v n lp li theo yu cu ca chng ta.
V ti y li xut hin ... nhng iu kin!
Khi chng ta to mt vng lp, chng ta lun phi to mt iu kin. iu kin ny c ngha l
Lp li vng lp nu iu kin ny vn ng.
C rt nhiu cch thc hin n ging nh ti ni. V sau y l cch thc hin mt vng
lp while trn C

While loop (vng lp While)


Cch to ra mt vng lp while.
Code C:
while (/* Dieukien */)
{
// Cac instructions duoc lap lai
}
Ch n gin nh vy
While c ngha l "h cn". Chng ta s ni vi my tnh H iu kin vn ng th lp li cc
instruction c vit trong du gp.
Ti thc hin mt v d n gin: Yu cu ngi s dng nhp vo s 47. H ngi s dng
khng thc hin ng, th my tnh s tip tc yu cu nhp vo s 47. Chng trnh s khng
dng li nu nh ngi s dng vn khng nhp vo s 47.
Code C:
int giatriCanNhap = 0;
while (giatriCanNhap != 47)
{
printf("Hay nhap vao so 47 ! ");
scanf("%d", &giatriCanNhap);
}

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 98 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

V y l cch m v d trn thc hin. Ghi thm rng ti p mnh nh sai 2-3 ln trc khi
nh vo s chnh xc.
Console:
Hay nhap vao so 47 ! 10
Hay nhap vao so 47 ! 27
Hay nhap vao so 47 ! 40
Hay nhap vao so 47 ! 47
Chng trnh t dng li cho n khi s 47 c nhp vo.
Vng lp s lp li cc instruction nu nh ngi s dng vn khng nhp vo ng s 47. Ch
n gin nh vy.
By gi, chng ta s th lm mt vi iu th v hn: chng ta mun vng lp s lp li nhiu
ln mt instruction.
Chng ta s to mt bin s counter c gi tr 0 lc bt u, chng ta s tng dn gi tr ln.
Bn cn nh increment ko? Chng ta s cng thm 1 vo bin s bng cch vit bienso++.
Hy c k on m ny v hy th hiu cch hot ng:
Code C:
long counter = 0;
while (counter < 10)
{
printf ("Xin chao cac ban !\n");
counter++;
}
Kt qu :
Console:
Xin chao cac ban !
Xin chao cac ban !
Xin chao cac ban !
Xin chao cac ban !
Xin chao cac ban !
Xin chao cac ban !
Xin chao cac ban !
Xin chao cac ban !
Xin chao cac ban !
Xin chao cac ban !
on m ny s lp li 10 ln cu Xin chao cac ban !.
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 99 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Chnh xc n hot ng nh th no?


Trnh t hot ng ca vng lp nh sau:
1. Lc bt u, chng ta c mt bin s counter c gi tr l 0.
2. Vng lp while vn lp li h gi tr counter vn b hn 10, v counter c gi tr l 0 lc
bt u, my tnh s i vo vng lp
3. Hm printf s hin th ra mn hnh cu Xin chao cac ban !
4. My tnh s tng gi tr ca bin s counter ln 1, nh vo instruction counter++;.
By gi counter c gi tr l 1
5. n cui ca vng lp (du }), by gi chng ta quay li t khi bt u, t while.
Chng ta s kim tra li iu kin: c phi gi tr ca counter vn b hn 10 ?. Vng,
gi tr ca n hin gi l 1, vy hy lp li cc instruction ca vng lp.
V c th tip tc... Counter tng dn cc gi tr 0, 1 ,2 ,3 ,...,8 ,9 ,10. n khi counter c gi tr
l 10, iu kin counter < 10 khng cn chnh xc, nn chng ta s ra khi vng lp
Mt khc, chng ta c th thy gi tr ca bin counter tng dn theo kch c ca vng lp
Nu bn hiu vn ny, th xem nh bn hiu tt c v vng lp while.
Bn c th tng gii hn ca vng lp (<100 thay v <10). Vic ny rt hu ch nu bng
dng bn b chp pht 100 ln

Ch nhng vng lp khng gii hn


Khi bn to mt vng lp,hy chc chn rng n c th dng li ti mt thi im no ! Nu
iu kin lun lun ng, chng trnh ca bn s khng bao gi dng li !
y l mt v d v mt vng lp khng gii hn:
Code C:
while (1)
{
printf("Vong lap khong gioi han\n");
}
Bn c nh nhng Boolean: 1 = ng, 0 = sai. Ti y, iu kin lun lun ng, v my tnh s
hin th vong lap khong gioi han lin tc v khng ngng !

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 100 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

dng li chng trnh, trn Windows bn khng c la chn no khc ngoi


vic nhn vo du X gc phi bn trn ca console. Trn Linux, bn c th nhn Ctrl + C
dng chng trnh.
Tm li hy ch : bng mi cch phi trnh ri vo vng lp khng gii hn.
i khi vng lp khng gii hn s c li, nht l trong cc game in t ta s thy sau ny.

Do while loop (vng lp do... while)


Dng vng lp ny tng t nh while, ch khc mt iu l n t c s dng hn.
iu khc bit so vi while l v tr ca iu kin. i vi while iu kin nm v tr bt u
vng lp, cn do... while, iu kin nm cui cng:
Code C:
long counter = 0;
do
{
printf ("Xin chao cac ban !\n");
counter++;
} while (counter < 10);
C iu g khc bit y ?
Rt n gin: vng lp while lun chc chn rng n s khng bao gi hot ng nu nh iu
kin sai t khi bt u. V d, nu nh ta gn cho counter gi tr l 50, nhng iu kin sai k t
khi bt u th chng trnh s khng tin vo vng lp.
i vi vng lp do... while th khc: vng lp ny lun lun thc hin t nht mt ln. Thc t,
iu kin s c kim tra v tr kt thc ging nh ta thy. Nu nh bin counter c gi tr
l 50, mc d iu kin b sai nhng vng lp vn s thc hin t nht mt ln.
i khi vng lp ny kh tin dng v lun chc rng chng trnh lun chy n mt ln. Nhng
d g th n vn kh him.

C mt iu c bit trong vng lp do... while l c mt du chm phy pha sau


while, bn ng qun iu . Nu khng c n, chng trnh ca bn s khng th bin
dch c

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 101 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

For loop (vng lp for)


V nguyn tc, vng lp while cho php thc hin tt c nhng vng lp m ta mun. Nhng
trong nhiu trng hp, ngi ta cn mt loi vng lp khc gn gng hn.
Vng lp for c s dng kh nhiu trong lp trnh. Ti khng th tnh chnh xc nhng ti
chc rng n c s dng gp nhiu ln while, v vy bn cn phi bit r 2 loi vng lp ny.
Nh ti ni vi bn, vng lp for cng chnh l mt dng khc ca while. y l mt v d v
while m ta thy trc
Code C:
long counter = 0;
while (counter < 10)
{
printf ("Xin chao cac ban !\n");
counter++;
}
Cng trong trng hp tng t nhng ta nu ta dng vng lp for:
Code C:
long counter;
for (counter = 0 ; counter < 10 ; counter++)
{
printf ("Xin chao cac ban !\n");
}
C bao nhiu im khc bit?
Bn c th thy rng chng ta khng khai bo gi tr ca bin s ngay sau khi to ra n
(nhng chng ta c quyn lm iu ).
C rt nhiu th trong ngoc sau for (chng ta s xem xt sau).
Cng khng c counter++ trong vng lp ging nh khi dng vng lp while.
N c tm thy trong ngoc ( ) v cng chnh im ny khin vng lp for tr nn th v.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 102 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

C 3 instructions vit ngn gn trong ngoc v chng cch nhau bi nhng du chm phy:

instruction u tin dng khai bo: khai bo bin s counter. Trong trng hp ca
chng ta, bin s c gi tr l 0.

instruction th hai l iu kin: ging nh vng lp while, y l iu kin vng lp


c thc hin. Khi iu kin vn cn ng, th vng lp li s c tip tc.

Cui cng c mt increment y: instruction cui cng s c thc hin cui mi


vng lp cp nht gi tr ca bin s counter. Tng t, chng ta cng c th thc hin
decrement (counter--;) hoc bt k dng php tnh no (counter += 2); tng hoc gim
gi tr cho nhng bin s.

Tm li, ging nh ta thy vng lp for khng c g khc bit ngoi mt s th c vit
ngn gn hn so vi vng lp while
Hy nm vng n, chng ta s cn s dng n rt nhiu ln! Trong chng tip theo, c l chng
ta s mt mi vi mt t bi thc hnh.
Nh bn bit, trong nhng bi thc hnh hu nh s khng c thm kin thc mi, y l c
hi bn c th ng dng nhng g c hc trong nhng bi hc trc.
kt thc phn ny vi mt hnh vui m ti chc l bn c th hiu c ngha ca n

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 103 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bi 8: Test Program: Ln hn hay nh hn


Test Program: Ln hn hay nh hn, chng trnh u tin ca bn
By gi chng ta n phn Test Program u tin. Phn ny s kim chng xem bn c th thc
hin li nhng g bn hc c khng. Bi v, l thuyt th ch c vy nhng nu chng ta
khng bit cch thc hnh nh th no th tht ung ph thi gian bn b ra hc chng.
Bn c tin khng? Nu bn n c y c ngha l bn c kh nng to ra mt
chng trnh kh th v ri y.
Mt tr chi trn console. Kh n gin, v th ti chn n lm bi Test Program u tin.

Chun b v mt vi gi
Nguyn tc ca chng trnh
Trc tin, ti phi gii thch cc bn chng trnh ca chng ta hot ng da vo u.
y l mt tr chi gi l Ln hn hay nh hn
Nguyn tc l nh sau:
1. My tnh s chn ngu nhin mt s t 1 n 100.
2. My tnh s yu cu bn on s l bao nhiu.
3. My tnh s so snh s bn chn v s b mt . My tnh s gi cho bn bit s b
mt ny ln hay nh hn s m bn chn. Nu on ng th chng trnh dng li.
4. Nu bn on sai bc 3, th my tnh li ku bn on tip.
5. ... V my tnh li gi s b mt ln hn hay nh hn.
6. V n vn tip tc cho n khi bn tm thy s b mt .
Mc ch ca tr chi ng nhin l tm s b n vi s ln on nh nht
V y l mn hnh ca mt phn chi, v y l nhng g bn phi lm :
Console:
So can tim la bao nhieu ? 50
Lon hon !
So can tim la bao nhieu ? 75
Lon hon !
So can tim la bao nhieu ? 85
Nho hon !
So can tim la bao nhieu ? 80
Nho hon !
So can tim la bao nhieu ? 78
Lon hon !
So can tim la bao nhieu ? 79
Chuc mung ! Ban da tim duoc so bi mat !!!
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 104 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Cch chn ngu nhin mt s

Vy lm sao my tnh chn ngu nhin mt s? Ti vn cha bit lm nh th no !


V.
n lc ny, bn vn cha bit cch yu cu my tnh chn ra mt s ngu nhin. Tuy my tnh
tnh rt gii vic tnh ton nhng n khng bit cch no thc hin cng vic trn nn iu
ny khng h n gin.
Trn thc t, th c c mt s ngu nhin, ngi ta phi yu cu my tnh thc hin
nhng php ton kh phc tp...
Ta c 2 cch sau:
Ta yu cu ngi s dng nhp vo mt s ngu nhin vi hm scanf trc. iu ny
dn n phi c hai ngi cng chi tr chi ny: mt ngi nhp vo s b mt ngu
nhin v ngi cn li on s b mt .
Hoc l ta c gng khin my tnh t to ra mt s ngu nhin. Li th l chng ta c th
chi ngay tr ny mt mnh. Bt li... l ti phi hng dn cc bn lm cch no thc
hin
Chng ta s chn cch th hai, v ti khng h ngn cn bn code cch th nht nu nh bn
mun.
to ra mt s ngu nhin, ngi ta s dng function rand( ). Function ny s to ra mt s
ngu nhin bt k. Nhng chng ta li cn mt s ngu nhin t 1 n 100. (V nu chng ta
khng bit c gii hn ca s b mt, th tr chi s v cng kh).
lm c nhng vic trn, chng ta s s dng cng thc sau (tt nhin ti s gii thch cho
bn ngha ca n l g ! ):
Code C:
srand (time(NULL));
soBiMat = (rand( ) % (MAX - MIN + 1)) + MIN;
Dng th nht (vi srand) cho php bt u cng vic khi to mt s ngu nhin. Vng, hi
phc tp mt t, ti bo trc cho bn ri, soBiMat l mt bin s cha s c chn ra ngu
nhin.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 105 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Instruction srand phi c chy duy nht mt ln ( u chng trnh). Bt buc


ch mt ln, duy nht mt ln.
Sau bn c th s dng rand() bao nhiu ln ty thch nhng ng qun rng khng
my tnh thc hin srand nhiu hn hai ln trong mt chng trnh.
v MIN l nhng bin s constants, s u tin l gii hn ln nht (100) v s th hai l
gii hn nh nht (1). Ti khuyn bn nn xc nh nhng constants ny u chng trnh.
Nh sau:
MAX

Code C:
const int MAX = 100, MIN = 1;
Nhng th vin km theo
chng trnh bn khng b li, chng ta cn phi thm vo ba th vin: stdlib, stdio v time
(ci cui cng dng cho nhng s ngu nhin).
V chng trnh phi c bt u bi:
Code C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
Ti ch ni nhiu thi !
Ti s khng gii thch thm cho bn v nu tip tc ti s l ra ht ton b code ca chng
trnh !

bn c th to c nhng s ngu nhin, ti bt buc ch cho bn nhng dng


codes n lin trn v khng gii thch r n hot ng nh th no. Ti thc s
khng thch iu ny lm, nhng v ti khng cn la chn no khc trong thi im hin
ti. Sau ny ti s ch bn nhng kin thc mi gip bn hiu c nhng vn trn.
Tm li, bn c kin thc, ti cng gii thch cho bn nguyn tc ca tr chi, ti
cho bn thy mt phn mn hnh tr chi ca chng trnh.
Vi nhiu thng tin, ti ngh bn c th t mnh vit chng trnh ny.
No hy bt u thi !
Chc bn may mn !

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 106 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

p n Test Program "Ln hn hay Nh hn"


y l p n ti a ra cho bn:
C Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc,char** argv)
{
int soBiMat = 0, soHienTai =0 ;
const int MAX= 100, MIN=1;
// Tao mot so ngau nhien
srand(time(NULL));
soBiMat = (rand() % (MAX - MIN + 1) + MIN);
/*Vong lap cua chuong trinh. No se tu lap lai cho den khi nguoi
choi tim duoc so bi mat*/
do
{
//Yeu cau doan so bi mat
printf("So can tim la bao nhieu ? ");
scanf("%d",&soHienTai);
//So sanh so hien tai voi so bi mat
if (soBiMat>soHienTai)
printf("Lon hon !\n");
else if (soBiMat<soHienTai)
printf("Nho hon !\n");
else
printf("Chuc mung ! Ban da tim duoc so bi mat !!!\n");
} while (soHienTai!=soBiMat);
return 0;
}

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 107 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Gii thch
By gi ti s gii thch cho bn on code ca ti, chng ta bt u t dng u tin.
Preprocessor directives
(nhng ch th tin x l)
l nhng dng bt u bng # u on code. N tch hp cc th vin ta cn vo chng
trnh. Ti va a lun 3 dng ny cho bn phn Test Program, nu bn c li ch ny, kh
nng ca bn tht s b o.
Nhng bin s
Chng ta khng cn nhiu lm. Ch mt bin s cha s m ngi dng on (soHienTai) v
mt bin s khc cha s b mt c chn ngu nhin bi my tnh (soBiMat).
Ti cng khai bo nhng constants m ti gii thiu vi bn u chng hng dn ny. Li
ch ca vic khai bo constant u chng trnh, l bn c th thay i kh ca tr chi d
dng (v d MAX = 1000). Chng ta n gin ch cn thay i gi tr ca dng ny v dch li
chng trnh.
Vng lp
Ti chn vng lp do...while. V mt l thuyt, vng lp while cng hot ng, nhng ti thy
rng tng do...while s c tnh logic hn.
Ti sao? Bi v, bn hy nh li xem, do...while l vng lp chy t nht mt ln. V chng ta
cng yu cu ngi chi on s b mt t nht mt ln (ngi chi khng th no c c kt
qu nu cha on ln no, lm c th l thnh ri !).
Mi ln vng lp hot ng, ta s yu cu ngi chi on mt s. Ta s t s vo bin s
soHienTai. Sau so snh vi bin s soBiMat. C 3 kh nng xy ra:
1. soBiMat ln hn soHienTai, s thng bo "Lon hon !".
2. soBiMat nh hn soHienTai, s thng bo "Nho hon !"
3. Vy nu soBiMat khong ln hn cng khng nh hn soHienTai ? Bng nhau l iu
chc chn ! v tr else. Ti trng hp ny, thng bo "Chuc mung ! Ban da tim duoc so
bi mat !!!"
Cn phi c mt iu kin cho vng lp. Kh n gin nhn ra: vng lp vn cn lp li h
soHienTai khc vi soBiMat. Nu 2 s bng nhau, ng ngha vi ngi chi tm ra p n,
vng lp ngng. Chng trnh kt thc.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 108 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

tng ci tin
Bn tng phn Test Program kt thc y ? Ti mun bn tip tc ci tin chng trnh,
ng thi tp luyn. ng bao gi qun rng ch c luyn tp thng xuyn mi c th khin
bn ngy cng tin b! Vi nhng ai c bi hng dn ca ti m khng test li mt ln no th
l mt sai lm rt ln, ti tng ni iu ny v ti s tip tc ni li y!
Bo cho bn bit u ti lc no cng y tng, k c vi mt chng trnh nh nh th ny,
ti khng h thiu tng ci tin n u !
Ch : ln ny ti s khng a cho bn p n na, bn cn phi t xoay s ly! Nu bn tht
s gp vn nan gii, hy ln cc din n c lin quan n C. Tm kim trc xem thc
mc ca bn c ngi gii thch cha, nu khng th to mt topic khc t cu hi.

To mt b m "s ln on". B m ny s l mt bin s tng dn mi khi vng lp


c lp li. VD: Khi ngi chi tm ra p n, s thng bo "Chuc mung ! Ban da tim
duoc so bi mat trong 8 lan doan !!!"
Khi ngi chi tm ra p n, chng trnh dng li. Ti sao ta khng hi ngi chi c
mun chi mt vn khc khng? Nu bn thc hin iu ny, chng ta cn mt vng lp
bao ly gn nh ton b chng trnh, h ngi chi khng mun dng th tr chi vn
c thc hin li. Ti khuyn bn hy to mt bin s dng Boolean tieptucGame khi
to vi gi tr 1. Nu ngi chi mun dng li, hy cho bin s gi tr 0 chng trnh
dng li.
Thm vo mode chi cho 2 ngi ! Cn ch l ngi chi cn chn gia mode dnh
cho mt ngi hay mode dnh cho 2 ngi ! Bn phi thm vo mt Menu u chng
trnh yu cu ngi chi la chn mode mong mun. S khc nhau gia 2 mode chi l
cch to soBiMat, trng hp s dng rand() nh ta va thy, trng hp s dng scanf.
To ra nhiu cp kh khc nhau cho ngi chi la chn. Bt u, to mt Menu yu
cu ngi chi la chn. V d:
1 = t 1 n 100.
2 = t 1 n 1000.
3 = t 1 n 10000.

Nu bn thc hin, bn cn thay i constant MAX... Vng! mt constant th khng th no thay


i gi tr sut qu trnh chy chng trnh! i tn bin thnh soToiDa (ng thi bn cn xa
i t kha const nu khng gi tr vn l mt constant y !). Gi tr ca bin s ny ph
thuc vo cp ngi chi la chn
Vy , vic ny s khin bn phi mt thm cht t thi gian.
Hy tn hng n v ng ngi thm vo nhng tng khc ci tin thm tr chi ca bn.
V nu nh bn c cu hi, ng ngi ln cc 4rum tho lun nh ..

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 109 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Bi 9: Function
(Hm)
Bi hng dn v function trong ngn ng C s khp li chng th nht. Ti sp gii thiu bn
trong phn hng dn ny mt yu t m mi chng trnh vit bng ngn ng C u phi dng
n.
Chng ta s hc cch xy dng mt chng trnh tng cht mt... ging nh cch bn chi Lego.
Tt c chng trnh vit bng C l tp hp bi nhng mnh code, v cc mnh code ny c
gi l cc functions !

Cch to v gi mt function
Trong cc phn trc, chng ta bit mt chng trnh vit bng C c bt u bi mt
function gi l main. Ti c mt biu nhc li mt s t ng hc. Ch t, ti tm li...
Ah thy ri, n y...
Quen khng? Thy quen ch?

trn, chng ta thy c nhng Preprocessor directives (Nhng ch th tin x l). Nhng
directives ny kh d dng nhn ra: n bt u bi du # v lun t phn u file source.
K tip, c mt on code m ta gi l mt "function". V trong hnh v bn nhn ra l
function main.
Ti tng ni vi bn l mt chng trnh vit bng ngn ng C bt u bi function main, ti
bo m vi bn rng, iu lun ng !
Nhng c mt iu cn ni, nhng bi hc trc chng ta ch hot ng trong function main,
chng ta cha bao gi ra khi n. Hy nhn li cc dng code trc m chng ta vit, chng
u nm trong hai du ngoc { ... } ca function main.

Vy, vic ny c g khng tt ?


Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 110 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Khng phi, vic ny vn tt nhng y khng phi l mt chng trnh vit bng C trong thc
t. Hu nh chng c chng trnh C no c vit ton b trong nhng du ngoc ny. V cho
n thi im ny, chng trnh ca chng ta vn cn kh ngn, nn vic ny cng khng xy ra
bt c vn no, nhng hy tng tng n cc chng trnh vit bi hng triu dng code!
Nu tt c u nm trong function main, lon ngay !
By gi chng ta bt u hc cch sp xp chng. Chng ta s ct chng trnh ra thnh nhiu
mnh ghp (c gng lin tng n nhng mnh lego m ti ni vi bn lc ny). Mi mnh
ghp ny chng ta s gi l mt function.
Mt function s thc thi hnh ng v gi mt kt qu. y l mt on code dng lm
nhng vic c ch ch no . Mt function c u vo v ra.
Xem hnh:

1. In (u vo): ta s a vo cc thng tin s s dng trong function


2. Tnh ton: Nh vo nhng thng tin m function hot ng
3. Out (u ra): khi c tnh ton xong, function s gi kt qu. Ngi ta gi l Out hay
return.
C th hn, chng ta s xem v d v function triple c tc dng nhn 3 mt s a vo.

Mc ch ca cc functions l n gin ha code source, khng phi nh i nh li cng


mt on code nhiu ln.
Tng tng mt trng hp sau: v sau, chng ta s to ra mt function moCuaSo c tc dng
m mt ca s trn mn hnh. Mt khi function c vit xong (vit l giai on kh khn nht),
chng ta ch cn bo " ! function moCuaSo, m gip tao mt ca s !".
Ngoi ra, chng ta cn dng n vit mt function dichuyenNhanVat, mc ch l di chuyn
mt nhn vt trong mt tr chi ra mn hnh, v...v...

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 111 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Biu ca mt function
Bn nhn ra cch to mt function vi function main. By gi bn c th hiu r hn, ti
s ch ra cho bn lm cch no to mt function.
on code sau y s l biu ca mt function. Bn cn bit v hiu r n:
Code C:
type tenFunction (parameters)
{
// Cc instructions s c thm vo y
}
V cu to ca function l nh vy, v y l nhng iu bn cn bit thm:

Type (tng ng vi out): l dng ca function. Ging nh cc bin s, cc function cng


c dng tng ng. Type function ph thuc vo kt qu cho ra ca function. V d, nu
function cho kt qu mt s thc, bn s t vo y double. Nu l mt s t nhin, bn
s t vo y int hoc long. Nhng c nhng function khng cho ra kt qu g c ! iu
ny dn n c 2 loi function khc nhau:

Nhng function cho ra gi tr : ta t vo y type m ta bit (char, int,


double,...).
Nhng function khng cho gi tr: ta t vo y mt type c bit void (c ngha
l trng rng).

tenFunction: tn function ca bn. Bn c th t bt c tn g, nhng bn phi tun th


cch t tn ging nh t tn bin s. (Khng du, khng khong trng, ...)

parameters hay c th gi l tham s (tng ng vi in): Trong du ngoc (...), bn c


th a vo y nhng parameters cho function. l nhng gi tr s c dng n.
Ly v d, function triple trn, bn s gi mt s vo v tr parameter. Function triple
s ly gi tr ca s v nhn 3 ln. V sau n s gi cho ta kt qu

Bn c th gi bao nhiu parameter vo y cng c. Bn cng c th khng


gi parameter no vo nhng vic ny t xy ra hn.

K tip bn c du m v ng ngoc {...} tng ng vi u v cui ca function.


Trong , bn s a vo nhng instructions m bn mun. Trong v d function triple,
bn phi vit instruction nhn 3 gi tr nhn c.

Function ging nh mt c my, n nhn nhng gi tr u vo v cho kt qu u ra.


Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 112 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Cch to mt function
Chng ta s xem ngay v d v function triple m ti c nhc i nhc li ny gi. Ta s cho
function ny nhn mt s t nhin dng int v gi kt qu mt s t nhin cng dng int.
Function ny s thc hin php tnh nhn 3 cho gi tr ta cho n :
Code C:
int triple(int soHang)
{
int ketqua = 0;
ketqua = 3 * soHang; // Ta nhan gia tri nhan duoc len 3 lan
return ketqua;
// Ta tra ve bien so ketqua co gia tri gap 3 lan soHang
}

V l function th nht ca chng ta !


C mt iu kh quan trng y: bn nhn thy rng function ny type int. N s tr v gi tr
cng type int.
Trong du ngoc (...) l nhng bin s m function s nhn c. Ti y, function triple
nhn mt bin s dng int gi l soHang.
Dng return c tc dng "tr v mt gi tr" sau khi tnh ton v thng nm cui ca function
Code C:
return ketqua;
Dng code ny bo vi function: "dng li y v tr v gi tr cha trong ketqua".Type ca
bin s ketqua bt buc phi l int bi v function tr v mt int nh ti ni trn.
Bin s ketqua c khai bo trong function triple. iu c ngha l n ch c dng trong
function ny, ch khng dng cho bt k mt function no khc (v d nh function main). Tm
li y l mt bin s ring ca function triple.
Nhng c phi l cch vit ngn gn nht ca function triple khng?
Khng, v ngi ta cn c th vit ch trong mt dng nh sau:
Code C:
int triple (int soHang)
{
return 3 * soHang;
}
function ny thc hin chnh xc nh function trn v n c vit li ngn gn
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 113 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

C cha parameter hoc khng c parameter


Cha parameter
Function triple ca chng ta ch cha duy nht mt parameter, ta cn c th to ra nhng
function khc c cha nhiu parameter. Ly v d function congHaiSo thc hin vic tnh tng
hai s a v b:
Code C:
int addition(int a, int b)
{
return a+b;
}
Chng ta ch cn phn bit hai parameter bng du phy nh cc bn thy.
Khng cha parameters
C nhiu function khc xut hin t hn, khng cha bt k parameter no. Nhng function ny
s thc hin nhng cng vic ging nhau. Nu nh function khng nhn bt k gi tr no lm
vic th n ch dng thc hin cc cng vic, v d: hin th mt on text ln mn hnh.
Ta xem v d function xinchao c tc dng hin th "Xin Chao" ln mn hnh:
Code C:
void xinchao()
{
printf("Xin Chao");
}

Trong ngoc (...) ti khng t vo th g ti v function ny khng cn parameter. Thm na,


ti s dng type void m ti gii thiu vi bn cho function xinchao v mt function khng tr
v bt c gi tr no s mang type void.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 114 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Cch gi mt function
Chng ta s cng test mt on code xem li nhng g ta va hc. Chng ta s s dng
function triple nhn 3 gi tr ca mt s.
Trong thi im hin ti, ti yu cu bn vit function triple TRC function main. Nu bn t
pha sau, chng trnh s khng hot ng. Ti s gii thch l do cc phn sau.
V y l on code bn cn hiu v test li:
Code C:
#include <stdio.h>
#include <stdlib.h>
int triple(int soHang)
{
return 3 * soHang;
}
int main(int argc, char *argv[])
{
int soNhapVao = 0, soTriple = 0;
printf("Nhap vao mot gia tri... ");
scanf("%d", &soNhapVao);
soTriple = triple(soNhapVao);
printf("Triple (x3) cua gia tri vua roi la %d\n", soTriple);
return 0;
}

Chng trnh bt u bng function main nh chng ta bit. Ta yu cu ngi dng cho mt
gi tr s. Chng ta s a gi tr ny vo function triple, v sau ta thu c kt qu l gi tr
ca soTriple. Hy ch dng code ny, l cch ta gi mt function:
Code C:
soTriple = triple(soNhapVao);
Trong du ngoc, ta a vo bin s soNhapVao, gi tr ca soNhapVao s c s dng trong
function triple. Sau function ny s cho ra mt gi tr, gi tr ny s c cha trong bin s
soTriple. Cng ging nh ta ra lnh bo vi my tnh : "Yu cu function triple tnh cho tao 3 ln
gi tr ca soNhapVao, v cha kt qu nhn c trong bin s soTriple".
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 115 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Gii thch li theo dng biu


Ti ngh bn vn cn kh hiu v vic n hot ng chnh xc nh th no ng khng?
Khng sao, ti chc bn s hiu r hn qua biu sau y.
on code sau c ch thch th t hot ng ca chng trnh. Chng trnh s hot ng
theo th t bt u t 1 n 9 (ti ngh bn bt u hiu c vn ri ) :
Code C:
#include <stdio.h>
#include <stdlib.h>
int triple(int soHang) //6
{
return 3 * soHang; //7
}
int main(int argc, char *argv[]) //1
{
int soNhapVao = 0, soTriple = 0; //2
printf("Nhap vao mot gia tri... "); //3
scanf("%d", &soNhapVao); //4
soTriple = triple(soNhapVao); //5
printf("Triple (x3) cua gia tri vua roi la %d\n", soTriple); //8
return 0; //9
}

V y l nhng g din ra.


1.
2.
3.
4.
5.
6.
7.
8.
9.

Chng trnh bt u bng function main.


N chy nhng instructions theo th t dng trc n dng sau.
N chy instruction k tip v thc hin lnh instruction yu cu (printf).
Vn th, n chy instruction k tip v thc hin lnh instruction yu cu (scanf).
N chy instruction k tip .... ! y yu cu gi function triple, nn n phi nhy ln
on code ca function triple pha trn.
N chy function triple v nhn gi tr cho parameter (soHang).
N tnh ton gi tr v kt thc function. return c ngha l kt thc function v cho ra gi
tr kt qu.
N quay v main v chy instruction k tip.
Mt return na xut hin! Vy l function main kt thc v chng trnh kt thc

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 116 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Nu bn hiu th t my tnh c nhng instruction, coi nh bn hiu vn .


By gi, bn cn hiu cch mt function nhn gi tr vo ti v tr parameters v tr li mt gi
tr khc return.

Ch thch: y khng phi trng hp cho hu ht cc function. V nhiu lc, function khng c
parameter no, hoc c rt nhiu parameter. V i khi function cho ra mt gi tr, hoc n
khng tr v mt gi tr no c (trng hp khng c return).
Test chng trnh
Mn hnh test chng trnh:
Console:
Nhap vao mot gia tri ... 10
Triple (x3) cua gia tri vua roi la 30

Bn khng bt buc phi a gi tr ca kt qu nhn c vo mt bin s!


Bn c th gi trc tip gi tr kt qu nhn c ca function triple vo mt function
khc, ging nh vic xem triple(soNhapVao) l mt bin s.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 117 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Tham kho on code di y, cng tng t vi on code trn nhng dng printf cui cng
c mt cht thay i v ta khng s dng bin s soTriple.
Code C:
#include <stdio.h>
#include <stdlib.h>
int triple(int soHang)
{
return 3 * soHang;
}
int main(int argc, char *argv[])
{
int soNhapVao = 0;
printf("Nhap vao mot gia tri... ");
scanf("%d", &soNhapVao);
// ket qua cua function triple duoc gui truc tiep den printf ma khong can dua vao bat ki bien so nao
printf("Triple (x3) cua gia tri vua roi la %d\n", triple(soNhapVao));
return 0;
}

Nhn thy, triple(soNhapVao) c a trc tip vo printf. My tnh hot ng nh th no nu


n c n dng ny?
Kh n gin. N c n dng bt u bng printf, n s gi function printf. N tip tc a
cho printf nhng parameter cn thit. Parameter u tin l on vn cn hin th v th hai l
mt s. My tnh thy rng a s ny vo printf th n cn dng function triple. V n gi
function triple, n thc hin nhng php ton c trong triple v khi n c c kt qu, n s gi
trc tip vo function printf !
Thy c v hi lng nhng gia cc functions phi khng?
ni n gin hn, mt function c php gi mt function khc khi n lt n, hoc t gi
li chnh n,... y l nguyn tc c bn ca lp trnh trn ngn ng C ! V tt c s c tp
hp li, ging nh vic lp ghp Lego vy.
Cui cng, vic kh khn nht chnh l cch bn vit ra cc functions. Khi vit xong, bn ch
cn gi li chng thc hin nhng cng vic m n c th lm bng nhng php ton c
cha bn trong. Vic ny s n gin ha cch vit chng trnh ca chng ta. V hy tin ti,
chng ta s dng rt thng xuyn y!
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 118 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Xem thm vi v d hiu r hn


Bn c th coi ti nh mt k b m nh bi nhng v d. Tht s l thuyt rt tt, nhng nu
chng ta ch hc mi l thuyt th c nguy c trong u s khng gi li nhiu iu hc v
trn ht i khi ta khng bit s dng nh th no, bn c thy tic thi gian b ra khng ?
By gi, ti s ch cho bn mt vi v d v cch s dng function v cho bn cm thy thch
n hn, ti bt buc phi cho bn nhng v d khc nhau trong cc trng hp khc nhau, mc
ch cho bn thy cc s khc nhau ca cc type function c th tn ti.
Ti cng khng ch bn thm iu mi m no y. V nu bn hiu nhng g ti hng
dn trc th nhng v d sau y bn c th hiu c d dng

Chuyn t euros sang vietnamese dong


Chng ta bt u bi mt function kh ging vi triple, khng phi v th m bn mt hng th
nh: mt function cho php ta chuyn t euros sang vietnamdong. Cho nhng bn khng thng
xuyn theo di v tin t th 1 euro = 22864.0426 vietnamese dong ( cp nht ngy 10/03/2015)
Chng ta s to mt function gi l conversion. Function ny s nhn mt bin s type double v
tr li mt gi tr type double v chng ta cn s dng n nhng s thc. Hy nghin cu on
code sau:
Code C:
double conversion(double euros)
{
double vietnamdongs= 0;
vietnamdongs = 22864.0426* euros;
return vietnamdongs;
}
int main(int argc, char *argv[])
{
printf("10 euros = %f VND\n", conversion(10));
printf("50 euros = %f VND\n", conversion(50));
printf("100 euros = %f VND\n", conversion(100));
printf("200 euros = %f VND\n", conversion(200));
return 0;
}

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 119 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Console:

Nh bo trc, khng c thay i ln no so vi function triple. Mt khc, function


conversion ny c v di hn mt t v c th rt ngn li trong mt dng, ti bn lm iu
ny v ti hnh nh hng dn pha trn ri.
Trong function main, ti c tht nhiu printf bn thy li ch ca vic s dng function.
c c gi tr ca 50 euros, ti vit conversion(50). V c c gi tr ca 100 euros ti
ch cn thay i parameter m ti a vo (50 thnh 100).
V by gi n phin bn ! Hy vit mt function th 2 (lun t trc function main) c tc
dng chuyn i ngc li: t vietnamese dong thnh euros.
Vic ny khng c g l kh khn c, cc bn ch vic thay i mt php tnh.

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 120 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Chp pht
Chng ta s tham kho mt function khng tr v mt gi tr no. L mt function thc hin vic
hin th ln mn hnh nhng cu ging nhau vi s lng ty theo ta yu cu. Function ny c
mt parameter in: l s lng cu m bn phi chp pht.
Code C:
void chepPhat(int soDong)
{
int i;
for (i = 0 ; i < soDong; i++)
{
printf("Toi khong duoc phep quay cop trong gio kiem tra\n");
}
}
int main(int argc, char *argv[])
{
chepPhat(10);
return 0;
}

Console:

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 121 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

n y, ti thc hin mt function khng tr v gi tr no. Function dng ny c dng


thi hnh mt hnh ng c th no ( y, n hin th ln mn hnh nhng tin nhn).
Function khng tr v gi tr no c type l void, cng chnh v th trc tn function ti vit
void.
Nng cp th v hn ca bi tp ny l ta to mt function chepPhat khc c th s dng cho
bt k mt trng hp chp pht no.
Chng ta s cho n 2 parameter (tham s): on vn cn chp pht v s ln cn chp pht. Vn
l, bn vn cha bit cch s dng chui k t trong C.
Bn s c hc cch s dng nhng bin s cha nhng chui k t nhng phn sau.

Din tch ca mt hnh ch nht


Kh n gin tnh din tch ca mt hnh ch nht: chiu di x chiu rng. V function vi
tn gi l dientichHinhChuNhat s nhn 2 parameters (tham s): chieuDai v chieuRong, n s
tr v gi tr din tch.
Code C:
double dientichHinhChuNhat(double chieuRong, double chieuDai)
{
return chieuRong * chieuDai;
}
int main(int argc, char *argv[])
{
printf("Hinh chu nhat voi chieu rong 5 va chieu dai 10 co dien tich la %f\n",
dientichHinhChuNhat(5, 10));
printf("Hinh chu nhat voi chieu rong 2.5 va chieu dai 3.5 co dien tich la %f\n",
dientichHinhChuNhat(2.5, 3.5));
printf("Hinh chu nhat voi chieu rong 4.2 va chieu dai 9.7 co dien tich la %f\n",
dientichHinhChuNhat(4.2, 9.7));
return 0;
}

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 122 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Console:

C cch vit no khc khng?


C ch! Trong trng hp ny, function s khng tr v kt qu no, n s tnh ton din tch v
hin th lun kt qu.
Code C:
void dientichHinhChuNhat(double chieuRong, double chieuDai)
{
double dientich = 0;
dientich = chieuRong * chieuDai;
printf("Hinh chu nhat voi chieu rong %f va chieu dai %f co dien tich la %f\n", chieuRong,
chieuDai, dientich);
}
int main(int argc, char *argv[])
{
dientichHinhChuNhat(5, 10);
dientichHinhChuNhat(2.5, 3.5);
dientichHinhChuNhat(4.2, 9.7);
return 0;
}

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 123 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Console:

Ging nh bn thy, printf nm bn trong function dientichHinhChuNhat v hin th tng t


on code trc.
y l v d v hai cch vit khc nhau ca cng mt chng trnh.
Mt Menu
on code sau kh th v v c th, ngi ta to mt menu( ) khng nhn bt k parameter (tham
s) no.
Function ny s hin th mt menu v yu cu ngi s dng la chn. Function s tr v la
chn .

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 124 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

Code C:
int menu()
{
int luachon = 0;
while (luachon < 1 || luachon > 4)
{
printf("=== Menu ===\n");
printf("1. Pho\n");
printf("2. Bun bo Hue\n");
printf("3. Mi Quang\n");
printf("4. Thit cay\n");
printf("Lua chon cua ban ? ");
scanf("%d", &luachon);
}
return luachon;
}
int main(int argc, char *argv[])
{
switch (menu())
{
case 1:
printf("Ban da chon Pho. Mot lua chon tuyet voi !\n");
break;
case 2:
printf("Ban da chon Bun bo Hue. Mot lua chon chinh xac !\n");
break;
case 3:
printf("Ban da chon Mi Quang. Qua tuyet !\n");
break;
case 4:
printf("Ban da chon Thit cay. Nao ta cung den quan nhau !\n");
break;
}
return 0;
}
Tranh th, ti ci tin lun menu trn m bn thy trc . Ln ny menu s hin th li
mi khi ngi s dng khng nhp ng gi tr t 1 n 4. Nh vy, khng c li xy ra nu nh
function tr li mt con s khng lin quan g n cc la chn trong menu !
Trong main, bn thy ta s dng mt switch (menu()).Mt khi function menu() kt thc, n s tr
v la chn ca ngi s dng trc tip vo function switch. Mt phng php kh nhanh v
hiu qu.
Dch gi: Mr. Hung
daihung.pham@yahoo.fr

- 125 -

Editor: M0N1M
thaibaminh2512@gmai.com

Ti liu hng dn lp trnh C


Apprenez programmer en C

www.siteduzero.com
Tc gi: M@teo21

No n phin bn! on code trn vn c th ci tin tip c: Thay i chng trnh hin
th mt thng bo li nu nh ngi s dng la chn mt s khc ngoi menu thay v hin th
li ton b menu nh trn.
Mt bi tp nh trc khi kt thc
Bn cn nh tr chi "Ln hn hay nh hn" khng? Ti hi vng bn vn khng qun n.
Bn s thay i bng cch s dng nhng function. Bn s to ra 2 function: taoSoNgauNhien
(c tc dng to ngu nhin mt s nm gia MIN v MAX) v sosanh (c tc dng so snh 2 s
v hin th ln hn, nh hn hay kt qu ng)

Bn khng cn gp gp tin sang chng II ca bi hng dn v ti s hng dn cc


bn v con tr. Kh kh nut y
V chng hin ti l con ng bt buc bn phi bc qua c th hc nhng kin thc mi
hn, nn hy c gng nm tht vng.
Nh l phi lun c gng, ng b d gia chng, v phn kh khn nht bn s hc nm
chng 2, nu qua c, bn s thu c kt qu ln hn rt nhiu.
Sau , chng 3, bn s hc cch vit nhng tr chi, m nhng ca s, s dng bn phm,
chut, joystick, m thanh ...
Bn thy hng th hn cha?
Th l xong nhng kin thc nn tng cho mt ngi mi tp tnh v C.
Nhng iu mi m nghim tc hn s bt u chng th 2 !!!

Dch gi: Mr. Hung


daihung.pham@yahoo.fr

- 126 -

Editor: M0N1M
thaibaminh2512@gmai.com

You might also like