You are on page 1of 22

Bi 1

Mc tiu: Kt thc bi hc ny, bn c th:

Nhng khi nim c bn v ngn ng C

Phn bit s khc nhau gia Cu lnh, Chng trnh v Phn mm Bit c qu trnh hnh thnh C Nn dng C khi no v ti sao Nm c cu trc mt chng trnh C Hiu r khi nim gii thut (algorithms) V lu (flowchart) Lit k cc k hiu dng trong lu Gii thiu Ngy nay, khoa hc my tnh thm nhp vo mi lnh vc. T ng ha hin ang l ngnh ch cht iu hng s pht trin th gii. Bt c ngnh ngh no cng cn phi hiu bit t nhiu v Cng ngh Thng tin v lp trnh ni chung. C th, C l mt ngn ng lp trnh cp cao m mi lp trnh vin cn phi bit. V th, trong gio trnh ny, chng ta s nghin cu chi tit cu trc ngn ng C. u tin chng ta tm hiu s khc nhau ca nhng khi nim: Lnh (Command), Chng trnh (Program) v Phn mm (Software). 1.1 Ra lnh cho my tnh lm vic Khi mt my tnh c khi ng, n s t ng thc thi mt s tin trnh v xut kt qu ra mn hnh. iu ny din ra th no? Cu tr li n gin l nh vo H iu hnh ci t bn trong my tnh. H iu hnh (operating system) c xem nh phn mm h thng. Phn mm ny khi ng my tnh v thit lp cc thng s ban u trc khi trao quyn cho ngi dng. lm c iu ny, h iu hnh phi c cu to t mt tp hp cc chng trnh. Mi chng trnh u c gng a ra li gii cho mt hay nhiu bi ton no Mi chng trnh c gng a ra gii php cho mt hay nhiu vn . Mi chng trnh l tp hp cc cu lnh gii quyt mt bi ton c th. Mt nhm lnh to thnh mt chng trnh v mt nhm cc chng trnh to thnh mt phn mm. r hn, chng ta hy xem xt mt th d : Mt ngi bn n nh chng ta chi v c mi mn sa du. Anh ta thy ngon ming v mun xin cng thc lm. Chng ta hng dn cho anh ta lm nh sau : 1. Ly mt t sa. 2. nc p du vo. 3. Trn hn hp ny v lm lnh. By gi nu bn ca chng ta theo nhng ch dn ny, h cng c th to ra mn sa du tuyt vi. Chng ta hy phn tch ch th (lnh) trn Lnh u tin : Lnh ny hon chnh cha ? N c tr li c cu hi ly sa u ?. Lnh th hai : Mt ln na, lnh ny khng ni r nc p du u.

Nhng khi nim c bn ca ngn ng C

May mn l bn ca chng ta thng minh hiu c cng thc pha ch ni trn, d rng cn nhiu im cha r rng. Do vy nu chng ta mun ph bin cch lm, chng ta cn b sung cc bc nh sau : 1. Rt mt ly sa vo my trn. 2. thm vo mt t nc du p. 3. ng np my trn 4. M in v bt u trn 5. Dng my trn li 6. Nu trn u th tt my, ngc li th trn tip. 7. Khi trn xong, rt hn hp vo t v t vo t lnh. 8. lnh mt lc ri ly ra dng. So snh hai cch hng dn nu trn, hng dn th hai chc chn hon chnh, r rng hn, ai cng c th c v hiu c. Tng t, my tnh cng x l d liu da vo tp lnh m n nhn c. ng nhin cc ch th a cho my vi tnh cng cn phi hon chnh v c ngha r rng. Nhng ch th ny cn phi tun th cc quy tc: 1. Tun t 2. C gii hn 3. Chnh xc. Mi ch th trong tp ch th c gi l cu lnh v tp cc cu lnh c gi l chng trnh. Chng ta hy xt trng hp chng trnh hng dn my tnh cng hai s. Cc lnh trong chng trnh c th l : 1. 2. 3. 4. 5. Nhp s th nht v nh n. Nhp s th hai v nh n. Thc hin php cng gia s th nht v s th hai, nh kt qu php cng. Hin th kt qu. Kt thc.

Tp lnh trn tun th tt c cc quy tc cp. V vy, tp lnh ny l mt chng trnh v n s thc hin thnh cng vic cng hai s trn my tnh.

Ghi ch: Kh nng nh ca con ngi c bit n nh l tr nh, kh nng nh d liu c a vo my tnh c gi l b nh. My tnh nhn d liu ti mt thi im v lm vic vi d liu vo thi im khc, ngha l my tnh ghi d liu vo trong b nh ri sau c ra truy xut cc gi tr d liu v lm vic vi chng. Khi khi lng cng vic giao cho my tnh ngy cng nn nhiu v phc tp th tt c cc cu lnh khng th c a vo mt chng trnh, chng cn c chia ra thnh mt s chng trnh nh hn. Tt c cc chng trnh ny cui cng c tch hp li chng c th lm vic vi nhau. Mt tp hp cc chng trnh nh th c gi l phn mm.

