c++ 2011 april_draft

162
1 Mc lc Gii thiu ........................................................................................................... 6 Chương 1. Mđầu ......................................................................................... 8 1.1. Chương trình là gì? ............................................................................. 8 1.2. Lp trình là gì? ................................................................................... 8 1.2.1. Mc cao độc lp vi máy tính ...................................................... 8 1.2.2. Mc thp phthuc vào máy tính .............................................. 10 1.3. Ngôn nglp trình và chương trình dch .......................................... 10 1.4. Môi trường lp trình bc cao............................................................. 11 1.5. Li và tìm li .................................................................................... 13 1.6. Lch sC và C++ ............................................................................. 14 1.7. Chương trình C++ đầu tiên ............................................................... 15 Bài tp ......................................................................................................... 19 Chương 2. Biến, kiu dliu và các phép toán ............................................ 20 2.1. Kiu dliu ...................................................................................... 22 2.1.1. Kiu dliu cơ bn .................................................................... 22 2.1.2. Kiu dliu dn xut ................................................................. 24 2.2. Khai báo và sdng biến ................................................................. 24 2.2.1. Định danh và cách đặt tên biến ................................................... 24 2.2.2. Khai báo biến ............................................................................. 25 2.3. Hng ................................................................................................. 25 2.4. Các phép toán cơ bn........................................................................ 26 2.4.1. Phép gán ..................................................................................... 26 2.4.2. Các phép toán shc .................................................................. 26 2.4.3. Các phép toán quan h................................................................ 27

Upload: tran-van-nam

Post on 28-Jul-2015

63 views

Category:

Documents


2 download

TRANSCRIPT