Lp trnh c bn C

Mi quan h gia ba khi nim cu lnh, chng trnh v phn mm c th c biu din bng s trong hnh 1.1:

Software Program 1 Program 2

Commands

Commands

Commands

Hnh 1.1: Phn mm, chng trnh v cu lnh 1.2 Ngn ng C

Vo u nhng nm 70 ti phng th nghim Bell, Dennis Ritchie pht trin ngn ng C. C c s dng ln u trn mt h thng ci t h iu hnh UNIX. C c ngun gc t ngn ng BCPL do Martin Richards pht trin. BCPL sau c Ken Thompson pht trin thnh ngn ng B, y l ngi khi thy ra C. Trong khi BCPL v B khng h tr kiu d liu, th C c nhiu kiu d liu khc nhau. Nhng kiu d liu chnh gm : kiu k t (character), kiu s nguyn (interger) v kiu s thc (float). C lin kt cht ch vi h thng UNIX nhng khng b tri buc vo bt c mt my tnh hay h iu hnh no. C rt hiu qu vit cc chng trnh thuc nhiu nhng lnh vc khc nhau. C cng c dng lp trnh h thng. Mt chng trnh h thng c ngha lin quan n h iu hnh ca my tnh hay nhng tin ch h tr n. H iu hnh (OS), trnh thng dch (Interpreters), trnh son tho (Editors), chng trnh Hp Ng (Assembly) l cc chng trnh h thng. H iu hnh UNIX c pht trin da vo C. C ang c s dng rng ri bi v tnh hiu qu v linh hot. Trnh bin dch (compiler) C c sn cho hu ht cc my tnh. M lnh vit bng C trn my ny c th c bin dch v chy trn my khc ch cn thay i rt t hoc khng thay i g c. Trnh bin dch C dch nhanh v cho ra m i tng khng li. C khi thc thi cng rt nhanh nh hp ng (Assembly). Lp trnh vin c th to ra v bo tr th vin hm m chng s c ti s dng cho chng trnh khc. Do , nhng d n ln c th c qun l d dng m tn rt t cng sc. 1.2.1 C Ngn ng bc trung C c hiu l ngn ng bc trung bi v n kt hp nhng yu t ca nhng ngn ng cp cao v nhng chc nng ca hp ng (ngn ng cp thp). C cho php thao tc trn nhng thnh phn c bn ca my tnh nh bits, bytes, a ch. Hn na, m C rt d di chuyn ngha l phn mm vit cho loi my tnh ny c th chy trn mt loi my tnh khc. Mc d C c nm kiu d liu c bn, nhng n khng c xem ngang hng vi ngn ng cao cp v mt kiu d liu. C cho php chuyn kiu d liu. N cho php thao tc trc tip trn bits, bytes, word v con tr (pointer). V vy, n c dng cho lp trnh mc h thng. 1.2.2 C - Ngn ng cu trc

Nhng khi nim c bn ca ngn ng C

Thut ng ngn ng cu trc khi (block-structured language) khng p dng vi C. Ngn ng cu trc khi cho php th tc (procedures) hay hm (functions) c khai bo bn trong cc th tc v hm khc. C khng cho php vic to hm trong hm nn n khng phi l ngn ng cu trc khi. Tuy nhin, n c xem l ngn ng cu trc v n c nhiu im ging vi ngn ng cu trc ALGOL, Pascal v mt s ngn ng tng t khc. C cho php c s tng hp ca m lnh v d liu. iu ny l mt c im ring bit ca ngn ng cu trc. N lin quan n kh nng tp hp cng nh n du tt c thng tin v cc lnh khi phn cn li ca chng trnh dng cho nhng tc v ring bit. iu ny c th thc hin qua vic dng cc hm hay cc khi m lnh (Code Block). Cc hm c dng nh ngha hay tch ri nhng tc v c yu cu trong chng trnh. iu ny cho php nhng chng trnh hot ng nh trong mt n v thng nht. Khi m lnh l mt nhm cc cu lnh chng trnh c ni kt vi nhau theo mt trt t logic no v cng c xem nh mt n v thng nht. Mt khi m lnh c to bi mt tp hp nhiu cu lnh tun t gia du ngoc m v ng xon nh di y: do {

i = i + 1; . . . } while (i < 40); Ngn ng cu trc h tr nhiu cu trc dng cho vng lp (loop) nh l while, do-while, v for. Nhng cu trc lp ny gip lp trnh vin iu khin hng thc thi trong chng trnh. 1.3 Cu trc chng trnh C

C c mt s t kha, chnh xc l 32. Nhng t kha ny kt hp vi c php ca C hnh thnh ngn ng C. Nhng nhiu trnh bin dch cho C thm vo nhng t kha dng cho vic t chc b nh nhng giai on tin x l nht nh. Vi quy tc khi lp trnh C nh sau : Tt c t kha l ch thng (khng in hoa) on m trong chng trnh C c phn bit ch thng v ch hoa. V d : do while th khc vi DO WHILE T kha khng th dng cho cc mc ch khc nh t tn bin (variable name) hoc tn hm (function name) Hm main() lun l hm u tin c gi n khi mt chng trnh bt u chy (chng ta s xem xt k hn phn sau)

Xem xt on m chng trnh: main () { /* This is a sample program */ int i = 0; i = i + 1; . . }

Lp trnh c bn C

Ghi ch: Nhng kha cnh khc nhau ca chng trnh C c xem xt qua on m trn. on m ny xem nh l on m mu, n s c dng li trong sut phn cn li ca gio trnh ny.

1.3.1 nh ngha Hm Chng trnh C c chia thnh tng n v gi l hm. on m mu ch c duy nht mt hm main(). H iu hnh lun trao quyn iu khin cho hm main() khi mt chng trnh C c thc thi. Tn hm lun c theo sau l cp du ngoc n (). Trong du ngoc n c th c hay khng c nhng tham s (parameters). 1.3.2 Du phn cch (Delimiters) Sau nh ngha hm s l du ngoc xon m {. N thng bo im bt u ca hm. Tng t, du ngoc xon ng } sau cu lnh cui trong hm ch ra im kt thc ca hm. Du ngoc xon m nh du im bt u ca mt khi m lnh, du ngoc xon ng nh du im kt thc ca khi m lnh . Trong on m mu c 2 cu lnh gia 2 du ngoc xon. Hn na, i vi hm, du ngoc xon cng dng phn nh nhng on m trong trng hp dng cho cu trc vng lp v lnh iu kin.. 1.3.3 Du kt thc cu lnh (Terminator) Dng int i = 0; trong on m mu l mt cu lnh (statement). Mt cu lnh trong C th c kt thc bng du chm phy (;). C khng hiu vic xung dng dng phm Enter, khong trng dng phm spacebar hay mt khong cch do dng phm tab. C th c nhiu hn mt cu lnh trn cng mt hng nhng mi cu lnh phi c kt thc bng du chm phy. Mt cu lnh khng c kt thc bng du chm phy c xem nh mt cu lnh sai. 1.3.4 Dng ch thch (Comment) Nhng ch thch thng c vit m t cng vic ca mt lnh c bit, mt hm hay ton b chng trnh. Trnh bin dch s khng dch chng. Trong C, ch thch bt u bng k hiu /* v kt thc bng */. Trng hp ch thch c nhiu dng, ta phi ch k hiu kt thc (*/), nu thiu k hiu ny, ton b chng trnh s b coi nh l mt ch thch. Trong on m mu dng ch "This is a sample program" l dng ch thch. Trong trng hp ch thch ch trn mt dng ta c th dng //. V d: int a = 0; // Bin a c khai bo nh l mt kiu s nguyn (interger) 1.3.5 Th vin C (Library) Tt c trnh bin dch C cha mt th vin hm chun dng cho nhng tc v chung. Mt vi b ci t C t th vin trong mt tp tin (file) ln trong khi a s cn li cha n trong nhiu tp tin nh. Khi lp trnh, nhng hm c cha trong th vin c th c dng cho nhiu loi tc v khc nhau. Mt hm (c vit bi mt lp trnh vin) c th c t trong th vin v c dng bi nhiu chng trnh khi c yu cu. Vi trnh bin dch cho php hm c thm vo th vin chun trong khi s khc li yu cu to mt th vin ring. 1.4 Bin dch v thc thi mt chng trnh (Compiling and Running)

Nhng bc khc nhau ca vic dch mt chng trnh C t m ngun thnh m thc thi c thc hin nh sau : Son tho/X l t

Nhng khi nim c bn ca ngn ng C

Ta dng mt trnh x l t (word processor) hay trnh son tho (editor) vit m ngun (source code). C ch chp nhn loi m ngun vit di dng tp tin vn bn chun. Vi trnh bin dch (compiler) cung cp mi trng lp trnh (xem ph lc) gm trnh son tho. M ngun y l on vn bn ca chng trnh m ngi dng c th c. N l u vo ca trnh bin dch C. B tin x l C T m ngun, bc u tin l chuyn n qua b tin x l ca C. B tin x l ny s xem xt nhng cu lnh bt u bng du #. Nhng cu lnh ny gi l cc ch th tin bin dch (directives). iu ny s c gii thch sau. Ch th tin bin dch thng c t ni bt u chng trnh mc d n c th c t bt c ni no khc. Ch th tin bin dch l nhng tn ngn gn c gn cho mt tp m lnh. M ngun m rng C B tin x l ca C khai trin cc ch th tin bin dch v a ra kt qu. y gi l m ngun C m rng, sau n c chuyn cho trnh bin dch C. Trnh bin dch C (Compiler) Trnh bin dch C dch m ngun m rng thnh ngn ng my my tnh hiu c. Nu chng trnh qu ln n c th c chia thnh nhng tp tin ring bit v mi tp tin c th c bin dch ring r. iu ny gip ch khi m mt tp tin b thay i, ton chng trnh khng phi bin dch li. B lin kt (Linker) M i tng cng vi nhng th tc h tr trong th vin chun v nhng hm c dch ring l khc kt ni li bi B lin kt cho ra m c th thc thi c.