1. Mc lcGii thieu...........................................................................................................6Chng 1. M du .........................................................................................81.1. Chng trnh l g?.............................................................................81.2. Lap trnh l g? ...................................................................................81.2.1. M c cao doc lap vi my tnh ......................................................81.2.2. M c thp ph thuoc vo my tnh ..............................................101.3. Ngn nglap trnh v chng trnh dch ..........................................101.4. Mi trng lap trnh bac cao.............................................................111.5. Loi v tm loi ....................................................................................131.6. Lch s C v C++ .............................................................................141.7. Chng trnh C++ du tin ...............................................................15Bi tap .........................................................................................................19Chng 2. Bin, kieu dlieu v cc php ton ............................................202.1. Kieu dlieu......................................................................................222.1.1. Kieu dlieu c bn ....................................................................222.1.2. Kieu dlieu dan xut .................................................................242.2. Khai bo v s dng bin .................................................................242.2.1. Dnh danh v cch dat tn bin...................................................242.2.2. Khai bo bin .............................................................................252.3. Hang.................................................................................................252.4. Cc php ton c bn........................................................................262.4.1. Php gn.....................................................................................262.4.2. Cc php ton s hc..................................................................262.4.3. Cc php ton quan he................................................................271 2. 2.4.4. Cc php ton l-gic...................................................................282.4.5. Do u tin ca cc php ton......................................................282.4.6. Tng thch gi a cc kieu ..........................................................29Bi tap .........................................................................................................30Chng 3. Cc cu trc diu khien ..............................................................323.1. Lung diu khien..............................................................................323.2. Cc cu trc re nhnh .......................................................................333.2.1. Lenh if-else ...........................................................................333.2.2. Lenh switch .............................................................................393.3. Cc cu trc lap ................................................................................433.3.1. Vng while...............................................................................433.3.2. Vng do-while ........................................................................463.3.3. Vng for ...................................................................................493.4. Cc lenh break v continue .........................................................543.5. Bieu th c diu kien trong cc cu trc diu khien.............................57Bi tap .........................................................................................................59Chng 4. Hm............................................................................................614.1. Cc hm c san.................................................................................624.2. Cu trc chung ca hm ...................................................................634.3. Cch s dng hm............................................................................644.4. Bin ton cc v bin da phng.....................................................654.4.1. Ph m vi ca bin ........................................................................654.4.2. Thi gian sng ca bin..............................................................674.5. Tham s, di s, v c ch truyn tham s cho hm.........................684.5.1. Truyn gi tr..............................................................................682 3. 4.5.2. Truyn tham chiu......................................................................694.5.3. Tham s mac dnh ......................................................................724.6. Hm trng tn...................................................................................744.7. Hm de quy ......................................................................................76Bi tap .........................................................................................................78Chng 5. Mng ..........................................................................................805.1. Mng mot chiu................................................................................805.1.1. Khai bo v khi t o mng .........................................................815.1.2. !ng dng ca mng ...................................................................835.1.3. Trch nhiem kiem sot tnh hp le ca ch# s mng....................855.1.4. Mng lm tham s cho hm........................................................855.2. Mng nhiu chiu .............................................................................865.3. Mng v xu k t$.............................................................................885.3.1. Khi t o gi tr cho xu k t$......................................................905.3.2. Th vien x l xu k t$ .............................................................905.4. Tm kim v sap xp dlieu trong mng ..........................................915.4.1. Tm kim tuyn tnh ...................................................................915.4.2. Tm kim nh phn .....................................................................925.4.3. Sap xp chn ..............................................................................94Bi tap .........................................................................................................96Chng 6. Con tr v bo nh.......................................................................996.1. Bo nh my tnh ...............................................................................996.2. Bin v da ch# ca bin....................................................................996.3. Bin con tr ....................................................................................1006.4. Mng v con tr..............................................................................1053 4. 6.5. Bo nh dong ...................................................................................1076.5.1. Cp pht bo nh dong...............................................................1076.5.2. Gii phng bo nh dong ...........................................................1086.6. Mng dong v con tr.....................................................................1096.7. Truyn tham s l con tr ...............................................................111Bi tap .......................................................................................................115Chng 7. Cc kieu dlieu tr'u tng ......................................................1187.1. Dnh nghia kieu dlieu tr'u tng bang cu trc struct .................1187.2. Dnh nghia kieu dlieu tr'u tng bang cu trc class ...............1247.2.1. Quyn truy nhap.......................................................................1277.2.2. Ton t ph m vi v dnh nghia cc hm thnh vin ..................1287.2.3. Hm khi t o v hm hy.........................................................1297.3. Li ch ca lap trnh hng di tng.............................................1327.4. Bin dch ring re ...........................................................................133Bi tap .......................................................................................................137Chng 8. Vo ra dlieu...........................................................................1408.1. Khi niem dng dlieu ..................................................................1408.2. Tep van bn v tep nh phn ...........................................................1418.3. Vo ra tep .......................................................................................1418.3.1. M tep......................................................................................1428.3.2. Dng tep...................................................................................1438.3.3. X l tep van bn .....................................................................1448.3.4. X l tep nh phn....................................................................147Bi tap .......................................................................................................151Ph lc A. Phong cch lap trnh .................................................................1534 5. Ph lc B. Dch chng trnh C++ bang GNU C++...................................157Ph lc C. X l xu bang th vien cstring................................................160Ti lieu tham kho .........................................................................................1625 6. 6Gii thieuLap trnh l mot trong nh ng bc quan trng nht trong quy trnh gii quytmot bi ton. Nhiu ngn nglap trnh d dc ra di nham gip chng ta giiquyt cc bi ton mot cch hieu qu nht. Moi ngn nglap trnh c nh ng thm nh v nhc diem ring. Cc ngn nglap trnh c the chia ra thnh hai lo ichnh l ngn nglap trnh bac thp (gn gui vi ngn ngmy), v ngn ng lap trnh bac cao (ngn gui vi ngn ngt$ nhin ca con ngi).Gio trnh ny trang b cho sinh vin nh ng kin th c c bn v lap trnh. Ngnnglap trnh C++ dc s dng de minh ha cho viec lap trnh. Viec l$a chnC++ bi v n l mot ngn nglap trnh hng di tng chuyn nghiep dcs dng rong ri trn ton th gii de pht trien cc chng trnh t' dn gindn ph c t p. Hn th n a, s$ mm d+o ca C++ cho php chng ta gii quytnh ng bi ton th$c t mot cch nhanh chng, ngoi ra cho php chng ta qunl v tng tc tr$c tip dn he thng, bo nh de nng cao hieu qu ca chngtrnh.Gio trnh dc chia thnh 8 chng, moi chng trnh by mot vn d lthuyt trong lap trnh. Cc vn d l thuyt dc m t bang cc v d th$c t.Kt thc moi chng l phn bi tap de sinh vin gii quyt v nam r hn v lthuyt. Cu trc ca gio trnh nh sau: Chng 1: gii thieu cc khi niem c bn v lap trnh v quy trnh giiquyt mot bi ton. Sinh vin se hieu v ngn nglap trnh bac cao v ngnnglap trnh bac thp. Cui chng chng ti gii thieu v mi trng laptrnh cung nh ngn nglap trnh C++. Chng 2: Chng ti gii thieu cc khi niem c bn v bin s, hang s,cc kieu dlieu c bn v cc php ton c bn. Sau khi hc, sinh vin sebit cch khai bo v s dng bin s, hang s, v cc php ton trn bin vhang s. Chng 3: Trng ny gii thieu v cu trc chng trnh cung nh cc cutrc diu khien. C the l cc cu re nhnh (if-else, switch), cu trc lap (for,while, do-while) se dc gii thieu. Chng 4: Chng trnh con v hm se dc gii thieu de sinh vin hieudc chin lc lap trnh chia de tr. Chng ti se trnh by chi tit v 7. cch khai bo v s dng hm, cung nh cch truyn tham s, truyn gi trcho hm. Chng 5: Chng ny trnh by cu trc dlieu kieu mng v xu k t$.Cch khai bo v s dng mng mot chiu cung nh mng nhiu chiu v vd lin quan dc trnh by chi titchng ny. Chng 6: Dy l mot chng tng di dac th cho C++, khi chng titrnh by v bo nh v kieu dlieu con tr. Cu trc bo nh, cch qun lv xin cp php bo nh dong thng qua viec s dng bin con tr se dctrnh by. Chng 7: Trong chng ny chng ti se trnh by v cu trc dlieu tr'utng (c the l struct v class trong C++). Sinh vin se hieu v bit ccht o ra nh ng cu trc dlieu tr'u tng ph hp vi cc kieu di tng d lieu cn bieu dien. Cui chng, chng ti cung gii thieu v lap trnh hngdi tng, mot th m nh ca ngn nglap trnh C++. Chng 8: Chng ti gii thieu v cch vo ra dlieu. Sinh vin se dcgii thieu chi tit v cch lm viec vi cc tep dlieu.7 8. 8Chng 1. M duTrong chng ny, chng ti se gii thieu qua mot s khi niem c bn v:chng trnh, lap trnh, ngn nglap trnh.1.1. Chng trnh l g?B n chac chan d dng qua nhiu chng trnh khc nhau, v d nh chngtrnh so n tho van bn Microsoft Word. Chng trnh, hay phn mm, dchieu dn gin l mot tap cc lenh de my tnh th$c hien theo. Khi b n da chomy tnh mot chng trnh v yu cu my tnh th$c hien theo cc lenh cachng trnh, b n dang ch y chng trnh d.1.2. Lap trnh l g?Lap trnh l c the hieu dn gin l qu trnh vit ra cc lenh hng dan mytnh th$c hien de gii quyt mot bi ton c the no d. Lap trnh l mot bcquan trng trong quy trnh gii quyt mot bi ton nh m tHnh 1.1.bt/giybt/giytrnh son thochng trnh dchHnh 1.1: Quy trnh gii quyt mot bi ton.Quy trnh trn c the dc chia ra thnh hai m c: m c cao doc lap vi my tnh(machine independent) v m c thp ph thuoc vo my tnh (machine specific).1.2.1. Mc cao doc lap vi my tnhM c cao doc lap vi my tnh thng dc chia thnh ba bc chnh l: xcdnh vn d, thit k thuat ton v lap trnh. 9. Xc dnh vn d: Bc ny dnh nghia bi ton, xc dnh dlieu du vo, ccrng buoc, yu cu cn gii quyt v kt qu du ra. Bc ny thng s dngbt/giy v ngn ngt$ nhin nh ting Anh, ting Viet de m t v xc dnhvn d cn gii quyt.Thit k thuat ton: Mot thuat ton l mot bo cc ch# dan nham gii quyt motbi ton. Cc ch# dan ny cn dc dien d t mot cch hon ch#nh v chnh xcsao cho mi ngi c the hieu v tin hnh theo. Thuat ton thng dc m tdi d ng m gi (pseudocode). Bc ny c the s dng giy bt v thngkhng ph thuoc vo ngn nglap trnh. V d v thuat ton tm c s chungln nht (UCLN) ca hai s x v y vit bang ngn ngt$ nhin: Bc 1: Nu xy th thay x bang phn d ca php chia x/y. Bc 2: Nu khng, thay y bang phn d ca php chia y/x. Bc 3: Nu trong hai s x v y c mot s bang 0 th kt luan UCLN9l s cn l i. Bc 4: Nu khng, quay l i Bc 1.hoac bang m gi:repeatif xy then x := x mod yelse y := y mod xuntil x = 0 or y = 0if x = 0 then UCLN := yelse UCLN := xLap trnh l bc chuyen doi thuat ton sang mot ngn nglap trnh, pho binl cc ngn nglap trnh bac cao, v d nh cc ngn ngC++, Java. Bcny, lap trnh vin s dng mot chng trnh so n tho van bn de vit chngtrnh. Trong v sau qu trnh lap trnh, ngi ta phi tin hnh kiem th v saloi chng trnh. C ba lo i loi thng gap: loi c php, loi trong thi gianch y, v loi l-gic (xem chi titMc 1.5). 10. 1.2.2. Mc thp ph thuoc vo my tnhCc ngn nglap trnh bac cao, v d nh C, C++, Java, Visual Basic, C#, dcthit k de con ngi tng di de hieu v de s dng. Tuy nhin, my tnhkhng hieu dc cc ngn ngbac cao. Do d, trc khi mot chng trnh vitbang ngn ngbac cao c the ch y dc, n phi dc dch sang ngn ngmy, hay cn gi l m my, m my tnh c the hieu v th$c hien dc. Viecdch d dc th$c hien bi mot chng trnh my tnh gi l chng trnh dch.1.3. Ngn ng lap trnh v chng trnh dchNh chng ta thy, qu trnh gii quyt mot bi ton thng qua cc bc khcnhau de chuyen doi t' ngn ngt$ nhin m con ngi hieu dc sang ngnngmy m my tnh c the hieu v th$c hien dc. Ngn nglap trnh thngdc chia ra thnh hai lo i: ngn nglap trnh bac thp v ngn nglap trnhbac cao.Ngn ng lap trnh bac thp nh hp ng(assembly language) hoac m myl ngn nggn vi ngn ngmy m my tnh c the hieu dc. Dac diemchnh ca cc ngn ngny l chng c lin quan chat che dn phn c ng camy tnh. Cc h my tnh khc nhau s dng cc ngn ngkhc nhau. Chngtrnh vit bang cc ngn ngny c the ch y m khng cn qua chng trnhdch. Cc ngn ngbac thp c the dng de vit nh ng chng trnh cn ti uha v tc do. Tuy nhin, chng thng kh hieu di vi con ngi v khngthuan tien cho viec lap trnh.Ngn ng lap trnh bac cao nh Pascal, Ada, C, C++, Java, Visual Basic,Python, l cc ngn ngc m c do tr'u tng ha cao, gn vi ngn ngt$nhin ca con ngi hn. Viec s dng cc ngn ngny cho viec lap trnh dod de dng hn v nhanh hn rt nhiu so vi ngn nglap trnh bac thp. Khcvi ngn ngbac thp, chng trnh vit bang cc ngn ngbac cao ni chungc the s dng dc trn nhiu lo i my tnh khc nhau.Cc chng trnh vit bang mot ngn ngbac cao mun ch y dc th phidc dch sang ngn ngmy bang cch s dng chng trnh dch. Chngtrnh dch c the chia ra thnh hai lo i l trnh bin dch v trnh thng dch.Mot s ngn ngbac cao nh C, C++ yu cu lo i chng trnh dch dc gil trnh bin dch (compiler). Trnh bin dch dch m ngun thnh m my d ng c the th$c thi dc. Kt qu ca viec dch l mot chng trnh th$c thidc v c the ch y nhiu ln m khng cn dch l i. V d, vi ngn ngC++10 11. mot trnh bin dch rt pho bin l gcc/g++ trong bo GNU Compiler Collection(GCC) ch y trong cc mi trng Unix/Linux cung nh Windows. Ngoi ra,Microsoft Visual C++ l trnh bin dch C++ pho bin nht trong mi trngWindows. Mot s ngn ngbac cao khc nh Perl, Python yu cu lo i chngtrnh dch gi l trnh thng dch (interpreter). Khc vi trnh bin dch, thayv dch ton bo chng trnh mot ln, trnh thng dch v'a dch v'a ch ychng trnh, dch dn du ch y chng trnh dn d.Trong mn hc ny, C++ dc chn lm ngn ngthe hien. Dy l mot trongnh ng ngn nglap trnh chuyn nghiep dc s dng rong ri nht trn thgii. Trong ph m vi nhap mn ca mn hc ny, C++ ch# dc gii thieum crt c bn, rt nhiu tnh nang m nh ca C++ se khng dc ni dn hoac ch#dc gii thieu s qua. Ngi hc nn tip tc tm hieu v ngn ngC++, vtra ngoi gii h n ca cun sch ny.1.4. Mi trng lap trnh bac caoDe lap trnh gii quyt mot bi ton bang ngn nglap trnh bac cao, b n cn ccng c chnh l: chng trnh so n tho, chng trnh dch dnh cho ngn ng s dng, v cc th vien chuan ca ngn ngs dng (standard library), vchng trnh tm loi (debugger).Cc bc c bn de xy d$ng v th$c hien mot chng trnh:1. Son tho: M ngun chng trnh dc vit bang mot phn mm so n thovan bn d ng text v lu trn o dia. Ta c the dng nh ng phn mm so ntho van bn dn gin nht nh Notepad (trong mi trng Windows) hay vi(trong mi trng Unix/Linux), hoac cc cng c so n tho trong mi trngtch hp de vit m ngun chng trnh. M ngun C++ thng dat trongcc tep vi tn c phn m rong l .cpp, cxx, .cc, hoac .C (vit hoa).2. Dch: Dng trnh bin dch dch m ngun chng trnh ra thnh cc do nm my ring l+ (gi l object code) lu trn o dia. Cc trnh bin dch phobin cho C++ l vc.exe trong bo Microsoft Visual Studio hay gcc trong boGNU Compiler vi cc tham s thch hp de dch v lin kt de t o ra tepch y dc. Vi C++, ngay trc khi dch cn c giai do n tin x l(preprocessing) khi cc dnh hng tin x l dc th$c thi de lm cc thaotc nh bo sung cc tep van bn cn dch hay thay th mot s chuoi van bn.Mot s dnh hng tin x l quan trng se dc gii thieu dn trong cunsch ny.11 12. 3. Lin kt: Mot tep m ngun thng khng ch a dy d nh ng phn cnthit cho mot chng trnh hon ch#nh. N thng dng dn dlieu hoachm dc dnh nghia trong cc tep khc hoac trong th vien chuan. Trnhlin kt (linker) kt ni cc do n m my ring l+ vi nhau v vi cc thvien c san de t o ra mot chng trnh m my hon ch#nh ch y dc.4. Np: Trnh n p (loader) se n p chng trnh di d ng m my vo bo nh.Cc thnh phn bo sung t' th vien cung dc n p vo bo nh.5. Chy: CPU nhan v th$c hien ln lt cc lenh ca chng trnh, dlieu vkt qu thng dc ghi ra mn hnh hoac o dia.Thng th khng phi chng trnh no cung ch y dc v ch y dng ngay ln ch y th du tin. Chng trnh c the c loi c php nn khng qua dcbc dch, hoac chng trnh dch dc nhng gap loi trong khi ch y. Trongnh ng trng hp d, lap trnh vin phi quay l i bc so n tho de sa loi vth$c hien l i cc bc sau d.Hnh 1.2: Cc bc c bn de xy dng mot chng trnh.De thuan tien cho viec lap trnh, cc cng c so n tho, dch, lin kt, ch y...ni trn dc kt hp l i trong mot mi trng lap trnh tch hp (IDE integrated development environment), trong d, tt c cc cng do n di vingi dng ch# cn l viec ch y cc tnh nang trong mot phn mm duy nht.IDE rt h u ch cho cc lap trnh vin. Tuy nhin, di vi nh ng ngi mi hclap trnh, thi gian du nn t$ th$c hien cc bc dch v ch y chng trnhthay v thng qua cc ch c nang ca IDE. Nh vay, ngi hc se c the namdc bn cht cc bc ca qu trnh xy d$ng chng trnh, hieu dc bn12 13. cht v dac diem chung ca cc IDE, trnh tnh tr ng b ph thuoc vo mot IDEc the.V d v cc IDE pho bin l Microsoft Visual Studio mi trng lap trnhthng m i cho mi trng Windows, v Eclipse phn mm mien ph vi ccphin bn cho c mi trng Windows cung nh Unix/Linux, c hai du ho trnhiu ngn nglap trnh.Dnh cho C++, mot s mi trng lap trnh tch hp pho bin l MicrosoftVisual Studio, Dev-C++, Code::Blocks, KDevelop. Moi mi trng c the hotr mot hoac nhiu trnh bin dch. Chang h n Code::Blocks ho tr c GCC vMSVC Do C++ c cc phin bn khc nhau.C nh ng bn ci dat khc nhau ca C++. Cc bn ra di trc chuan C++ 1998(ISO/IEC 14882) c the khng ho tr dy d cc tnh nang dc dac t trongchuan ANSI/ISO 1998. Bn C++ do Microsoft pht trien khc vi bn C++ caGNU. Tuy nhin, cc trnh bin dch hien d i hu ht ho tr C++ chuan, ta cungnn chn dng cc phn mm ny. Ngn ngC++ dc dng trong cun schny tun theo chuan ISO/IEC 14882, cn gi l C++ thun ty (pure C++).1.5. Loi v tm loiTrong v sau qu trnh lap trnh, chng ta phi tin hnh kiem th v sa loichng trnh. C ba lo i loi thng gap: loi c php, loi run-time v loi l-gic.Loi c php l do lap trnh vin vit sai vi cc quy tac c php ca ngn ng lap trnh, chang h n thiu du chm phycui lenh. Chng trnh bin dch sepht hien ra cc loi c php v cung cp thng bo v v tr m n cho l c loi.Nu trnh bin dch ni rang chng trnh c loi c php th chac chan l c loic php trong chng trnh. Tuy nhin, loi l cho no th trnh bin dch ch# cthe don, v n c the don sai.Loi run-time l loi xut hien trong khi chng trnh dang ch y. Loi d ng ny segy ra thng bo loi v ng'ng chng trnh. V d l khi chng trnh th$c hienphp chia cho 0.Loi l-gic c nguyn nhn l do thuat ton khng dng, hoac do lap trnh vingap sai st khi the hien thuat ton bang ngn nglap trnh (v d vit nhm ducong thnh du tr'). Khi c loi l-gic, chng trnh ca b n c the dch v ch ybnh thng, nhng kt qu ca chng trnh da ra l i c trng hp sai hoac13 14. ho t dong ca chng trnh khng nh mong di. Loi l-gic l lo i loi kh tmra nht.Nu chng trnh ca b n dch v ch y khng pht sinh thng bo loi, tham chchng trnh cho ra kt qu c dng vi mot vi bo dlieu test, diu d khngc nghia chng trnh ca b n hon ton khng c loi. De c the chac chan hnv tnh dng dan ca chng trnh, b n cn ch y th chng trnh vi nhiu bodlieu khc nhau v so snh kt qu m chng trnh t o ra vi kt qu mongdi.1.6. Lch s C v C++Ngn nglap trnh C dc t o ra bi Dennis Ritchie (phng th nghiem Bell) vdc s dng de pht trien he diu hnh UNIX. Mot trong nh ng dac diem noibat ca C l doc lap vi phn c ng (portable), t c l chng trnh c the ch ytrn cc lo i my tnh v cc he diu hnh khc nhau. Nam 1983, ngn ngC ddc chuan ha v dc gi l ANSI C bi Vien chuan ha quc gia Hoa Ky(American National Standards Institute). Hien nay ANSI C van l ngn nglaptrnh chuyn nghiep v dc s dng rong ri de pht trien cc he thng tnhton hieu nang cao.Ngn nglap trnh C++ do Bjarne Stroustrup (thuoc phng th nghiem Bell)pht trien trn nn l ngn nglap trnh C v cm h ng chnh t' ngn nglaptrnh Simula67. So vi C, C++ l ngn ngan ton hn, kh nang dien d t caohn, v t di hi cc ky thuat bac thp. Ngoi nh ng th m nh th'a k t' C,C++ ho tr tr'u tng ha dlieu, lap trnh hng di tng v lap trnh tongqut, C++ gip xy d$ng de dng hn nh ng he thng ln v ph c t p.Bat du t' phin bn du tin nam 1979 vi ci tn C with Classes (C km lpdi tng)1 vi cc tnh nang c bn ca lap trnh hng di tng, C++ dcpht trien dn theo thi gian. Nam 1983, ci tn C++ chnh th c ra di, cctnh nang nh hm o (virtual function), hm trng tn v dnh nghia l i ton t(overloading), hang ... dc bo sung. Nam 1989, C++ c thm lp tr'u tng,da th'a k, hm thnh vin tinh, hang hm, v thnh vin kieu protected. Cc bosung cho C++ trong thap k# sau d l khun mau (template), khng gian tn(namespace), ngo i le (exception), cc ton t doi kieu dlieu mi, v kieu d 1 Theo li ke ca Bjarne Stroustrup t i trang c nhn ca ng t i trang web ca phng th nghiem ATThttp://www2.research.att.com/~bs/bs_faq.html#invention14 15. lieu Boolean. Nam 1998, ln du tin C++ dc chnh th c chuan ha quc tbi to ch c ISO, kt qu l chuan ISO/IEC 148822.Di km vi s$ pht trien ca ngn ngl s$ pht trien ca th vien chuan C++.Bn c nh viec tch hp th vien chuan truyn thng ca C vi cc sa doi nhcho ph hp vi C++, th vien chuan C++ cn c thm th vien stream I/Ophc v viec vo ra dlieu d ng dng. Chuan C++ nam 1998 tch hp thmphn ln th vien STL (Standard Template Library th vien khun mauchuan)3. Phn ny cung cp cc cu trc dlieu rt h u ch nh vector, danhsch, v cc thuat ton nh sap xp v tm kim.Hien nay, C++ l mot trong cc ngn nglap trnh chuyn nghiep dc s dngrong ri nht.1.7. Chng trnh C++ du tinChng trnh dn gin trong Hnh 1.3 se hien ra mn hnh dng chHelloworld!. Trong chng trnh c nh ng dac diem quan trng ca C++. Ta se xemxt t'ng dng.2 Van bn ny (ISO/IEC 14882:1998) sau d dc pht hien loi ch#nh sa vo nam 2003, thnh phin bnISO/IEC 14882:2003.3 STL vn khng nam trong th vien chuan m l mot th vien ring do HP v sau d l SGI pht trien.15 16. Hnh 1.3: Chng trnh C++ du tin.Hai dng du tin bat du bang chuoi // l cc dng ch thch chng trnh. Dl kieu ch thch dng dn. Cc dng ch thch khng gy ra ho t dong g cachng trnh khi ch y, trnh bin dch b qua cc dng ny. Ngoi ra cn cd ng ch thch kieu C dng chuoi /* v */ de dnh du diem bat du v kt thcch thch. Cc lap trnh vin dng ch thch de gii thch v gii thieu v noidung chng trnh.Dng thba, #include iostream l mot dnh hng tin x l(preprocessor directive) ch# dan v mot cng viec m trnh bin dch cn th$chien trc khi dch chng trnh. #include l khai bo v th vien se dc sdng trong chng trnh, trong trng hp ny l th vien vo ra dlieuiostream trong th vien chuan C++.Tip theo l hm main, phn khng the thiu ca moi chng trnh C++. N batdu t' dng khai bo header ca hm:16int main()Moi chng trnh C++ thng bao gm mot hoac nhiu hm, trong d c dngmot hm c tn main, dy l ni chng trnh bat du th$c hien v kt thc.Bn tri t' main l t' kha int, n c nghia l hm main se tr v mot gi tr ls nguyn. T' kha l nh ng t' dac biet m C++ dnh ring cho nh ng mc 17. dch c the. Chng 4 se cung cp thng tin chi tit v khi niem hm v viechm tr v gi tr.Thn hm main dc bat du v kt thc bi cap ngoac {}, bn trong d lchuoi cc lenh m khi chng trnh ch y chng se dc th$c hien tun t$ t'lenh du tin cho dn lenh cui cng. Hm main trong v d dang xt c ch ahai lenh. Moi lenh du kt thc bang mot du cham phy, cc dnh hng tinx l th khng.Lenh thnht gm cout, ton t , xu k t$ Hello world!, v du chmphy. N ch# th cho my tnh th$c hien mot nhiem v: in ra mn hnh chuoi kt$ nam gi a hai du nhy kp Hello world!. Khi lenh dc th$c thi, chuoi kt$ Hello world se dc gi cho cout lung dlieu ra chuan ca C++,thng dc ni vi mn hnh. Chi tit v vo ra dlieu se dc ni dn trongChng 8. Chuoi k t$ nam gi a hai du nhy kp dc gi l mot xu k t(string). De dng17using namespace std;namgn du chng trnh. Tt c thnh phn ca th vien chuan C++, trongd c cout dc dng dn trong hm main, dc khai bo trong mot khng giantn (namespace) c tn l std. Dng trn thng bo vi trnh bin dch rangchng trnh v d ca ta se s dng dn mot s thnh phn nam trong khnggian tn std. Nu khng c khai bo trn, tin t std:: se phi di km theo tnca tt c cc thnh phn ca th vien chuan dc dng trong chng trnh,chang h n cout se phi dc vit thnh std::cout. Chi tit v khng gian tnnam ngoi ph m vi ca cun sch ny, ngi dc c the tm hieu t i cc ti lieu[1] hoac [2]. Nu khng c lu dac biet th tt c cc chng trnh v d trongcun sch ny du s dng khai bo s dng khng gian tn std nhtrn.Lenh thhai nhy ra khi hm v tr v gi tr 0 lm kt qu ca hm. Dy lbc c tnh cht quy trnh do C++ quy dnh hm main cn tr l i mot gi tr ls nguyn cho bit tr ng thi kt thc ca chng trnh. Gi tr 0 dc tr v cui hm main c nghia rang hm d kt thc thnh cng.De rang tt cc lenh nam bn trong cap ngoac {} ca thn hm du dc lidu dng mot m c. Vi C++, viec ny khng c nghia v c php. Tuy nhin,n l i gip cho cu trc chng trnh de thy hn v chng trnh de hieu hndi vi ngi lap trnh. Dy l mot trong cc diem quan trng trong cc quy cv phong cch lap trnh. Ph lc A se hng dan chi tit hn v cc quy cny. 18. Dn dy ta c the sa chng trnh trong Hnh 1.3 de in ra li cho Helloworld! theo cc cch khc nhau. Chang h n, ta c the in ra cng mot noi dungnh cu nhng bang hai lenh gi cout:coutHello ; coutworld!;hoac in ra li cho trn nhiu dng bang cch chn vo gi a xu k t$ cc k t$xung dng (k t$ dac biet dc k hieu l n):coutHello n world!n;Ph lc B hng dan v cch s dng bo cng c GNU C++ de dch v ch ychng trnh.18 19. 19Bi tap1. Trnh by cc bc chnh de gii quyt mot bi ton. Phn tch noi dungv dac diem chnh ca t'ng bc.2. T i sao cn phi c chng trnh dch, s$ khc biet gi a trnh bin dchv trnh thng dch? Liet k cc ngn nglap trnh cn c trnh bin dch,v cc ngn nglap trnh cn c trnh thng dch.3. S$ khc biet, u diem v nhc diem gi a ngn nglap trnh bac cao vngn nglap trnh bac thp? Nu mot v d m nn s dng ngn nglaptrnh bac thp de gii quyt, v mot v d m nn s dng ngn nglaptrnh bac cao de gii quyt.4. Trnh by cc ngn nglap trnh bac thp m b n bit, nu ra cc dacdiem noi bat ca t'ng ngn nglap trnh d.5. Trnh by cc ngn nglap trnh bac cao m b n bit, nu ra cc dacdiem noi bat ca t'ng ngn nglap trnh d.6. Trnh by s$ khc biet, u diem v nhc diem gi a ngn nglap trnh Cv C++.7. Trnh by cc lo i loi thng gap khi lap trnh. Phn tch dac diem cat'ng lo i loi trn.8. Trnh by 5 v d v loi logic m b n c the gap trong lap trnh.9. Lm quen vi mi trng lap trnh Dev-C++. Liet k ra cc ch c nangchnh ca mi trng Dev-C++. Tm hieu v so snh cc mi trng laptrnh khc cho C v C++.10. Vit mot chng trnh C++ de hien ra mn hnh tn ca b n. S dngbin dch dng lenh bang bo cng c GNU C++ de dch v ch y chngtrnh. 20. Chng 2. Bin, kieu d lieu v cc php tonDa s chng trnh khng ch# c nh ng ho t dong dn gin nh l hien th motxu k t$ ra mn hnh m cn phi thao tc vi dlieu. Trong mot chng trnh,bin l tn ca mot vng bo nh dc dng de lu dlieu trong khi chngtrnh ch y. Dlieu lu trong mot bin dc gi l gi tr ca bin d. Chng tac the truy nhap, gn hay thay doi gi tr ca cc bin, khi bin dc gn motgi tr mi, gi tr cu se b ghi d ln.20Khai bo bin ton cctotalApples kieu intKhai bo bin da phngnumberOfBasketssau d gn gi tr 5 cho n#include iostreamusing namespace std;int total(pples;int main(){int number)f*askets + ,;int apple-er*asket;cout.nter number apples per baskets: ;cinapple-er*asket;total(pples + number)f*askets / apple-er*asket;cout0umber of apples is total(pples;return 1;}Gn gi tr nhap t- bn phmcho bin applePerBasketHnh 2.1: Khai bo v s d 21. ng bin.Hnh 2.1 minh ha viec khai bo v s dng bin. Trong d, cc dngint total(pples;int number)f*askets + ,;int apple-er*asket;l cc dng khai bo bin. total(pples, number)f*askets, vapple-er*asket l cc tn bin. Cc khai bo trn c nghia rang total(pples,number)f*askets, v apple-er*asket l dlieu thuoc kieu int, nghia l ccbin ny se gigi tr kieu nguyn. Dng khai bo number)f*askets c motdiem khc vi hai dng cn l i, d l number)f*askets dc khi t o vi gitr 5. C++ quy dnh rang tt c cc bin du phi dc khai bo vi mot ci tn 22. v mot kieu dlieu trc khi bin d dc s dng. Cc bin thuoc cng motkieu c the dc khai bo trn cng mot dng, cch nhau bi mot du phy.Chang h n, c the thay hai dng khai bo cho number)f*askets, vapple-er*asket bang:int number)f*askets + ,, apple-er*asket;Chng trnh trong Hnh 2.1 yu cu ngi dng nhap s to trong moi gi(apple-er*asket), tnh tong s to (total(pples) vi dkien d bit l s gito (number)f*asket), ri in ra mn hnh. C the, dngcout.nter number apples per baskets: ;in ra mn hnh xu k t$ .nter number apples per baskets: . D l li minhap dlieu, l hng dan dnh cho ngi s dng chng trnh.Dng tip theo21cinapple-er*asket;dc dlieu dc ngi dng nhap vo t' du vo chuan thng l t' bnphm. Khi ch y lenh ny, chng trnh se di ngi dng nhap vo mot gi trcho bin apple-er*asket. Ngi dng dpng bang cch g vo mot snguyn di d ng chuoi cc chs ri nhn phm Enter de gi cc chs dcho my tnh. Dn lt n, my tnh bin doi chuoi cc chs n nhan dcthnh mot gi tr kieu nguyn ri chp gi tr ny vo bin apple-er*asket.Tngng vi cout l di tng qun l dng dlieu ra chuan ca th vienC++, cin l di tng qun l dng dlieu vo chuan, thng l t' bn phm.Tip theo l lenh gntotal(pples + number)f*askets / apple-er*asket;Lenh ny tnh tch gi tr ca hai bin number)f*askets v apple-er*asketri gn kt qu cho bin total(pples, trong d / l k hieu ca php nhn v +l k hieu ca php gn.Lenh in kt qu ra mn hnhcout0umber of apples is total(pples;hien th lin tip hai thnh phn: xu k t$ 0umber of apples isv gi trca bin total(pples. 23. Ngoi viec in gi tr ca mot bin, C++ cn cho php ta in kt qu ca mot bieuth c. Do d, ta c mot l$a chn khc l gop cng viec ca hai lenh trn (tnhtch hai bin v in tch ra mn hnh) vo mot lenh:cout0umber of apples is number)f*askets /apple-er*asket;Khi d, bin total(pples vn dc dng de lu trkt qu ca php tnh trnn khng cn cn thit, ta c the xa b dng khai bo bin ny. De l lenhtrn di v chim c sang dng thhai. C++ cho php mot lenh nam trn nhiudng, du chm phy cui moi lenh se gip trnh bin dch hieu du l kt thcca lenh.2.1. Kieu d lieuMoi bin phi dc khai bo de lu gigi tr thuoc mot kieu dlieu no d.Ngn nglap trnh bac cao thng c hai lo i kieu dlieu: cc kieu dlieu cbn v cc kieu dlieu dan xut.2.1.1. Kieu d lieu c bnKieu dlieu c bn l kieu dlieu do ngn nglap trnh dnh nghia san. V dnh cc kieu s nguyn char, int, long int. Bin thuoc kieu nguyn dcdng de lu cc s c gi tr nguyn. Di vi kieu c bn chng ta thng quantm dn kch thc bo nh ca kieu dlieu, gii h n gi tr m kieu dlieu dc the lu gi . Di vi cc kieu du chm dong (floating-point) de lu cc gitr thuoc kieu s th$c, chng ta cn quan tm dn do chnh xc ca kieu dlieud. Ti lieu chuan C++ khng quy dnh chnh xc s byte cn dng de lu ccbin thuoc cc kieu dlieu c bn trong bo nh m ch# quy dnh yu cu vkch thc ca kieu dlieu ny so vi kieu dlieu kia. Cc kieu nguyn c du,signed char, short int, int v long int, phi c kch thc tang dn. Moi kieunguyn c du tngng vi mot kieu nguyn khng du vi cng kch thc.Cc kieu nguyn khng du khng the bieu dien gi tr m nhng c the bieudien s gi tr dng nhiu gp di kieu c du tngng. Tng t$, cc kieuchm dong, float, double v long double cung phi c kch thc tang dn.Bng 2.1 liet k mot s kieu dlieu c bn ca C++ vi kch thc dc nhiubn ci dat C++ s dng.22 24. 23Kieu M tKch thcthng dng(byte)Phm vi (tng ng vi kch thc)chark t$ /s nguyn nh1cc k t$ ASCIIsigned char: -128 2 127, hoacunsighed char: 0 2 255bool gi tr Boolean 1 true hoac falseshort s nguyn 2signed short: -327672 32767unsigned short: 02 65536int s nguyn ln 4signed int: 2147483648 2 2147483647unsigned int: 0 2 -4294967296longs nguynrt ln4signed long: 2147483648 2 2147483647unsigned long: 0 2 -4294967296float s th$c 4 +/- 1.4023x10-45 2 3.4028x10+38doubles th$c vido chnh xc cao8 +/- 4.9406x10-324 2 1.7977x10308longdoubles th$c vido chnh xcrt cao8 +/- 4.9406x10-324 2 1.7977x10308Bng 2.1: Mot s kieu d lieu c bn trong C++.Mot s lu : Kch thc v ph m vi ca cc kieu dlieu c bn ph thuoc vo he thngm chng trnh dc bin dch t i d. Tuy nhin,tt c cc he thng, kieuchar bao gi cung c kch thc l 1 byte; cc kieu dlieu char, short,int, long phi c kch thc tang dn; cn cc kieu float, double, longdouble phi c do chnh xc cao dn. Kieu char dng de lu cc k t$ dn (c m nh hn 256), chang h n nhchci La-tinh, chs, hay cc k hieu. Trong C++, mot k t$ dn dcdng trong cap nhy dn, v d '('. De lu cc k t$ c m ln hn 255, tac the s dng kieu wchar_t. 25. Kieu dlieu bool ch# c hai gi tr true v false. Ta c the dng binthuoc kieu ny de lu cu tr li ca nh ng cu hi dng/sai chang h n nhC phi index ln hn 100? hay lu cc tr ng thi Ta d tm thy gi trm cha?. Cc gi tr true v false trong C++ th$c ra ch# l 0 v 1.2.1.2. Kieu d lieu dan xutKieu dlieu dan xut l kieu dlieu dc xy d$ng t' cc kieu dlieu c bnbang cc ton t nh * (con tr),(tham chiu), [] (mng), () hm, hoac dcdnh nghia bang c ch struct hay class. Cc kieu dlieu dc dnh nghiabang c ch struct hay class cn dc gi l cc kieu dlieu c cu trc hoackieu dlieu tr'u tng. Chi tit v cc kieu dlieu dan xut se dc trnh bydn dn trong cc chng sau.2.2. Khai bo v s dng binDe bat du s dng mot bin, chng ta phi tin hnh hai bc: dat cho binmot ci tn hp le v khai bo bin.2.2.1. Dnh danh v cch dat tn binDnh danh (identifier) l thuat ngtrong ngn nglap trnh khi ni dn tn (tnbin, tn hm, tn lp). Dnh danh l mot chuoi k t$ (bao gm cc chcia..z, A..Z, chs 0..9, du g ch chn _) vit lin nhau. Dnh danh khng dcbat du bang chs v khng dc trng vi cc t kha (nh ng t' mang nghia dac biet) ca ngn nglap trnh. Lu , C++ phn biet chci hoa v ch ci thng.Cch dat tn bin tun th theo cch dat tn dnh danh. V d v cc tn bin: _sinhvien, sinhvien_11, sinhVien_11 l cc tn bin hp le khc nhau 11sinhvien, sinhvin, sinhvien l cc tn bin khng hp leTn bin nn de dc, v gi nh dn cng dng ca bin hay kieu dlieu mbin se lu tr . V d, nu cn dng mot bin de lu s lng qu to, ta c thedat tn l total(pples. Khng nn s dng cc tn bin ch# gm mot k t$ vkhng c nghia nh a hay b.24 26. 2.2.2. Khai bo binCc ngn nglap trnh dnh kieu m nh, trong d c C++, yu cu moi bintrc khi dng phi dc khai bo v bin phi thuoc v mot kieu dlieu nod. C the chia cc bin thnh hai lo i: cc bin dc khai bongoi tt c cc chng trnh con l bin ton cc,c hieu l$c trn ton bo chng trnh, chang h n bin total(pples trongHnh 2.1. cc bin dc khai bo t i mot chng trnh con l bin da phng, chieu l$cbn trong chng trnh con d, chang h n number)f*askets vapple-er*asket trong Hnh 2.1 l cc bin da phng ca hm main v ch#c hieu l$cbn trong hm main.Chng 4 se ni ki hn v hai lo i bin trn.Trong C++, bin c the dc khai bo gn nh bt cdu trong chng trnh,mien l trc dng du tin s dng dn bin d (xem Hnh 2.1).Mot bin da phng d dc khai bo nhng cha dc gn mot gi tr nodc gi l bin cha dc khi t o. Gi tr ca bin cha dc khi t o thngl khng xc dnh. De trnh tnh tr ng ny, ta c the khi t o gi tr ca cc binbang cch gn gi tr ngay t i lenh khai bo bin.2.3. HangHang l mot lo i bin dac biet m gi tr ca n dc xc dnh t i thi diemkhai bo v khng dc thay doi trong sut chng trnh. De khai bo mothang, ta thm t' kha const vo pha trc lenh khai bo bin. V d:const float -I + 3.141,926,3,;const float SCR..0_WIDTH + 317.24;Hang dc dng de dat tn cho cc gi tr khng thay doi dc dng trongchng trnh, chang h n nh do rong mn hnh nh trong v d trn. Cng dngca hang l moi khi cn thay doi gi tr d, ta ch# cn sa lenh khai bo hangthay v tm v sa gi tr tngng t i tt c cc v tr dng dn n. Ngoi ra,mot ci tn c nghia dat cho mot gi tr dc dng di dng l i se gip chochng trnh de dc v de hieu hn.25 27. 2.4. Cc php ton c bn2.4.1. Php gnPhp gn l cch gan mot gi tr cho mot bin hoac thay doi gi tr ca motbin. Lenh gn trong C++ l:26bin = bieu thc;trong d du bang (=) dc gi l du gn hay ton t gn. Lu , du bangtrong C++ khng dng de so snh gi tr nh trong mot s ngn nglap trnhkhc. V dsymbol + '(';l php gn gi tr A cho bin symbol, khng phi l bieu th c so snh xemgi tr ca symbol c phi l 'A' hay khng.Cng viec ca php gn l tnh gi tr ca bieu th c bn phi du gn ri lu gitr d vo trong bin nam bn tri du gn.Bieu th c c the l mot s, mot bin, hoac mot bieu th c ph c t p. Lu rangmot bin c the xut hienc hai bn ca du gn. V d lenh sau tang gi trca bin apples thm 2.apples + apples + 2;Diem dac biet ca C++ l bn thn php gn cung chnh l mot bieu th c vigi tr tr v l kt qu ca php gn. V d, php gn x = 3 l mot bieu th c cgi tr bang 3.2.4.2. Cc php ton s hcC++ ho tr nam php ton s hc sau: + (cong), - (tr'), / (nhn), / (chia), %(modulo ly phn d ca php chia). Php chia dc th$c hien cho hai gi trkieu nguyn se cho kt qu l thng nguyn. V d bieu th c 4 / 3 cho kt qubang 1, cn 3 / 5 cho kt qu bang 0.Mot s php gn km theo bieu th c xut hien nhiu ln trong mot chngtrnh, v vay C++ cho php vit cc php gn bieu th c d mot cch gan ngnhn, s dng cc php gn ph c hp (++, -+, /+, /+, %+, +, +, +, ^+, |+).Cch s dng php gn ph c hp ++ nh sau:bin += bieu thc; tng dng bin = bin + bieu thc; 28. 27V d:apples ++ 2; tng dng apples + apples + 2;Cc php gn ph c hp khc dc s dng tng t$.C++ cn cung cp cc php ton ++ (hay --) de tang (gim) gi tr ca bin lnmot dn v. V d:apples++ hay ++apple c tc dng tang apples thm 1 dn vapples-- hay --apple c tc dng gim apples di 1 dn vKhc biet gi a viec vit php tang/gimtrc bin (tang/gim trc) v vitphp tang/gimsau bin (tang/gim sau) l thi diem th$c hien phptang/gim, the hiengi tr ca bieu th c. Php tang/gim trc dc th$c hientrc khi bieu th c dc tnh gi tr, cn php tang/gim sau dc th$c hien saukhi bieu th c dc tnh gi tr. V d, nu apples vn c gi tr 1 th cc bieuth c ++apples hay apples++ du c hieung l apples dc tang t' 1 ln 2.Tuy nhin, ++apples l bieu th c c gi tr bang 2 (tang apples trc tnh gitr), trong khi apples++ l bieu th c c gi tr bang 1 (tang apples sau khi tnhgi tr bieu th c). Nu ta ch# quan tm dn hieung tang hay gim ca cc php++ hay th viec php ton dc dat trc hay dat sau khng quan trng. Dcung l cch dng pho bin nht ca cc php ton ny.Lu , cn ht s c can than khi s dng cc php tang v gim trong cc bieuth c. Viec ny khng dc khuyn khch v tuy n c the tit kiem dc mothai dng lenh nhng l i lm gim tnh trong sng ca chng trnh.2.4.3. Cc php ton quan heCc php ton quan he dc s dng de so snh gi tr hai bieu th c. Cc phpton ny cho kt qu bang 0 nu dng v khc 0 nu sai. Ta s dng gi tr camot bieu th c quan he nh l mot gi tr thuoc kieu bool. V d:bool enough(pples + (total(pples11);Cc php ton quan he trong ngn ngC++ dc liet k trong Bng 2.2. 29. K hieu ton hc Ton t ca C++ V d nghiaxy x ln hn yxy x nh hn y + x + y x ln hn hoac bang y + x + y x nh hn hoac bang y+ ++ x ++ y x bang y !+ x !+ y x khc yBng 2.2: Cc php ton quan he.Ch trnh nhm lan gi a php gn gi tr + v php so snh bang ++.Nh ng nhm lan gi a cc php ton kieu ny thng dan dn nh ng loi lgicrt kh pht hien.2.4.4. Cc php ton l-gicTon t C++ nghia V d nghia ca v d and xy Cho gi tr dng khi c x v y dng,ngc l i cho gi tr sai.|| or x || y Cho gi tr dng khi hoac x dng hoac ydng, ngc l i cho gi tr sai28! not !xPh dnh ca x. Cho gi tr dng khi x sai;cho gi tr sai khi x dngBng 2.3: Cc php ton l-gic.Cc php ton l-gic dnh cho cc ton h ng l cc bieu th c quan he hoac ccgi tr bool. Kt qu ca bieu th c lgic l gi tr bool.V d:bool enough(pples + (apples3)(apples11);c kt qu l bin enough(pples nhan gi tr l cu tr li ca cu hi binapples c gi tr ln hn 3 v nh hn 10 hay khng?.2.4.5. Do u tin ca cc php tonDi dy l m c do u tin ca mot s php ton thng gap. Tht$ ca chngnh sau: 30. Cc php ton nam trong cap du ngoac ( ) c do u tin ln nht. V d:292 * (1 + 3) cho kt qu bang 8Cc php ton /, /, +, -. Trong d /, / c do u tin nh nhau v cao hn +, -.V d:2 * 1 + 3 cho kt qu l 5Cc php ton so snh , , =, =. V d:3 + 42 + 6 cho kt qu dngCc php ton l-gic c ththt$ u tin nh sau: !, , ||. V d:1 || 00 tng dng vi 1 || (00) v cho kt qu 12.4.6. Tng thch gia cc kieuV c bn, gi tr gn cho mot bin nn cng kieu vi bin d. Khi mot bindc gn mot gi tr khng dng vi kieu dlieu ca bin d, th gi tr d sedc chuyen doi sang kieu ca bin (type conversion). Mot vi trng hpthng gap trong viec chuyen kieu l:Chuyen doi gi a s th$c v s nguynint x + 2.,; // x nhan gi tr 2double y + 3.,; // y nhan gi tr 3,,x + y; // x nhan gi tr 3Php chia ca s nguynint divisor + 4;int dividend + 6;int quo + dividend/divisor; // quo nhan gi tr 1.Lu : Php chia mot s nguyn cho mot s nguyn se cho kt qu l mot snguyn. Mun kt qu l mot s th$c th t nht mot trong hai s phi l s th$c. 31. Bi tap1. Vit chng trnh tnh dien tch ca mot hnh trn. Bn knh l mot s th$cv dc nhap vo t' bn phm. Dien tch hnh trn dc hien ra mn hnh.2. Nhap t' bn phm hai s nguyn l chiu cao ca Peter v Essen. Hy tnhxem Peter cao gp bao nhiu ln Essen. V d, nu chiu cao ca Peter l180, chiu cao ca Essen l 150, th hien ra mn hnh dng chPeter is 1.2times as tall as Essen.3. Nhap t' bn phm mot s nguyn l nhiet do di d ng do F (Fahrenheit),hy hien ra mn hnh nhiet do di d ng do C (Celsius). Sinh vin t$ tmhieu cng th c chuyen doi.4. Vit mot chng trnh trong d c hai hang s WIDTH vi gi tr bang3.17654, v hang s LENGTH vi gi tr bang 10.03212. Tnh v hien ramn hnh dien tch ca hnh chnhat vi hai c nh l WIDTH v LENGTH.5. Nhap t' bn phm bn s nguyn a, b, c, d. Hy tnh v hien ra mn hnh gi30tr ca bieu th c:(a + b)(c + d) || (a - b)(c - d)6. Trnh by s$ khc biet gi a bin da phng v bin ton cc. Khi no thnn dng bin da phng, khi no th nn dng bin ton cc. Nu cc lu ykhi s dng bin ton cc.7. Vit mot chng trnh c ch a hai bin: bin da phng bonus v bin toncc score. Nhap gi tr hai bin t' bn phm, tnh v hien ra mn hnh tongca score v bonus.8. Hy tnh (khng dng chng trnh) gi tr ca cc bieu th c sau:a) 1 + 32 * 4 11b) 2 * 2 1 + 5 / 14 3c) (2 3 * 1)0 / 5 * 2 + 19. Tnh gi tr ca bin c t' do n chng trnh sau:a) int a = 3; int b = 2; int c = a/b;b) double a = 3.1; int b = 2; int c = a/b; 32. c) int a = 3; int b = 2; double c = a/b;10. Nhap hai s nguyn dng x v y t' bn phm, hy tnh:a) Thng ca php ton x chia cho yb) Tch ca php ton x nhn yc) Phn nguyn ca x chia cho yd) Phn d ca x chia cho y11. Nhap t' bn phm 3 s th$c x, y, v z. Hy tnha) Trung bnh cong ca ba s trnb) Hien ra mn hnh s 1 nu x l s ln nht trong ba s trn, ngc l i31hien ra mn hnh s 0.c) Hien ra mn hnh s 1 nu z l s nh trong ba s trn, ngc l i hien ramn hnh s 0.12. Tnh gi tr (khng dng chng trnh) ca bieu th c so snh di dy:a) x = 1; y = 2; x++yb) x = 2; y = 1; x--y++c) x = 2; y = 2; x++ == y 33. Chng 3. Cc cu trc diu khienNh d niphn trn, chng trnh my tnh m chng ta lap trnh t o ra th$ccht l mot tap cc lenh. Cc chng trnh dc vit bang ngn ngbac caothng ch a mot hm chnh (trong C++ l hm main), ni chng trnh bat duth$c hien cc lenh.Trong chng ny chng ta se tm hieu tht$ th$c hien cc lenh trong motchng trnh.3.1. Lung diu khienLung diu khien ca chng trnh l tht$ cc lenh (hnh dong) m chngtrnh th$c hien. Cho dn chng ny, chng ta mi gap tht$ dn gin: tht$tun t$, nghia l cc hnh dong dc th$c hien dng theo tht$ m chng dcvit trong chng trnh. V d, Hnh 3.1 l s d minh ha mot cu trc tun t$dien hnh, trong d hai hnh dong v cc mui tn bieu dien tht$ th$c hien cchnh dong.Hnh 3.1: S d chuyen trng thi ca mot don lenh c th t thc thi tun t.Trong chng ny, ta se lm quen vi cc lung diu khien ph c t p hn. Huht cc ngn nglap trnh, trong d c C++, cung cp hai lo i lenh de kiem sotlung diu khien: lenh re nhnh (branching) chn mot hnh dong t' danh sch gm nhiu32hnh dong. lenh lap (loop) th$c hien lap di lap l i mot hnh dong cho dn khi motdiu kien d'ng no d dc tha mn. 34. Hai lo i lenh d t o thnh cc cu trc diu khien (control structure) bn trongchng trnh.3.2. Cc cu trc re nhnh3.2.1. Lenh if-elseLenh if-else (hay gi tat l lenh if) cho php re nhnh bang cch l$a chnth$c hien mot trong hai hnh dong. V d, trong mot chng trnh xp lo i diemthi, nu diem ca sinh vin nh hn 60, sinh vin d dc coi l trt, nukhng th dc coi l do.[score60] [score = 60]in Failed in PassedHnh 3.2: S d mot lenh if.Thuat ton nh ny dc the hien bang s d trong Hnh 3.2. Trong d hnh qutrm bieu dien diem re nhnh, ni chng trnh da ra quyt dnh xem nn retheo hng no. T' diem re nhnh c cc mui tn di ra, moi mui tn km theomot diu kien. Lung diu khien se di theo mui tn no m diu kien ca ndc tha mn.Cung c the trnh by thuat ton bang m gi nh sau:33If students score is less than 60print Failedelseprint PassedThe hien thuat ton trn bang mot lenh if-else ca C++, ta c do n m: 35. 34if (score61)coutFailed;elsecout-assed;Khi chng trnh ch y mot lenh if-else, du tin n kiem tra bieu th c diukien nam trong cap ngoac dn sau t' kha if. Nu bieu th c c gi tr bangtrue th lenh nam sau t' kha if se dc th$c hien. Ngc l i, lenh nam sauelse se dc th$c hien. Ch l bieu th c diu kien phi dc dat trong motcap ngoac dn.#include iostreamusing namespace std;int main(){int score;cout.nter your score: ;cinscore; //get the score from the keyboardif (score61)coutSorry. NouOve failed the course.n;elsecoutCongratulations! NouOve passed the course.n;return 1;} 36. . F 37. $1@ 38. FN 39. O6 40. . F 41. $E1 42. N 43. O6 44. Hnh 3.3: V d 45. v cu trc -.Chng trnh v d trong Hnh 3.3 yu cu ngi dng nhap diem ri in ra ccthng bo khc nhau ty theo diem s d do hoac trt. De rang cc lenh nambn trong khi - cn dc li du dng mot m c de chng trnh trngsng sa de dc. 46. Trong cu trc re nhnh -, ta c the b phnnu khng munchng trnh th$c hien hnh dong no nu diu kien khng tha mn. Changh n, nu mun thm mot li khen dac biet cho diem s xut sac t' 90 tr ln, tac the thm lenhsau vo trong chng trnh t i Hnh 3.3.35( 47. =91) 48. .x;Ta c the dng cc cu trc - lng nhau de t o ra diu kien re nhnhph c t p. Hnh 3.3 l mot v d dn gin vi ch# hai trng hp v mot lenh .Xt mot v d ph c t p hn: cho trc diem s (lu t i bin 49. kieu ),xc dnh xp lo i hc l$c A, B, C, D, F ty theo diem d. Quy tac xp lo i l:nu diem t' 90 tr ln th d t lo i A, diem t' 80 ti di 90 d t lo i B, v.v.. T ido n m xt cc trng hp ca xp lo i diem, ta c the dng cu trc -lng nhau nh sau:( 50. =91) ='A';( 51. =81) ='B';( 52. =E1) ='';( 53. =61) ='D'; ='F';De rang moi khi lenh - sau nam trong phnca khi lenh - lin trc. Nu 54. khng di 90, diu kien ca c bn lenh -du cho kt qu. Tuy nhin, do diu kien ca lenh - ngoi cngtha mn, ch# c lenh gn du tin = 'A' dc th$c thi, cn ton bophnca lenh - ngoi cng, bao gm ba lenh - cn l i, bb qua.Vi cc khi lenh - lng nhau nhtrn, khi phi li du dng qu xav bn phi, dng cn l i qu ngan khin moi lenh c the phi tri trn vi dng,dan dn viec chng trnh kh dc. Do d, da s lap trnh vin C++ thng 55. dng kieu li du dng nh di dy. (Hai cch li du dng ny l nh nhaudi vi trnh bin dch v n b qua cc k t$ trang.)36( 56. =91) ='A';( 57. =81) ='B';( 58. =E1) ='';( 59. =61) ='D'; ='F';Hnh 3.4 l chng trnh hon ch#nh th$c hien nhiem v yu cu ngi dngnhap diem s sau d tnh v in ra xp lo i hc l$c tngng. 60. 37 61. ;() 62. ; ; 63. . F 64. $; 65. ;( 66. =91) ='A';( 67. =81) ='B';( 68. =E1) ='';( 69. =61) ='D'; ='F'; 70. Q = ;1; Hnh 3.4: Cu trc if-else lng nhau.Mot diu cn dac biet lu l nu mun th$c hien nhiu hn mot lenh trongmoi trng hp ca lenh -, ta cn dng cap ngoac {} bc tap lenh dthnh mot khi chng trnh. V d, phin bn ph c t p hn ca lenhtrongHnh 3.3: 71. ( 72. 61) 73. F; 74. N 75. 6 76. k 77. ; 78. ; 79. N 80. ; De trnh loi qun cap ngoac, c mot li khuyn l tap thi quen dng cap ngoacngay c khi khi lenh ch# bao gm dng mot lenh. Chang h n, xt khi lenhlng nhau di dy:( Q =='A')( Q =='A') 81. N 82. 6 83. w 84. A'; 85. N 86. ' 6 A 87. ;Thng bo trong phndng ra cn dc th$c thi khi xp h ng ca mnTon ( Q ) khng d t A. Tuy nhin, trong th$c t, trnh bin dch l ihieu rang phnd cng cap vi lenhthhai lenhgn nht, nghial:( Q =='A')( Q =='A') 88. N 89. 6 90. w 91. A'; 92. N 93. ' 6 A 94. ;Cc loi lgic d ng ny thng kh pht hien. Di vi C++, viec li du dngch# nham mc dch de lap trnh vin de dc chng trnh chkhng c nghiavi trnh bin dch. Cch gii quyt l s dng cap ngoac {} de ch# r cho trnhbin dch rang lenhthhai nam trong lenhngoi cng v rang phn cng cap vi lenhngoi cng d:38 95. ( Q =='A')( Q =='A') 96. N 97. 6 98. w 99. A'; 100. N 101. ' 6 A 102. ;3.2.2. Lenh swi Khi chng ta mun vit mot cu trc re nhnh c nhiu l$a chn, ta c the sdng nhiu lenh - lng nhau. Tuy nhin, trong trng hp viec l$a chnre nhnh ph thuoc vo gi tr (kieu s nguyn hoac k t$) ca mot bin haybieu th c, ta c the s dng cu trc wde chng trnh de hieu hn. Lenhwdien hnh c d ng nh sau:w (bieu_thc)hang_1$tap_lenh_1;b k;hang_2$tap_lenh_2;b k;$tap_lenh_mac_d 103. nh; Khi lenh wdc ch y, bieu_thc dc tnh gi tr v so snh vi hang_1.Nu bang nhau, chuoi lenh ke t' tap_lenh_1 dc th$c thi cho dn khi gap lenhb k du tin, dn dy chng trnh se nhy ti diem kt thc cu trc w .Nu bieu_thc khng c gi tr bang hang_1, n se dc so snh vi hang_2,nu bang nhau, chng trnh se th$c thi chuoi lenh ke t' tap_lenh_2 ti khi gaplenh b k du tin th nhy ti cui cu trc w . Quy trnh ctip diennh vay. Cui cng, nu bieu_thc c gi tr khc vi tt c cc gi tr d dcliet k (hang_1, hang_2, ...), chng trnh se th$c thi tap_lenh_mac_d 104. nh namsau nhn $ nu nh c nhn ny (khng bat buoc).V d, lenh sau so snh gi tr ca bin vi cc hang k t$ 'A', 'B', 'C' vin ra cc thng bo khc nhau cho t'ng trng hp.39 105. w ( )'A'$ 106. Q =A;b k;'B'$ 107. Q =B;b k;''$ 108. Q =;b k;$ 109. Q 110. A,B, 111. ; N tng dng vi khi lenh - lng nhau sau:( =='A') 112. Q =A;( =='B') 113. Q =B;( =='') 114. Q =; 115. Q 116. A,B, 117. ; Lu , cc nhn trong cu trc wphi l hang chkhng the l binhay bieu th c. Nu cn so snh vi bin hay bieu th c, ta nn dng khi lenh- lng nhau.Vn d dac biet ca cu trc wl cc lenh b k. Nu ta khng t$ gan motlenh b k vo cui chuoi lenh cn th$c hien cho moi trng hp, chng trnhse ch y tip chuoi lenh ca trng hp sau chkhng t$ dong nhy ti cui cutrc w . V d, do n chng trnh sau se ch y lenh in thnht nu gradenhan mot trong ba gi tr 'A', 'B', 'C' v ch y lenh in thhai trong trng hpcn l i:40 118. w ( )'A'$'B'$''$ 119. Q A,B 120. ;b k;$ 121. Q 122. A,B 123. ; Chng trnh trong Hnh 3.5 l mot v d hon ch#nh s dng cu trc w de in ra cc thng bo khc nhau ty theo xp lo i hc l$c ( ) m ngidng nhap t' bn phm. Trong d, 'A' kt thc vi b k sau ch# motlenh, cn'B' ch y tip qua '', 'D' ri mi gap b k v thotkhi lenh w . Nhndc dng de x l trng hp bin grade gi gi tr khng hp le di vi xp lo i hc l$c. Trong nhiu chng trnh, phn thng dc dng de x l cc trng hp khng mong di, changh n nh de bat loi cc k hieu hc l$c khng hp le m ngi dng c the nhapsai trong Hnh 3.5.41 124. 42 125. ;() ; 126. . F 127. $; ;w ( )'A'$ 128. .x';b k;'B'$ 129. Q ';''$'D'$ 130. B 131. ';b k;'F'$ 132. @ 133. F,F 134. ';b k;$ 135. . 136. :6 ; 1;} 137. . F 138. $A.x. F 139. $BQ B 140. . F 141. $DB 142. . F 143. $F@ 144. F,F 145. Hnh 3.5: V d 146. s d 147. ng cu trc switch. 148. 3.3. Cc cu trc lapCc chng trnh thng cn phi lap di lap l i mot ho t dong no d. V d,mot chng trnh xp lo i hc l$c se ch a cc lenh re nhnh de gn xp lo i A,B, C cho mot sinh vin ty theo diem s ca sinh vin ny. De xp lo i choc mot lp, chng trnh se phi lap l i thao tc d cho t'ng sinh vin trong lp.Phn chng trnh lap di lap l i mot lenh hoac mot khi lenh dc gi l motvng lap. Lenh hoac khi lenh dc lap di lap l i dc gi l thn ca vng lap.Cu trc lap cho php lap trnh vin ch# th cho chng trnh lap di lap l i motho t dong trong khi mot diu kien no d van dc tha mn.Khi thit k mot vng lap, ta cn xc dnh thn vng lap th$c hien hnh dong g.Ngoi ra, ta cn cn mot c ch de quyt dnh khi no vng lap se kt thc.Mc ny se gii thieu v cc lenh lap m C++ cung cp.3.3.1. Vng wileVngwilelap di lap l i chuoi hnh dong, gi l thn vng lap, nu nh diukien lap van cn dc tha mn. C php ca vng lap wnh sau:43w (diu_kien_lap)thn_vng_lapCu trc ny bat du bang t' kha w , tip theo l diu kien lap dat trongmot cap ngoac dn, cui cng l thn vng lap. Thn vng lap hay ch a nhiuhn mot lenh v khi d th phi dc gi trong mot cap ngoac {}.Khi th$c thi mot cu trc w , du tin chng trnh kiem tra gi tr ca bieuth c diu kien, nu bieu th c cho gi tr(th$c cht l bang 0) th nhydn diem kt thc lenh w , cn nu diu kien lap c gi tr (th$c cht lmot gi tr no d khc 0) th tin hnh th$c hien tap lenh trong thn vng lapri quay tr l i kiem tra diu kien lap, nu khng tha mn th kt thc, nu thamn th l i th$c thi thn vng lap ri quay l i... Tap lenhthn vng lap c thelm thay doi gi tr ca bieu th c diu kien t' sang(th$c cht l t'khc 0 sang bang 0) de d'ng vng lap.V d, xt mot chng trnh c nhiem v dm t' 1 dn mot ng4ng bchotrc. Do n m dm t' 1 dn bc the dc vit nh sau: 149. =1;w ( 150. =b ) 151. ,; 152. ++; Gi s bin bc gi tr bang 2, do n m trn ho t dong nh sau: Du tin,bin 153. dc khi t o bang 1. Vng while bat du bang viec kiem tra diukien ( 154. =b ), nghia l 1 5 2, diu kien tha mn. Thn vng lapdc th$c thi ln thnht: gi tr 1 ca 155. dc in ra mn hnh km theodu phy, sau d 156. dc tang ln 2. Vng lap quay v diem xut pht: kiemtra diu kien lap, gi l 2 5 2, van tha mn. Thn vng lap dc ch y ln th hai (in gi tr 2 ca 157. v tang 158. ln 3) trc khi quay l i diem xutpht ca vng lap. T i ln kiem tra diu kien lap ny, bieu th c 3 5 2 cho gi tr, vng lap kt thc do diu kien lap khng cn dc tha mn, chngtrnh ch y tiplenh nam sau cu trc wdang xt.Cu trc wtrong do n m trn c the dc bieu dien bang s d trong Hnh3.6. Trong s d, mui tn sau chuoi hnh dong in bin 159. v tang bin 160. quay ngc tr l i diem kiem tra diu kien re nhnh, chuoi hnh dong se lap l inu diu kien 161. =bvan tip tc dc tha mn. Cn nu 162. b , vng while di dn diem kt thc, trao diu khien cho lenh tip theotrong chuoi lenh ca chng trnh.Hnh 3.6: S d mot vng lap while.Chng trnh hon ch#nh trong Hnh 3.7 minh ha cch s dng vng lap w de in ra cc s nguyn (bin 163. ) t' 1 cho dn mot ng4ng gi tr do ngidng nhap vo t' bn phm (lu t i bin b ). Km theo l kt qu ca ccln ch y khc nhau vi cc gi tr khc nhau ca b . Dac biet, khi ngi44 164. dng nhap gi tr 0 cho b , thn vng wkhng ch y mot ln no, thehienviec khng mot s no dc in ra mn hnh. L do l v nu bbang0 th bieu th c 165. =bngay t' du vng wd c gi tr .45 166. ;() 167. ,b ; 168. . b $;b ; 169. =1;w ( 170. =b ) 171. ,; 172. ++; 173. B)))))R;1; 174. . b $1,,B)))))R. b $11,B)))))R. b $1B)))))RHnh 3.7: V d 175. v vng lap while.Vng lap v tanMot trong nh ng loi chng trnh thng gap l mot vng lap khng the ktthc, thn vng lap d dc lap di lap l i m khng bao gi ng'ng. Mot vnglap nh vay dc gi l vng lap v tan. Thng thng, mot vi lenh trongthn mot vng whay 176. -wse lm thay doi gi tr ca mot vi bin debieu th c diu kien cho gi tr(hoac 0), chang h n lenh tang bin dm 177. trong Hnh 3.7. Nu (cc) bin d khng dc thay doi gi tr mot cchthch hp hoac khi diu kien lap dc vit khng chnh xc (c the do thuat tonsai hay nhm lan khi vit m chng trnh), ta se nhan dc mot vng lap vtan do diu kien lap khng bao gi nhan gi tr .Hnh 3.8 minh ha mot vng lap v tan khi bin 178. tang dn dn v h nnhng lun nhan gi tr l+ v khng bao gi c the c gi tr bang 12 de kt thcvng lap w . Dy c the gi l loi l-gic. Nu do n chng trnh c nhiemv tnh tong cc s 1, 3, 5, 7, 9, 11 th diu kien lap nn dc sa thnh ( 179. 1) de chng trnh c the ch y dng.46 180. ;( ,/ 6ST); 181. =1;w ( 182. =1)=+ 183. ; 184. = 185. +; 1;}Hnh 3.8: V d 186. v vng lap v tan.3.3.2. Vng do-wileVng do-wile rt ging vi vng w , khc biet chnh lcho thn vnglap se dc th$c hien trc, sau d mi kiem tra diu kien lap, nu dng thquay l i ch y thn vng lap, nu sai th d'ng vng lap. Khc biet d c nghiarang thn ca vng 187. -wlun dc ch y t nht mot ln, trong khi thnvng wc the khng dc ch y ln no. 188. Cng th c ca vng 189. -wtong qut l:47 190. thn_vng_lapw (diu_kien_lap);Tng t$ nhvng w , thn_vng_lap ca vng 191. -wc the ch# gmmot lenh hoac thng gap hn l mot chuoi lenh dc bc trong mot cap ngoac{}. Lu du chm phy dat cui ton bo khi 192. -w .Cng th c tong qut ca vng 193. -w trn tng dng vi cng th c saunu dng vng w :thn_vng_lapw (diu_kien_lap)thn_vng_lapDe minh ha ho t dong ca hai cu trc lap wv 194. -w , ta so snh haido n m di dy: 195. =1;w ( 196. =b ) 197. ,; 198. ++; 199. =1; 200. ,; 201. ++; w ( 202. =b );Hai do n m ch# khc nhaucho mot bn tri dng vng w , bn phi dngvng 203. -w , cn l i, cc phn thn vng lap, diu kien, khi t o du ginghet nhau. Do n bn tri dc ly t' v d trong mc trc, n in ra cc s t' 1dn b . Do n m dng vng 204. -wbn phi cung th$c hien cng viecging het do n bn tri, ngo i tr' mot diem: khi bnh hn 1 th n vandm 1 trc khi d'ng vng lap thn vng lap ch y 01 ln trc khi kiem tradiu kien.De minh ha r hn, ta xem xt Hnh 3.9 l bn sa doi ca v d trong Hnh3.7 bang cch thay cu trc wbang cu trc 205. -wv ginguyn ccphn cn l i. Kt qu ch y chng trnh cho thy ho t dong ca chng trnhtrong Hnh 3.9 khng hon ton nh mong mun. C the, khi bdc nhapgi tr 0, chng trnh van dm mot ln trong khi dng ra khng nn dm lnno nh chng trnh nguyn gc trong Hnh 3.7. D l mot minh ha v s$khc biet gi a ho t dong ca hai cu trc wv 206. -w . Trong bi ton cthe ny, cu trc 207. -wkhng phi l l$a chn tt so vi cu trc w . 208. 48 209. ;() 210. ,b ; 211. . b $;b ; 212. =1;do 213. ,; 214. ++;wileo 215. e; 216. B)))))R;1; 217. . b $1,,B)))))R. b $11,B)))))R. b $11,B)))))R Hnh 3.9: V d 218. v vng lap do-wile.Tan dng dac diem ch y mot ln trc khi kiem tra diu kien, chng trnhtrong Hnh 3.10 lm nhiem v nhap t' bn phm mot chuoi s kt thc bang s0 v tnh tong ca chng. Cng viec lap di lap l i l nhap vo mot s () ricong dn gi tr ca s d vo tong (). Diu kien lap l s v'a nhap phikhc 0. R rng, khng cn v khng nn kiem tra diu kien lap trc khi lndu th$c hien thn vng lap. Trong trng hp ny, cu trc 219. -wl l$achn tt hn so vi cu trc w .Chng trnh trong Hnh 3.10 cn l mot v d v mot vng lap khng dng condm de diu khien vng lap m dng mot bin canh hay c tr ng thi de dnh 220. du diem kt thc. 6 dy, 0 l gi tr canh dnh du phn t dlieu cui cngm ngi dng nhap vo chng trnh.49 221. ;() 222. =1;; 223. . b (1 224. );; 225. = 226. +; w (=1); 227. D 228. b F 229. ;1; 230. . b (1 231. ). b (1 232. ). b (1 233. )1. b (1 234. )1D 235. b F 236. EHnh 3.10: Vng lap do-while dng bin canh.3.3.3. Vng foVng fo l cu trc ho tr viec vit cc vng lap m s ln lap dc kiem sotbang bin dm. Chang h n, do n m gi sau dy m t thuat ton in ra cc s t'1 dn b : 237. Lm nhiem v sau dy di vi moi gi tr 238. ca 239. t 1 dn b :50In 240. ra mn hnhDo n m gi d c the dc vit bang vng 241. ca C++ nh sau: 242. ( 243. =1; 244. =b ; 245. ++) 246. ,;Vi bc gi tr bang 3, do n trnh trn cho kt qu in ra mn hnh l:1,,3,Cu trc tong qut ca vng lap 247. l: 248. ( khi_to; diu_kien_lap; cap_nhat)thn_vng_lapTrong d, bieu th c khi_to thng khi t o con dm diu khien vng lap,diu_kien_lap xc dnh xem thn vng lap c nn ch y tip hay khng (diukien ny thng ch a ng4ng cui cng ca con dm), v bieu th c cap_nhatlm tang hay gim con dm. Cung tng t$ nhcc cu trc , w ..., nuthn_vng_lap c nhiu hn mot lenh th cn phi bc n trong mot cap ngoac{}. Lu rang cap ngoac dn bao quanh bo ba khi_to, diu_kien_lap,cap_nhat, cung nh hai du chm phy ngan cch ba thnh phn d, l ccthnh bat buoc ca c php cu trc 249. . Ba thnh phn d cung c the l bieuth c rong nu cn thit, nhng ke c khi d van phi c d hai du chm phy.Trong hu ht cc trng hp, cu trc 250. tong quttrn tng dng vicu trc lap wsau (ngo i le dc ni dn trong Mc 0):khi_to;w (diu_kien_lap)thn_vng_lapcap_nhat; Ta c the khai bo bin ngay trong phn khi_to ca vng 251. , chang h n divi bin con dm. Nhng cc bin dc khai bo t i d ch# c hieu l$cbntrong cu trc lap (chi tit v ph m vi ca bin se dc ni dn trong Mc 4.4).V d: 252. ( 253. =1; 254. =b ; 255. ++) 256. ,;Hnh 3.11 minh ha cch s dng vng lap 257. de tnh diem trung bnh t' diemca 10 mn hc (s mn hc lu trong bin bj). Ngi dng se dcyu cu nhap t' bn phm diem s ca 10 mn hc trong khi chng trnh congdn tong ca 10 diem s ny. Cng viec m chng trnh cn lap di lap l i 10ln l: nhap diem ca mot mn hc, cong dn diem d vo tong diem. Du tinvng 258. se tin hnh bc khi t o vi mc dch chnh l khi t o bin dm.Viec khi t o ch# dc tin hnh duy nht mot ln. Trong v d ny, bin 259. dc khai bo ngay t i vng 260. v khi t o gi tr bang 0. Tip theo vng 261. se tin hnh kiem tra diu kien lap 262. bj. Nu diu kien sai, vnglap 263. se kt thc. Nu diu kien dng, thn vng lap 264. se dc th$c hien(nhap mot gi tr kieu 265. ri cong dn vo bin ). Sau d l bc capnhat vi nhiem v tang bin dm thm 1. Kt qu l vng lap se ch y 10 ln vicc gi tr 266. bang 0, 1, .., 9 (khi 267. nhan gi tr 10 th diu kien lapkhng cn dng v vng lap kt thc).51 268. ;() 269. =1;bj=11; 270. . k 271. bjbj$; 272. ( 273. =1; 274. bj; 275. ++) 276. k; k;+= k; 277. A6k=bj;1; Hnh 3.11: V d 278. v vng lap for.Xt mot bi ton khc: Tnh li gi tin tit kiem. Mot ngi gi mot so titkiem k h n 12 thng vi s tin ban du l 1.000.000 VND, li sut 12% motnam. Gi s tin li hng nam khng dc rt ra m gop chung vo vn. S tin 279. nam trong so tit kiem sau moi nam (k h n 12 thng) dc tnh theo cng th csau:amount = principal * (1 + interest_rate)yeartrong d amount l s tin trong so tit kiem, principal l vn ban du,interest_rate l li xut hng nam, v year l s nam d gi. Hy tnh v in ra stin trong so tit kiem vo thi diem cui cc k 12 thng hng nam trong vng5 nam theo d ng52N A 280. 1 xxxx xxxxThuat ton cho bi ton d nh sau:Khi to cc bin amount, principal, interestRateIn d mc hai cot Year v Amount in deposit ra mn hnhVi year chy t 1 dn 5, thc hien cc cng viec sau:tnh amount sau year nam theo cng thcin amount theo cotChng trnh hon ch#nh cho trong Hnh 3.12. Trong d c mot s diem cnch .Thnht, vn d dnh d ng cc gi tr s khi in ra mn hnh. Dnh d ng macdnh khi in ra mn hnh l dnh d ng khoa hc, chang h n s 1120000he thapphn se c d ng 1.12e+006. Ta se nhn thy kt qu ny nu xa b dng saukhi chng trnh: 281. x 282. ();b F 283. Dng trn khng hien th g ra mn hnh m ch# dat cu hnh cho cc ln in tiptheo. C the, x gip quy dnh rang cc gi tr th$c in ra theo d ng c duchm thap phn (he do lng Anh-My, tng dng vi du phy thap phnca he mt), cn 284. () quy dnh rang cc gi tr th$c dc in ravi do chnh xc 2 chs sau du chm. D l hai trong nhiu php dnh d nglung dlieu (stream manipulator). Cc php dnh d ng ny nam trong th vieniomanip ca th vien chuan. Do d, de s dng chng, ta phi c dnh hngtin x l 285. du tep m ngun (xem phn du ca chngtrnh trong Hnh 3.12). 286. Thhai l s dng hm th vien ton hc de tnh luy th'a. C++ khng c phptnh luy th'a. Thay vo d, th vien cmath trong th vien chuan C++ cungcp hm 287. w. Hm 288. w( x, F) cho kt qu l gi tr ca php tnh xy. Dedng hm ny, ta cung cn c dnh hng tin x l dutep m ngun. 289. ++ bF53;() 290. b 291. ; 292. F 293. b =1111111; 294. b A=1; 295. N 'A 296. ;F 297. x 298. ();b F 299. 6F 300. (F =1;F =,;F ++) 301. = / 302. w(11+ A,F ); 303. F ' 304. ; 1; 305. N A 306. 1111111111,111131198111,E3,1936,1E63168 Hnh 3.12: Tnh tin tit kiem hng nam s d 307. ng vng for. 308. 3.4. Cc lenh eak v o 309. i 310. eNh d gii thieucc mc trc, cc vng lap w , 311. -w , v 312. dukt thc khi kiem tra bieu th c diu kien dc gi trv ch y tip thnvng lap trong trng hp cn l i. Cc lenh b k v