Lp trnh c bn C

B np (Loader) M thc thi c thi hnh bi b np ca h thng. Tin trnh trn c m t qua lu 1.2 sau :

Tp tin thm vo

# include file

Chng trnh gc

Source file

Library File
Th vin

Trnh bin dch

Compiler

Tp tin i tng

Object File

Cc tp tin thc thi khc ca ngi dng

Other Usergenerated Object File

B lin kt

Linker

Executable File
Tp tin thc thi

Hnh 1.2: Bin dch v thc thi mt chng trnh

1.5

Cc bc lp trnh gii quyt vn

Chng ta thng gp phi nhng bi ton. gii quyt nhng bi ton , chng ta cn hiu chng trc ri sau mi hoch nh cc bc cn lm . Gi s chng ta mun i t phng hc n qun n t phc v tng hm. thc hin vic ny chng ta cn hiu n ri tm ra cc bc gii quyt trc khi thc thi cc bc : BC 1 : Ri phng BC 2 : n cu thang BC 3 : Xung tng hm BC 4 : i tip n qun n t phc v Th tc trn lit k tp hp cc bc thc hin c xc nh r rng cho vic gii quyt vn . Mt tp hp cc bc nh vy gi l gii thut (Algorithm hay gi vn tt l algo ). Mt gii thut (cn gi l thut ton) c th c nh ngha nh l mt th tc, cng thc hay cch gii quyt vn . N gm mt tp hp cc bc gip t c li gii. Qua phn trn, chng ta thy r rng gii quyt c mt bi ton, trc tin ta phi hiu bi ton , k n chng ta cn tp hp tt c nhng thng tin lin quan ti n. Bc k s l x l nhng mu thng tin . Cui cng, chng ta cho ra li gii ca bi ton .

Nhng khi nim c bn ca ngn ng C

Gii thut chng ta c l mt tp hp cc bc c lit k di dng ngn ng n gin. Rt c th rng cc bc trn do hai ngi khc nhau vit vn tng t nhau nhng ngn ng dng din t cc bc c th khc nhau. Do , cn thit c nhng phng php chun mc cho vic vit gii thut mi ngi d dng hiu n. Chnh v vy , gii thut c vit bng cch dng hai phng php chun l m gi (pseudo code) v lu (flowchart). C hai phng php ny u dng xc nh mt tp hp cc bc cn c thi hnh c c li gii. Lin h ti vn i n qun n t phc v trn, chng ta vch ra mt k hoch (thut ton) n ch. Tuy nhin, n ni, chng ta phi cn thi hnh nhng bc ny tht s. Tng t, m gi v lu ch a ra nhng bc cn lm. Lp trnh vin phi vit m cho vic thc thi nhng bc ny qua vic dng mt ngn ng no . Chi tit v v m gi v lu c trnh by di y. 1.5.1 M gi (pseudo code)

Nh rng m gi khng phi l m tht. M gi s dng mt tp hp nhng t tng t nh m tht nhng n khng th c bin dch v thc thi nh m tht. Chng ta hy xem xt m gi qua v d sau.V d ny s hin th cu 'Hello World!'. V d 1: BEGIN DISPLAY 'Hello World!' END Qua v d trn, mi on m gi phi bt u vi t BEGIN hoc START, v kt thc vi t END hay STOP. hin th gi tr no , t DISPLAY hoc WRITE c dng. Khi gi tr c hin th l mt gi tr hng (khng i), trong trng hp ny l (Hello World), n c t bn trong du nhy. Tng t, nhn mt gi tr ca ngi dng, t INPUT hay READ c dng. hiu iu ny r hn, chng ta xem xt v d 2, v d ny ta s nhp hai s v my s hin th tng ca hai s. V d 2: BEGIN INPUT A, B DISPLAY A + B END Trong on m gi ny, ngi dng nhp vo hai gi tr, hai gi tr ny c lu trong b nh v c th c truy xut nh l A v B theo th t. Nhng v tr c t tn nh vy trong b nh gi l bin. Chi tit v bin s c gii thch trong phn sau ca chng ny. Bc k tip trong on m gi s hin th tng ca hai gi tr trong bin A v B. Tuy nhin, cng on m trn, ta c th b sung lu tng ca hai bin trong mt bin th ba ri hin th gi tr bin ny nh trong v d 3 sau y. V d 3: BEGIN INPUT A, B
8 Lp trnh c bn C

C = A + B DISPLAY C END Mt tp hp nhng ch th hay cc bc trong m gi th c gi chung l mt cu trc. C ba loi cu trc : tun t, chn la v lp li. Trong on m gi ta vit trn,chng ta dng cu trc tun t. Chng c gi nh vy v nhng ch th c thi hnh tun t, ci ny sau ci khc v bt u t im u tin. Hai loi cu trc cn li s c cp trong nhng chng sau. 1.5.2 Lu (Flowcharts)

Mt lu l mt hnh nh minh ho cho gii thut. N v ra biu ca lung ch th hay nhng hot ng trong mt tin trnh. Mi hot ng nh vy c biu din qua nhng k hiu. hiu iu ny r hn, chng ta xem lu trong hnh 1.3 dng hin th thng ip truyn thng Hello World!.
S TA R T

DIS P L AY 'H e ll o W o rld !'

STO P

Hnh 1.3: Lu Lu ging vi on m gi l cng bt u vi t BEGIN hoc START, v kt thc vi t END hay STOP. Tng t, t kha DISPLAY c dng hin th gi tr no n ngi dng. Tuy nhin, y, mi t kha th nm trong nhng k hiu. Nhng k hiu khc nhau mang mt ngha tng ng c trnh by bng trong Hnh 1.4.

Hnh 1.4: K hiu trong lu

Nhng khi nim c bn ca ngn ng C

Ta hy xt lu cho v d 3 nh Hnh 1.5 di y.

K hiu bt u: Dng y bt u lu K hiu xut/nhp: Dng y nhp hai s A, B K hiu x l: Dng y cng hai s K hiu xut/nhp: Dng y hin th tng C K hiu kt thc: Dng y kt thc lu
Hnh 1.5: Lu cng hai s Ti bc m gi tr ca hai bin c cng v gn cho bin th ba th xem nh l mt x l v c trnh by bng mt hnh ch nht. Lu m chng ta xt y l n gin.Thng thng, lu tri rng trn nhiu trang giy. Trong trng hp nh th, biu tng b ni c dng ch im ni ca hai phn trong mt chng trnh nm hai trang k tip nhau. Vng trn ch s ni kt v phi cha k t hoc s nh hnh 1.6. Nh th, chng ta c th to lin kt gia hai lu cha hon chnh.

Hnh 1.6: B ni Bi v lu c s dng vit chng trnh, chng cn c trnh by sao cho mi lp trnh vin hiu chng d dng. Nu c ba lp trnh vin dng ba ngn ng lp trnh khc nhau vit m, bi ton h cn gii quyt phi nh nhau. Trong trng hp ny, m gi a cho lp trnh vin c th ging nhau mc d ngn ng lp trnh h dng v tt nhin l c php c th khc nhau. Nhng kt qu cui cng l mt. Do , cn thit phi hiu r bi ton v m gi phi c vit cn thn. Chng ta cng kt lun rng m gi c lp vi ngn ng lp trnh. Vi im cn thit khc phi ch khi v mt lu : Lc u ch tp trung vo kha cnh logic ca bi ton v v cc lung x l chnh ca lu

Mt lu phi c duy nht mt im bt u (START) v mt im kt thc (STOP).


10 Lp trnh c bn C

Khng cn thit phi m t tng bc ca chng trnh trong lu m ch cn cc bc chnh v c ngha cn thit. Chng ta tun theo nhng cu trc tun t, m trong lung thc thi chng trnh i qua tt c cc ch th bt u t ch th u tin. Chng ta c th bt gp cc iu kin trong chng trnh, da trn cc iu kin ny hng thc thi ca chng trnh c th r nhnh. Nhng cu trc cho vic r nhnh nh l cu trc chn la, cu trc iu kin hay r nhnh. Nhng cu trc ny c cp chi tit sau y: Cu trc IF (Nu) Cu trc chn la c bn l cu trc IF. hiu cu trc ny chng ta hy xem xt v d trong khch hng c gim gi nu mua trn 100 ng. Mi ln khch hng tr tin, mt on m chng trnh s kim tra xem lng tin tr c qu 100 ng khng?. Nu ng th th s gim gi 10% ca tng s tin tr, ngc li th khng gim gi. iu ny c minh ha s lc qua m gi nh sau: IF khch hng mua trn 100 th gim gi 10% Cu trc dng y l cu lnh IF. Hnh thc chung cho cu lnh IF (cu trc IF) nh sau: IF iu kin Cc cu lnh END IF Mt cu trc IF bt u l IF theo sau l iu kin. Nu iu kin l ng (tha iu kin) th quyn iu khin s c chuyn n cc cu lnh trong phn thn thc thi. Nu iu kin sai (khng tha iu kin), nhng cu lnh phn thn khng c thc thi v chng trnh nhy n cu lnh sau END IF (chm dt cu trc IF). Cu trc IF phi c kt thc bng END IF. Chng ta xem v d 4 cho cu trc IF. V d 4: Yu cu: Kim xem mt s l chn hay khng v hin th thng ip bo nu ng l s chn, ta x l nh sau : BEGIN INPUT num r = num MOD 2 IF r=0 Display Number is even END IF END on m trn nhp mt s t ngi dng, thc hin ton t MOD (ly phn d) v kim tra xem phn d c bng 0 hay khng. Nu bng 0 hin th thng ip, ngc li thot ra. Lu cho on m gi trn th hin qua hnh 1.7. Phn thn ca cu trc IF

Nhng khi nim c bn ca ngn ng C

11

S TAR T

IN P U T n u m

r = n u m M OD 2

No
r =0

Yes
DIS P L AY "N u m b e r is E ve n "

S TOP

Hnh 1.7 : Kim tra s chn C php ca lnh IF trong C nh sau: if (iu kin) { Cu lnh } Cu trc IFELSE Trong v d 4, s hay hn nu ta cho ra thng ip bo rng s khng l s chn tc l s l thay v ch thot ra. lm iu ny ta c th thm cu lnh IF khc kim tra xem trng hp s khng chia ht cho 2. Ta xem v d 5. Example 5: BEGIN INPUT num r = num MOD 2 IF r=0 DISPLAY Even number END IF IF r<>0 DISPLAY Odd number END IF END Ngn ng lp trnh cung cp cho chng ta cu trc IFELSE. Dng cu trc ny s hiu qu v tt hn gii quyt vn . Cu trc IF ELSE gip lp trnh vin ch lm mt php so snh v sau thc thi cc bc ty theo kt qu ca php so snh l True (ng) hay False (sai). Cu trc chung ca cu lnh IFELSE nh sau:

12

Lp trnh c bn C

IF iu kin Cu lnh 1 ELSE Cu lnh 2 END IF C php ca cu trc ifelse trong C nh sau: if(iu kin) { Cu lnh 1 } else { Cu lnh 2 } Nu iu kin tha (True), cu lnh 1 c thc thi. Ngc li, cu lnh 2 c thc thi. Khng bao gi c hai c thc thi cng lc. V vy, on m ti u hn cho v d tm s chn c vit ra nh v d 6. V d 6: BEGIN INPUT num r = num MOD 2 IF r = 0 DISPLAY Even Number ELSE DISPLAY Odd Number END IF END Lu cho on m gi trn th hin qua Hnh 1.8.

Nhng khi nim c bn ca ngn ng C

13

S TA R T

IN P U T n u m

r = n um M O D 2

Yes
r = 0

No

D IS P L AY "N u m b e r i s E ve n "

D IS PL A Y " N u m b er is O d d "

S TOP

Hnh 1.8: S chn hay s l a iu kin s dng AND/OR Cu trc IFELSE lm gim phc tp, gia tng tnh hu hiu. mt mc no , n cng nng cao tnh d c ca m. Cc th d IF chng ta cp n thi im ny th kh n gin. Chng ch c mt iu kin trong IF nh gi. Thnh thong chng ta phi kim tra cho hn mt iu kin, th d: xem xt nh cung cp c t MVS (nh cung cp quan trng nht) khng?, mt cng ty s kim tra xem nh cung cp c lm vic vi cng ty t nht 10 nm khng? v c tng doanh thu t nht 5,000,000 khng?. Hai iu kin tha mn th nh cung cp c xem nh l mt MVS. Do ton t AND c th c dng trong cu lnh IF nh trong v d 7 sau: V d 7: BEGIN INPUT yearsWithUs INPUT bizDone IF yearsWithUs >= 10 AND bizDone >=5000000 DISPLAY Classified as an MVS ELSE DISPLAY A little more effort required! END IF END V d 7 cng kh n gin, v n ch c 2 iu kin. tnh hung thc t, chng ta c th c nhiu iu kin cn c kim tra. Nhng chng ta c th d dng dng ton t AND ni nhng iu kin li ging nh ta lm trn. By gi, gi s cng ty trong v d trn i quy nh, h quyt nh a ra iu kin d dng hn. Nh l : Hoc lm vic vi cng ty trn 10 nm hoc c doanh s (gi tr thng mi,giao dch)

14

Lp trnh c bn C

t 5,000,000 tr ln. V v, ta thay th ton t AND bng ton t OR. Nh rng ton t OR cho ra gi tr True (ng) nu ch cn mt iu kin l True. Cu trc IF lng nhau Mt cch khc thc hin v d 7 l s dng cu trc IF lng nhau. Cu trc IF lng nhau l cu lnh IF ny nm trong trong cu lnh IF khc. Chng ta vit li v d 7 s dng cu trc IF lng nhau v d 8 nh sau:

V d 8:
BEGIN INPUT yearsWithUs INPUT bizDone IF yearsWithUs >= 10 IF bizDone >=5000000 DISPLAY Classified as an MVS ELSE DISPLAY A little more effort required! END IF ELSE DISPLAY A little more effort required! END IF END on m trn thc hin cng nhim v nhng khng c AND. Tuy nhin, chng ta c mt lnh IF (kim tra xem bizDone ln hn hoc bng 5,000,000 hay khng?) bn trong lnh IF khc (kim tra xem yearsWithUs ln hn hoc bng 10 hay khng?). Cu lnh IF u tin kim tra iu kin thi gian nh cung cp lm vic vi cng ty c ln hn 10 nm hay khng. Nu di 10 nm (kt qu tr v l False), n s khng cng nhn nh cung cp l mt MVS; Nu tha iu kin n xt cu lnh IF th hai, n s kim tra ti iu kin bizDone ln hn hoc bng 5,000,000 hay khng. Nu tha iu kin (kt qu tr v l True) lc nh cung cp c xem l mt MVS, nu khng th mt thng ip bo rng khng l mt MVS. Lu cho m gi ca v d 8 c trnh by qua hnh 1.9.

Nhng khi nim c bn ca ngn ng C

15

S TA RT

INPUT y ears W ithUs

INPUT bizDone

Yes
yearsW ithUs >= 10

No

Yes
bzDone > 5000000

No

DIS PLA Y "A little m ore effor t required!"

DIS P LAY "Class ified as an MV S "

DIS PLA Y "A little m ore effor t required!"

S TOP

Hnh 1.9: Cu lnh IF lng nhau M gi trong trng hp ny ca cu trc IF lng nhau ti v d 8 cha hiu qu. Cu lnh thng bo khng tha iu kin MVS phi vit hai ln. Hn na lp trnh vin phi vit thm m nn trnh bin dch phi xt hai iu kin ca lnh IF, do lng ph thi gian. Ngc li, nu dng ton t AND ch xt ti iu kin ca cu lnh IF mt ln. iu ny khng c ngha l cu trc IF lng nhau ni chung l khng hiu qu. N ty theo tnh hung c th m ta dng n. C khi dng ton t AND hiu qu hn, c khi dng cu trc IF lng nhau hiu qu hn. Chng ta s xt mt v d m dng cu trc IF lng nhau hiu qu hn dng ton t AND. Mt cng ty nh phn lng c bn cho cng nhn da trn tiu chun nh trong bng 1.1.

Grade E E M M

Experience 2 3 2 3
Bng 1.1: Lng c bn

Salary 2000 3000 3000 4000

V vy, nu mt cng nhn c xp loi l E v c hai nm kinh nghim th lng l 2000, nu ba nm kinh nghim th lng l 3000. M gi dng ton t AND cho vn trn nh v d 9:

16

Lp trnh c bn C

V d 9: BEGIN INPUT grade INPUT exp IF grade =E AND exp =2 salary=2000 ELSE IF grade = E AND exp=3 salary=3000 END IF END IF IF grade =M AND exp =2 salary=3000 ELSE IF grade = M AND exp=3 salary=4000 END IF END IF END Cu lnh IF u tin kim tra xp loi v kinh nghim ca cng nhn. Nu xp loi l E v kinh nghim l 2 nm th lng l 2000, ngoi ra nu xp loi E, nhng c 3 nm kinh nghim th lng l 3000. Nu c 2 iu kin khng tha th cu lnh IF th hai cng tng t s kim iu kin xp loi v kinh nghim cho cng nhn phn nh lng. Gi s xp loi ca mt cng nhn l E v c hai nm kinh nghim. Lng ngi s c tnh theo mnh IF u tin. Phn cn li ca cu lnh IF th nht c b qua. Tuy nhin, iu kin ti mnh IF th hai s c xt v tt nhin l khng tha, do n kim tra mnh ELSE ca cu lnh IF th 2 v kt qu cng l False. y qu l nhng bc tha m chng trnh xt qua. Trong v d, ta ch c hai cu lnh IF bi v ta ch xt c hai loi l E v M. Nu c khong 15 loi th s tn thi gian v ti nguyn my tnh cho vic tnh ton tha mc d lng xc nh ti cu lnh IF u tin. y dt khot khng phi l m ngun hiu qu. By gi chng ta xt m gi dng cu trc IF lng nhau c sa i trong v d 10.

Nhng khi nim c bn ca ngn ng C

17

V d 10: BEGIN INPUT grade INPUT exp IF grade=E IF exp=2 salary = 2000 ELSE IF exp=3 salary=3000 END IF END IF ELSE IF grade=M IF exp=2 Salary=3000 ELSE IF exp=3 Salary=4000 END IF END IF END IF END IF END on m trn nhn kh c. Tuy nhin, n em li hiu sut cao hn. Chng ta xt cng v d nh trn. Nu cng nhn c xp loi l E v kinh nghim l 2 nm th lng c tnh l 2000 ngay trong bc u ca cu lnh IF. Sau , chng trnh s thot ra v khng cn thc thi thm bt c lnh ELSE no. Do , khng c s lng ph v on m ny mang li hiu sut cho chng trnh v chng trnh chy nhanh hn. Vng lp Mt chng trnh my tnh l mt tp cc cu lnh s c thc hin tun t. N c th lp li mt s bc vi s ln lp xc nh theo yu cu ca bi ton hoc n khi mt s iu kin nht nh c tha. Chng hn, ta mun vit chng trnh hin th tn ca ta 5 ln. Ta xt m gi di y. V d 11: BEGIN DISPLAY DISPLAY DISPLAY DISPLAY DISPLAY END Scooby Scooby Scooby Scooby Scooby

Nu hin th tn ta 1000 ln, nu ta vit DISPLAY Scooby 1000 ln th rt tn cng sc. Ta c th tinh gin vn bng cch vit cu lnh DISPLAY ch mt ln, sau t n trong cu trc vng lp, v ch th my tnh thc hin lp 1000 ln cho cu lnh trn.

18

Lp trnh c bn C

Ta xem m gi ca cu trc vng lp trong v d 12 nh sau: V d 12: Do loop 1000 times DISPLAY Scooby End loop Nhng cu lnh nm gia Do loop v End loop (trong v d trn l lnh DISPLAY) c thc thi 1000 ln. Nhng cu lnh ny cng vi cc lnh do loop v end loop c gi l cu trc vng lp. Cu trc vng lp gip lp trnh vin pht trin thnh nhng chng trnh ln trong c th yu cu thc thi hng ngn cu lnh. Do loopend loop l mt dng thc tng qut ca vng lp. V d sau l cch vit khc nhng cng dng cu trc vng lp. V d 13: BEGIN cnt=0 WHILE (cnt < 1000) DO DISPLAY Scooby cnt=cnt+1 END DO END Lu cho m gi trong v d 13 c v trong Hnh 1.10.

S TA R T

cn t= 0

Yes
cn t < 1 0 0 0

No
D IS PL A Y " Sc o ob y "

cn t= c n t+1

S TOP

Hnh 1.10: Cu trc vng lp Ch rng Hnh 1.10 khng c k hiu c bit no biu din cho vng lp. Chng ta dng k hiu phn nhnh kim tra iu kin v qun l hng i ca ca chng trnh bng cc dng chy (flow_lines).

Nhng khi nim c bn ca ngn ng C

19

Tm tt bi hc Phn mm l mt tp hp cc chng trnh. Mt chng trnh l mt tp hp cc ch th (lnh). Nhng on m lnh l c s cho bt k mt chng trnh C no. Ngn ng C c 32 t kha. Cc bc cn thit gii quyt mt bi ton l nghin cu chi tit bi ton , thu thp thng tin thch hp, x l thng tin v i n kt qu. Mt gii thut l mt danh sch rt gn v logic cc bc gii quyt vn . Gii thut c vit bng m gi hoc lu . M gi l s trnh by ca gii thut trong ngn ng tng t nh m tht Mt lu l s trnh by di dng biu ca mt gii thut. Lu c th chia nh thnh nhiu phn v u ni dng cho vic ni chng li ti ni chng b chia ct. Mt chng trnh c th gp mt iu kin da theo vic thc thi c th c phn theo cc nhnh r khc nhau. Cu trc lnh nh vy gi l cu trc chn la, iu kin hay cu trc r nhnh. Cu trc chn c bn l cu trc IF.

Cu trc IF ELSE gip lp trnh vin ch lm so snh n v sau thc thi cc bc ty


theo kt qu ca php so snh l True (ng) hay False (sai). Cu trc IF lng nhau l cu lnh IF ny nm trong cu lnh IF khc. Thng thng ta cn lp li mt s bc vi s ln lp xc nh theo yu cu ca bi ton hoc n khi mt s iu kin nht nh c tha. Nhng cu trc gip lm vic ny gi l cu trc vng lp.

20

Lp trnh c bn C

Kim tra tin hc tp 1. C cho php ____________ ca m v d liu. 2. Mt l mt s trnh by dng biu minh ha tnh tun t ca nhng hot ng c thc thi nhm t c mt li gii. 3. Lu gip chng ta xem xt li v g ri chng trnh mt cch d dng. 4. Mt lu c th c tu s im bt u v s im kt thc. (True / False) (True / False)

5. Mt ____ c bn l vic thc thi tun t nhng cu lnh n khi mt iu kin c th no l ng (True) hay sai (False).

Nhng khi nim c bn ca ngn ng C

21

Bi tp t lm 1. Vit mt on m gi v v mt lu nhp mt gi tr l 0C (Celsius) v chuyn n sang 0F (Fahrenheit). [Hng dn: C/5 = (F-32)/9] 2. Vit mt on m gi v v mt lu nhp im ca mt sinh vin cho cc mn : Vt l, Ha hc, v Sinh hc. Sau hin th im trung bnh v tng ca nhng im ny.

22

Lp trnh c bn C

You might also like