You are on page 1of 169

LI NI U

TIN HC l mn hc bt buc i vi tt c sinh vin giai on I trong cc trng i hc Vit Nam chnh thc t nm 1992. T n nay, chng ta c nhiu sch v gio trnh Tin hc khc nhau do nhiu tc gi bin son. y l nhng ti liu cn thit cho c ging vin v sinh vin tham kho v s dng. Do s pht trin nhanh chng ca ngnh Tin hc v do yu cu i mi trong chng trnh o to ca B Gio dc v o to, vic bin son mi bi ging l mt trong nhng yu cu chnh yu ca trng i hc Cn Th v cc Trung tm o to khu vc khc. Gio trnh Tin hc i cng ny ra i nhm mc ch gip cho sinh vin c c mt ti liu hc tp cn thit cho mn hc ny. Tc gi chn thnh cm n: - Gio s Tin s Trn Phc ng, nguyn Hiu trng Trng i hc Cn Th - Gio s Tin s Piet Boon, Ging s Trng i hc Amterdam, H Lan - Gio s Tin s Jan Oldenziel, Ging s Trng i hc Amterdam, H Lan - Cc thnh vin H lan trong D n MHO-3 (Universiteit van Amsterdam) v D n MHO-4 (Hogeschool van Amsterdam) v D n MHO-1 (Vrije Universiteit van Amsterdam) - Cc ng nghip Khoa Khoa hc, Khoa Cng ngh, Khoa Cng ngh Thng tin, Phng Qun l Khoa hc v Sau i hc, v cc n v lin quan thuc trng i hc Cn Th. to rt nhiu iu kin v ti liu v phng tin cho tc gi hon thnh bi ging ny. Mt s cc v d, bi tp, cu gii thch trong bi ging c trch dn hoc c vit li t mt s sch c nu trong cc ti liu tham kho cui mi chng. Do khng c iu kin tip xc, trao i xin php vic trch dn ca cc tc gi trong ti liu tham kho, mong qu v vui lng min chp. Mc du c nhiu c gng nhng bi ging khng th trnh khi cc khuyt im, tc gi mong nhn c s ph bnh ng gp ca cc bn. Trn trng, Tc gi, ThS. L ANH TUN

GII THIU
B gio trnh ny gm bi ging cc mn Ton, L, Ha, Sinh v Tin hc ca hai nm u Khoa hc c bn bc i hc. Cc bi ging c bin son cn c vo cng chi tit do B Gio dc v o to ban hnh cng vi 20% ci i c php ph hp vi chuyn ngnh o to v thc tin a phng. B gio trnh ny l mt phn ca chng trnh ci tin phng php dy v hc cp i hc ca trng i hc Cn Th. Gio trnh c bin son vi hai ch ch: * Cung cp cho gio vin ni dung chun bin son bi ging. * Cung cp cho sinh vin kin thc ti thiu cn c ca mn hc. Bi ging, ngoi phn l thuyt, gii thiu phn c thm, nhng ng dng vo thc tin, bi tp v.v... gip sinh vin pht trin kh nng t hc, quen dn thi quen ng dng kin thc vo thc tin v, nh vy, dn dn hnh thnh t duy sng to v thc t. B gio trnh ny c thc hin vi s hp tc ca cc gio s nhiu kinh nghim trong nc v cc gio s H Lan. Bi ging c hiu chnh sau nhiu lt gp ca cc gio vin trc tip ng lp v nhiu hi tho. Cui cng Ban Gim Hiu trng i hc Cn Th t chc nghim thu thng qua Hi ng gm nhiu thnh vin phn bin l cc Thy, C gio trong v ngoi trng. B gio trnh xut bn ln ny tuy c thc hin kh cng phu v nghim tc nhng cng khng trnh khi mt s thiu st. Chng ti rt mong nhn c s ng gp ca c gi ln xut bn sau hon chnh hn. Chng ti chn thnh cm n chnh ph H Lan (Nuffic) v B Gio dc v o to ti tr v to iu kin thun li cho cng tc bin son b gio trnh ny. Cm n cc gio s H Lan, cc gio s trong nc v tt c cc c nhn gp phn tch cc vo cng tc bin son v n hnh b gio trnh ny. Cn Th, thng 1 nm 1999 Ch bin NGND Gs.Ts. Trn Phc ng

GII THIU MN HC

Bi ging mn TIN HC I CNG (A) ny dnh cho sinh vin giai on I ca ngnh K thut (Khi A). Mn hc ny c 5 tn ch (tng ng 75 tit hc chun, bao gm 45 tit l thuyt - 3 tn ch - trn ging ng v 60 tit thc hnh - 2 tn ch -trn phng my tnh). Bi ging c son da vo chng trnh hng dn ca B Gio dc v o to v cng bin son Gio trnh trong Hi tho v Ni dung chng trnh ging dy giai on I Khoa hc t nhin c t chc t ngy 30 - 31/12/1995 ti trng i hc Cn Th. Sinh vin hc mn Tin hc i cng ny cn c mt s kin thc s ng v My tnh bc Trung hc. Tuy nhin, kh nng ny khng hn c th c c mt s sinh vin do s khc nhau thc t v iu kin a l v x hi ng bng Sng Cu Long so vi mt s khu vc khc. Trong mt lp, mt bng hiu bit c bn v my tnh ca sinh vin xut thn t thnh ph ln v sinh vin xut thn t vng nng thn c th c s chnh lch kh r. iu ny cng gy mt s kh khn no cho ging vin. Trc yu cu hin i ha v cp nht ho mn hc, chng trnh ny c mt s sa i - v ni dung v thi lng - so vi chng trnh ca B trong khun kh cho php. Mn hc c 3 phn chnh, trong trng tm ca mn hc l phn lp trnh ngn ng Pascal, c s gi chim 2/3 thi lng. Chng trnh c 3 phn nh sau: ( Phn I: ( Phn II: i cng v Tin hc 9(9,0) H iu hnh v cc phn mm h tr 16(6,10) Ngn ng lp trnh cp cao 50(30,20)

( Phn III:

Cc thut ng Tin hc s dng trong bi ging l cc t tng i quen thuc trong nc. trnh nhm ln, mt s thut ng c phn ch thch ting Anh i km. Cui gio trnh l cc ti liu tham kho lin quan. Sinh vin c th s dng cc ti liu tham kho nh mt ti liu th hai cho vic b sung kin thc ca mnh. Mt s bi c thm v ph chng - do b gii hn bi s gi hc trn lp - cng c a vo mt s chng cho sinh vin tham kho nh. Phn bi tp cho cc chng c trnh by v hng dn tp Thc hnh Tin hc i cng .

CHNG 1 THNG TIN V X L THNG TIN

I.

II.

III.

THNG TIN. 1. Khi nim v thng tin, phn loi thng tin. 2. n v o thng tin. 3. M ha thng tin ri rc. X L THNG TIN. 1. S tng qut ca mt qu trnh x l thng tin. 2. X l thng tin bng my tnh in t. TIN HC. 1. Cc lnh vc nghin cu ca tin hc. 2. ng dng ca tin hc. 3. My tnh in t v lch s pht trin.

I. THNG TIN 1. Khi nim v thng tin, phn loi thng tin D liu (data) l cc s kin khng c cu trc, khng c ngha r rng, cho n khi chng c t chc theo mt tin trnh tnh ton no . Thng tin (Information) l mt khi nim tru tng c th hin qua cc thng bo, cc biu hin ... em li mt nhn thc ch quan cho mt i tng nhn tin. Thng tin l d liu c x l xong, mang ngha r rng. Thng tin cng c th b din t sai lch, xuyn tc do tc ng c hay v ca con ngi hay sinh vt khc. Mt h thng thng tin (information system) l mt tin trnh ghi nhn d liu, x l n v cung cp to nn d liu mi c ngha thng tin, lin quan mt phn n mt t chc, tr gip cc hot ng lin quan n t chc.

TO

2. n v o thng tin n v dng o thng tin gi l bit. Mt bit tng ng vi mt ch th hoc mt thng bo no v 1 s kin c trong 2 trng thi c s o kh nng xut hin ng thi l Tt(Off) / M(On) hay ng(True) / Sai(False). V d 1. Mt mch n c 2 trng thi l:

TO

- Tt (Off) khi mch in qua cng tc l h - M (On) khi mch in qua cng tc l ng S hc nh phn (s gii thiu chng 3) s dng hai s hng 0 v 1. V kh nng s dng hai s 0 v 1 l nh nhau nn mt ch th ch gm 1 ch s nh phn c th xem nh l cha n v thng tin nh nht. Bit l ch vit tt ca BInary digiT. Trong tin hc, ngi ta thng s dng cc n v o thng tin ln hn sau: Bng 1. Bng n v o thng tin Tn gi Byte KiloByte MegaByte GigaByte TetraByte K hiu B 8 bit KB MB GB TB Gi tr

210 B = 1024 Bytes 220 B 230 B 240 B

Nm 1948, nh bc hc Shannon a ra cng thc sau tnh lng thng tin, bng cch o kh nng xut hin cc s kin trong mt thng bo, k hiu l H v gi l Entropi :

trong : n l s s kin ln nht c kh nng xut hin V d 2. Gieo ngu nhin 1 ng xu, c th xy ra 1 trong 2 s kin trong mi ln gieo l kh nng xut hin mt sp hoc mt nga. V ng xu xem nh ng cht, nn xc sut xut hin ca mi s kin l p = 1/2 . Vy lng tin s l :

V d 3. Tng t nh trn nu ta gieo 1 con sc sc, th n = 6 v p = 1/6 Lng tin H s l : 0

V d 4. Mt trm kh tng X bng vic phn tch nhiu s liu khc nhau a ra d on kh nng c ma ri mt vng no vo ngy mai l 75%. Suy ra kh nng khng c ma s l 100% - 75% = 25%. Nh vy thng bo trn c lng tin theo Shannon l :

So snh 3 v d trn, ta thy xc sut xut hin mt tin cng thp th lng tin cng cao v mc bt ng ca n cng ln v ngc li. Tuy nhin, khng phi lc no ta cng xc nh c xc sut xut hin s kin nn vic p dng cng thc Shannon b hn ch. 3. M ha thng tin ri rc : Tt c cc thng tin dng vn bn (text), ch (character), s (number), k hiu (symbol), ha (graphic), hnh nh (image) hoc m thanh (sound) ... u c gi l cc tn hiu (signals). Tn hiu c th l lin tc hay ri rc. My tnh tng t (Analog Computer) l my tnh chuyn dng x l mt s cc tn hiu lin tc nh tn hiu in, m thanh... Trong khi , hu ht cc d liu m chng ta c c thng dng cc tn hiu ri rc din t cc tn hiu lin tc qua cc s o hu hn. Khi a cc tn hiu ny vo my tnh, chng c m ha theo cc tn hiu s (digital signal) nhm gip my tnh c th hiu c thng tin a vo. y l c s thc tin ca nguyn l m ho thng tin ri rc. Nguyn l ny tp trung cc im ch yu sau : - Tn hiu lin tc c th xem nh mt chui xp x cc tn hiu ri rc vi chu k ly mu nh mc chp nhn c (Hnh 1.). - Tn hiu ri rc c th c c trng qua cc b k hiu hu hn (ch ci, ch s, du, ...) gi l php m ha (encode) (Hnh 2.). Mi php m ha u c th xy dng trn b k hiu cc ch s, c bit ch cn b k hiu gm 2 ch s l 0 v 1. Ngc vi php m ho gi l php gii m (decode).

TO

Tn hiu ri rc l tn hiu c trc thi gian b ri rc ho vi chu k ly mu l Ts = 1/Fs , vi Fs l tn s ly mu. Ting ni con ngi thng c tn s Fs = 10 kHz. Mt v d v thng tin ri rc l hnh trn phim khi c chiu ln mn nh l cc nh ri rc xut hin vi tc 25 nh/giy. Mt ngi khng phn bit s ri rc ny nn c cm tng hnh nh l lin tc. M ho thng tin ri rc l mt khi nim rt cn bn trong k thut my tnh. II. X L THNG TIN 1. S tng qut ca mt qu trnh x l thng tin Mi qu trnh x l thng tin bng my tnh hay bng con ngi u c thc hin theo mt qui trnh sau : D liu (data) c nhp u vo (input). My tnh hay con ngi s thc hin qu trnh x l no nhn c thng tin u ra (output). Qu trnh nhp d liu, x l v xut thng tin u c th c lu tr (Hnh 3.).

TO

Hnh 1.3 M hnh tng qut qu trnh x l thng tin 2. X l thng tin bng my tnh in t Thng tin l kt qu bao gm nhiu qu trnh x l cc d liu v thng tin c th tr thnh d liu mi theo mt qu trnh x l khc to ra thng tin mi hn theo ca con ngi. Con ngi c nhiu cch c d liu v thng tin. Ngi ta c th lu tr thng tin qua tranh v, giy, sch bo, hnh nh trong phim, bng t, ... Trong thi i hin nay, khi lng thng tin n vi chng ta cng lc cng nhiu th con ngi c th dng mt cng c h tr cho vic lu tr, chn lc v x l li thng tin gi l my tnh in t (computer). My tnh in t gip con ngi tit kim rt nhiu thi gian, cng sc v tng chnh xc cao trong vic t ng ho mt phn hay ton phn ca qu trnh x l d liu hay thng tin. III. TIN HC 1. Cc lnh vc nghin cu ca tin hc Tin hc (Informatics) c nh ngha l ngnh khoa hc nghin cu cc phng php, cng ngh v k thut x l thng tin t ng. Cng c ch yu ca tin hc l my tnh in t v cc thit b truyn tin khc. Vic nghin cu chnh ca tin hc nhm vo 2 k thut pht trin song song : - K thut phn cng (hardware engineering): nghin cu ch to cc thit b, linh kin in t, cng ngh vt liu m1... h tr cho my tnh v mng my tnh y mnh kh nng x l ton hc v truyn thng thng tin.

TO

- K thut phn mm (software engineering): nghin cu pht trin cc h iu hnh, ngn ng lp trnh cho cc bi ton khoa hc k thut, m phng, iu khin t ng, t chc d liu v qun l h thng thng tin. 2. ng dng ca tin hc Tin hc hin ang c ng dng rng ri trong tt c cc ngnh ngh khc nhau ca x hi t khoa hc k thut, y hc, kinh t, cng ngh sn xut n khoa hc x hi, ngh thut,... nh: - T ng ha vn phng - Qun tr kinh doanh - Thng k - An ninh, quc phng - Cng ngh thit k - Gio dc - Y hc - Cng ngh in - Nng nghip - Ngh thut, gii tr, v.v.... 3. My tnh in t v lch s pht trin Do nhu cu cn tng chnh xc v gim thi gian tnh ton, con ngi quan tm ch to cc cng c tnh ton t xa: bn tnh tay ca ngi Trung quc, my cng c hc ca nh ton hc Php Blaise Pascal (1623 - 1662), my tnh c hc c th cng tr nhn chia ca nh ton hc c Gottfried Wilhelmvon Leibniz (1646 - 1716), my sai phn tnh cc a thc ton hc, my phn gii iu khin bng phiu c l ca Charles Babbage (1792 - 1871) ... Tuy nhin, my tnh in t thc s hnh thnh bt u vo thp nin 1950 v n nay tri qua 5 th h c phn loi theo s tin b v cng ngh in t v vi in t cng nh cc ci tin v nguyn l, tnh nng v loi hnh ca n. * Th h 1 (1950 - 1958): my tnh s dng cc bng n in t chn khng, mch ring r, vo s liu bng phiu c l, iu khin bng tay. My c kch thc rt ln, tiu th nng lng nhiu, tc tnh chm khong 300 - 3.000 php tnh mi giy. Loi my tnh in hnh th h 1 nh EDVAC (M) hay BESM (Lin x c), ... * Th h 2 (1958 - 1964): my tnh dng b x l bng n bn dn, mch in. My c chng trnh dch nh Cobol, Fortran v h iu hnh n gin. Kch thc my cn ln, tc tnh khong 10.000 n 100.000 php/s. in hnh nh loi IBM-1070 (M) hay MINSK (Lin x c), ... * Th h 3 (1965 - 1974): my tnh c gn cc b x l bng vi mch in t c nh c th c c tc tnh khong 100.000 n 1 triu php/s. My c cc h iu hnh a chng trnh, nhiu ngi dng ng thi hoc theo kiu chia thi gian. Kt qu t my tnh c th in ra trc tip my in. in hnh nh loi IBM 360 (M) hay EC (Lin X c), ... * Th h 4 (1974 n nay): my tnh bt u c cc vi mch a x l c tc tnh hng chc triu n hng t php/giy. Giai on ny hnh thnh 2 loi my tnh chnh : my tnh c nhn bn (Personal Computer - PC) hoc xch tay (Laptop hoc Notebook computer) v cc loi my tnh chuyn nghip thc hin a chng trnh, a vi x l ... hnh thnh cc h thng mng my tnh (Computer Networks), v cc ng dng phong ph a phng tin.

TO

* Th h 5 (1990 - nay): bt u c cc nghin cu to ra cc my tnh m phng cc hot ng ca no b v hnh vi con ngi, c tr khn nhn to vi kh nng t suy din pht trin cc tnh hung nhn c v nhng h qun l kin thc c s gii quyt cc bi ton a dng.

CHNG 2 NHNG NGUYN L C BN V CU TRC TNG QUT CA H X L THNG TIN T NG

I.

II.

NHNG NGUYN L THIT K C BN. 1. Nguyn l Turing. 2. Nguyn l Von-Neumann. CU TRC TNG QUT CA H X L THNG TIN T NG. 1. Phn cng. 2. Phn mm. BI C THM KHI NIM V MNG MY TNH.

I. NHNG NGUYN L THIT K C BN 1. Nguyn l Turing Alan Mathison Turing (1912 - 1954) l mt nh ton hc ngi Anh a ra mt thit b tnh n gin gi l my Turing. V l thuyt, mi qu trnh tnh ton c th c th u c th m phng li trn my Turning. My Turning gm c (xem hnh v 2.1): - Mt b iu khin trng thi hu hn (finite control), trong c cc trng thi c bit nh trng thi khi u v trng thi kt thc. - Mt bng ghi (tape) cha tn hiu trong cc . - Mt u c (head) v ghi c th di chuyn theo 2 chiu tri hoc phi mt n v.

TO

Hnh 2.1 S my Turing u c/ghi mang chc nng thng tin ni gia B iu khin hu hn v bng ghi. u bng cch c du hiu t bng v cng dng n thay i du hiu trn bng. B kim sot vn hnh theo tng bc ring bit; mi bc n thc hin 2 chc nng ty thuc vo trng thi hin ti ca n v tn hiu hin ti ca bng: 1. t b iu khin trng thi ban u q1, bng trng v u c/ghi ch vo khi u. 2. Nu: (a) trng thi hin ti q trng vi trng thi kt thc qo th my s dng. (b) ngc li, trng thi q s chuyn qua q, tn hiu trn bng s thnh s v u c dch chuyn sang phi hoc tri mt n v. My hon thnh xong mt bc tnh ton v sn sng cho bc tip theo. 2. Nguyn l Von Neumann Nm 1946, nh ton hc M John Von Neumann (1903 - 1957) ra mt nguyn l my tnh hot ng theo mt chng trnh c lu tr v truy nhp theo a ch. Nguyn l ny c trnh by mt bi bo ni ting nhan : Tho lun s b v thit k logic ca my tnh in t . Ni dung nguyn l Von Neumann gm : - My tnh c th hot ng theo mt chng trnh c lu tr. Theo Von Neumann, chng ta c th tp hp cc lnh cho my thi hnh theo mt chng trnh c thit k v coi nh mt tp d liu. D liu ny c ci vo trong my v c truyn bng xung in. y l mt cuc cch mng mi cho my tnh nhm tng tc tnh ton vo thi v trc kia my ch c th nhn c cc lnh t bng giy hoc ba c l v np vo bng tay. Nu gp bi ton lp li nhiu ln th cng tip tc bng cch np li mt cch th cng nh vy gy hn ch trong tnh ton s dng. - B nh c a ch ha Mi d liu u c mt a ch ca vng nh cha s liu . Nh vy truy nhp d liu ta ch cn xc nh a ch ca n trn b nh. - B m ca chng trnh Nu mi cu lnh phi dng mt vng nh cha a ch ca cu lnh tip theo th khng gian b nh s b thu hp. khc phc hn ch ny, my c gn mt thanh ghi ch ra v tr ca lnh tip theo cn c thc hin v ni dung ca n t ng c tng ln mi ln lnh c truy cp. Mun i th t lnh ta ch cn thay i ni dung thanh ghi bng mt a ch ca lnh cn c thc hin tip. II. CU TRC TNG QUT CA H X L THNG TIN T NG Mi loi my tnh c th c cc hnh dng hoc cu trc khc nhau, ty theo mc ch s dng nhng, mt cch tng qut, my tnh in t l mt h x l thng tin t ng gm 3 phn chnh: * n v x l trung ng (CPU - Central Processing Unit)

TO

* Khi b nh (Memory): cha chng trnh v d liu * Khi vo ra (Input/Output): bao gm mn hnh, my in, bn phm,... 1. Phn cng (Hardware) Phn cng c th c hiu n gin l tt c cc phn trong mt h my tnh m chng ta c th thy hoc s c. Phn cng gm cc thit b my c th thc hin cc cha nng sau: * Nhp d kin vo my (input) * X l d kin (processing) * Xut d kin/ thng tin (output) a. S cu trc phn cng

TO

Hnh 2.2 S cu trc phn cng b. B nh B nh l thit b lu tr thng tin trong qu trnh my tnh x l. B nh bao gm b nh trong v b nh ngoi. B nh trong gm ROM v RAM : - ROM (Read Only Memory) l B nh ch c thng tin dng lu tr cc chng trnh h thng, chng trnh iu khin vic nhp xut c s (ROM-BIOS : ROM-Basic Input/Output System). Thng tin c gi trn ROM thng xuyn ngay c khi mt in. B nh ny c cc cng ty sn xut my tnh ci t sn trn my thng c kch c 16 KB(loi IBM PC XT), hoc 32 KB, 64 KB (loi IBM PC AT). Ngi s dng my tnh khng th t thay i ni dung thng tin trong ROM.

- RAM (Random Access Memory) l B nh truy xut ngu nhin, c dng lu tr d kin v chng trnh trong qu trnh thao tc v tnh ton. RAM c c im l ni dung thng tin cha trong n s mt i khi mt in hoc tt my. Dung lng b nh cho cc my tnh hin nay (loi PC AT 486 tr ln) thng thng vo khong 4 MB, 8 MB, 16 MB, 32 MB hoc 64 MB v c th hn na. B nh ngoi: nh a t, bng t ... lu tr thng tin v c th chuyn cc tin ny qua my tnh khc, ngi ta s dng cc a, bng t nh l cc b nh ngoi. Cc b nh ny c dung lng cha ln, khng b mt i khi khng c ngun in. Trn cc my vi tnh ph bin hin nay c cc loi a t sau: - a cng (hard disk) : c nhiu loi dung lng t vi trm n vi ngn MB, n nay c a cng hn 10 GB. - a mm (floppy disk) : ph bin c 2 loi a c ng knh 5.25 inches (dung lng 360 KB hoc 1.2 MB) v loi 3.5 inches (dung lng 720 KB hoc 1.44 MB)

Hnh 2.3 a my tnh loi 3.5 in v 5.25 in. - a quang (Compact disk): loi 4.72 inches c dung lng vo khong 600 MB. a quang thng ch c c v khng ghi c (CD-ROM) l thit b ph bin vi cc phn mm phong ph mang nhiu thng tin, hnh nh, m thanh khng th thiu c trong cc phng tin a truyn thng (multimedia). Tc quay ca a mm 5.25 in. khong 300 vng/pht, a 3.5 in. khong 600 vng/pht. Tc quay ca a cng rt cao thng t trn 3600 vng/pht. V vy, thng tin cha trn a cng s c truy cp nhanh hn trn a mm rt nhiu. Hin nay trn th trng cn c loi a nn, c kch thc nh loi a 1.44 MB, nhng c dung lng n 100 MB v d dng mang i cc ni. c. B x l trung ng (CPU) B x l trung ng ch huy cc hot ng ca my tnh theo lnh v thc hin cc php tnh. CPU c 3 b phn chnh: khi iu khin, khi tnh ton s hc v logic, v mt s thanh ghi. Khi iu khin (CU: Control Unit) l trung tm iu hnh my tnh. N c nhim v gii m cc lnh, to ra cc tn hiu iu khin cng vic ca cc b phn khc ca my tnh theo yu cu ca ngi s dng hoc theo chng trnh ci t. Khi tnh ton s hc v logic (ALU: Arithmetic-Logic Unit) bao gm cc thit b thc hin cc php tnh s hc (cng, tr, nhn, chia, ...), cc php tnh logic (AND, OR, NOT, XOR) v cc php tnh quan h (so snh ln hn, nh hn, bng nhau, ...)

Cc thanh ghi (registers) c gn cht vo CPU bng cc mch in t lm nhim v b nh trung gian. Cc thanh ghi mang cc chc nng chuyn dng gip tng tc trao i thng tin trong my tnh. Ngoi ra, CPU cn c gn vi mt ng h (clock) hay cn gi l b to xung nhp. Tn s ng h cng cao th tc x l thng tin cng nhanh. Thng th ng h c gn tng xng vi cu hnh my v c cc tn s dao ng (cho cc my PC 386 DX tr ln) l 33 MHz, 66 MHz, 100 MHz, 120 MHz, 133 MHz, ... hoc cao hn. d. Cc thit b xut / nhp

Hnh 2.4 Cc b phn ca mt my tnh Cc thit b nhp thng tin chnh: - Bn phm (Keyboard): l thit b nhp d liu v cu lnh, bn phm my vi tnh ph bin hin nay l mt bng cha 104 phm c cc tc dng khc nhau. C th chia lm 3 nhm phm chnh:

Hnh 2.5 Bn phm + Nhm phm nh my: gm cc phm ch, phm s v phm cc k t c bit (~, !, @, #, $, %, ^,&, ?, ...). + Nhm phm chc nng (function key): gm cc phm t F1 n F12 v cc phm khc nh (phm di chuyn tng im), phm PgUp (ln trang mn hnh), PgDn (xung trang mn hnh), Insert (chn), Delete (xa), Home (v u), End (v cui), ... + Nhm phm m s (numeric keypad) nh NumLock (cho cc k t s), CapsLock (to cc ch in), ScrollLock (ch cun mn hnh) th hin cc n ch th. Ngoi 3 phm c n ch th trn ta cn cc nt iu khin sau:

- Phm Shift: km vi cc phm ch s to ra ch in hoa hoc thng, i phm s thnh cc k hiu tng ng trn n. - Phm - Phm BackSpace: li im nhy ng thi xa k t ng trc n. Enter: nt thi hnh lnh hoc xung hng.

- Phm Space: thanh di nht, to k t rng. - Phm PrintScreen: nt in ni dung mn hnh ra giy. - Phm Pause: dng thi hnh chng trnh. - Phm Ctrl (Control) v Alt (Alternate): l phm dng phi hp cc phm khc ty chng trnh s dng. - Phm Esc (Escape): phm thot, c dng khi c ch nh r. - Phm Tab: phm nhy cch, thng 8 khong (khong nhy c th khc i ty chng trnh hay ngi s dng nh). - Con chut (Mouse): l thit b cn thit ph bin hin nay, nht l cc my tnh chy trong mi trng Windows. Con chut c kch thc va nm tay di chuyn trn mt tm phng (mouse pad) theo hng no th du nhy hoc mi tn trn mn hnh s di chuyn theo hng tng ng vi v tr ca ca vin bi hoc tia sng (optical mouse) nm di bng ca n. Mt s my tnh c con chut c gn trn bn phm. Hnh 2.6 Con chut - My qut (scanner): l thit b dng nhp vn bn hay hnh v, hnh chp vo my tnh. Thng tin nguyn thy trn giy s c qut thnh cc tn hiu s to thnh cc tp tin nh (image file). Scanner i km vi phn mm nhn din cc tp tin nh hoc vn bn. - Digitizer: dng nhp d liu ha theo ta X-Y vo my tnh, thng c dng trong v bn . - Bt quang (Light pen): dng nhp im bng cch chm ln mn hnh. - Touch screen: mn hnh c bit c th dng ngn tay chm ln cc im. Cc thit b xut thng tin chnh: - Mn hnh (Screen hay Monitor): l thit b xut chun, dng th hin thng tin cho ngi s dng xem. Thng tin c th hin ra mn hnh bng phng php nh x b nh (memory mapping), vi cch ny mn hnh ch vic c lin tc b nh v hin th (display) bt k thng tin no hin c trong vng nh ra mn hnh. V vy xut thng tin ra mn hnh ta ch cn xut ra vng nh tng ng.

Hnh 2.8 Mn hnh - Trong ch vn bn, mn hnh th hin 80 ct k t (nh s t 0 - 79) v 25 dng (nh s t 0 - 24). - Trong ch ha, mn hnh c chia thnh cc phn t nh (pixel: picture element). phn gii mn hnh c xc nh bng tch s kch thc chiu ngang v chiu cao tnh theo phn t nh. Tch s ny cng ln th mn hnh cng mn, r nt. Mn hnh ph bin hin nay trn th trng l mn hnh mu SVGA. Loi mn hnh mu CCA : Color Graphics Adapter EGA : Enhanced Graphics Adapter VGA : Video Graphics Array SVGA : Super VGA phn gii (pixel) 320 x 200 640 x 350 640 x 480 1020 x 768

- My in (printer): l thit b xut a thng tin ra giy. My in ph bin hin nay l loi my in ma trn im (dot matrix) loi 9 kim v 24 kim, my in phun mc, my in laser trng en hoc mu. Giy in thng dng l loi giy in 80 ct (in c 80 k t, in nn c 132 k t) v loi giy in kh rng in c 132 ct (in 132 k t, in nn 256 k t). C 2 loi giy in u c kh nng in 66 dng/trang.

- My v (plotter): loi my c bit dng cc bt mu v ha, ch ... - a t, bng t (diskette, tape) ... : dng cha thng tin xut 2. Phn mm (Software) Mun gii mt bi ton trn my tnh in t ngi ta cn mt chng trnh hay phn mm hng dn my tnh thc hin cc thao tc cn thit. Trc khi gii thiu phn mm ta cn hiu cc bc gii mt bi ton trn my tnh. a. Cc giai on gii mt bi ton trn my tnh in t gii quyt mt bi ton trn my tnh in t, cn qua cc giai on: Tm hiu mc tiu chnh ca bi ton: s liu nhp v kt qu xut. Xy dng mt chui thao tc tnh ton theo tun t, gi l thut gii.

TO

Lp chng trnh din t chi tit cc bc tnh theo thut gii Nhp chng trnh vo my tnh, thng dch v chy th sa cha li Thc hin gii bi ton vi s liu thu thp c v ghi nhn kt qu Th nghim vi nhiu trng hp khc nhau ca bi ton Phn tch kt qu v hon chnh chng trnh Trong cc bc trn, vic thit k thut ton l giai on quan trng nht. b. Thut ton (algorithm) nh ngha: Thut ton l mt phng php trnh by cc bc gii quyt mt hay nhiu bi ton theo mt tin trnh xc nh. Thut ton c cc c tnh sau: - Tnh xc nh: Cc thao tc ca thut ton l r rng v chc chn thc hin c dn n kt qu no . - Tnh hu hn v dng: thut ton phi c mt s bc gii nht nh v cui cng phi c kt thc im dng. - Tnh kt qu: Vi d liu hp l, thut ton phi cho kt qu tha yu cu. - Tnh ph dng: Thut ton phi gii c nhiu bi ton c cng cu trc vi cc d liu khc nhau v u dn n mt kt qu mong mun. - Tnh hiu qu: Thut gii phi n gin, d hiu trong cc bc gii, ti thiu ho b nh v thi gian thc hin. -Tnh hnh thc: Cc bc trong thut ton l my mc, ngha l n phi thc hin ng nh quy nh m khng cn bit n mc tiu cui cng. Thut ton c th din gii mt cch trc quan bng lu (flowchart). Lu c s dng thng dng trong vic trnh by cc bc cn thit gii quyt vn qua cc hnh khi khc nhau v dng d liu gia cc bc c ch nh i theo cc ng mi tn. Mt s qui c k hiu lu :

V d 2.1: Thut ton gii phng trnh bc nht : ax + b = 0, ta i qua cc bc: - Bc 1: Nhp vo 2 h s a v b. - Bc 2: Xt iu kin a = 0 ? Nu ng l a = 0, th i n bc 3. Nu khng, ngha l a ( 0, th i n bc 4. - Bc 3: Xt iu kin b = 0 ? Nu b = 0, th bo phng trnh c v s nghim. i n bc 5. Nu , thng bo phng trnh v nghim. i n bc 5.

- Bc 4: Thng bo phng trnh c mt nghim duy nht l x = - b/a. - Bc 5: Ngng dt thut ton V d 2.2 Vi bi ton nh trong v d 2.1, ta c th trnh by vi lu sau:

c. Khi nim v phn loi phn mm Phn mm l mt b chng trnh cc ch th in t ra lnh cho my tnh thc hin mt iu no theo yu cu ca ngi s dng. Chng ta khng th thy hoc s c phn mm, mt du ta c th hin th c chng trnh trn mn hnh hoc my in. Phn mm c th c v nh hn ca my tnh m phn cng ca n c xem nh phn xc. C 2 loi phn mm c bn: + Phn mm h iu hnh (Operating System Software): l mt b cc cu lnh ch dn phn cng my tnh v cc phn mm ng dng lm vic vi nhau. Phn mm h thng ph bin hin nay Vit nam l MS-DOS v Windows. i vi mng my tnh ta cng c cc phn mm h iu hnh mng (Network Operating System) nh Novell Netware, Unix, Windows NT, ... + Phn mm ng dng (Application Software): rt phong ph v a dng, bao gm nhng chng trnh c vit ra cho mt hay nhiu mc ch ng dng c th nh son tho vn bn, tnh ton, phn tch s liu, t chc h thng, bo mt thng tin, v ha, chi games, ... BI C THM KHI NIM V MNG MY TNH (COMPUTER NETWORKS) --- oOo --Mt h thng gm nhiu my tnh c kt ni nhau qua cp truyn tin v c th lm vic ng thi vi nhau gi l mng my tnh (Computer Networks). u im ca vic ni mng l: Chia x ti nguyn my tnh: b nh, phn mm, d liu, my in, ... Trao i thng tin gia cc trm lm vic (workstations) nhanh chng, tit kim thi gian v bo m an ton d liu.

TO

H iu hnh mng (Networks Operating System - NOS) ca mng my tnh thng l cc h ph bin nh UNIX, NOVELL NETWARE v WINDOWS NT. Da vo khong cch ni kt, ngi ta phn bit 2 loi: + Mng cc b (Local Area Networks - LAN) l mng my tnh ni vi nhau trong mt khng gian hp nh mt phng, ta nh, trng hc, x nghip,... + Mng din rng (Wide Area Networks - WAN) ch mt lot cc my hoc cc LAN c ni vi nhau trn mt phm vi ln hn nh lin tnh, lin vng, quc gia hay a quc gia. S mt mng cc b n gin:

Cc my tnh lm vic trn mng cc b bao gm: - My ch (File Server) : l mt my tnh c b nh ln, tc truy xut cao v c kh nng cha nhiu ti nguyn. My ch h iu hnh mng v cc chng trnh chung cho ton mng nh cc phn mm x l d liu, vn bn, phn mm chuyn dng, cc phn mm an ton v bo mt,... mi h thng mng phi c t nht 1 my ch. - Trm lm vic (WorkStation): l cc my tnh con c ni vi nhau v vo my ch. Ngi lm vic trn cc Trm c th s dng ti nguyn trn my ch v chia x d liu cho cc ng nghip. - Cc thit b khc nh my in, my v,... cc my ny c th ni trc tip vo my ch hoc trm lm vic ty theo nhu cu lm vic ca h thng. C nhiu phng php kt ni my tnh vi nhau theo cu hnh mng (Topology). Mi loi u c u khuyt im ring. Thng dng c cc kiu ni: - Kiu Tuyn (Bus): Tt c my tnh ni vi nhau theo mt ng dy chung.

S mt LAN ni theo kiu tuyn - Kiu Sao (Star): Tt c cc my ni thnh hnh sao quanh my ch.

S mt LAN ni theo kiu sao - Kiu Vng (Ring) : Tt c my c ni vo mt ng dy vng chung.

S mt LAN ni theo kiu vng Ngoi ra, ta c th kt ni mng theo kiu phi hp gia tuyn v sao, hoc gia vng v tuyn. Khi , file server s c ni vi thit b gi l hp cng nhiu nhnh multiport hub cho php kt ni cp dn vi trm lm vic theo cc cu hnh thit k khc nhau. Ngi lm vic trn mng bao gm: Ngi qun tr mng (Network supervisor): l ngi gi vai tr qun l ton b h thng mng, chu trch nhim ci t, sa cha, bo tr mng v ton quyn phn phi ti nguyn truy xut trn mng cho ngi s dng. Ngi s dng mng (Network Users): l ngi lm vic trn tng Trm lm vic ring r, c quyn s dng cc ti nguyn trn mng vi mt s quyn hn nht nh m ngi gim th mng cho php. Nhm trn mng (Group): l tp hp mt s ngi s dng c cng chung mt s yu cu s dng, chia x v do c gim th mng cung cp quyn nh nhau.

CHNG 3 BIU DIN THNG TIN TRONG MY TNH IN T

H M V LOGIC MNH . 1. Biu din s trong cc h m. 2. S hc nh phn. 3. Mnh logic. II. BIU DIN D LIU. 1. Biu din s nguyn. 2. Biu din s thc. 3. Biu din k t. PH LC. BI C THM CHUYN I H THNG S DA TRN H 8 V H 16.

I.

I. H M V LOGIC MNH 1. Biu din s trong cc h m H m l tp hp cc k hiu v qui tc s dng tp k hiu biu din v xc nh cc gi tr cc s. Mi h m c mt s k s (digits) hu hn. Tng s k s ca mi h m c gi l c s (base hay radix), k hiu l b. H m ph bin hin nay l h m La m v h m thp phn. a. H m La m H m La m c xem nh l h m c h thng u tin ca con ngi. H m La m s dng cc k hiu ng vi cc gi tr nh sau: I=1 V = 5 X = 10 L = 50 C = 100 D = 500 M = 1000

TO

K s La m c mt s qui tc sau: S ln n lin tip k nhau ca mi k hiu th hin gi tr k hiu tng ln n ln. S ln n ch l l 1 hoc 2 hoc 3. Ring k hiu M c php xut hin 4 ln lin tip. V d 3.1: 4000, ... III = 3 x 1 = 3; XX = 2 x 10 = 20; MMMM =

Hai k hiu ng cnh nhau, nu k hiu nh hn ng trc th gi tr ca chng s l hiu s ca gi tr k hiu ln tr gi tr k hiu nh hn. V d 3.2: IV = 5 -1 = 4; IX = 10 - 1 = 9; CD = 500 - 100 = 400;

CM = 1000 - 100 = 900 Hai k hiu ng cnh nhau, nu k hiu nh ng sau th gi tr ca chng s l tng s ca 2 gi tr k hiu.

V d 3.3:

XI = 10 + 1 = 11;

DCC = 500 + 100 + 100 = 700 MMMCMLXXXVI

Gi tr 3986 c th hin l:

biu th nhng s ln hn 4999 (MMMMCMXCIX), ch s La m gii quyt bng cch dng nhng vch ngang t trn u k t. Mt vch ngang tng ng vi vic nhn gi tr ca k t ln 1000 ln. V d M = 1000x1000 = 106. Nh vy, trn nguyn tc ch s La m c th biu th cc gi tr rt ln. Tuy nhin trong thc t ngi ta thng s dng 1 - 2 vch ngang l nhiu. H m La m hin t c s dng trong tnh ton hin nay. b. H m thp phn (decimal system) H m thp phn hay h m c s 10 l mt trong cc pht minh ca ngi rp c, bao gm 10 k s theo k hiu sau: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Qui tc tnh gi tr ca h m ny l mi n v mt hng bt k c gi tr bng 10 n v ca hng k cn bn phi. y b = 10. Bt k s nguyn dng trong h thp phn c th th hin nh l mt tng cc chui cc k s thp phn nhn cho 10 ly tha, trong s m ly tha c tng thm 1 n v k t s m ly tha pha bn phi n. S m ly tha ca hng n v trong h thp phn l 0. V d 3.4: S 5246 c th c th hin nh sau: 5246 = 5 x 103 + 2 x 102 + 4 x 101 + 6 x 100 = 5 x 1000 + 2 x 100 + 4 x 10 + 6 x 1 Th hin nh trn gi l k hiu m rng ca s nguyn. V 5246 = 5000 + 200 + 40 + 6

Nh vy, trong s 5246 : k s 6 trong s nguyn i din cho gi tr 6 n v (1s), k s 4 i din cho gi tr 4 chc (10s), k s 2 i din cho gi tr 2 trm (100s) v k s 5 i din cho gi tr 5 ngn (1000s). Ngha l, s ly tha ca 10 tng dn 1 n v t tri sang phi tng ng vi v tr k hiu s, 100 = 1 101 = 10 102 = 100 103 = 1000 104 = 10000 ...

Mi k s th t khc nhau trong s s c gi tr khc nhau, ta gi l gi tr v tr (place value). Phn phn s trong h thp phn sau du chm phn cch (theo qui c ca M) th hin trong k hiu m rng bi 10 ly tha m tnh t phi sang tri k t du chm phn cch:

Tng qut, h m c s b (

, b l s nguyn dng) mang tnh cht sau :

C b k s th hin gi tr s. K s nh nht l 0 v ln nht l b-1. Gi tr v tr th n trong mt s ca h m bng c s b ly tha n : S N(b) trong h m c s (b) th hin : trong , s N(b) c n+1 k s chn phn nguyn v m k s l, s c gi tr l :

Trong ngnh ton - tin hc hin nay ph bin 4 h m nh sau : H m H nh phn H bt phn H thp phn H thp lc phn C s 2 8 10 16 K s v tr tuyt i 0, 1 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

c. H m nh phn (binary number system) Vi b = 2, chng ta c h m nh phn. y l h m n gin nht vi 2 ch s l 0 v 1. Mi ch s nh phn gi l BIT (vit tt t ch BInary digiT). H nh phn tng ng vi 2 trng thi ca cc linh kin in t trong my tnh ch c: ng (c in) k hiu l 1 v tt (khng in) k hiu l 0. V h nh phn ch c 2 tr s l 0 v 1, nn khi mun din t mt s ln hn, hoc cc k t phc tp hn th cn kt hp nhiu bit vi nhau. Ta c th chuyn i h nh phn theo h thp phn quen thuc. V d 3.6: S s tng ng vi gi tr thp phn l :

nh vy: 11101.11(2) = 1x16 + 1x8 + 1x4 + 0x2 + 1x1 + 1x0.5 + 1x0.25 tng t s 10101 (h 2) sang h thp phn s l: 10101(2) = 1x24 + 0x23 + 1x22 + 0x21 + 1x20 = 8 + 0 + 4 + 0 + 1 = 13(10) d. H m bt phn (octal number system) Nu dng 1 tp hp 3 bit th c th biu din 8 tr khc nhau : 000, 001, 010, 011, 100, 101, 110, 111. Cc tr ny tng ng vi 8 tr trong h thp phn l 0, 1, 2, 3, 4, 5, 6, 7. Tp hp cc ch s ny gi l h bt phn, l h m vi b = 8 = 23. Trong h bt phn, tr v tr l ly tha ca 8. = 29.75 (10)

e. H m thp lc phn (hexa-decimal number system) H m thp lc phn l h c s , tng ng vi tp hp 4 ch s nh phn (4 bit). Khi th hin dng hexa-decimal, ta c 16 k t gm 10 ch s t 0 n 9, v 6 ch in A, B, C, D, E, F biu din cc gi tr s tng ng l 10, 11, 12, 13, 14, 15. Vi h thp lc phn, tr v tr l ly tha ca 16. V d 3.8: Ghi ch: Mt s chng trnh qui nh vit s hexa phi c ch H cui ch s. S 15 vit l FH.

V d 3.9:

Bng qui i tng ng 16 ch s u tin ca 4 h m H 10 0 1 2 3 4 5 6 7 8 H 2 0000 0001 0010 0011 0100 0101 0110 0111 1000 H 8 00 01 02 03 04 05 06 07 10 H 16 0 1 2 3 4 5 6 7 8

9 10 11 12 13 14 15

1001 1010 1011 1100 1101 1110 1111

11 12 13 14 15 16 17

9 A B C D E F

f. i mt s nguyn t h thp phn sang h b Tng qut: Ly s nguyn thp phn N(10) ln lt chia cho b cho n khi thng s bng 0. Kt qu s chuyn i N(b) l cc d s trong php chia vit ra theo th t ngc li. V d 3.10: Dng cc php chia 2 lin tip, ta c mt lot cc s d nh sau:

Kt qu: g. i phn thp phn t h thp phn sang h c s b Tng qut: Ly s nguyn thp phn N(10) ln lt nhn cho b cho n khi phn thp phn ca tch s bng 0. Kt qu s chuyn i N(b) l cc s phn nguyn trong php nhn vit ra theo th t tnh ton.

Kt qu:

2. S hc nh phn Trong s hc nh phn chng ta cng c 4 php ton c bn nh trong s hc thp phn l cng, tr, nhn v chia. Qui tc ca 2 php tnh c bn cng v nhn: X 0 0 1 1 Y 0 1 0 1 X+Y 0 1 1 10 X*Y 0 0 0 1

TO

Ghi ch: Vi php cng trong h nh phn, 1 + 1 = 10, s 10 (c l mt - khng) chnh l s 2 tng ng trong h thp phn. Vit 10 c th hiu l vit 0 nh 1. Mt cch tng qut, khi cng 2 hay nhiu ch s nu gi tr tng ln hn c s b th ta vit phn l v nh phn ln hn sang bn tri cnh n. V d 3.12: Cng 2 s 0101 + 1100 = ?

V d 3.13:

Nhn 2 s 0110 x 1011 = ?

Php tr v php chia l cc php ton c bit ca php cng v php nhn. V d 3.14: Tr hai s

V d 3.15:

Chia hai s

Qui tc 1: V d 3.16:

Khi nhn mt s nh phn vi

ta thm n s 0 vo bn phi s nh phn .

Qui tc 2: Khi chia mt s nguyn nh phn cho tri k t s cui ca s nguyn . V d 3.17: 3. Mnh logic

ta t du chm ngn v tr n ch s bn

TO

Mnh logic l mnh ch nhn mt trong 2 gi tr : ng (TRUE) hoc Sai (FALSE), tng ng vi TRUE = 1 v FALSE = 0. Qui tc: TRUE Php ton logic p dng cho 2 gi tr TRUE v FALSE ng vi t hp AND (v) v OR (hoc) nh sau: x TRUE TRUE FALSE FALSE y TRUE FALSE TRUE FALSE x AND y TRUE FALSE FALSE FALSE x OR y TRUE TRUE TRUE FALSE TRUE = NOT FALSE v FALSE = NOT

II. BIU DIN D LIU D liu s trong my tnh gm c s nguyn v s thc. 1. Biu din s nguyn

TO

S nguyn gm s nguyn khng du v s nguyn c du. * S nguyn khng du l s khng c bit du nh 1 byte = 8 bit, c th biu din dng, cho gi tr t 0 (0000 0000) n 255 (1111 1111). s nguyn

* S nguyn c du th hin trong my tnh dng nh phn l s dng 1 bit lm bt du, ngi ta qui c dng bit hng u tin bn tri lm bit du (S): 0 l s dng v 1 cho s m. n v chiu di cha thay i t 2 n 4 bytes.

Ta thy, vi chiu di 16 bit : bit u l bit du v 15 bit sau l bit s Tr dng ln nht ca dy 2 bytes s l: Tr m ln nht trong dy 2 bytes l th hin s m trong h nh phn ta c 2 khi nim: - S b 1: Khi o ngc tt c cc bit ca dy s nh phn: 0 thnh 1 v 1 thnh 0, dy s o gi l s b 1 ca s nh phn .

- S b 2: S b 2 ca s N l s o du ca n (-N). Trong h nh phn, s b 2 c xc nh bng cch ly s b 1 ca N ri cng thm 1.

2. Biu din s thc i vi cc s thc (real number) l s c th c c phn l hoc phn thp phn. Trong my tnh, ngi ta biu din s thc vi s du chm tnh (fixed point number) v s du chm ng (floating point number). a. S du chm tnh: thc cht l s nguyn (integers) l nhng s khng c chm thp phn b. S du chm ng: l s c ch s phn l khng c nh. Mi s nh vy c th tr v x l trong my tnh dng s m.

TO

Ghi ch: Du chm th hin trong my tnh phn bit phn l, du phy tng trng cho phn ngn, c vit theo qui c ca M. Tng qut, s du chm ng c biu din theo 3 phn : - phn du S (sign) : 0 cho + v 1 cho - phn nh tr m (mantissa) - phn m e (exponent), c th l s nguyn dng (+) hoc m (-) vi mt s X bt k, c th vit : X=m.be=mEe Trong , b l c s qui c, tr s m e c th thay i ty theo s v tr cn di du chm c li tr s ban u. Khi di du chm sang n v tr v pha tri (+n) hay pha phi (-n) th s m e thay i ln n v tng ng biu din s c du chm ng, ngi ta dng dy 32 bit vi h thng c s 16. Trong , 1 bit cho phn du, 7 bit cho phn m biu din phn c tr C (characteristic) v 24 bit cho phn nh tr m.

Phn m c 7 bit = C = s m biu din + 64 Phn m e c tr C 64 0 63 1 62 2 ... ...

c tr C, tng ng phn m e t -64 n +63

-2 62

-1 63

0 64

1 65

... ...

62 12 6

63 12 7

Trong my tnh, s A s c tr theo v tr nh 32 bit nh sau : Du A c tr C (7bit) nh tr m (24 bit)

3. Biu din k t c th biu din cc k t nh ch ci in v thng, cc ch s, cc k hiu... trn my tnh v cc phng tin trao i thng tin khc, ngi ta phi lp ra cc b m (code system) qui c khc nhau da vo vic chn tp hp bao nhiu bit din t 1 k t tng ng, v d cc h m ph bin : - H thp phn m nh phn BCD (Binary Coded Decima) dng 6 bit. - H thp phn m nh phn m rng EBCDIC (Extended Binary Coded Decimal Interchange Code) dng 8 bit tng ng 1 byte biu din 1 k t. - H chuyn i thng tin theo m chun ca M ASCII (American Standard Code for Information Interchange) l h m thng dng nht hin nay trong k thut tin hc. H m ASCII dng nhm 7 bit hoc 8 bit biu din ti a 128 hoc 256 k t khc nhau v m ha theo k t lin tc theo c s 16. H m ASCII 7 bit, m ho 128 k t lin tc nh sau: 0 1 - 31 : 32 - 47 48 - 57 58 - 64 65 - 90 : 91 - 96 97 - 122 123 - 127 : : : NUL (k t rng)

TO

31 k t iu khin : cc du trng SP (space) ! # $ % & ( ) * + , - . / : k s t 0 n 9

cc du : ; < = > ? @

cc ch in hoa t A n Z : cc du [ \ ] _ ` cc ch thng t a n z : cc du { | } ~ DEL (xa)

H m ASCII 8 bit (ASCII m rng) c thm 128 k t khc ngoi cc k t nu trn gm cc ch ci c du, cc hnh v, cc ng k khung n v khung i v mt s k hiu c bit (xem ph lc). PH LC 3.1 BNG M ASCII vi 128 k t u tin Hex 0 1 2 3 4 5 6 7

TO

0 1 2 3 4 5 6 7 8 9 A B C D E F

NUL

DLE

SP

0 16 32 48 64 80 96 112 SOH DC1 ! 1 A Q a q 1 17 33 49 65 81 97 113 2 B R b r STX DC2 2 3 4 5 18 34 50 66 82 98 114 3 C S c s DC3 # 19 35 51 67 83 99 115 DC4 $ 4 D T d t 20 36 52 68 84 100 116 NAK % 5 E U e u 21 37 53 69 85 101 117 SYN & 6 F V f v

22 38 54 70 86 102 118 6 BEL ETB 7 G W g w 7 BS 8 HT 9 LF 23 39 55 71 87 103 119 CAN ( 8 H X h x 24 40 56 72 88 104 120 EM ) 9 I Y I y 25 41 57 73 89 105 121 : J Z j z SUB *

10 26 42 58 74 90 106 122 ; K [ k { VT ESC + 11 FF FS 27 , 43 < 59 L 75 \ 91 l 107 | 123

12 28 44 60 76 92 108 124 CR GS = M ] m } 13 29 45 61 77 93 109 125 . > N ^ n ~ SO RS 14 SI 15 30 46 62 78 94 110 126 US / ? O _ o DEL 31 47 63 79 95 111 127

PH LC 3.2 BNG M ASCII vi k t s 128 - s 255 Hex 0 1 2 3 4 5 6 7 8 9 A B C D E 8 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 158 157 174 156 173 190 155 172 189 206 154 171 188 205 222 153 170 187 204 221 238 152 169 186 203 220 237 254 151 168 185 202 219 236 253 150 167 184 201 218 235 252 149 166 183 200 217 234 251 148 165 182 199 216 233 250 147 164 181 198 215 232 249 146 163 180 197 214 231 248 145 162 179 196 213 230 247 144 161 178 195 212 229 246 9 160 177 194 211 228 245 A 176 193 210 227 244 B 192 209 226 243 C 208 225 242 D 224 241 E 240 F

159

175

191

207

223

239

255

143 BI C THM

TO CHUYN I H THNG S DA TRN H 8 V H 16 --- oOo ---

Trong phn bi ging, chng ta lm quen vi cch chuyn i gia h 2 v h 10. Tuy nhin, nhng tr s ln v di th lm cch trn tr nn rt phc tp v d nhm ln, v d :

Trong v d th nht ta phi lin tip lm nhiu php nhn v v d th hai, ta li thc hin nhiu php chia lin tip. Ngi ta a ra h thng s trung gian l h 8 v h 16 gii quyt:

Thng qua h 8 v h 16 chuyn i h 2 sang h 10 Chia s nh phn lm thnh tng b 3 s v 4 s lin tip theo th t tng ng vi cch thng qua h 8 v h 16 v dng phng php nhn vi cc tha s bn trn tng ng ri cng li . V d1: THNG QUA H 8: Chia s nh phn tng b 3 s:

THNG QUA H 16: Chia s nh phn thnh b 4 s

Thng qua h 8 v h 16 chuyn h 10 sang h 2 Cch lm tng t nh trn, nhng thay php nhn thnh php chia v ly cc s d ca php chia ngc t di ln trn chuyn i. V d2: THNG QUA H 8:

THNG QUA H 16:

Suy ra:

Chuyn h 8 sang h 16 v ngc li: Ta c th dng h 10 hoc h 2 lm trung gian chuyn i h 8 sang h 16 v ngc li. Thng thng dng h 2 trung chuyn c thun li hn. V d 3: Cch lm nh sau: Bc 1: Chuyn h 8 thnh h 2: biu th tng tr s trong h 8 thnh tng nhm 3 s v ghp cc nhm li.

Bc 2: Chia dy s h 2 va c c thnh cc b 4 s v chuyn cc b sang h 16

Vic chuyn t h 16 sang h 8 ta cng tin hnh 2 bc nh vy.

CHNG 4 H IU HNH MS-DOS

KHI NIM V H IU HNH. H IU HNH MS-DOS. 1. Cc khi nim c bn. 2. Tp lnh ni tr, tp lnh ngoi tr. BI C THM.

I. II.

I. KHI NIM V H IU HNH H iu hnh (Operating System) l mt tp hp cc chng trnh to s lin h gia ngi s dng my tnh v my tnh thng qua cc lnh iu khin. Khng c h iu hnh th my tnh khng th chy c. Chc nng chnh ca h iu hnh l: Thc hin cc lnh theo yu cu ca ngi s dng my, Qun l, phn phi v thu hi b nh , iu khin cc thit b ngoi vi nh a, my in, bn phm, mn hnh,... Qun l tp tin,... Hin c nhiu h iu hnh khc nhau nh DOS, UNIX, OS2, WINDOWS,... II. H IU HNH MS-DOS H iu hnh MS-DOS (MicroSoft - Disk Operating System) l phn mm khai thc a t (a cng hoc a mm) rt thng dng. MS-DOS l sn phm ni ting ca hng Microsoft c ci t hu ht trn cc my IBM PC v cc my tng thch. Phin bn cui cng ca DOS hin nay l version 7.0. Tuy nhin, h iu hnh MS-DOS version 6.0 - 6.22 vn cn c nhiu ngi tip tc s dng. Mt my tnh c th c 1 hoc 2 a mm v 1 hoc vi a cng. mm thng c t tn l A v B (drive A, drive B), cng c tn l C, D, E,... Mt a cng c th c chia lm nhiu a logic nh c cc tn khc nhau. C 3 cch khi ng my: Bt cng tc khi ng khi my cha vo in. Nhn nt RESET khi my hot ng v cn khi ng li. Nhn t hp 3 phm ng thi l Ctrl-Alt-Del khi ng li my. Sau khi thc thi cc lnh khi ng, trn mn hnh my tnh s xut hin du i lnh (prompt) c dng: C:\>_ hoc A:\>_

TO

TO

C hoc A l tn ca a lm vic: C khi khi ng t a cng v A l t a mm. B k t :\> l qui c du i lnh ca DOS, qui c ny c th thay i. im nhy sng _ gi l con tr (cursor) cho ta bit im lm vic hin ti trn mn hnh. Cc k t g trn bn phm s hin ra ti v tr con tr. Mt s qui c gi lnh trong DOS drive : a

path filename directory sub-dir <tn> [<tn>]

ng dn bao gm th mc cha, cc th mc con k tip tn tp tin bao gm phn tn v phn m rng th mc th mc con (sub directory) ni dung cu lnh bt buc cn c ni dung cu lnh trong du [ ] c th c hoc khng Du Enter, ra lnh thc hin lnh ca DOS

Ghi ch: Ta c th nh tn lnh v du /? nhn c hng dn (HELP) cc chi tit sau lnh. V d C:\>DIR /? , DOS s ch dn v lnh DIR trn mn hnh. 1. Cc khi nim c bn a. Tp tin (file) Tp tin l ni lu tr thng tin bao gm chng trnh, d liu, vn bn,... Mi tp tin c mt tn ring phn bit. Tn tp tin thng c 2 phn: phn tn (name) v phn m rng (extension). Phn tn l bt buc phi c ca mt tp tin, cn phn m rng th c th c hoc khng. - Phn tn l mt dy c t 1 n ti a 8 k t c th l: cc k t ch t A n Z, cc ch s t 0 n 9, cc k t khc nh #, $, %, ~, ^, @, (, ), !, _ - Phn m rng c t 0 n ti a 3 k t trong s cc k t nu trn. - Gia phn tn v phn m rng c mt du chm (.) ngn cch.

TO

Tn tp tin khng chp nhn cc trng hp sau: - C khong trng trong tn file - Trng tn vi cc lnh ca DOS v lnh iu khin thit b: CON, PRN, .... - C cha cc k t nh ., ?, *, :, >, <, /, \, [, ], +, ;, Phn m rng c th c xem gn nh h trong tn ngi. Ta c th cn c vo phn m rng xc nh kiu ca file: COM, EXE, BAT : Cc file kh thi v lnh b chy trc tip c trn MS-DOS

TXT, DOC, ... PAS, BAS, ... WK1, XLS, ... DBF, DAT, ...

: Cc file vn bn : Cc file chng trnh PASCAL, BASIC, ... : Cc file chng trnh bng tnh LOTUS, EXCEL ... : Cc file d liu

Cc k t c bit trn file: DOS dng cc k t sao (*) v chm hi (?) m t mt tp hp file. ngha nh sau: Du * dng i din cho mt chui k t bt k v thay cho phn cn li ca tn file hoc phn m rng ca file ti v tr n xut hin tr v sau. Du ? dng i din cho mt k t bt k ti v tr n xut hin. V d 4.2: Trong a ca bn c cc tp tin:

BAOCAO1.TXT, BAOCAO2.TXT, VANBAN.TXT, VANCAO#.THO, SOLIEU.DAT + K hiu BAOCAO?.* i din cho cc tp tin BAOCAO1.TXT, BAOCAO2.TXT + K hiu *.TXT i din cho BAOCAO1.TXT, BAOCAO2.TXT, VANBAN.TXT + K hiu ???CAO?.* i din cho BAOCAO1.TXT, BAOCAO2.TXT, VANCAO#.THO + K hiu *.* hoc duy nht mt du chm . i din cho tt c cc tp tin trn a b. Th mc (directory) Th mc l ni ct gi cc tp tin theo mt ch no theo ngi s dng. y l bin php gip ta qun l c tp tin, d dng tm kim chng khi cn truy xut. Cc tp tin c lin quan vi nhau c th c xp trong cng mt th mc. Bn thn mi a mang mt th mc chung gi l th mc gc (root directory). Th mc gc khng c tn ring v c k hiu l \ (du x phi: backslash). Di mi th mc gc c cc file trc thuc v cc th mc con (sub-directory). Trong cc th mc con cng c cc file trc thuc v th mc con ca n. Th mc cha th mc con gi l th mc cha (parent directory). Th mc ang lm vic gi l th mc hin hnh (current directory). Ta c th din t cu trc th mc v file cha trong n qua hnh nh cy th mc (directory tree). V d trn a C, ta c 2 th mc con ca th mc gc l VANBAN v PASCAL

c. ng dn (path) ng dn l lnh ch dn l trnh cho php ta t th mc bt k c th n trc tip th mc cn truy xut. C 2 loi ng dn c th s dng trong MS - DOS l: ng dn (path) v tn ng dn (pathname). ng dn mt dy cc th mc bt u t th mc gc n cc th mc con v ni tip nhau bi du \, th mc ng sau l con ca th mc ng trc. Ni cch khc, ng dn dng ch nh th mc cn n. C php ng dn: path [drive:][\directory][\sub-dir ...]

V d 4.3:

C:\>path PASCAL\MAIN

Tn ng dn tng t nh ng dn nhng kt thc bng tn file cui cng l. ng dn kt thc bng tn file cn truy xut. C php Tn ng dn: V d 4.4: path[drive:][\directory][\sub-dir ...]<\filename>

C:\>path C:\PASCAL\MAIN\TURBO.EXE

2. Tp lnh ni tr, tp lnh ngoi tr a. Lnh ni tr (internal command) Lnh ni tr l nhng lnh nm thng trc trong b nh my khi c khi ng v sn sng thc hin lnh khi ta gi n. Lnh ni tr nm trong phn khi ng ca MS-DOS cha trong cc file COMMAND.COM, IO.SYS v MSDOS.SYS. + Tp tin COMMAND.COM l tp tin quan trng nht, c nhim v thng dch lnh v x l cc lnh ni tr. Khi khi ng my, COMMAND.COM c np vo b nh RAM. Khi nhn c lnh t bn phm, tp tin ny s nhn din v iu khin vic thi hnh cc lnh t ngi s dng.

TO

+ Hai tp tin IO.SYS v MSDOS.SYS l hai tp tin n, n cng c np vo RAM khi khi ng my. Chng c nhim v qun l v iu khin cc thit b ngoi vi v cc tp tin trn a. Tp lnh ni tr gm cc lnh chnh thng dng nh: Cc lnh lin quan n th mc: DIR, CD, MD, RD, PATH, TREE, ... Cc lnh lin quan n file: TYPE, DEL, COPY, REN, ... Cc lnh thi gian: TIME, DATE Cc lnh khc: PROMPT, CLS, VER, VOL,... Cc lnh ni tr c bn: * Chuyn a: C php : <K t a : > hoc < drive : >

Vi drive: l a cn chuyn n. Mun chuyn t a C sang a A ta g C:\> A: ri nhn nt Enter. Tng t chuyn t A: sang U: ta g lnh U: * Lit k th mc (DIR) Hin th danh sch cc tp tin v cc th mc con c trong th mc. C php: Ghi ch: /P : hin th tng trang mn hnh (Page) DIR [drive :] [path][/P][/W][/A : attribs][/O : sortorder]

/W : hin th theo hng ngang (Wide), lt b bt s liu v kch thc byte, ngy, gi. /A : hin th thuc tnh (Attribut) ca file

/Option: cc nh hin th trt t sp xp: N : theo alphabetic tn file; E : theo alphabetic tn phn m rng S : theo kch thc bytes (t nh n ln) D : theo ngy thng v gi (t trc n nay)

G : theo nhm th mc trc * To th mc mi (Make Directory - MD) To mt th mc mi trong a hoc th mc hin hnh. C php: * MD [drive :][path]<tn th mc mi>

i th mc (Change Directory - CD) C php: V d 4.5 Ghi ch: - T th mc con, mun tr v th mc cha, ta g: CD.. - Nu mun v thng th mc gc, ta g: - hin th ng dn hin hnh, ta g: CD\ CD CD [drive :] {path} C:\>CD PASCAL s c C:\PASCAL>_

Xem ni dung tp tin trn mn hnh (TYPE) C php: Ghi ch: - Lnh TYPE dng hin th mt tp tin vn bn cha m ASCII mi c c. - Cc file cha m nh phn ca chng trnh nh cc file *.EXE, *.COM, *.BIN,... th khi g lnh TYPE s khng c bnh thng c. TYPE [drive:][path]<file name>

Xa th mc (Remove Directory - RD) Xo b mt th mc con rng (khng cha cc tp tin v th mc con). C php: RD [drive :] <path>

Sao chp tp tin (COPY) C php 1: sao chp tp tin sang mt v tr khc. COPY [drive1 :][path1]<filename1> [drive2:][path2][<filename2>] Ghi ch:

- Mun copy mt nhm tp tin, ta c th dng cc k t i din ca tp tin l du * hoc ? trong <filename> - Nu khng vit <filename 2> th my s hiu l sao chp m khng i tn tp tin. Khi a [drive1:] phi khc [drive2:] hoc ng dn <path1> khc <path2> - Khi khng ch r a v ng dn th my s hiu ang thc hin trn a v th mc hin hnh. C php 2: cho php ni cc tp tin c sn thnh mt tp tin mi chung. COPY <file 1> + <file 2> [+ ... + <file n>] [<new_file>] Ghi ch: - Nu khng t tn tp tin mi th tt c cc tp tin s ghp chung vo <file 1> > c th ni dung c s c thay bng ni dung mi. - Tn <new_file > khng c trng vi tn cc tp tin cn ghp. C php 3: sao chp tp tin ra my in. COPY <filename> PRN C php 4: dng lnh COPY to ra mt tp tin vn bn n gin. COPY CON <filename> Ghi ch: * Sau khi g Enter, ta c th nh vo mt vi on vn trn bn phm ty . Mun kt thc, nh t hp phm Ctrl+Z hay F6 v Enter lu tr. Khi g Enter xung dng, ta khng di chuyn con tr tr ln dng trn c. Li vn bn sai khng th sa ni dung trc tip khi lu, ngoi tr phi dng cc trnh son tho vn bn khc. - Nu <new_file

Xo tp tin (Delete - DEL) C php: Ghi ch: - C th xo mt lot <tn file> nu dng cc k t * v ? - [/P] to nhc xc nh tng tp tin mun xa - Xa tt c cc tp tin th dng lnh DEL *.* khi my s hi li : DEL [drive:][path]<file name>[/P]

All files in directory will be deleted ! Are you sure (y/n) ? _

(Tt c cc tp tin s b xa !

Bn c chc khng (y/n) ?)

G y (yes) nu mun xa tt c v n (no) khi khng mun dng lnh xa tt c. - Lnh DEL khng xa cc tp tin n (hiden) v tp tin ch c (read only). Mun xo cc tp tin ny ta phi dng lnh ATTRIB ngoi tr thay i thuc tnh ca n. - Nu DEL mt th mc th xa ht cc tp tin trong th mc . * i tn tp tin (Rename - REN) C php: Ghi ch: - <old_file> : tn tp tin c cn i <new_file> : tn tp tin mi REN [drive:][path]<old_file> <new_file>

- Trng hp tp tin mi c tn ri hoc khng c tp tin c, my s bo: Duplicate file name or file not found * Xa mn hnh (ClearScreen - CLS) C php: * CLS

Du i lnh (PROMPT) C php: Ghi ch: - Lnh ny nh dng li du i lnh ca MS-DOS theo ring ca ngi s dng. - $text l chui cc k t lin tip nhau, trc mi k t c k hiu $ $P $G $L $Q $T $D : a v th mc hin hnh : du > : du < : du = : gi hin hnh : ngy hin hnh PROMPT [$text]

$N $V $_ *

: a hin hnh : phin bn ca MS-DOS : xung hng

Xem v chnh thi gian (TIME) C php: Ghi ch: - Sau khi Enter, trn mn hnh s xut hin gi pht giy hin ti ca h thng. V d 4.5: TIME TIME [hh:mm:ss]

Current Time is 9 : 30 : 15 Enter new time : _ - Nu khng cn thay i thi gian, ta nhn Enter xc nhn. - Mun chnh thi gian, ta nhp gi : pht : giy ph hp ti v tr con tr. * Xem v chnh ngy thng (DATE) C php: Ghi ch: - Sau khi g Enter, trn mn hnh s hin ngy thng nm hin ti ca h thng. - Kiu ngy thng nm do ngi s dng thit lp. V d 4.6: DATE DATE [mm-dd-yy]

Current date is Sun 09-15-96 Enter new date (mm-dd-yy) : _ - Nu khng mun thay i ngy thng ca h thng, ta g Enter xc nhn. - Nu mun thay i ngy thng, ta g theo th t s : thng-ngy-nm Lu : khi g sai, my s bo : Invalid date (ngy thng khng hp l). Khi ngy thng ca h thng vn gi nguyn v ta phi dng lnh DATE nhp li ngy thng cho h thng. Cc my tnh Pentium hin nay u th hin phn nm l 4 con s, v d :

Current date is Fri 08-04-2000 b. Lnh ngoi tr ( external command) Lnh ngoi tr cng l nhng lnh cha cc chc nng no ca iu hnh nhng t c s dng hn lnh ni tr nn c trn a hay th mc ring tn b nh. Cc lnh ngoi tr phi c np t a vo trong b nh mi chy c. Khi thc hin xong cu lnh, vng b nh c cha cu lnh ngoi tr s b thu hi. Cc tp lnh ngoi tr c phn m rng l EXE hay COM hoc BAT. Khi gi lnh m my khng tm thy trn mn hnh hnh s xut hin cu bo li Bad command or file name (Sai lnh hoc khng c tn tp tin). Cc lnh ngoi tr nh: Cc lnh lin quan n a: FORMAT, LABEL, CHKDSK, DISKCOPY, ... Cc lnh lin quan n t chc h thng: SYS, TREE, DELTREE, ... Cc lnh lin quan n tp tin: UNDELETE, ATTRIB, FIND, ... Cc lnh khc: PRINT, GRAPHICS, SORT, ... Mt s lnh ngai tr thng dng: * To khun a (FORMAT)

Lnh FORMAT c tc dng khi to khun cho mt a mi hay to li dng khun cho a c. Khi thc hin lnh FORMAT xong th ton b d liu trong a c hon ton b xo sch. C php: Ghi ch: - Tham s /S dng to ra a h thng. DOS s to dng v chp vo a 3 file h thng l COMMAND.COM (file hin), IO.SYS v MSDOS.SYS (file n). - Tham s /U thc hin format khng iu kin (Unconditional) - Tham s /Q thc hin format nhanh (Quick) - Tham s /V[:label ] ch nh tn nhn (label) ca a V d 4.7: C:\>format A: Insert new diskette for drive A : and press ENTER when ready ... (a a mi vo A: v n phm Enter khi sn sng ...) mun format bnh thng a A: FORMAT [drive :][/S][/U][/Q][/V[:label]]

Sau l qu trnh format. Ta c th quan st qu trnh ny qua s % thc hin. Khi format xong, my s hin th dng yu cu cho tn a v bn c th cho tn a vi ti a 11 k t v c quyn s dng k t trng, nu khng cn t tn, ta c th nhn Enter cho qua lun.

Checking existing disk format Saving UNFORMAT information Verifying 1.44 M (90% persent completed) Format complete.

(Kim tra s tn ti a nh dng Lu cc thng tin UNFORMAT Th 1.44 M (90% phn trm hon tt) Hon tt nh dng

Volume label (11 characters, Enter for none) ?Tn nhn (11 ch, Enter nu khng)? 1,457,644 bytes total disk space 1,457,644 bytes available on disk 1,457,644 tng s bytes trn a 1,457,644 bytes dng c trn a

512 bytes in each allocation unit 512 bytes trn mi n v allocation 2,847 allocation units avalable on disk 2,847 n v allocation cn trng trn a Volume Serial Number is 2264 - 14E2 Format another (Y/N) ? S s-ri ca a l 2264 - 14E2 nh dng a khc khng (Y/N) ?

G Y nu mun nh dng da khc, N nu mun tr v. * Thay i thuc tnh ca file (ATTRIB) Mi tp tin u c 4 thuc tnh (attribute) : R, S, H, A. Read Only System Hidden : Thuc tnh ch c, khng th thay i ni dung : Thuc tnh h thng, h iu hnh DOS s ch c bit. : Thuc tnh n, khi dng lnh DIR s khng thy.

Archive : Thuc tnh lu tr, thng dng vi cc lnh nh BACKUP, XCOPY ... to ra cc file d phng. C php: ATTRIB [-R|+R] [-S|+S] [-H|+H] [-A|+A] [drive:][path]<file name> Vi du | l hoc, hoc chn t (+) thuc tnh hoc xa (-) thuc tnh ca tp tin. * Lit k cy th mc TREE C php: Ghi ch: TREE [dirve :] [path] [/F] [/A]

/F : /A: *

Th hin tn cc tp tin trong tng th mc Dng ASCII thay cho cc k t m rng

Xa cy th mc DELTREE Lnh ny xa th mc c ch nh v tt c cac th mc con, tp tin ca n. C php: Ghi ch: directory name l tn th mc i din cho mt cy (nhnh) th mc cn xa. Nu c ty chn /y c ngha l ngi s dng xc nhn vic xa cy th mc ny l chc chn. DELTREE [/y] [dirve :] [path] <directory name>

Phc hi file b xa (UNDELETE)

Ta c th khi phc li cc file l b xa do dng lnh DEL, min l vng cha file ny trong a cha b cc file khc chp chng ln v nht thit ta phi nh k t u tin ca tn file. C php: * UNDELETE [drive:][path]<file name>

Di chuyn file MOVE di file t ni ny sang ni khc (thay v dng COPY v DEL) C php 1: Di chuyn tp tin MOVE [drive:][path]<file name> <destination> Vi destination l ni di chuyn cc files n. C php 2: i tn th mc MOVE [drive:][path]<old-directory> <new-directory>

In vn bn ra my in (PRINT) C th in trc tip cc file vn bn cha m ASCII ra my in. C php: PRINT </D: device>[drive:][path]<filename>

Nu mun in trc tip cc thng tin hin th trn mn hnh ta c th dng t hp phm Shift + PrintScreen sau khi bt my in ln. Ty chn Device dng khai bo cng my in COM1, COM2, ... hoc LPT1, LPT2, ...

BI C THM TP LNH X L THEO L (BATCH FILE) V TP LNH CU HNH MY (CONFIG.SYS) --- oOo --I. TP LNH X L THEO L trnh vic phi g i g li mt chui lnh mt th gi, MS-DOS cho php ta t cc chui lnh trong mt tp tin, gi l tp lnh x l theo l (Batch File) cn gi l file BAT v u c phn m rng ca file l BAT. Khi s dng ta ch cn gi tn file BAT v nhn Enter th mt lot cc chui lnh trong n s tun t thi hnh. Trong file BAT, ta c th dng cc lnh ni tr v ngoi tr ca DOS, cc cu lnh, tham s ca BAT v cc chng trnh khc. Ta c th s dng cc lnh hoc chng trnh to vn bn ca DOS nh COPY CON, EDIT.COM, SIDEKICK, WINWORD,... to ra cc file BAT. V d: Dng lnh ca MS-DOS C:\>COPY CON NHAPDATA.BAT hay dng chng trnh EDIT : C:\>EDIT NHAPDATA.BAT Tp tin AUTOEXEC.BAT trong a h thng l mt file BAT c bit. Khi khi ng my, tun t cc lnh cha trong n s c thi hnh. Tp tin AUTOEXEC.BAT thng c cc lnh bo ng dn, thit lp cu hnh, to du nhc, bo ngy gi v mt s thng bo nhc nh ngi s dng. Ta c th to ra mt tp tin AUTOEXEC.BAT n gin sau: A:\>COPY CON AUTOEXEC.BAT REM TAP TIN KHOI DONG MAY ECHO OFF TIME DATE PATH C:\; C:\DOS; C:\NC; C:\PASCAL; C:\WINDOW; PROMPT $P$G

TO

ECHO == PHONG MAY TINH CHAO CAC BAN == G phm chc nng F6 (hoc Ctrl + Z) 1 file(s) copied Lp trnh cho file BAT : Ta c th lp trnh cho file BAT bng cch s dng cc lnh FOR, GOTO, IF, ... vi cc tham s hnh thc %0, 1%, 2%, ... (cho php s dng 10 tham s hnh thc t %0 n %9). Nu ta dng k hiu % nh mt thnh phn trong file BAT th phi ghi du % hai ln. Tham s %0 tng ng vi tn file BAT ang c thc hin v %1, %2,... tng ng vi cc tham s c a vo. V d: To mt file BAT n gin nh sau: A:\>COPY CON VANBAN.BAT ECHO %0 MD %1 CD %1 COPY C:\%2.TXT DIR A: G phm F6 (hoc Ctrl + Z) 1 file(s) copied Khi dng lnh: A:\>VANBAN TEXT BAOCAO Sau khi Enter, tn VANBAN s thay vo %0, tn TEXT s thay vo v tr %1 v BAOCAO s vo v tr %2. Do vy, my s hiu cn thi hnh tun t cc cng vic sau: - Hin th cu: VANBAN - M th mc: MD TEXT - Vo th mc: CD TEXT - Chp file BAOCAO.TXT t a C - Lit k tt c cc file trong a A

Cc cu lnh chnh dng trong file BAT: Trong file BAT cho php s dng du @ (a sign), nu t @ trc mt lnh th lnh khng hin th ra mn hnh m ch thi hnh lnh. ECHO C php: Ghi ch: - Lnh Echo cho php a ra (on) hay khng a ra (off) mn hnh cu lnh. bo> xut hin khng cn trng thi ca Echo l on/off CALL C php: Ghi ch: - Lnh Call cho php ta gi mt file BAT khc chy trong file BAT hin ti. - <batch file> l tn tp tin BAT khc m ta mun gi. - [argument] l lnh s thi hnh tip theo sau khi file BAT c gi. PAUSE C php: Ghi ch: - Lnh Pause tm thi dng thi hnh file BAT - [comment] dng ch thch hin th ra mn hnh, khng di qu 123 k t. - Cc lnh sau lnh Pause s tip tc khi ta g mt nt bt k trn bn phm. REM C php: Ghi ch: - Lnh REM(remark) ghi cc nhc nh [comment ] di khng qu 123 k t. - Cc comment ny s xut hin trn mn hnh nu trc ta c ECHO ON v ngc li, chng s khng xut hin khi c ECHO OFF. IF REM [comment] PAUSE [comment] CALL [drive:][path]<batch file>[argument] - <dng thng ECHO [on/off]<dng thng bo>

C php 1: Ghi ch:

IF [NOT] EXIST [drive:][path]<file name><Lnh>

- Lnh IF l lnh iu kin vi ngha: NU ... th thi hnh <Lnh> - IF [NOT] l ph nh (not ty chn): NU KHNG ... th thi hnh <Lnh> V d: Trong 1 file BAT ta c dng: COPY C:\DOS\*.COM A: IF EXIST A: EDIT.COM EXIT DIR A: Lnh trn c ngha l copy C:\DOS tt c cc file .COM vo a A. Nu a A c file EDIT.COM th thi khng thc hin na ( khi mt th gi) v thot ra (EXIT) thc hin dng tip l lit k cc file a A. C php 2: IF [NOT] String1 == String2 <Lnh>

Ghi ch: Nu chui k t String1 ging chui k t String2 th <Lnh> c thc hin. V d: IF %1 == IN ECHO MO MAY IN RA ! Ngha l nu chng trnh cha tham s %1 ng l IN th hin th (ECHO) dng ch MO MAY IN RA !. Ngc li, nu tham s %1 khng l IN th khng thi hnh lnh ECHO theo sau. C php 3: IF [NOT] ERRORLEVEL # <Lnh>

Ghi ch: Lnh iu kin ny bo mc li. Ty theo mc li nh m thc hin <Lnh> tng ng. V d: COPY C:\PRG\*.PAS A: IF ERRORLEVEL 1 ECHO KHONG COPY DUOC Ngha l copy tt c cc file .PAS C:\PRG qua A. V mt l do no ta khng copy c (khng c a A, hay i A b h hay a A y ...) th chng trnh s bo dng ch KHONG COPY DUOC. FOR C php: Ghi ch: - Lnh FOR thc hin vng lp vi tng file trong tp hp file. FOR %%<Bin> IN (Tp hp) DO <Lnh> [Tham s Lnh}

- Ngha l, <Bin> (variable) s ln lt nhn cc gi tr trong <Tp hp> (Set) thc hin <Lnh> (comamnd) theo [Tham s Lnh] (Command parameters). V d: FOR %%T IN (C:\VANBAN\*.TXT) DO COPY %%T A:\ Sao chp ln lt tt c cc file .TXT trong C:\VANBAN vo A:\ GOTO C PHP: Ghi ch: - Lnh GOTO l lnh di chuyn ti dng lnh ng sau <Nhn> (Label). - Trc <Nhn> phi c du hai chm (:), chiu di c gi tr ca <Nhn> ch c 8 k t mc du ta c th vit di hn ty . - Nu <Nhn> khng xc nh c trong file BAT th khi thi hnh lnh GOTO my s bo: Label not found V d: (Nhn khng tm thy) GOTO : <NHN>

FORMAT A:/S IF ERRORLEVEL 0 GOTO ECHO KHONG FORMAT A: DUOC

SHIFT C php: Ghi ch: - Lnh SHIFT dng thay i v tr tham s c th thay th c trong .BAT SHIFT

- File BAT c ti a 10 bin c th thay th t %0 n %9, khi dng SHIFT th s c mt s thay i bin nh sau: %0 mt i, %1 chp ln %0, v %2 chp ln %1, v %3 chp ln %2, ... - Lnh SHIFT c th dng qu 10 tham s. V d: Ta c file mang tn SAPCHU.BAT trong A vi ni dung sau: ECHO OFF ECHO %0 %1 %2 %3 SHIFT ECHO %0 %1 %2 %3 SHIFT

ECHO %0 %1 %2 %3 SHIFT Khi cho chy th vi dng lnh: A:\>SAPCHU Toi thich an kem lam Kt qu hin ra mn hnh l: A:\> ECHO OFF SAPCHU Toi thich an Toi thich an kem Thich an kem lam II. TP LNH CU HNH MY CONFIG.SYS Tp tin CONFIG.SYS l file to cu hnh h thng, n cho php ta thay i cc cu hnh chun (default) ca MS-DOS. Hu ht cc my vi tnh hin nay u c 2 tp tin ng thi l AUTOEXEC.BAT v CONFIG.SYS. Hai file ny cha cc thng tin lin quan n cu hnh h thng v t ti th mc gc ca a khi ng my. Tp tin CONFIG.SYS c th to bng lnh COPY CON CONFIG.SYS, hoc cc trnh lp vn bn nh EDIT.COM, WINWORD, .... Sau khi khi ng my, DOS s tm CONFIG.SYS trong th mc gc a khi ng h thng ca n. Nu khng tm thy CONFIG.SYS, DOS s lp cu hnh ca my theo tr mc nhin. Mt s lnh trong CONFIG.SYS BREAK C php: Ghi ch: Lnh BREAK dng nh ch kim tra bn phm, BREAK = ON cho php ta dng t hp phm Ctrl +C (hay Ctrl+Break) ngng vic thi hnh lnh, mun tt ch BREAK ta s dng lnh BREAK = OFF. BUFFERS C php: Ghi ch: - Lnh BUFFERS l lnh cp pht b nh m, ngha l nh s sectors cho vng nh m ca h thng. Vng nh m dng lu tr ni dung ca file m chng trnh hin hnh ang dng. BUFFERS = <n> BREAK = ON/OFF

- <n> l gi tr vng nh m c th c gi tr t 2 n 255. Khi cu trc th mc tr nn phc tp, th nn tng cng s buffers to hiu qu thm cho DOS. Tuy nhin, qu nhiu buffers th vng nh trng cn li ca chng trnh v d liu s t i. - Thng thng, gi tr vng nh m c khai bo l buffers = 30. COUNTRY C php: Ghi ch: - Lnh COUNTRY ch nh cc thng tin cho MD-DOS v ngy, gi, tin t,... ph hp vi mi quc gia. Lnh ny cng ch ra b m k t ca nc . - xxx l m in thoi quc t ca mt nc : 001 ca M, 084 ca Vit nam, ... - yyy l trang m (code page) ca mt nc. - filename l tp tin thng tin quc gia, nu khng c DOS s s dng COUNTRY.SYS ca h thng. FILES C php: Ghi ch: - Lnh Files dng xc nh s tp tin m MS-DOS c th m ra ng thi x l. Trng hp, s files m ra nhiu hn s nh th gp dng thng bo: Too many files open (M qu nhiu tp tin) FILES = <x> COUNTRY = xxx[,[yyy],[drive:]<filename>]

- S file <x> c th t 8 n 255. Gi tr mc nhin l 8, thng th Files = 30 DEVICE C php: Ghi ch: - Lnh DEVICE dng ci module iu khin cc thit b cho MS-DOS - <file name> l tn tp tin dng iu khin thit b, th d nh: ANSI.SYS CONFIG.SYS DISPLAY.SYS PRINTER.SYS DRIVER.SYS RAMDRIVE.SYS (VDISK.SYS) ... DEVICE = [drive:][path]<file name>[argument]

- [argument] ch ra cc thng tin ca dng lnh m chng trnh iu khin thit b yu cu.

V d: Lnh cho php xc nh mt phn b nh ca my tnh nh l mt cng, vng b nh ny gi l RAM disk v lm vic nh mt a a (virtual disk) : DEVICE = C:\DOS\RAMDRIVE.SYS 100/E cu lnh trn s to ra mt a o c kch thc 100 KB nm trong vng nh m rng (/E : Expanded Memory). Tn a o s l tn alphabetic tip theo tn ca a cng. V d a cng chia thnh 2 c tn l C: v D: th a o s c tn l E: SHELL C php: Ghi ch: - Lnh SHELL cho php s dng b x l lnh cp cao (top-level command processor) thay th lnh COMMAND.COM. - <filename> l tn ca chng trnh x l lnh. SHELL =[drive:][path]<filename>

CHNG 5 CC PHN MM H TR

I.

II.

PHN MM TIN CH NORTON COMMANDER. 1. Gii thiu. 2. Cc thao tc cn bn trong NC. VIRUS TIN HC V CCH PHNG CHNG. 1. Virus tin hc l g?. 2. Cch phng chng Virus. 3. Cc chng trnh kim tra v dit Virus thng dng.

I. PHN MM TIN CH NORTON COMMANDER 1. Gii thiu Norton Commander (vit tt l NC) l mt trong nhng chng trnh tin ch chy trong mi trng DOS. NC c s dng nhiu Vit nam v nhiu quc gia khc. u im ca NC l n gin, d s dng v khng chim nhiu khng gian, b nh m vn cc chc nng c bn v nng cao. S dng c NC, ta d dng khai thc cc trnh ng dng tng t nh Norton Utilities, PC Tools, Xtree Gold, File Manager trong Windows, v.v...

TO

Phin bn Norton Commmander c dng ph bin hin nay ti Vit nam l NC version 4.0 v version 5.0. Chng ta c th ci t ton b hay mt phn chng trnh. Hai file quan trng nht ca NC l NC.EXE v MCMAIN.EXE. Thng NC c ci trong phn Path ca Autoexec.bat. i vo NC, t du nhc ca DOS, ta g NC ri nhn Enter. Khi , trn mn hnh s xut hin hai ca s gi l Panels, nh sau:

Hnh 5.1: Panel lm vic ca Norton Commander Panel c vin sng c gi l ca s lm vic hin thi. Mun chuyn ca s lm vic ta dng phm Tab. Trn cc panels, c th c c cc thng tin: Ni dung ca cc th mc v files hin thi Cu trc th mc trn a Cc thng tin v chng trnh, b nh, file trng trn a hin hnh Dng cui cng l cc phm nng (HotKey) ch dn cc thao tc nhanh. F1 Help F2 Menu F3 View F4 Edit F5 Copy : : : : : Hng dn Gi Thc n ca ngi s dng Xem ni dung file c vt sng hin hnh Son tho, sa cha ni dung file Sao chp files sang ni khc Di chuyn files hoc i tn To th mc con Xa files hoc th mc M menu lm vic ca NC

F6 RenMov : F7 Mkdir F8 Delete F9 PullDn : : :

F10 Quit T hp phm: Ctrl + F1 Ctrl + F2

Thot khi chng trnh

: :

dng n/ hin Panel tri dng n/ hin Panel phi phm Tab : chuyn i vt sng gia cc ca s

2. Cc thao tc cn bn trong NC * Xem cy th mc

TO

Nhn F9 - ta c dng Menu hng trn, vo Right (Left) nu mun cy th mc xut hin Panel Phi (Tri tng ng), g Enter. Mt bng nh sau xut hin: Trong bng ny c nhiu option cho ta la chn, mun vo mc no ta ko vt sng (highlight) xung dng (hoc nhn phm ch c nh du mu) ri nhn Enter. V d, mun xem cy th mc (Tree) th ta ko vt sng xung v tr Tree (hoc nhn phm T) ri nhn Enter. Hnh 5.2: Option ca Thc n Right

Trn mn hnh s cho ta hnh nh sau:

Hnh 5.3: Hnh nh cy th mc Panel phi * Chn th mc lm vic hoc file

Th mc (Directory) v file l 2 i tng chnh ca NC. Th mc th hin bng ch in hoa, trong khi file th hin bng ch thng. Ta c th dng cc phm di chuyn trn bn phm nh , PageUp, PageDown i n cc th mc v file chn. Vt sng nm th mc hay file no l NC ang lm vic ti th mc hay file . Khi a vt sng n cc files c phn m rng l .BAT, .COM v .EXE v nhn Enter th NC s thc hin ngay lnh trong mi trng ca n. Khi hon tt vic thc thi cc file , chng trnh quay tr v NC. * Chn mt nhm files

Mun chn mt nhm files hoc tng th mc, ta di chuyn vt sng n cc files hoc th mc v g vo nt <Insert> trn bn phm chn, khi tn file chn s i sang mu sng trn mn hnh panel. Trng hp mun hy vic chn la, ta cng di chuyn vt sng n ch file cn hy chn v nhn <Insert> mt ln na, khi mu sng ca file bin mt. * Chn mt nhm hoc tt c cc files

Mun chn tt c cc files trong mt panel hin hnh hoc mt nhm cc files da trn k hiu i din, ta g nt <+> vng phm s, khi trn mn hnh s xut hin hp thoi:

Khi g Enter, tt c cc file trong panel s c chn v ng lot i sang mu sng. Nu ta ch mun chn mt nhm tp tin c cng mt kiu t tn no th c th s dng cc k t i din nh ? hay * v g Enter khi nh xong. * Sao chp, di chuyn v xo files

Khi cc nhm file c chn th ta c th sao chp, di chuyn hoc xa b ty . ch mc nh, files hoc th mc s theo cu lnh m sao chp hoc di chuyn sang th mc i din. C th dng cc thao tc sau : Nhn F5 (Copy) Nhn F6 (RenMov) Nhn F8 (Delete) : : : sao chp files qua th mc khc i tn hay di chuyn files xa files hay th mc ch nh ng dn

chn th mc ch, ta dng phm Alt-F10 v cc phm mi tn hay g trc tip tn ng dn.

bo v files khi b xa hoc chp ln, NC lun a ra cc thng bo cn thit ngi s dng khng nh li ca mnh. * To th mc

Dng phm F7 to th mc (Make Directory), sau g tn th mc v nhn Enter. Trng hp, g tn th mc m khng g ng dn th NC mc nhin to th mc con trong th mc ca panel hin hnh. * Chuyn th mc Cch n gin nht l a vt sng n th mc cn chuyn v n Enter. T hp phm <Alt + F10> s hin th cy th mc v ta dng cc phm mi tn di chuyn n th mc cn chuyn v g Enter. * Chuyn a

Dng t hp phm <Alt + F1> v cc phm mi tn chn a thch hp v g Enter, khi ni dung a va chn s xut hin panel bn tri. Khi dng t hp phm <Alt + F2> th ni dung a s panel phi mn hnh. * Tm kim file

tm kim nhanh mt file no trong th mc hin hnh, ta nhn gi phm Alt v ng thi g cc k t u tin ca tn file. Nu cho cc k t u ca tn file cng nhiu th mc tm kim cng nhanh. Trng hp khng r th mc cha file hoc tn file nm cc th mc khc nhau, ta c th s dng t hp phm <Alt + F7>, sau g tn file cn tm v nhn Enter. Khi g tn file ta c th s dng cc k t ? hoc * nh trn DOS. NC s tm kim cho n khi ta c dng chn mt file no trong nhm chn Stop v Enter ngng. Cc phm mi tn va tm thy. Nu chn tip ChDir v Enter, chng trnh s a ta vo lm vic vi th mc cha file va tm c. Chc nng New search ca NC cho php bt u li vic tm kim. Chc nng Change drive dng chuyn a cn tm kim.

Ci t thuc tnh cho files Trong MS-DOS, cc files c th c cc thuc tnh (attributes) sau : Archive Read Only Hidden : System : : thuc tnh lu tr thuc tnh ch c

thuc tnh n : thuc tnh h thng

NC c th gip ta thay i thuc tnh cho file hoc mt nhm file. nh du cc files cn t/hy thuc tnh Nhn ln lt phm F9 v cc thc n con /File/File attributes. Hp thoi nh sau s xut hin:

Dng cc phm mi tn v phm chn SPACE nh du. Ct set l thit lp, ct clear l hy b thuc tnh. Chn chc nng set hng di cng thc hin lnh. II. VIRUS TIN HC V CCH PHNG CHNG 1. Virus tin hc l g ? Virus tin hc hay cn gi l virus my tnh (computer virus) l mt on chng trnh n, c kch thc nh, c kh nng t sao chp, sinh si ny n nh mt virus sinh hc, ly lan nhanh v c th gy nguy c ph hoi cc phn mm h ca h iu hnh, xa mt phn hay ton b cc tp tin d liu, to ra cc tp tin v ngha chim ly khng gian b nh ca my, hoc ch n thun tru chc hay e da sung ngi s dng, ... Thot u, virus tin hc l v kh ca nhng ngi vit phn mm mun bo v sn phm ca h chng vic sao chp bt hp php. Sau mt s ngi to ra cc virus khc nhm mc ch ph hoi hay n thun ch t khng nh mnh v cy vo trong cc my khc gy ly nhim trn mt din rng. Nm 1987, virus Lehigh ln u tin c pht hin trn my IBM PC. Cng lc , virus Brain t Pakistan xm nhp vo cc trng i hc ca M. Mt virus khc t i hc Hebrew, Israel cng xut

TO

hin. T n nay, hng ngn chng loi virus c thng bo pht hin gy ph hoi, t lit nhiu h thng my trn ton th gii gy thit hi nhiu triu dollars. Virus c chia thnh 2 nhm chnh: + B-virus (Boot-virus) : l cc virus chuyn tn cng ln cc Boot sector hay Master boot, in hnh nh : Brain, Nops, Clock, Stone, Sign 01/91, ... + F-virus (File-virus) : l cc virus ch tn cng ln cc file .COM v .EXE, in hnh nh : Friday 13th, Yankee Doodle, DataLock, Keypress, VN01, ... Hay mt s chuyn ph hoi cc file c phn m rng .DB* ca cc chng trnh dBase, FoxBase hay chuyn ph hoi cc file vn bn c phn m rng l .DOC nh virus Concept, Macro, .... Ngoi ra, mt s virus va mang c 2 tnh ph hoi Boot v File nh virus Dark Avenger .... Ngi ta cn lo ngi mt s ngi ang c tnh to ra cc virus cn c th xm nhp vo cc h thng mng my tnh qua ng truyn th in t (E-mail) hoc mng Internet, mng ca cc ngn hng ln gy o ln cc s liu ti khon, hoc xm nhp vo cc h thng my tnh qun s to nn nhng bo ng gi rt nguy him ... Hin nay, mt s nc ra nhng iu lut xem nhng k c tnh to ra cc virus tin hc ph hoi, ly cp mt m, ... (gi chung l nhng k tin tc - hackers) nh l nhng ti phm hnh s. 2. Cch phng chng virus - Khng chp cc chng trnh m bn khng r ngun gc v c bit cha qua th tc kim tra virus. - Cc file d liu quan trng cn phi c COPY lu tr d phng v c th dng cc chng trnh PKZIP.EXE hay ARJ.EXE .... nn li, tit kim a. - C th s dng nhiu phn mm BACKUP lu. - Dng lnh BACKUP v RESTORE ca DOS nh sau: Mu lnh: Cc option l: /S /M /A : : : lu tr c th mc con ch lu cc file b i so vi ln lu cui cng lu thm cc file vo a lu tr ch nh kch thc a cn nh dng Ch lu tr cc file b thay i k t ngy ... Ch lu tr cc file b thay i k t thi im ... BACKUP source destination - drive : [Option]

TO

/F :[ size] : /D: date : /T : time :

/L[:[drive:][path]logfile ] : To nn mt file nht k vo u vo ghi cc thao tc lu tr V d mun lu tr th mc DOS v cc th mc con ca n vo B, ta g: C:\>BACKUP C:\DOS B:/S My s thng bo dng tin: Insert backup diskette 01 in drive B : WARNING ! Files in the target drive B:\ root directory will be erased Press any key to continue .. Sau khi lu tr vo B, ta c th xem trn da c ni dung: C:\>dir B: Volume in drive B is BACKUP 001 Volume Serial Number is 001F- 012B Directory of B:\ BACKUP 1 file(s) 001 1, 432, 246 04-20-96 6:20p

1, 432, 246 bytes 7, 754 bytes free

Chng trnh RESTORE l chng trnh khi phc cc file trong BACKUP Mu lnh nh sau: RESTORE drive1 : drive2 : [path[filename]] [Option] trong : drive1 : ch a cha file backup

drive2 :[path[filename]] : ch r cc file cn phc hi cc options l: /S : Phc hi tt c file trong cc th mc con trong ng dn

/P : Bo cho ta bit trc khi khi phc cc read-only-files hoc cc file thay i t ln backup cui cng (nu cc thuc tnh ph hp c thit lp).

/M /N /D

: Ch khi phc cc file c thay i k t ln backup cui : Ch khi phc cc file khng c trn a nhn : Hin th cc file trn a backup ph hp vi c t

/B:date: Ch khi phc cc file c thay i k t trc ngy .... /A:date: Ch khi phc cc file c thay i k t sau ngy .... /E:time: Ch khi phc cc file c thay i k t trc thi im .... /L:time: Ch khi phc cc file c thay i k t sau thi im .... Vi v d trn, mun khi phc th mc DOS, ta g: C:\>RESTORE B: C : /S Insert backup diskette 01 in drive B : Press any key to continue ... *** *** Files were backed up 04 - 20 - 96 Restoring files from drive B : *** *** <Enter>

Diskette : 01 Ch : Chng ta khng cn ch nh r th mc con. 3. Cc chng trnh kim tra v dit virus thng dng Ta cn c mt s a khc phng nga s mt mt h thng: Chng trnh NORTON UTILITIES c file RESCUE.EXE gip bn to mt a cp cu lu tr cc bng FAT, Boot Sector, CONFIG.SYS ... ca my vi tnh. To mt a khi ng my, cha cc tp tin: COMMAND.COM IO.SYS MSDOS.SYS AUTOEXEC.BAT CONFIG.SYS SYS.COM

TO

NDD.EXE ... v mt s a cha chng trnh qut v dit virus c phin bn (version) mi nht, nh: - SCAN.EXE v CLEAN.EXE ca Cng ty Mc-Afee, M - VSAFE.EXE ca MS-DOS, M - MSAV.EXE ca MS-DOS, M - NORTON ANTIVIRUS CA NORTON, M - ATV.EXE ca Ng Anh V v Phm D Lim, H Kinh t TP. HCM - TAV.EXE ca Dng Hng Tn, Trn Thanh Sn, Unisoft, TP. HCM - D2.COM ca Trng Minh Nht Quang, H Ti chc TP. Cn Th - BKAV ca i hc Bch khoa H Ni - v.v..

CHNG 6 C BN V NGN NG LP TRNH PASCAL

I. II.

III. IV.

V.

GII THIU. CC PHN T C BN CA NGN NG PASCAL. 1. B K T. 2. T kha. 3. Tn chun. 4. Danh hiu t t. CU TRC MT CHNG TRNH PASCAL. CC KIU D LIU C S : INTEGER, REAL, BOOLEAN, CHAR. 1. Khi nim. 2. Kiu s nguyn (Integer type). 3. Kiu s thc (Real type). 4. Kiu logic (Boolean type). 5. Kiu k t (Char type). CC KHAI BO HNG, BIN, KIU, BIU THC, .... 1. Hng. 2. Bin.

3. Kiu. 4. Biu thc. VI. CC TH TC XUT/NHP. 1. Cu lnh. 2. Cu trc tun t. 3. Cu trc r nhnh. 4. Cu trc lp. BI C THM NHP & XUT D LIU TRONG TURBO PASCAL.

I. GII THIU Pascal l tn ca mt trong cc ngn ng lp trnh cp cao thng dng. Ngn ng lp trnh Pascal c gio s Niklaus Wirth trng i hc K thut Zurich (Thy s) thit k v cng b vo nm 1970. Niklaus Wirth t tn cho ngn ng ny l Pascal tng nh n nh Ton hc v Trit hc Php th k 17 l Blaise Pascal, ngi pht minh ra mt my tnh c kh n gin u tin ca con ngi. Ngn ng Pascal c dng hin nay c nhiu im khc bit vi chun Pascal nguyn thy ca Gio s Wirth. Ty theo quc gia hoc cng ty pht trin cho ra i cc chng trnh bin dch ngn ng Pascal nh: ISO PASCAL (International Standards Organization) ca Chu u ANSI PASCAL (American National Standards Institute) ca M TURBO PASCAL ca hng BORLAND (M) IBM PASCAL ca hng Microsoft (M) v.v... n nay, ngn ng Pascal pht trin n phin bn Turbo Pascal Version 7. Cc din gii v v d trong gio trnh ny ch yu s dng chng trnh Turbo Pascal 5.5 - 7.0, hin ang c s dng rng ri Vit Nam. II. CC PHN T C BN CA NGN NG PASCAL 1. B k t - B 26 ch Latin: Ch in: Ch thng: - B ch s thp phn: - K t gch ni di: A, B, C, ..., X, Y, Z a, b, c, ..., x, y, z 0, 1, 2, 3, ..., 8, 9 _

TO

- Cc k hiu ton hc: 2. T kha

+, -, *, /, =, <, >, (, ), [, }

TO

L cc t ring ca Pascal, c ng ngha c xc nh, khng c dng n vo cc vic khc hoc t tn mi trng vi cc t kha. - T kha chung: PROGRAM, BEGIN, END, PROCEDURE, FUNCTION - T kha khai bo: CONST, VAR, TYPE, ARRAY, STRING, RECORD, SET, FILE, LABEL - T kha ca lnh la chn: IF ... THEN ... ELSE, CASE ... OF - T kha ca lnh lp: FOR... TO... DO, REPEAT... UNTIL - T kha iu khin: WITH, GOTO, EXIT, HALT - T kha ton t: AND, OR, NOT, IN, DIV, MOD 3. Tn chun Tn chun l tn c nh ngha sn trong Pascal, nhng ngi ta c th nh ngha li nu mun. Trong Pascal ta c cc tn chun sau y: Boolean, Char, Integer, Word, Byte, Real, Text False, True, MaxInt Abs, Arctan, Chr, Cos, Sin, Eof, Eoln Exp, Ln, Odd, Ord Round, Trunc, Sqr, Pred, Succ Dispose, New, Get, Put, Read, Readln, Write, Writeln FOR... DOWNTO... DO, WHILE... DO,

TO

Reset, Rewrite 4. Danh hiu t t Trong Pascal t tn cho cc bin, hng, kiu, chng trnh con ta dng cc danh hiu (identifier). Danh hiu ca Pascal c bt u bng mt ch ci, sau c th l cc ch ci, ch s hay l du ni, khng c c khong trng v di ti a cho php l 127. V d 6.1: Sau y l cc danh hiu: x; S1; Delta; PT_bac_2

Pascal khng phn bit ch thng v ch hoa trong mt danh hiu. V d 6.2: aa v AA l mt; XyZ_aBc v xyZ_AbC l mt

Khi vit chng trnh ta nn t cc danh hiu sao cho chng ni ln cc ngha ca i tng m chng biu th. iu ny gip chng ta vit chng trnh d dng v ngi khc cng d hiu ni dung chng trnh. III. CU TRC MT CHNG TRNH PASCAL

TO

Hnh 6.1: S cu trc chng trnh Pascal V d 6.3: PROGRAM USES VAR Hello; Crt; { Dng tiu } { Li gi s dng cc n v chng trnh }

Name : string; { Khai bo bin } { C th c nhiu Procedure v Function } Begin ClrScr; { Lnh xa mn hnh }

PROCEDURE Input;

Write(' Hello ! What is your name ?... ');Readln(Name); End; BEGIN Input; Writeln (' Welcome to you, , Name') ; Writeln (' Today, we study PASCAL PROGRAMMING ... '); Readln; END. Mt chng trnh Pascal c cc phn: * Phn tiu : Phn ny bt u bng t kha Program ri tip n l tn ca chng trnh v chm dt bng du chm phy (;) Tn chng trnh phi c t theo ng qui cch ca danh hiu t t. Phn tiu c hay khng cng c. * Phn khai bo d liu: Trc khi s dng bin no phi khai bo bin , ngha l xc nh r xem bin thuc kiu d liu no. Mt chng trnh Pascal c th c mt s hoc tt c cc khai bo d liu sau: CONST : khai bo hng ... TYPE ... VAR ... * Phn khai bo chng trnh con: Phn ny m t mt nhm lnh c t tn chung l mt chng trnh con khi thn chng trnh chnh gi n th c nhm lnh c thi hnh. Phn ny c th c hoc khng ty theo nhu cu. : khai bo cc bin : nh ngha kiu d liu mi { Thn chng trnh chnh }

* Phn thn chng trnh: Phn thn chng trnh l phn quan trng nht v bt buc phi c, phn ny lun nm gia 2 t kho l BEGIN v END. gia l lnh m cc chng trnh chnh cn thc hin. Sau t kha END l du chm (.) bo kt thc chng trnh. * Du chm phy (;): Du ; dng ngn cch cc cu lnh ca Pascal v khng th thiu c. * Li ch thch: Li ch thch dng ch gii cho ngi s dng chng trnh nh nhm trao i thng tin gia ngi v ngi, my tnh s khng n li ch thch ny. Li ch thch nm gia k hiu: { } hoc (* *) IV. CC KIU D LIU C S: INTEGER, REAL, BOOLEAN, CHAR 1. Khi nim D liu (data) l tt c nhng g m my tnh phi x l. Theo Niklaus Wirth: CHNG TRNH = THUT TON + CU TRC D LIU Mt kiu d liu (data type) l mt qui nh v hnh dng, cu trc v gi tr ca d liu cng nh cch biu din v cch x l d liu. Trong Pascal cc kiu d liu gm cc loi sau: - Kiu n gin (Simple type): bao gm kiu s nguyn (Integer), kiu s thc (Real), kiu logic (Boolean), kiu k t (Char). - Kiu c cu trc (Structure type): bao gm mng (Array), chui (String), bn ghi (Record), tp hp (Set), tp tin (File). - Kiu ch im (pointer): Trong chng ny, chng ta ch xt cc kiu d liu n gin. 2. Kiu s nguyn (Integer type) a. Kiu s nguyn thuc Z cha trong Turbo Pascal c nh ngha vi cc t kha sau: T KHA BYTE SHORTINT S BYTE 1 1 PHM VI 0 .. 255 - 128 .. 127

TO

TO

INTEGER WORD LONGINT

2 2 4

- 32768 .. + 32767 0 .. 65535 - 2147483648 .. 2147483647

b. Cc php ton s hc i vi s nguyn K HIU + * / DIV MOD SUCC (n) PRED (n) ODD (n) NGHA Cng Tr Nhn Chia cho kt qu l s thc Chia ly phn nguyn Chia ly phn d n+1 n-1 TRUE nu n l v FALSE nu n chn 3. Kiu s thc (Real type) Turbo Pascal, kiu s thc thuc tp hp R cha trong 6 bytes, c nh ngha vi t kha REAL: R =([2.9 x 10-39 , 1.7 x 1038 ] Hay vit theo dng s khoa hc: R = ( [2.9E-39, 1.7E38]

TO

S thc c th vit theo kiu c du chm thp phn bnh thng hoc vit theo kiu thp phn c phn m v phn nh tr. Cc php ton s hc c bn +, -, * , /d nhin c s dng trong kiu real. Bng di y l cc hm s hc cho kiu s thc: K HIU ABS (x) SQR (x) SQRT(x) SIN(x) COS (x) ARCTAN (x) LN (x) ln x : ly logarit nepe ca tr x (e ( 2.71828) EXP (x) ex TRUNC (x) ly phn nguyn ln nht khng vt qu tr s x ROUND (x) lm trn gi tr ca x, ly s nguyn gn x nht 4. Kiu logic (Boolean) Mt d liu thuc kiu BOOLEAN l mt i lng c cha trong 1 byte Turbo Pascal v ch c th nhn c mt trong hai ga tr logic l TRUE (ng) v FALSE (sai). NGHA |x| : ly gi tr tuyt i ca s x x2 : ly bnh phng tr s x : ly cn bc 2 cua tr s x sin (x) : ly sin ca x cos (x) : ly cos ca x arctang (x)

TO

Qui c:

TRUE > FALSE

Cc php ton trn kiu Boolean: A TRUE TRUE FALSE FALSE Nhn xt: Php AND (v) ch cho kt qu l TRUE khi c 2 ton hng l TRUE Php OR (hoc) ch cho kt qu l FALSE khi c 2 ton hng l FALSE Php XOR (hoc trit tiu) lun cho kt qu l TRUE khi c 2 ton hng l khc nhau v ngc li. Cc php ton quan h cho kt qu kiu Boolean: K HIU <> = > < >= <= 5. Kiu k t (Char type) NGHA khc nhau bng nhau ln hn nh hn ln hn hoc bng nh hn hoc bng B TRUE FALSE TRUE FALSE NOT A FALSE FALSE TRUE TRUE A AND B TRUE FALSE FALSE FALSE A OR B TRUE TRUE TRUE FALSE A XOR B FALSE TRUE TRUE FALSE

TO

Tt c cc d liu vit dng ch k t c khai bo bi t kha CHAR. Mt k t c vit trong hai du nhy n ( ). tin trao i thng tin cn phi sp xp, nh s cc k t, mi cch sp xp nh vy gi l bng m. Bng m thng dng hin nay l bng m ASCII (xem li chng 3). thc hin cc php ton s hc v so snh, ta da vo gi tr s th t m ASCII ca tng k t, chng hn: 'A' < 'a' v s th t m ASCII tng ng l 65 v 97. Trong Turbo Pascal mi k t c cha trong 1 byte. Cc hm chun lin quan n kiu k t: K HIU ORD(x) CHR(n) hay #n PRED(x) SUCC(x) NGHA Cho s th t ca k t x trong bng m Cho k t c s th t l n Cho k t ng trc x Cho k t ng sau x

V. CC KHAI BO HNG, BIN, KIU, BIU THC, ... 1. Hng (constant) a. nh ngha Hng l mt i lng c gi tr khng i trong qu trnh chy chng trnh. Ta dng tn hng chng trnh c r rng v d sa i. b. Cch khai bo CONST <Tn hng> = <gi tr ca hng> ; V d 6.4: CONST Siso = 100; X = xxx ; 2. Bin (variable) a. nh ngha Bin l mt cu trc ghi nh c tn ( l tn bin hay danh hiu ca bin). Bin ghi nh mt d liu no gi l gi tr (value) ca bin. Gi tr ca bin c th c bin i trong thi gian s dng bin. S truy xut ca bin ngha l c gi tr hay thay i gi tr ca bin c thc hin thng qua tn bin. V d 6.5: Readln (x) ; Writeln (x) ; x := 9 ; Bin l mt cu trc ghi nh d liu v vy n phi tun theo qui nh ca kiu d liu : mt bin phi thuc mt kiu d liu nht nh. b. Cch khai bo VAR <Tn bin> : <Kiu bin> ; V d 6.6: VAR

TO

TO

a : Real ; b, c : Integer ; TEN : String [20] X : Boolean ; Chon : Char ; Cn khai bo cc bin trc khi s dng chng trong chng trnh. Khai bo mt bin l khai bo s tn ti ca bin v cho bit n thuc kiu g. 3. Kiu (Type) a. nh ngha Ngoi cc kiu nh sn, Pascal cn cho php ta nh ngha cc kiu d liu khc t cc kiu cn bn theo qui tc xy dng ca Pascal. b. Cch khai bo TYPE <Tn kiu> = <M t xy dng kiu> ; V d 6.7: TYPE SoNguyen = Integer ; Diem = Real; Tuoi = 1 .. 100 ; Color = (Red, Blue, Green) ; Thu = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ; v khi khai bo kiu g th ta c quyn s dng khai bo bin nh v d sau: V d 6.8: VAR i, j : SoNguyen ; Dtb : Diem ; T : tuoi ;

TO

Mau : Color ; Ngay_hoc : Thu; 4. Biu thc (Expression) a. nh ngha Mt biu thc l mt cng thc tnh ton bao gm cc php ton, hng, bin, hm v cc du ngoc. V d 6.9: 5 + A * SQRT(B) / SIN(X) (A AND B) OR C b. Th t u tin Khi tnh gi tr ca mt biu thc, ngn ng Pascal qui c th t u tin ca cc php ton t cao n thp nh sau: Mc u tin: 1. 2. 3. 4. 5. 6. V d 6.10: Cc php ton: Biu thc trong ngoc n ( ) Php gi hm Not, *, /, DIV, MOD, AND +, -, OR, XOR =, <>, <=, >=, <, >, IN (4+5)/3 + 6 - (sin((/2)+3)*2 = (9)/3 + 6 - (1+3)*2 = 3 + 6 - 8 = 1

TO

c. Qui c tnh th t u tin Khi tnh mt biu thc c 3 qui tc v th t u tin nh sau: Qui tc 1 : Qui tc 2 : tri sang phi. Qui tc 3 : Cc php ton no c u tin cao hn s c tnh trc. Trong cc php ton c cng th t u tin th s tnh ton s c thc hin t Phn trong ngoc t trong ra ngoi c tnh ton tr thnh mt gi tr n.

d. Kiu ca biu thc L kiu ca kt qu sau khi tnh biu thc.

V d 6.11:

Biu thc sau c gi l biu thc Boolean:

not (('a'>'c') and ('c'>'C')) or ('B'='b') c gi tr TRUE VI. CC TH TC XUT/NHP 1. Cu lnh (statement) a. Trong mt chng trnh Pascal, sau phn m t d liu l phn m t cc cu lnh. Cc cu lnh c nhim v xc nh cc cng vic m my tnh phi thc hin x l cc d liu c m t v khai bo. b. Cu lnh c chia thnh cu lnh n gin v cu lnh c cu trc. (xem phn bi c thm) - Cu lnh n gin + Vo d liu : + Ra d liu + Lnh gn : : Read, Readln Write, Writeln := (gi trc tip tn ca chng trnh con)

TO

+ Li gi chng trnh con + X l tp tin : - Cu lnh c cu trc + Lnh ghp : + Lnh chn :

RESET, REWRITE, ASSIGN ...

BEGIN .. END IF .. THEN .. ELSE CASE .. OF .

+ Lnh lp

FOR .. TO .. DO REPEAT .. UNTIL WHILE .. DO

c. Cc cu lnh phi c ngn cch vi nhau bi du chm phy ( ; ) v Cc cu lnh c th vit trn mt dng hay nhiu dng. 2. Cu trc tun t a. Lnh gn (Assignment statement)

TO

Mt trong cc lnh n gin v c bn nht ca Pascal l lnh gn. Mc ch ca lnh ny l gn cho mt bin khai bo mt gi tr no cng kiu vi bin. * Cch vit: <Tn_bin> := <biu thc> ; V d 6.12: VAR c : Char ; i,j : Integer ; x, y : Real ; p, q : Boolean ; th ta c th c cc php gn sau : c := A ; c := Chr(90) ; i := (35+7)*2 mod 4 ; i := i div 7 ; x := 0.5 ; x := i + 1 ; q := i > 2*j +1 ; q := not p ; * ngha: Bin v cc pht biu gn l cc khi nim quan trng ca mt h cc ngn ng lp trnh m Pascal l mt i din tiu biu. Chng phn nh cch thc hot ng ca my tnh hin nay, l: - Lu tr cc gi tr khc nhau vo mt nh ti nhng thi im khc nhau. - Mt qu trnh tnh ton c th coi nh l mt qu trnh lm thay i gi tr ca mt (hay mt s) nh no , cho n khi t c gi tr cn tm. b. Lnh ghp (Compound statement) Mt nhm cu lnh n c t gia 2 ch BEGIN v END s to thnh mt cu lnh ghp. Khi khai bo

Trong Pascal ta c th t cc lnh ghp con trong cc lnh ghp ln hn bao ngoi ca n v c th hiu tng t nh cu trc ngoc n ( ) trong cc biu thc ton hc. * S :

Hnh 6.2: S cu trc BEGIN .. END; hnh minh ha trn ta d thy cc nhm lnh thnh tng khi (block). Mt khi lnh bt u bng BEGIN v chm dt END; . Trong mt khi lnh cng c th c cc khi lnh con nm trong n. Mt khi chng trnh thng c dng nhm t 2 lnh tr ln to thnh mt <Cng vic> ca cc lnh c cu trc, ta c th gp khi nim ny trong nhiu v d cc phn sau. 3. Cu trc r nhnh a. Lnh IF .. THEN .. v Lnh IF .. THEN .. ELSE.. * Lu din t cc lnh v ngha cch vit:

TO

Hnh 6. 3: Lnh IF <iu kin> THEN <Cng vic>;

Hnh 6. 4: Lnh IF .. THEN .. ELSE ..; Ch : - iu kin l mt biu thc Boolean. - Nu <Cng vic>sau THEN hoc ELSE c nhiu hn mt lnh th ta trong BEGIN .. END; - Ton b lnh IF .. THEN .. ELSE xem nh 1 lnh n. V d 6.13: Tnh cn bc 2 ca mt s PROGRAM Tinh_can_bac_hai ; VAR a : Real ; BEGIN Write ( Nhp s a = ) ; Readln(a) ; IF a < 0 THEN Write (' a : 10 : 2 , l s m nn khng ly cn c !!! ') ELSE Writeln (' Cn s bc 2 ca , a : 2 : 2 , la , SQRT(a) :10 : 3 '); Writeln (' Nhn ENTER thot ... ') ; Readln; {Dng mn hnh xem kt qu} phi gi l i

END. Ghi ch: Trong chng trnh trn, a ta thy c dng a :m :n vi ngha m l s nh khong m phn nguyn ca a s chim ch v n l khong cho s tr phn thp phn ca a. b. Lnh CASE .. OF * Lu biu din:

Hnh 6.5: Lu lnh CASE .. OF * Cch vit, ngha: Cch vit CASE <Biu thc > OF GT1 : Cng vic 1 ; ....................... GTi : Cng vic i ; ....................... ELSE Cng vic 0 ; END; Ghi ch: - Lnh CASE .. OF c th khng c ELSE - Biu thc chn l kiu ri rc nh Integer, Char, khng chn kiu Real ngha Xt gi tr ca biu thc chn Nu c gi tr 1 (GT1) th thi hnh Cng vic 1 ................................... Nu c gi tr i (GT i) th thi hnh Cng vic i .................................... Nu khng Cng vic 0 c gi tr no tha th thc hin

- Nu mun ng vi nhiu gi tr khc nhau ca biu thc chn vn thi hnh mt lnh th gi tr c th vit trn cng mt hng cch nhau bi du phy (,) : Gi tr k1, k2, ..., kp : Lnh k ; V d 6.14: PROGRAM Chon_mau ; VAR color : char ; BEGIN write (' Chn mu theo mt trong 3 k t u l R / W / B ') ; readln ( color) ; CASE color OF 'R' ,'r' : write (' RED = mu ') ; 'W', 'w' : write (' WHITE = mu trng ') ; 'B' , 'b' : write (' BLUE = mu xanh dng ') ; END ; Readln; END. 4. Cu trc lp a. Lnh FOR Cu trc FOR cho php lp li nhiu ln mt dy lnh. S ln lp li dy lnh bit trc. Pht biu FOR c 2 dng: FOR .. TO .. DO FOR .. DOWNTO ..DO * C php tng qut l: FOR <bin m> := <tr u> TO/DOWNTO <tr cui> DO <Cng vic>; * Lu : m ln m xung

TO

Hnh 6. 6: Lu pht biu FOR .. TO .. DO Ch : Tr u, tr cui l cc bin hoc hng v bin m phi l kiu ri rc. V d 6.15: Chng trnh in mt dy s t 0 n 9 PROGRAM Day_So ; VAR i : Integer ; BEGIN FOR i := 0 TO 9 DO Write (i) ; Readln ;

END. b. Lnh WHILE .. DO * Lu ca lnh

Hnh 6. 7: Lu cu trc WHILE .. DO * ngha lu : Trong khi m iu kin cn ng th c thc hin Cng vic, ri quay tr v kim tra iu kin li. Vng lp c tip tc, n khi iu kin t ra khng cn ng na th i ti thc hin lnh tip theo * C php WHILE <iu kin> DO <Cng vic>

Hnh 6.8: S c php lnh WHILE .. DO Ghi ch: iu kin trong cu trc lp WHILE .. DO l mt biu thc logic kiu Boolean ch c 2 gi tr l ng (True) hoc Sai (False) Nu iu kin ng th chng trnh s chy trong cu trc WHILE .. DO. Sau mi ln lp, chng trnh tr li kim tra iu kin. Ty theo biu thc logic ca iu kin l ng hay Sai th chng trnh s thc hin Cng vic tng ng. Nu Sai th chuyn xung di cu trc WHILE .. DO V d 6.16: Chng trnh tnh trung bnh n s: x1 + x2 + x3 + ... + xn Program Trung_binh_Day_So ;

VAR n, count : Integer ; x, sum, average : real ; BEGIN count := 1 ; sum := 0 ; Write (' Nhp n = ') ; readln (n) ; WHILE count < n+1 DO BEGIN Write (' Nhp gi tr th' , count,' ca x = ' ) ; readln (x) ; sum := sum + x ; count := count + 1 ; END ; average := sum/n ; Writeln (' Trung bnh l =' , average : 10 : 3 ) ; Writeln (' Nhn Enter thot ...' ) ; Readln ; END. c. Lnh REPEAT .. UNTIL Cu lnh REPEAT .. UNTIL dng trong cc trng hp khi bin iu khin khng c kiu ri rc v c bit trong cc trng hp s ln lp khng bit trc.

Hnh 6.9: Lu cu trc ca REPEAT .. UNTIL * ngha cu lnh: Nu iu kin logic l Sai (False) th lp li lnh cho n khi iu kin ng th mi thot ra khi cu trc REPEAT .. UNTIL. Nu c nhiu cu lnh th mi lnh ngn cch nhau bng du chm phy (;)Cng vic ca REPEAT v UNTIL khng nht thit phi dng lnh ghp nhm t 2 lnh n tr ln thnh cng vic.

Hnh 6.10: S c php REPEAT .. UNTIL V d 6.17: Vi bi ton trung bnh cng mt dy s v d trc c th vit theo cu trc REPEAT .. UNTIL nh sau: PROGRAM Trung_binh_Day_So ; VAR n, count : Integer ; x, sum : real ; BEGIN count := 1 ; sum := 0 ; Write := (' Nhp n = ') ; readln (n) ; REPEAT Write (' Nhp gi tr th' , count, 'ca x = ') ; readln(x) ; sum := sum + x ;

count := count + 1 ; UNTIL count > n ; Writeln (' Trung bnh l =' , sum/n : 8 :2 ) ; Readln ; END. Ghi ch: So snh 2 cch vit WHILE .. DO v REPEAT .. UNTIL ta thy c s khc bit: - Trong cu trc WHILE .. DO th <iu kin> c kim tra trc, nu tha <iu kin> th mi thc hin <Cng vic>. - Ngc li, trong cu trc REPEAT .. UNTIL th <Cng vic> s c thc thi trc sau mi kim tra <iu kin>, nu khng tha <iu kin> th tip tc thi hnh <Cng vic> cho n khi <iu kin> l ng. Lnh REPEAT .. UNTIL thng c s dng trong lp trnh, nht l lc ngi s dng mun tip tc bi ton trng hp thay i bin m khng phi tr v chng trnh v nhn t hp phm Ctrl + F9 li. V d 6.18: Nhn 2 s a v b PROGRAM Tich; VAR a, b : integer ; CK : char ; BEGIN REPEAT Write (' Nhp s a = '); Readln (a) ; Write (' Nhp s b = '); Readln (b) ; Writeln (' Tch s ca a x b l :' , a*b : 10 ) ; Writeln (' Tip tc tnh na khng (CK) ? '); Readln (CK) ; UNTIL upcase(CK) = K; {hm chuyn i k t trong bin} {CK thnh k t in hoa}

END. BI C THM NHP V XUT D LIU TRONG TURBO PASCAL --- oOo --Thng thng, chng trnh Turbo Pascal c t trong mt th mc ring r c tn TP. s dng Turbo Pascal, ta cn c cc tp tin ti thiu: - TURBO.EXE - TURBO.TP - Cc file ha : *.BGI - TURBO.TPL - GRAPH.TPU - Cc Font ch trong ha : *.CHR

TO

S dng cu lnh Turbo v nhn Enter, mn hnh s xut hin :

tr gip ngi s dng, phm chc nng F10 c tc dng m cc Menu vi nhiu Options khc nhau. Ta cng c th kch hot trn thanh Menu chnh bng cch kt hp phm <Alt - K t mc tng ng>, v d kch hot mc File, ta nhn ng thi phm Alt- F, sau dng cc phm mi tn v nt Enter chn la v ra lnh thi hnh. Phm F1 tr gip th hin cc thng tin trn mn hnh. Ta c th s dng cc t hp phm to ra cc khi ch hoc cu lnh (trn mn hnh thy c s thay i mu) ta c th sao chp, ct dn, xa b ... Ctrl-K-B Ctrl-K-K Ctrl-K-C nh du u khi nh du cui khi Chp khi ti sau v tr con tr

Ctrl-K-V Ctrl-K-Y Ctrl-K-W Ctrl-K-R Ctrl-K-H

Di chuyn khi ti sau v tr con tr Xa khi hin hnh Ghi khi hin hnh vo a nh mt tp tin c khi tp tin ghi vo a vo sau v tr con tr Tt/ M khi

Mt chng trnh my tnh, s c cc bc cn bn sau:

Trong tho chng Turbo Pascal, cc th tc nhp d liu c dng: TH TC NHP READ(x1, x2, ..., xn) NGHA Nhp cc bin x1, x2, ..., xn theo hng ngang t bn phm (con tr khng xung hng). READLN(x1, x2, ..., xn) Nhp cc bin x1, x2, ..., xn theo hng dc t bn phm (mi ln nhp con tr xung hng). READLN; ASSIGN(F, File_Name); RESET(F); READ(F, x1, x2, ..., xn) ; Dng chng trnh, i Enter mi tip tc. M tp tin F c tn l File_Name Chun b c tp tin c cc gi tr trn tp tin F ra cc bin x1, x2, ..., xn tng ng CH := ReadKey ; KEYPRESSED TH TC XUT WRITE(x1, x2, ..., xn) c mt k t t bn phm vo bin k t CH Mt hm c gi tr l TRUE c bm v l FALSE nu ngc li. NGHA Vit gi tr trong cc bin x1, x2, ..., xn ra mn hnh theo hng ngang (con tr khng xung hng). WRITELN(x1, x2, ..., xn) Vit gi tr trong cc bin x1, x2, ..., xn ra mn hnh nu c mt phm

theo hng dc (mi ln vit tr x c xung hng). WRITELN; WRITELN(I : n); WRITELN(R : n : m); Xung hng Vit ra gi tr ca bin nguyn I vo n ch tnh t phi sang tri. Nu d ch (ch s ca I < n) s trng Vit ra gi tr ca bin thc R vo n ch, ch ly m s thp phn. WRITELN( abc... ); Vit ra nguyn vn chui k t abc...

WRITELN (LST, x1, x2, ..., xn) Vit ra my in cc tr bin x1, x2, ..., xn ASSIGN(F, File_Name) REWRITE(F) ; WRITE (F, x1, x2, ..., xn) ; CLOSE (F) ; M tp tin F c tn l File_Name chun b vit vo Vit cc gi tr x1, x2, ..., xn vo tp tin F ng tp tin F

Cn lu tr chng trnh ta dng phm F2. M mt file c ta dng phm F3. thay Ctrl+F5. i kch thc/Di chuyn ca s chng trnh, dng phm F5 v

Trng hp m nhiu chng trnh, ta dng phm F6 v Ctrl+F6 i n/tr v trc chng trnh hin hnh. bin dch v kim tra li, ta dng phm F9. chy chng trnh son tho xong, nh Ctrl+F9 Mun thot khi Turbo Pascal v tr v DOS, nh Alt+X.

CHNG 7 CHNG TRNH CON V N V CHNG TRNH


I. II. KHI NIM V CHNG TRNH CON. TH TC V HM. 1. Th tc. 2. Hm. TRUYN THAM S CHO CHNG TRNH CON.

III.

TNH QUI TRONG CHNG TRNH CON. UNIT. 1. Khi nim. 2. Cc Unit chun. VI. UNIT T TO. 1. Cc bc to ra mt Unit. 2. V d. BI C THM LP TRNH THEO CU TRC TRN - XUNG.

IV. V.

I. KHI NIM V CHNG TRNH CON Khi lp trnh, chng ta thng c nhng on chng trnh hay php tnh lp li nhiu ln. Nu mi ln lp li, ta phi vit nhng on lnh nh nhau th chng trnh ca chng ta tr nn di dng, ri rm v mt thi gian v ch. gii quyt nhng trng hp nh vy, Pascal cho php chng ta to ra cc module, mi module mang mt on chng trnh gi l chng trnh con (subroutine hay subprogram). Mi chng trnh con s mang mt ci tn khc nhau. Mt module ch cn vit mt ln v sau chng ta c th truy xut n nhiu ln, bt k ni no trong chng trnh chnh. Khi cn thit, chng ta ch vic gi tn chng trnh con ra thi hnh lnh. Nh s dng chng trnh con, chng trnh c th tit kim c nh. ng thi, ta c th kim tra tnh logic trong tin trnh lp trnh cho my tnh in t, c th nhanh chng loi b nhng sai st khi cn hiu chnh hay ci tin chng trnh. y l khi nim c bn trong tng lp chng trnh c cu trc. Mt qu trnh tnh cng c th c nhiu chng trnh con lng ghp vo nhau. Trong Pascal, chng trnh con c vit di dng th tc (procedure) v hm (function). Cu trc ca 2 kiu chng trnh con ny th tng t vi nhau, mc du cch truy xut ca chng c khc nhau v cch trao i thng tin trong mi kiu cng c im khc nhau. Hm (function) tr li mt gi tr kt qu v hng thng qua tn hm v hm c s dng trong biu thc. V d hm chun, nh hm sin(x) m chng ta bit trong chng trc c th c xem nh mt chng trnh con kiu function vi tn l sin v tham s l x. Trong khi , th tc (procedure) khng tr li kt qu thng qua tn ca n, do vy, ta khng th vit cc th tc trong biu thc. Cc lnh Writeln, Readln trong chng trc c xem nh cc th tc chun. Mt chng trnh c chng trnh con t thit lp c 3 khi (block) : * Khi khai bo

TO

* Khi chng trnh con * Khi chng trnh chnh

II . TH TC V HM * Mt s khi nim bin:

TO

Bin ton cc (global variable): Cn c gi l bin chung, l bin c khai bo u chng trnh, n c s dng bn trong chng trnh chnh v c bn trong chng trnh con. Bin ton cc s tn ti trong sut qu trnh thc hin chng trnh. Bin cc b (local variable): Cn c gi l bin ring, l bin c khai bo u chng trnh con, v n ch c s dng bn trong thn chng trnh con hoc bn trong thn chng trnh con khc nm bn trong n (cc chng trnh con lng nhau). Bin cc b ch tn ti khi chng trnh con ang hot ng, ngha l bin cc b s c cp pht b nh khi chng trnh con c gi thi hnh, v n s c gii phng ngay sau khi chng trnh con kt thc. Tham s thc (actual parameter) l mt tham s m n c th l mt bin ton cc, mt biu thc hoc mt gi tr s (cng c th bin cc b khi s dng chng trnh con lng nhau) m ta dng chng khi truyn gi tr cho cc tham s hnh thc tng ng ca chng trnh con. Tham s hnh thc (formal parameter) l cc bin c khai bo ngay sau Tn chng trnh con, n dng nhn gi tr ca cc tham s thc truyn n. Tham s hnh thc cng l mt bin cc b, ta c th xem n nh l cc i s ca hm ton hc. * Li gi chng trnh con (th tc v hm): chng rrnh con c thi hnh, ta phi c li gi n chng trnh con, li gi chng trnh con thng qua tn chng trnh con v danh sch cc tham s tng ng (nu c). Cc qui tc ca li gi chng trnh con: Trong thn chng trnh chnh hoc thn chng trnh con, ta ch c th gi ti cc chng trnh con trc thuc n. Trong chng trnh con, ta c th gi cc chng trnh con ngang cp c thit lp trc . 1. Th tc (Procedure): Th tc l mt on cu trc chng trnh c cha bn trong chng trnh Pascal nh l mt chng trnh con. Th tc c t tn v c th cha danh sch tham s hnh thc (formal parameters). Cc tham s ny phi c t trong du ngoc n ( ). Ta c th truy xut th tc bng cch gi tn ca th tc. Chng trnh s t ng truy xut th tc ng tn gi v thc hin cc lnh cha trong th tc . Sau khi thc hin th tc xong, chng trnh s tr li ngay lp tc sau v tr cu lnh gi th tc . C 2 loi th tc: + th tc khng tham s + v th tc c tham s. a. Cu trc ca th tc khng tham s PROCEDURE < Tn th tc > ; { Cc khai bo hng, bin, kiu cc b... } BEGIN

TO

{ ... cc lnh trong ni b th tc ... } END ; V d 7.1: Tm s ln nht trong 3 tr s nguyn

PROGRAM Largest ; (* Xc nh s ln nht trong 3 tr s nguyn c nhp vo *) VAR a, b, c : integer ; yn : char ; PROCEDURE maximum ; VAR max : integer ; BEGIN IF a > b THEN max := a ELSE max := b ; IF c > max THEN max := c ; Writeln (' S ln nht l' , max ) ; END ; BEGIN yn := Y ; WHILE ( upcase(yn) = Y ) DO BEGIN Writeln (' Nhp 3 s nguyn : ') ; Readln (a, b, c ) ; maximum ; (* --- Li gi th tc maximum --- *) Write (' Tip tc nhp 3 s mi khng (y/n) ? ') ; Readln (yn) ; END ; END. Ch : (* on chng trnh chnh *)

Trong chng trnh trn, th tc maximum c khai bo trc khi n c truy xut, cc bin a, b, c c gi nhp vo chng trnh chnh v bin max c nh ngha bn trong th tc. iu ny cho ta thy, khng phi lc no cng cn thit khai bo bin ngay u chng trnh chnh. b. Cu trc ca th tc c tham s PROCEDURE < Tn th tc > (<danh sch tham s hnh thc : kiu bin>); { Cc khai bo hng, bin, kiu cc b ... } BEGIN { ... cc lnh trong ni b th tc ... } END ; Khi vit mt th tc, nu c cc tham s cn thit, ta phi khai bo n (kiu, s lng, tnh cht, ...). Cc tham s ny gi l tham s hnh thc (formal parameters). Mt th tc c th c 1 hoc nhiu tham s hnh thc. Khi cc tham s hnh thc c cng mt kiu th ta vit chng cch nhau bi du phy (,). Trng hp cc kiu ca chng khc nhau hoc gia khai bo tham s truyn bng tham bin v truyn bng tham tr (s hc phn sau ) th ta phi vit cch nhau bng du chm phy (;). V d 7.2: Tnh giai tha ca mt s PROGRAM Tinh_Giai_thua ; VAR n : integer ; gt : real ; {cc bin chung} PROCEDURE giaithua (m : integer ); VAR i : integer ; {i l bin ring} BEGIN gt := 1 ; FOR i := 1 TO m DO gt := gt * i ; END ; BEGIN (* Thn chng trnh chnh *) Readln (n) ;

Write('Nhp s nguyn n (0 <= n < 33) = ') ; If n>=0 then

Begin giaithua (n) ; Writeln ('Giai tha ca , n, l :' , gt: 10 : 0) ; End Else Writeln(' Khng tnh giai tha ca mt s m! ') ;

Readln; END. Trong chng trnh trn m l cc tham s hnh thc ca th tc giaithua. Khi gi th tc giaithua (n) th tham s thc n c truyn tng ng cho tham s hnh thc m. V d 7.3: Gii phng trnh ax2 + bx + c = 0, theo dng chng trnh con lng nhau: PROGRAM Giai_PTB2; VAR hsa, hsb, hsc:real; PROCEDURE {cc bin ton cc}

Ptb2(a,b,c:real); {a, b, c l cc tham s hnh thc ca Ptb2}

Var delta:real; {bin cc b} PROCEDURE Ptb1(a1,b1:real); {a,b l cc tham s hnh thc ca Ptb1} Begin if a1=0 then if b1=0 then writeln('Phng trnh v s nghim') else writeln('Phng trnh v nghim') else writeln('Phng trnh c nghim =',-b1/a1:8:2); End; {kt thc th tc Ptb1} Begin {bt u th tc Ptb2}

(3) (4)

if a=0 then ptb1(b,c) {b, c l cc tham s thc cho Ptb1} else begin delta:=sqr(b)-4*a*c; if delta>0 then begin writeln('Nghim x1= ',(-b+sqrt(delta))/(2*a):8:2); writeln('Nghim x2= ',(-b-sqrt(delta))/(2*a):8:2); end else if delta=0 then writeln('Nghim kp x1=x2= ',-b/(2*a):8:2) else writeln('delta <0 => Phng trnh v nghim'); end; End; {kt thc th tc Ptb2}

Begin (1) (2) (5)

{chng trnh chnh} write('Nhp cc h s a, b, c = ');readln(hsa, hsb, hsc); Ptb2(hsa,hsb,hsc); readln; {hsa, hsb, hsc l cc tham s thc cho Ptb2}

End. {kt thc chng trnh} v d trn, th th tc Ptb2 v th tc Ptb1 c gi l th tc lng nhau. dng (4), ta thy hsa, hsb, hsc li c hiu l cc tham s thc, chng truyn gi tr bin cho cc tham s hnh thc a, b, c tng ng trong th tc Ptb2. Nu ta li xt n th tc con ca th tc Ptb2 l Ptb1 th cc tham s a, b, c ny (chnh xc l b v c) li l tham s thc i vi Ptb1, vi b v c c truyn tng ng cho cc tham s hnh thc a, b ca th tc Ptb1.

Nh vy ta nhn thy rng, vn xc nh c u l bin ton cc, u l bin cc b, u l tham s thc v u l tham s hnh thc (tham s bin v tham s tr) l ng bc no m chng trnh ang thc hin? y l phn then cht nm c cch vn hnh v kt qu ca chng trnh x l. S minh ha cch vn hnh v qun l bin ca chng trnh:

2. Hm (Function) : Hm l mt chng trnh con cho ta 1 gi tr kiu v hng. Hm tng t nh th tc nhng tr v mt gi tr thng qua tn hm v li gi hm tham gia trong biu thc. Cu trc mt hm t t gm: FUNCTION <Tn hm> (<Tham s hnh thc : kiu bin>) : <Kiu kt qu> ; { cc khai bo hng, bin, kiu ccbb... } BEGIN { ... cc khai bo trong ni b hm ... } END ; Trong : - Tn hm l tn t t cn tun th theo nguyn tc t tn trong Pascal. - Kiu kt qu l mt kiu v hng, biu din kt qu gi tr ca hm. - Mt hm c th c 1 hay nhiu tham s hnh thc, khi c nhiu tham s hnh thc cng mt kiu gi tr th ta c th vit chng cch nhau bng du phy (,). Trng hp cc tham s hnh thc khc kiu th ta vit chng cch nhau bng du chm phy (;).

TO

- Trong hm c th s dng cc hng, kiu, bin c khai bo trong chng trnh chnh nhng ta c th khai bo thm cc hng, kiu, bin dng ring trong ni b hm. Ch l phi c mt bin trung gian c cng kiu kt qu ca hm lu kt qu ca hm trong qu trnh tnh ton cui cng ta c 1 lnh gn gi tr ca bin trung gian cho tn hm. V d 7.4: FUNCTION TINH (x, y : integer ; z : real ) : real ;

y l mt hm s c tn l TINH vi 3 tham s hnh thc x, y, z. Kiu ca x v y l kiu s nguyn integer cn kiu ca z l kiu s thc real. Hm TINH s cho kt qu kiu s thc real. V d 7.5: Bi ton tnh giai tha (factorials)

PROGRAM giaithua ; VAR x : integer ; FUNCTION factorial (n : integer) : integer ; VAR heso, tichso : integer ; BEGIN tichso := 1 ; IF n <= 1 THEN factorial := 1 ELSE BEGIN FOR heso := 2 TO n DO

tichso := tichso * heso ; factorial := tichso; END ; END ; BEGIN Write (' Nhp vo mt s nguyn dng x = '); Readln (x) ; Writeln (' Vi x = , x , th giai tha s l : x ! = ' , factorial(x)) Readln; END. Ghi ch :

Khi khai bo kiu d kiu cho cc tham s hnh thc trong th tc v hm, ta cn phi ch im sau: Nu kiu d liu ca cc tham s hnh thc l cc kiu d liu c cu trc (kiu array, string, kiu record,... ) th vic khai bo kiu d liu cho cc tham s hnh thc nn c khai bo theo cch gin tip, tc l phi thng qua t kha TYPE. V d 7.6: Procedure Xuat1(hoten : string[25]); Procedure Xuat2(mang: array[1..10] of integer); Hai chng trnh con Xuat1 v Xuat2 u b li phn khai bo kiu d liu cho hai tham s hnh thc l hoten v mang. khc phc li ny, ta s khai bo gin tip mt kiu d liu str25 v M10 thng qua t kha TYPE nh sau: TYPE Str25=string[25]; {Str25 l mt kiu chui c di 25} M10=Array[1..10] of integer; {M10 l mt kiu d kiu mng c 10 phn t nguyn} Tip n, dng 2 kiu d liu mi nh ngha Str25 v M10 nh kiu cho cc tham s hnh thc hoten v mang nh sau: Procedure Xuat1(hoten : Str25); Procedure Xuat2(mang: M10); III. TRUYN THAM S CHO CHNG TRNH CON Khi truyn tham s trong Pascal, i hi phi c s tng ng v tn ca kiu d liu ca cc tham s hnh thc v tham s thc. Mt s nh ngha v qui tc v truyn tham s trong Pascal: - Nhng tham s hnh thc nm sau t kha VAR gi l tham s bin (variable parameter). Vi tham s bin, cc tham s thc bt buc phi l bin ch khng c l gi tr. Khi gi tr ca tham s bin thay i th n s lm thay i gi tr ca tham s thc tng ng v khi ra khi chng trnh con , tham s thc vn gi gi tr c thay i . - Nhng tham s hnh thc khng ng sau t kha VAR gi l tham s tr (value parameter), khi cc tham s thc c th l mt bin, mt biu thc, mt hng, hoc mt gi tr s. Cc tham s tr nhn gi tr t tham s thc khi truyn nh l gi tr ban u, khi gi tr ca tham s tr thay i th n s khng lm thay i gi tr ca tham s thc, ngha l gi tr ca tham s thc sau khi thot khi chng trnh con vn lun bng vi gi tr ca tham s thc trc khi truyn n chng trnh con . Do vy mt tham tr khng bao gi l kt qu tnh ton ca chng trnh con. Mt vi th d v tham s bin: V d 7.7: Vit chng trnh tnh lp phng.

TO

PROGRAM Parameter1; VAR num: integer; {num l bin ton cc} PROCEDURE LapPhuong(var a:integer); Begin a:=a*a*a; End; Begin write('Nhp s cn tnh lp phng num = '); readln(num); LapPhuong(num); {tham s thc num c truyn cho tham s bin a} writeln('Lp phng ca s va nhp =' , num); readln; End. V d 7.8: PROGRAM parameter2; VAR a, b : integer ; {bin ton cc } {a l mt tham s bin}

PROCEDURE thamso (x : integer ; VAR y : integer ) ; BEGIN x := x + 1 ; y := y + 1 ; Writeln (Trong procedure thamso, ... ) ; Writeln (' Hai s ca bn l a = , x : 3, v b = , y : 3 ) ; END ; BEGIN Write (' Nhp vo 2 tr s nguyn a, b : ') ; Readln (a, b) ; { x: l tham s tr , cn y l tham s bin}

Writeln (' Ban u, Bn nhp vo a =' , a : 3, 'v b =' , b : 3 ) ; thamso (a, b) ; {tham s thc a truyn cho tham s tr x tham s thc b truyn cho tham s bin y } Writeln (' Ngoi procedure thamso, ... '); Writeln (' Hin nay, s a l , a : 3, v b l , b : 3 ') ; Writeln (' Ta thy, a khng i v b thay i ! ') ; Readln; END. IV. TNH QUI CA CHNG TRNH CON Mt chng trnh con m trong qu trnh thit lp, n s gi chnh bn thn n th chng trnh con c tnh qui (recursion). V d 7.9: Bi ton tnh giai tha (factorials) theo cch qui. Bi ton ny c phn chng trnh chnh ging nh c v d trc: PROGRAM Giaithua ; VAR x : integer ; FUNCTION factorial (n : integer) : longint ; BEGIN IF n <= 1 THEN factorial := 1 {iu kin neo} ELSE factorial := n * factorial (n -1); END ; BEGIN Write (' Nhp vo mt s nguyn dng x = '); Readln (x) ; Writeln ; Writeln (' Kt qu ',x,'! = , factorial(x)); Readln; (*Tnh giai tha ca s n theo phng php qui *)

TO

END. Gi s ta nhp x = 4, th 4! = factorial(n), vi n = 4, ta c s minh ha nh sau:

Ch : - u im ca thut ton qui l ngn gn. N c kh nng nh ngha mt tp hp rt ln cc i tng bng mt s cc cu lnh hu hn. Thut ton qui c v thch hp cho cc bi ton m t thn cu trc d liu ca n c nh ngha theo li qui. - C mt s thut ton qui s dng cho cc bi ton n gin c th c thay th bng mt thut ton khc khng t gi chng, s thay th c gi l kh qui. - Trong mt s bi ton ta c th gii theo 2 cch: thut ton lp (xem chng trc) v thut ton qui. Thng thng, cch gii theo thut ton lp (WHILE .. DO) th tt hn so vi thut ton qui v qui i hi thm b nh v thi gian. Khi cc thanh ghi c s dng cho lu tr v khi quay tr v phi khi phc li trng thi c trong mi ln gi n chng trnh con. Mc phc tp c th gia tng khi trong chng trnh con theo thut ton qui c cha nhng chng trnh con khc. V vy, khi dng qui ta cn thn trng, nht l thut ton ny thng khng cho ta thy r trc tip ton b qu trnh gii cc bc. Ni chung, ch khi na khng th dng thut ton lp ta mi nn s dng thut ton qui. V. N V CHNG TRNH (UNIT) 1. Khi nim Lp trnh mt bi ton ln rt phc tp v vt v nu n phi s dng nhiu thut ton lp i lp li. Vic to ra nhiu mu chng trnh con nhm gim nh cng vic ca mt lp trnh vin (programmer). Tuy nhin, mi chng trnh con ch c ng dng c trong chnh chng trnh cha n m thi. khi mt thi gian vit li chng, ngi ta bin mi chng trnh con thnh cc module c lp, c bin dch sn v lu tr trn a nh mt th vin. Khi cn ta c vic gi cc module ny ra m khng cn phi vit li chng. Mi module nh vy c gi l mt n v chng trnh, hay gi tt l UNIT. Khi nim Unit c vo s dng t chng trnh Pascal version 4.0 tr i. C hai loi Unit l cc Unit chun do Turbo Pascal to sn v cc Unit t to do ngi lp trnh t vit ra. 2. Cc Unit chun

TO

TO

a. Mt s Unit chun trong Turbo Pascal 5.5 tr i * Unit SYSTEM * Unit CRT * Unit PRINTER * Unit GRAPH * Unit TURBO3 * Unit GRAPH3 : gm cc hng, bin, kiu, hm, th tc trong version 3.0 : : : : : gm cc hng, bin, kiu, ch Text ca version 5.5 gm cc hng, ch in n. bin, kiu, hm, hm, hm, hm, hm, th th th th th tc tc tc tc tc lin lin lin lin lin quan quan quan quan quan n n n n n

gm cc hng, bin, kiu, ch th ca version 5.5 gm cc hng, bin, kiu, ch Text ca version 3.0 gm cc hng, bin, kiu, ch th ca version 3.0

* Unit DOS : gm cc hng, bin, kiu, hm, th tc lin quan n h iu hnh MS-DOS * Unit OVERLAY : gm cc hng, bin, kiu, hm, th vic truy xut a ph lp khi chy chng trnh. tc lin quan n

Cc Unit trn c lu tr trong tp tin TURBO.TPL ca Turbo Pascal. Chng ta c th s dng chng trnh TPUMOVER.EXE ly ra hoc a vo mt hay nhiu Unit nhm tit kim b nh hay tng cng tin ch s dng. b. Cch gi Unit Mun s dng UNIT th trong u chng trnh ta phi khai bo Unit theo c php sau: USES <Tn Unit> [ { , <Tn Unit> } ] ; V d 7.10 USES CRT, GRAPH ;

c bit, ch ring Unit SYSTEM th khng cn phi khai bo. c. Mt s th tc v hm trong Unit CRT * ClrScr * ClrEol ti ch * InsLine * DelLine : th tc xa mn hnh : th tc xa k t bn phi con tr mn hnh, sau khi xa con tr : th tc xen vo mt hng v tr con tr mn hnh : th tc xa b mt hng v tr con tr mn hnh vn

* GotoXY(XPos, Ypos): a con tr mn hnh v v tr c ta Xpos v Ypos. X c gi tr t 1 - 80, v Y c gi tr t 1 - 25 * Delay(time): to thi gian tr tnh theo milisecond. Time l mt s nguyn dng lm chm chng trnh cho ta kp quan st d liu * Sound(F) * NoSound : th tc to ra m thanh vi tn s F (hz). F l s nguyn : th tc tt m thanh

* LowVideo v NormVideo: th tc mn hnh, khi gi LowVideo th mi k t vit ra mn hnh c sng yu dn i cho n khi nhn th tc NormVideo mi v sng bnh thng. * TextBackGround (color): th tc chn mu nn, color cho bng (t 1 -7) * KeyPressed: hm cho gi tr kiu kt qu Boolean, cho gi tr l True nu c mt phm c bm. * TextColor (color): th tc chn mu ch, color ly bng Cc hng s mu ca CRT unit Hng s color Black Blue Green Cyan Red Magenta Brown LightGray DarkGray LightBlue LightGreen LightCyan LightRed Mu hin th en Xanh da tri Xanh l cy Xanh l Tm Nu Xm nht Xm m Xanh da tri nht Xanh l cy nht Xanh l nht nht Gi tr 0 1 2 3 4 5 6 7 8 9 10 11 12

LightMagenta Yellow White

Tm nht Vng Trng

13 14 15

to ra mu nhp nhy, ta cng thm hng s Blink ca CRT vo bt k mu ch m ta chn. Ta khng th lm nhp nhy mu nn. V d trnh by ch vng trn nn xanh, ta vit: TextColor(Yellow) ; TextBackground(Blue) ; Mun c mt dng ch nhp nhy th ra lnh: TextColor(Red + Blink) ; * ReadKey : hm c kiu kt qu l Char, khi nhn cc phm chc nng trn bn phm th c kt qu l 1 k t m ASCII. Nu k t u tin do ReadKey tr v bng ASCII 0 th k t k theo s ch nh phm nh bng di. Cc phm Home, phm mi tn, ... lun to nn mt k t i theo ASCII 0. Cc phm chc nng t F1 n F10 sinh ra mt trong 4 k t ty theo ta dng vi t hp phm Alt, Ctrl hay Shift hay dng mt mnh. Cc phm chc nng c bit Tn phm F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 Home Bnh thng : (59) < (60) = (61) > (62) ? (63) @ (64) A (65) B (66) C (67) D (68) G (71) Alt h (104) i (105) j (106) k (107) l (108) m (109) n (110) o (111) p (112) q (113) Ctrl ^ (94) - (95) . (96) a (97) b (98) c (99) d (100) e (101) f (102) g (103) Shift T (84) U (85) V (86) W (87) X (88) Y (89) Z (90) [ (91) \ (92) ] (93)

. PageUp . . End . PageDn Ins Del VI. UNIT T TO 1. Mt s bc to ra Unit

H (72) I (73) K (75) M (77) O (79) P (80) Q (81) R (82) S (83)

TO

to ra mt Unit ca mnh cn i qua cc bc sau: Bc 1 : To ra mt file Unit c phn m rng l .PAS vi b cc sau: (* Ch : Tn Unit phi trng vi tn File *) (* Ch : Phn giao din vi bn ngoi, khng c du ; y *)

UNIT <Tn Unit> ; INTERFACE

[Uses <danh sch cc unit>]; {Khai bo cc unit dng trong chng trnh } [Khai bo cc hng, kiu, bin dng chung] ; [Khai bo cc th tc, hm (tn, danh sch tham s ca th tc v hm] ; IMPLEMENTATION (* Ci t cc hm, th tc ca Unit, khng c du ; y *) [Cc khai bo kiu, hng, bin cc b ]; [Ni dung ci t cc th tc, hm ca unit ]; [BEGIN] (* Phn khi to : Initialization Part *)

[Cc lnh khi to ]; END. Bc 2 : (* D c BEGIN khi to hay khng, y vn c END. *) Dch file ny ln a theo trnh t sau:

i). G Alt - C vo Menu COMPILE ii). iii). iv). i n mc Destination v nhn Enter chng trnh t ng i Memory thnh Disk G C (hoc F9) bin dch chng trnh to nn mt file .TPU Khi dch xong g mt phm bt k. Sau ta c th lp li bc a v b chuyn Destination t Disk sang Memory.

2. V d V d 7.11: To mt UNIT tnh Cng, Tr, Nhn, Chia cho hc sinh tiu hc.

TO

Tn file Unit l TTIEUHOC.PAS vi ni dung sau: UNIT TTieuHoc ; INTERFACE {Phn u : Chng trnh Ton Tiu hc } {Phn giao din}

PROCEDURE Cong (Var So1, So2, So3 : Real) ; PROCEDURE Tru (Var So1, So2, So3 : Real) ; PROCEDURE Nhan (Var So1, So2, So3 : Real) ; PROCEDURE Chia (Var So1, So2, So3 : Real) ; INPLEMENTATION PROCEDURE Cong ; BEGIN IF So1 + So2 = So3 THEN Writeln ('Gii lm ! Em lm ng! ') ELSE Writeln (' Rt tic, em lm sai ! '); END; PROCEDURE Tru ; BEGIN IF So1 - So2 = So3 THEN Writeln (' Gii lm ! Em lm ng!') ELSE Writeln (' Rt tic, em lm sai ! '); END; PROCEDURE Nhan ; {Phn ci t }

BEGIN IF So1 * So2 = So3 THEN Writeln ('Gii lm ! Em lm ng !') ELSE Writeln (' Rt tic, em lm sai ! '); END; PROCEDURE Chia ; BEGIN IF So2 = 0 THEN Writeln ('S chia phi khc 0') ELSE IF So1 / So2 = So3 THEN Writeln ('Gii lm! Em lm ng! ') ELSE Writeln (' Rt tic, em lm sai ! '); END; END. {Chm dt UNIT }

Sau khi g chng trnh Unit trn, i Compile Destination thnh Disk, bin dch v to tp tin TTIEUHOC.TPU trn a. Chng trnh Pascal cho bi ton Cng, tr, Nhn, Chia dng Unit TTIEUHOC: PROGRAM Toan_Tieu_Hoc ; USES CRT, TTieuHoc ; VAR chon : Integer ; So1, So2, So3 : Real ; PROCEDURE Menu (Var chon : integer) ; BEGIN ClrScr ; Writeln (' == TON TIU HC == ') ; Writeln (' = Writeln (' = 0. Chm dt 1. Ton cng = ') ; = ') ;

Writeln (' = Writeln (' = Writeln (' =

2. Ton tr 3. Ton nhn 4. Ton chia

= ') ; = ') ; = ') ;

Writeln ( ================== ) ; Write (' Bn chn s my ? ') ;

Readln (chon); END ; PROCEDURE nhapso (Var So1, So2, So3 : real ); BEGIN Write (' Nhp vo s th 1 : ') ; Readln(So1) ; Write (' Nhp vo s th 2 : ') ; Readln(So2) ; Write (' Kt qu l END ; {=====================Chng Trnh Chnh ========================} BEGIN CLRSCR; REPEAT Menu (chon) ; CASE chon OF 1 : BEGIN Writeln ; Writeln (' == Ton cng == ') ; Nhapso(So1, So2, So3) ; Cong(So1, So2, So3) ; END; : ') ; Readln (So3) ;

2 : BEGIN Writeln ; Writeln (' == Ton tr == ') ; Nhapso(So1, So2, So3) ; Tru(So1, So2, So3) ; END; 3 : BEGIN Writeln ; Writeln ( == Ton nhn == ) ; Nhapso(So1, So2, So3) ; Nhan(So1, So2, So3) ; END; 4 : BEGIN Writeln ; Writeln ( == Ton chia == ) ; Nhapso(So1, So2, So3) ; Chia(So1, So2, So3) ; END; END; {case} Writeln (' G bt k phm no tip tc ... '); Readln; UNTIL chon = 0; END. {Ngng lm ton}

===============================================================

BI C THM TOP - DOWN STRUCTURED PROGRAMMING hay LP TRNH THEO CU TRC TRN - XUNG --- oOo --Nu cc bn l mt ngi mi bt u khi s thc hnh lp trnh mt bi ton no , cc bn s thng t hi: Ta phi bt u bng vic g y? y l mt cu hi khng phi ai cng tr li chung c. Tuy nhin, da vo kinh nghim thu thp c ca nhng ngi lp trnh ti t v ca nhng lp trnh vin chuyn nghip, tc gi Francis Scheid, trong tc phm Computer and Programming ca mnh, cho mt s li khuyn sau : 1. n li nhng kinh nghim qua xem coi vn ca bn c cht g tng t n cc vn m bn tng chm trn trc y khng; 2. Trc tin, th lm mt phin bn n gin. Nu c th, a ngay vo mt s trng hp c bit m bn c, nhm to chng trnh bn c mt v g su sc. 3. Chia bi ton ra thnh nhng bi nh, ri tip tc ch nhng bi nh ny thnh nhng phn nh hn, nu c, ch tip nhng phn nh ny thnh nhng mnh nh hn na, sau gii quy tng phn hay mnh nh ny. Mi thut ton c th th hin bng lu (flow chart). Lu chnh l bn l trnh ca thut ton. Khng hn tt c nhng chuyn vin my tnh phi thc hin lu trc khi lp trnh nhng nh c lu m cng vic ca bn tr nn r rng v mang tnh logic hn. Bn s khng cm thy bi ri khi cn phi trnh by tin trnh gii ton ca bn cho ngi khc hiu. Bn c th mt mt t thi gian cho lu nhng n c gi tr hn c ngn t nu phi ct ngha thut ton. Chng ta hy tng tng bi ton to ln ca chng ta nh mt cy c th nhiu cnh l rm rp. Ta mun n cy ny v nh lm ci chm v d nhin, ta khng th no cht ngang gc cy m vc v nh (th d ny khng c khuyn khch ph hoi mi trng u nh ! ). Vy ti sao ta khng ta tng cnh nh ri dn dn thanh ton lun c cy ? Gii quyt vn ca chng ta cng vy. Bn c xem bi ton ca chng ta nh mt gc cy ln ngc u. Chia nh bi ton ra thnh nhng vn nh hn, ri nh hn na nu n cn phc tp, nh minh ha hnh sau y:

TO

Trong hnh v trn, bi ton c phn thnh 4 vn nh hn l A, B, C v D. Vn B v D c th gii quyt c ngay. Ring vn A v C th li tip tc chia nh hn na thnh nhng mnh nh c th gii quyt c. y cc nhnh cy khng di ngn nh nhau, d hiu bi v mc phc tp ca mi vn khng th nh nhau v ty theo thut ton cn gii quyt m ta phn nh n ra. Bi ton ca chng ta s i t vn tru tng n c th. Cch gii quyt nh vy ging nh h thng phn quyn trong t chc chnh ph:

Lp trnh cu trc l mt trng phi lp trnh xut hin vo thp nin 1970 v nhanh chng c nhiu ngi hng ng. im c bn trong lp trnh cu trc l t chc chng trnh thnh mt h phn cp (hierarchy) v phi iu khin sao cho cc mi tng tc gia cc thnh phn trong h l ti thiu. y chnh l tng ca mt php tinh ch tng bc (stepwise refinement) hay phng php chia tr trong gii bi ton theo cch top-down. Mt khi ta thc hin vic phn tch top-down xong, nhng mnh bi ton chi tit nht s c gii theo cch ca 1 trong 3 thnh phn thut ton sau : * Dng tun t (Sequential Flow) : Trong thut gii ny, cc bc gii c th hin trong mt lung lnh tun t nh hnh v sau:

* Dng iu kin (Conditional Flow): Trong thc t nhiu bi ton my tnh, ta s i n vic chn la mt trong hai iu kin. Mi iu kin (ng hoc Sai) s dn n mt quyt nh khc nhau. Minh ha hnh sau:

* Dng lp (Repetitive Flow) : Trong nhiu trng hp, ta cn thc hin nhiu ln lin tip mt hay nhiu thao tc cho khi mt iu kin c tha.

Cha ca ngn ng lp trnh Pascal l N.Wirth pht trin phng php tinh ch tng bc, xem n nh mt phng php khoa hc cn thit cho vic phn tch vn v lp trnh. Khi u, chng trnh phi c th hin khi qut vn , nu bc s phn tch tng th bi ton. tng bc k tip sau , s c cc gii php gii quyt vn mt cch chi tit hn, mi gii php nh vy l mt s c t (specification) cng vic. Nh vy, tng bc mt, ta dn dn tinh ch bi ton. S tinh ch ny phi hng n cc thut ton ca ngn ng lp trnh. Nu cc bi ton nh tr nn n gin th ta thay n bng cc cu lnh. Nu n t ra cn phc tp th ta xem nh mt th tc v tip tc tm cch tinh ch n. Trong qu trnh tinh ch, cn thit a ra nhng cch biu din d liu i song song vi cch chi tit ho vic gii quyt bi ton. y l mt phng php khoa hc nhng cng mang mt phn tnh ngh thut th hin s nhy bn trong t duy ca ngi lp trnh.

CHNG 8 MT S CU TRC D LIU C S

I.

II.

III.

IV.

KIU LIT K, KIU MIN CON. 1. Kiu v hng lit k. 2. Kiu min con. KIU MNG, KIU CHUI. 1. D liu kiu mng. 2. D liu kiu chui. KIU TP HP (SET). 1. nh ngha v khai bo. 2. M t mt tp hp. 3. Cc php ton trn tp hp. 4. Vit v c d liu kiu tp hp. KIU BN GHI (RECORD). 1. nh ngha v khai bo. 2. Truy xut mt Record. 3. Cc Record lng nhau. 4. Cu lnh WITH.

I. KIU LIT K, KIU MIN CON 1. Kiu v hng lit k (enumerated scalar type) Chng trc chng ta i qua cc kiu d liu n gin l cc d liu kiu d liu v hng chun (Standard Scalar-type Data) nh Integer, Real, Char, Boolean. Cc kiu ny c nh ngha sn trong mi chng trnh ci t trong my. Ngn ng Pascal cho php ngi lp trnh c th t t ra cc kiu v hng mi bng cch t lit k cc gi tr ca kiu v hng mi v phi khai bo nh ngha kiu. Danh sch cc gi tr ny c t trong ngoc n ( ) v c m t bng mt tn kiu (nh phn m t kiu TYPE). Kiu v hng theo cch ny gi l kiu v hng lit k (Enumerated Scalar Type). a. Cch khai bo C 2 cch khai bo mt bin kiu lit k: + Khai bo gin tip: nh ngha kiu (da vo t kha type) trc khi khai bin (var) TYPE <tn kiu lit k> = (<danh sch gi tr kiu lit k>) ; VAR <danh sch bin> : <tn kiu lit k> ; V d 8.1: TYPE

TO

Days = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ; Colors =(Red, Yellow, Green, White, Blue, Black) ; Subjects = (Mathematics, Physics, Chemistry, Biology) ; VAR Ngay : Days ; MauVe : Colors ; MonThi, Kiemtra : Subjects ; + Khai bo trc tip: Kiu sau bin c nh ngha trc tip. VAR <danh sch bin> : (<danh sch gi tr kiu lit k>) ; V d 8.2: VAR Ngay : (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ; MauVe : (Red, Yellow, Green, White) ; Ta c th gn cho bin cc gi tr ca kiu tng ng: Ngay := Mon ; MauVe := Red ; Bin theo nh ngha ca kiu no ch nhn gi tr ca kiu m thi. Theo khai bo nh v d 8.2. trn, ta khng th c MauVe := Mon ; Kiu v hng lit k l mt kiu m c. Theo nh ngha kiu v hng lit k, th t danh sch gi tr lit k c ngm nh s tng tuyn tnh bt u t s 0 tr i theo th t t tri sang phi. Nh vy, v d trn: Sun < Mon < Tue < Wed .... v Red < Yellow < Green ... b. Mt s hm chun p dng cho kiu v hng * Hm th t ORD (X) Hm ny cho ta th t ca gi tr x trong kiu v hng m c. Hm ORD thc cht l hm bin i mt gi tr kiu v hng m c sang gi tr kiu s nguyn.

Theo v d trn: ORD (Sun) = 0 ORD (Mon) = 1 ORD (Green) = 3 ORD (n) = n * Hm PRED (X) Hm ny cho gi tr ng trc x trong nh ngha kiu ca x. Theo v d trn : PRED (Mon) = Sun PRED (Green) = Yellow PRED (n) = n - 1 * Hm SUCC (X) Hm ny cho gi tr ng sau x trong nh ngha kiu ca x. Theo v d trn: SUCC (Mon) = Tue SUCC (Green) = White SUCC (n) = n + 1 * Hm chuyn mt s nguyn thnh mt gi tr v hng Tn hm ny chnh l tn kiu v hng m ta khai bo trc. Theo v d trn: Days(2) = Tue Colors(3) = White LONGINT (n) = n c. Vit ra v c vo kiu lit k Vit v c theo kiu lit k th khc vi kiu v hng chun. l ng v Sun c th t l 0 l ng v Mon c th t l 1 l Sai v Green c th t l 2 trong n l mt gi tr kiu Longint

* Vit ra kiu lit k Th tc Write v Writeln ch chp nhn a ra cc gi tr thuc kiu v hng chun (Real, Integer, Byte, Char, Boolean) m khng chp nhn vit ra mt gi tr kiu v hng lit k, v d cch vit sau l khng ng: Writeln(Color(4)) m ch c th chp nhn nu vit: Writeln (Char(78)) v Char(78) = N l gi tr v hng chun. Writeln(Red) Writeln(Days)

vit ra mt gi tr ca bin v hng lit k, ta c th p dng th thut sau: IF MauVe = Red THEN Writeln(Red) ; * c vo kiu lit k Th tc Read v Readln cng ch chp nhn c vo mt gi tr kiu v hng chun m khng chp nhn c trc tip cc gi tr kiu v hng lit k, v d khng th c Readln(Days). c vo mt gi tr kiu lit k ta c th dng phng php sau: c s th t ca gi tr bin v hng ri bin i kiu d liu thm: V d 8.3: TYPE Days = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ; VAR i : Integer ; BEGIN Write('Nhp s t 0 . .6 tng ng cho ngy:'); Readln(i) ; Case Days(i) of Sun: writeln('Ngy Ch nht'); Mon: writeln('Ngy th hai'); Tue: writeln('Ngy th ba'); Wed: writeln('Ngy th t'); Thu: writeln('Ngy th nm'); Fri: writeln('Ngy th su'); Sat: writeln('Ngy th by'); Else writeln('Nhp sai');

end; Readln; END. Mc 2 phn II pha sau, s gii thiu chui String, ta c th dng th thut sau c kiu lit k: V d 8.4: Readln(St) ; IF St = Mon THEN Ngay := Mon ; 2. Kiu min con (Sub-range type) a. Khi nim Khi khai bo mt s trng hp, v d Tui ca ngi hoc im thi hc sinh, nu ta vit: VAR TuoiTho : Integer ; Hay Diem : Real ; {Integer c min xc nh -32 768 .. 32 767} {Real c min xc nh 2.9 E-39 .. 1.7 E38}

TO

Nu vit nh vy s tn nh v Integer c kch thc 2 bytes hoc Real c kch thc n 6 bytes. Lm nh vy s khng cn thit v Tui con ngi ch bin thin trong khong t 0 n 200 l ln nht v im thi hc sinh th ch trong khong t 0 n 10 chng hn. Trong Pascal cho php ta xc nh mt bin ly gi tr trong mt khong no c gii hn mt hng cn di (first data item) v mt hng cn trn (last data item). Hai gi tr ny phi cng mt kiu v hng m c v hng cn trn c gi tr ln hn hng cn di. Khai bo nh vy gi l khai bo kiu min con (Sub-range type) v bin ca n ch chim 1 byte trong nh m thi. Trong lc chy chng trnh, ta c th kim tra gi tr ca bin khng c vt ra khi gii hn ca khong con. b. Cch khai bo Min con l mt tp hp con ca mt kiu m c. C 2 cch khai bo: + Khai bo gin tip: TYPE <Tn kiu min con> = <hng cn di> .. <hng cn trn> ; VAR <danh sch bin> : < Tn kiu min con> ; V d 8.5:

TYPE TuoiTho = 0 .. 200 ; VAR Tho : TuoiTho ; + Khai bo trc tip: VAR <danh sch bin> : <hng cn di> .. <hng cn trn> ; V d 8.6: VAR Tuoi : 0 .. 200 ; II. KIU MNG, KIU CHUI Pascal c 4 kiu cu trc d liu l kiu mng (ARRAY), tp hp (SET), bn ghi (RECORD) v tp tin (FILE). Sau y ta ln lt tm hiu tng kiu cu trc. 1. D liu kiu mng (Array-Type Data) Mt mng d liu l mt tp hp s hu hn phn t c ging nh cc bin, c cng kiu, gi l kiu c bn. Mng c c t chc theo mt trt t xc nh. S phn t ca mng c khai bo ngay t khi nh ngha ra mng. a. Mng mt chiu (One-Dimensional Array) Mng mt chiu c th c hiu nh mt danh sch cc phn t (theo ct), c cng kiu. Mi phn t ca mng c xc nh c truy nhp trc tip thng qua tn mng cng vi ch dn truy nhp c gia hai ngoc vung [ ]. V d 8.7: List l mt mng 1 chiu c n phn t. Cc phn t ca List c th mang cc tn List[1], List[2], List[3], ..., List[n], v c th minh ha nh hnh sau:

TO

List[1] List[2] List[3]

List[4]

.........

List[n]

Hnh 8.1: Minh ha mng mt chiu + Khai bo gin tip: TYPE

<Kiu mng> = ARRAY [Kiu ch s ] OF <Kiu phn t > ; VAR <Danh sch bin> : Kiu mng ; + Khai bo trc tip : VAR < Danh sch bin > : ARRAY [ Kiu ch s] OF < Kiu phn t > ; * Ch : Kiu ch s phi l kiu ri rc (m c). V d 8.8: TYPE KM1 = ARRAY [1.. 100] OF INTEGER ; KM2 = ARRAY [1 .. 20 ] OF CHAR ; DAY = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ; VAR TUOI : KM1 ; TEN : KM2 ; NGAY : ARRAY [DAY] OF BOOLEAN ; ngha: - KM1 l kiu mng gm 100 phn t c nh s t 1 n 100 thng qua kiu ch dn l mt min con cc s nguyn t 1 .. 100. TUOI l bin c kiu l KM1. - KM2 l kiu mng gm 20 phn t nh s t 1 .. 20 c kiu l cc k t. Bin TEN c kiu l KM2. - NGAY l mt bin mng gm 7 phn t kiu Boolean c nh du qua kiu ch dn l tn ca 7 ngy trong tun. Ch : Khi khai bo mng, kiu ch dn ch c th l: - Kiu min con ca cc loi d liu v hng m c nh k t, s nguyn - Kiu lit k do ngi vit nh ngha (nh NGAY trong tun)

- Kiu Boolean Kiu ch dn khng th l kiu khng m c nh REAL Vit nh sau l SAI : X1 : ARRAY [Real] OF Integer ; Ta cng khng th khai bo nh: X2 : ARRAY [Integer] OF Integer ; Mc du Integer l kiu v hng m c do gii hn ca vng nh dnh cho d liu, s lng phn t ca 1 mng cng b hn ch ty theo kch thc ca kiu d liu ca cc phn t, ta nn dng kiu min con khai bo s phn t ca mng. + Truy xut cc phn t ca mng: Mi phn t ca mng c truy xut thng qua Tn Bin Mng cng vi ch s ca mng trong du ngoc vung [ ]. V d tn bin mng l A, khi vit A[7], ta hiu n l phn t th 7 ca mng A. V d 8.9: Lp trnh gii mt bi ton tnh trung bnh mt dy s x[i] : x[1], x[2], x[3], ... , x[n] sau tip tc tnh lch (deviation) ca tng phn t so vi tr trung bnh, theo cng thc: _lch = x[i] - trung_bnh Gi s dy s ca chng ta c gii hn n = 100 phn t tr li, n l mt bin s khai bo s phn t mun tnh . Sau ta ln lt nhp tnh gi tr ca phn t kiu s thc (real) t phn t th 1 n phn t th n. Trong chng trnh s to ra mt mng 1 chiu x vi n cc phn t. Tnh trung bnh ca n phn t v lch. In kt qu ra mn hnh. PROGRAM Average_deviations ; { Nhp n s phn t kiu s thc, tnh tr trung bnh ca chng, sau tnh tip lch ca tng phn t s so vi tr trung bnh } VAR n, count : integer ; sum, average, deviation : real ; x : ARRAY [1 .. 100] OF real ; BEGIN (* Nhp s phn t v tnh trung bnh*) Write (' Nhp bao nhiu s n tnh trung bnh ? ') ; Readln (n) ;

Writeln ; sum := 0 ; FOR count := 1 TO n DO BEGIN Write ( i = , count : 3, Readln (x [count] ) ; sum := sum + x[count]; END ; average := sum/n ; Writeln (' Trung bnh ca dy s l = , average ') ; Writeln ; (* Tnh lch so vi tr trung bnh *) FOR count := 1 TO n DO BEGIN deviation := x[count] - average ; Write ( i = , count : 3, x = , x[count] ) ; x = );

Writeln (' lch d = , deviation '); END ; Readln; END. Gi s, ta nhp vo 5 s hng (cc s c gch di l phn ca ngi nhp): x[1] = 3.0 x[2] = -2.0 x[3] = 12.0 x[4] = 4.4 x[5] = 3.5

Khi chy chng trnh (nhn Ctrl + F9), trn mn hnh ta s thy : Nhp bao nhiu s n tnh trung bnh ? 5 i= 1 x = 3.0

i= i= i= i=

2 3 4 5

x = -2.0 x = 12.0 x = 4.4 x = 3.5

Trung bnh ca dy s l = 4. 1800000E+00 i= i= i= i= i= 1 2 3 4 5 x = 3. 0000000E+00 lch d = - 1. 1800000E+00 x = -2. 0000000E+00 lch d = - 6. 1800000E+00 x = 1. 2000000E+00 lch d = 7. 8200000E+00 x = 4. 4000000E+00 lch d = 2. 2000000E - 01 x = 3. 5000000E+00 lch d = - 6. 8000000E - 01

Ta c th nh khong cha kt qu v phn l thp phn, dng lnh : m : n V d 8.10: Sp xp mt dy s theo th t t nh n ln

Tin trnh ca bi ton: - Gi s chui s ca ta c n phn t nhp c. . Ln lt cho chng trnh c gi tr ca cc phn t

- Mt th tc (Procedure) s lm cng vic sp xp nh sau : u tin a phn t th nht so snh vi cc phn t tip theo, nu n ln hn phn t so snh th em i ch gi tr ca hai phn t vi nhau. Sau tip tc em phn t th 2 so snh cc phn t tip theo theo trnh t nh vy, ... v c nh th cho n phn t th n - 1. - In kt qu ra mn hnh Chng trnh Pascal nh sau: PROGRAM Reorder ; (* Sp xp mt mng cc phn t s thc t nh n ln*) VAR n, i, loc: 1 .. 100 ; x : ARRAY [1 .. 100] OF real ; temp : real ; PROCEDURE interchange ;

(* i ch cc phn t mng t nh n ln*) BEGIN FOR loc := 1 TO n-1 DO FOR i := loc + 1 TO n DO IF x[i] < x [loc] THEN BEGIN temp := x[loc] ; x[loc] := x[i] ; x[i] := temp ; END ; END ; BEGIN Write (' C bao nhiu phn t s ? ') ; FOR i := 1 TO n DO BEGIN Write ( x[ , i : 3, ] = ? ) ; Readln( x[i] ) ; END ; interchange ; Writeln ; Writeln (' S liu sp xp : ') ; Writeln ; FOR i := 1 TO n DO Writeln ( x[ , i : 3, ] = , x[i] : 4 : 1 ) ; Readln; Readln (n) ;

END. Khi chy chng trnh, gi s ta c 5 s liu nh phn nhp : (cc s c gch di l phn nhp t bn phm) C bao nhiu phn t s ? 5 x[ 1] = ? 4. 7 x[ 2] = ? - 2. 3 x[ 3] = ? 12. 9 x[ 4] = ? 8. 8 x[ 5] = ? 6. 0 Kt qu l : S liu sp xp : x[ 1] = ? - 2. 3 x[ 2] = ? 4. 7 x[ 3] = ? 6. 0 x[ 4] = ? 8. 8 x[ 5] = ? 12. 9 b. Mng nhiu chiu (Multi-Dimensional Array) Trong mt s bi ton thc t, ngi ta s dng cc mng nhiu hn 1 chiu, gi l mng nhiu chiu. V d 8.11: Phng o to qun l im ca sinh vin. Trong kho 22 chng hn, ngi ta to ra mt mng 2 chiu: v d mt chiu l s th t ca sinh vin, chiu cn li l cc mn hc (dng kiu v hng lit k), ta c th hnh dung dng ca mng ghi im (tn mng l ghi_diem) nh sau:

Lu : Thc t, danh sch tn sinh vin lu li trong my tnh thng c ghi bng cch gn m s sinh vin (coding) cho mi sinh vin ngay t nm u vo hc. Vi v d trn, mun nhp im mt sinh vin no ta phi khai bo 2 tham s l s th t sinh vin v mn hc. Tng t, cng vi cc kho k tip theo hc nhng mn nh vy, ta s to ra mng nhiu chiu nh hnh v minh ha sau:

Trong trng hp ny, mun bit im mt sinh vin no ta phi khai bo 3 tham s: Kho hc, s th t sinh vin v mn hc, chng hn: ghi_diem[K22,0001,AV] nhp im 10,... Khai bo cng c 2 cch nh i vi mng 1 chiu: + Khai bo gin tip: TYPE <Kiu mng> = ARRAY [Kiu_ch_s_1, ..., Kiu_ch_s_n] OF <Kiu phn t>; VAR <Danh sch bin>:<Kiu mng>; V d 8.12: TYPE matrix = ARRAY [1 .. 20, 1 .. 30] OF integer ; VAR A:matrix;

Lnh trn khai bo mt kiu tn matrix. y l mt mng 2 chiu, chiu th nht c cc ch s t 1 n 20, chiu th hai c cc ch s t 1 n 30, tng cng ta c (20 x 30) phn t s nguyn. V ta c mt bin A l bin c kiu matrix. V d trn cng c th c khai bo tng ng vi: TYPE matrix = ARRAY [1 .. 20] OF ARRAY [1 .. 30] OF integer ; VAR A:matrix; + Khai bo gin tip: VAR <Danh sch bin>: ARRAY [Kiu_ch_s_1, ..., Kiu_ch_s_n] OF <Kiu phn t>; Khai bo mt bin A c 5 dng v 10 ct kiu phn t l Integer nh sau: VAR A : ARRAY [1 .. 5, 1 .. 10] OF integer ; + Truy xut cc phn t mng: Tng t nh cch truy xut phn t ca mng 1 chiu, mngg nhiu chiu cng c truy xut thng qua tn bin mng kt hp vi cc ch s ca n c t trong cp du ngoc vung. Mng 2 chiu l mt ma trn, nh v d trn ta c mt ma trn 5 dng v 10 ct. Cc phn t ca ma trn A c k hiu l a[i,j] vi i l v tr ct v j l dng. Khi vit a[2, 7] th hiu y l phn t dng 2 v ct 7. Trong Pascal, ta c th vit a[i,j] thnh a[i] [j] vi ngha hon ton nh nhau. Ch : Trn nguyn tc, ta c th khai bo mt mng c n 255 chiu. Tuy vy, mt iu cn lu l kch thc b nh ca my tnh c hn nn thng ch khai bo mng t 1 n 3 chiu. Khai bin qu nhiu th phi cn my ln hn. Chng hn khi bo 1 mng [1.. 10] cc phn t s nguyn ly 10 bytes b nh - Mng 2 chiu 10 x 10 = 100 bytes b nh. - Mng 3 chiu 10 x 10 x 10 = 1 000 bytes b nh - Mng 4 chiu 10 x 10 x 10 x 10 = 10 000 bytes b nh - Mng 5 chiu 10 x 10 x 10 x 10 x 10 = 100 000 bytes b nh - v.v... V d 8.13:

Vit mt chng trnh Pascal c mt bng cc s thc c nhp vo my tnh di dng mt mng 2 chiu. Tnh tng cc gi tr s theo hng v theo ct. Kt qu c in ra mn hnh theo v tr hng v ct tng ng. Trc tin, ta bt u bng nh ngha cc bin: table = mng 2 chiu cha s thc di dng bng gm cc s nhp v kt qu nrows = mt bin s nguyn ch s hng ncols = mt bin s nguyn ch s ct row col = mt s m nguyn ch s hng = mt s m nguyn ch s ct

n gin, chng ta gi s rng kch thc s liu nhp vo bng tnh khng vt qu 10 hng v 10 ct. Ta s thm vo 1 hng cng pha di v 1 ct cng bn phi vo bng ghi kt qu tnh cng cc phn t hng v ct tng ng. Nh vy, mng 2 chiu ca chng ta s tr thnh mng s c in ra c s hng l (nrows + 1) v s ct l (ncols +1). Do vy, ta phi khai bo bin table l 1 mng 2 chiu s nguyn c ti a 11 ct v 11 hng. d theo di chng trnh, ta thc hin cu trc module khi vit chng trnh bng cch tin hnh lm cc th tc procedure cho c s liu, tnh tng cc phn t theo hng, tnh tng cc phn t theo ct v in ra mn hnh bng kt qu. Cc th tc ny s c tn tng ng l readinput, rowsums, columsums v writeoutput. Thut ton logic yu cu cho mi th tc l cch khai bo thng trc (straightforward), ch rng trong mi th tc ta c mt vng lp i (double loop). V d, c s liu bng gc, ta s phi lm mt vng lp i sau: FOR row := 1 TO nrows DO BEGIN FOR col := 1 TO ncols DO readln( table[row, col] ) ; Writeln; END ; Cu lnh Writeln bo chng trnh nhy ti dng k. Tng t, vng lp sau c vit tnh tng cc phn t theo hng: FOR row := 1 TO nrows DO BEGIN table [row, ncols + 1] := 0 ;

FOR col := 1 TO ncols DO table [row, ncols + 1] := table [row, ncols + 1] + table [row, col]; END ; Tng t, cu trc vng lp i cng c dng tnh tng cc phn t ct v in ra bng kt qu cui cng. Sau y l chng trnh Pascal ca bi ton trn: PROGRAM Tongbang ; {c mt bng s, tnh tng tng ct v hng ca c bng} VAR row, col : 1 .. 11 ; nrows, ncols : 1 .. 10 ; table : ARRAY [1 .. 11, 1 .. 11] OF real ; PROCEDURE Rowsums ; {cng cc phn t theo ct bn trong mi hng } BEGIN FOR row := 1 TO nrows DO BEGIN table [row,ncols+1] := 0 ; FOR col := 1 TO ncols DO table[row, ncols+1] := table[row, ncols+1] + table[row,col]; END ; END ; PROCEDURE Columnsums ; {cng cc phn t theo hng bn trong tng ct } BEGIN FOR col := 1 TO ncols DO BEGIN table [nrows+1, col] := 0 ;

FOR row := 1 TO nrows DO table[nrows+1,col] := table[nrows+1,col] + table[row,col]; END ; END ; PROCEDURE Readinput ; {c cc phn t ca bng } BEGIN Write(' Nhp s hng (1 .. 10) ? ') ;Readln(nrows) ; Write(' Nhp s ct (1 .. 10) ? ') ;Readln(ncols) ; FOR row := 1 TO nrows DO BEGIN Writeln (' Nhp s liu hng s , row :2') ; FOR col := 1 TO ncols DO readln(table [row, col] ) ; END ; END ; PROCEDURE Writeoutput ; { In ra bng s liu v kt qu tnh tng } BEGIN Writeln('Bng s liu v kt qu tnh tng cc phn t theo hng v ct '); Writeln(============================================= ); Writeln; FOR row := 1 TO nrows + 1 DO BEGIN FOR col := 1 TO ncols+1 DO Write (table [row,col] : 6 : 1) ; Writeln; END ; END ;

BEGIN Readinput ; Rowsums ; Columnsums ; Writeoutput; END.

{ Thn chng trnh chnh }

{ Chm dt chng trnh } Gi s, ta c bng s liu sau : 2.5 10.8 -7.2 -6.3 12.4 3.1 14.7 -8.2 17.7 4.0 5.5 -9.1

Khi chy chng trnh, ta c (s c gch di l s ca ngi th chng trnh): Nhp s hng (1 .. 10 ) ? 3 Nhp s ct (1 .. 10) ? 4 Nhp s liu hng s 1 2.5 -6.3 14.7 4.0

Nhp s liu hng s 2 10.8 12.4 -8.2 5.5

Nhp s liu hng s 3 -7.2 3.1 17.7 -9.1

Chng trnh s tnh tng cc gi tr hng v ct, xong in ra mn hnh kt qu: Bng s liu v kt qu tnh tng cc phn t theo hng v ct 2.5 10.8 -7.2 6.1 -6.3 12.4 3.1 9.2 14.7 -8.2 17.7 24.2 4.0 5.5 -9.1 0.4 14.9 20.5 4.5 0.0

Ta c th kim tra kt qu cc hng v ct. 2. D liu kiu chui (String Type Data) Mt chui d liu l mt lot cc k t c nh ngha bng t kho STRING theo sau l s k t cc i c th c ca chui k t. String l mt kiu cu trc c thm vo trong Turbo Pascal. a. Khai bo Chng ta c th khai bo kiu chui k t String gin tip hoc trc tip. Khai bo gin tip l khai kiu trc ri sau mi khai bo bin. Cch khai bo trc tip l khai thng bin s. Chiu di ti a ca chui k t phi l mt hng nguyn v c t trong du ngoc vung [ ]. Trng hp khng khai bo th chng trnh s ly gi tr mc nhin l 255 k t + Khai bo gin tip TYPE <Tn kiu String> = STRING [hng nguyn] ; VAR <Tn bin> : <Tn kiu String> ; V d 8.14: TYPE TenSV = STRING [25] ; {nh di ti a l 25} Diachi = STRING; {mc nhin c di ti a l 255} VAR HT : TenSV ; DC : Diachi ; + Khai bo trc tip VAR <Tn bin> : STRING [hng nguyn] ; V d 8.15: VAR HT : STRING [25] ;

TO

DC : STRING; Chui k t s chim s byte trong b nh bng s k t ln nht khai bo trc cng thm 1 byte u tin cha s k t hin c ca chui k t. V d 8.16: TYPE DH = STRING[10] ; VAR CT : DH ; v nu ta gn CT := CAN THO; th CT s c cp pht 1 + 10 = 11 nh (byte) lin tc, vi hnh nh sau :

Ch : - di ca chui k t CT l 7 k t mc du di ln nht cho php l 10. - V ta dng 1 byte cha chiu di nn string ch c ti a l 255 k t. b. Cc thao tc trn chui + Php gn Ging nh php gn trong cc kiu v hng khc, php gn chui l lnh gn mt bin vi mt biu thc k t trong cp du nhy n C php: <Tn bin> := Biu thc k t ; V d 8.17: HT := L Vn Hai ; DC := S 12/4 ng Trn Hng o, TP. Cn th ; + Php cng Php cng l thut ton ni cc chui li vi nhau bng du cng (+). V d trn nu ghp HT + DC th ta s c:

L Vn Hai S 12/4 ng Trn Hng o, TP. Cn th Ghi ch: Khng c php tr, nhn, chia trong chui k t.

+ Cc php so snh Cc so snh gm c bng nhau =, ln hn >, ln hn hoc bng >=, khc nhau <>, nh hn <, nh hn hoc bng <= Khi so snh 2 chui k t th cc k t c so snh tng cp mt t tri sang phi theo gi tr ca bng m ASCII. C 2 kh nng xy ra khi so snh: - Nu 2 chui c di khc nhau nhng s k t ging nhau cho n di chui ngn nht th chui ngn nh hn chui di. V d 8.18: 'Nation' < 'National ''Lan' < 'Lang'

- Nu 2 chui c di v ni dung ging nhau th bng nhau. V d 8.19: 'Hello' = 'Hello'

Ghi ch: Chui rng (null string, vit l '') l chui khng c cha g c. N c gi tr nh hn mi string khc rng. V vy: 'A' >'' v chr(32)> ''

+ Cu lnh Read v Readln Hai cu lnh ny i vi chui cng tng t nh i vi cc kiu v hng khc, nhng cn lu : - Lnh Read v Readln ch cho php c ti a 127 k t mt chui nhp t bn phm mc du chiu di ti a ca mt chui c th n 255 k t. - Nu ta c mt lc nhiu bin theo kiu Read(bin1, bin2, ..., binN) ( hoc Readln(bin1, bin2, ..., binN)) th c th b nhm ln khi ta nhp gi tr c di vt qu di ti a ca bin1 th phn vt s c gn cho bin2. Ngc li, nu ta nhp gi tr t hn di ca bin1 th chng trnh li ly cc gi tr ca bin2 gn thm cho bin1 k c khong trng. Do vy, cch tt nht l i vi bin kiu String ch nn nhp mi ln 1 bin. V d 8.20: Nn trnh vit kiu Read(TenSV, Diachi); m nn vit : Read(TenSV) ; Read(Diachi) ; hoc: Readln(TenSV) ;

Readln(Diachi) ; - di thc t ca chui l di thc t khi ta c vo t bn phm mc du trc ta c khai bo di chui. Nu ta g Enter m khng g k t no trc th mc nhin chng trnh hiu l mt chui rng (null string hay st = ''). + Cu lnh Write v Writeln Tng t nh trn nhng cn mt s lu v cch vit: - Nu vit Write(st) hoc Writeln(st) gi l cch vit khng qui cch th mi k t s chim 1 v tr trn mn hnh. - Nu vit Write(st : n) hoc Writeln(st : n) gi l cch vit theo qui cch, vi n l s nguyn, th mn hnh s dnh n v tr vit chui st theo li canh tri nu n> 0 v ngc li theo li canh phi nu n < 0. - Mt s chui m trong c du nh l mt ch vit tt, v d nh cu: Hes an Intal staff (ng ta l mt nhn vin quc t) th ni c du phi vit thnh (y l 2 du nhy n ch khng phi l 1 du nhy kp ). Ta vit: Writeln ( He s an Intal staff ) ; c. Cc th tc v hm chun x l chui k t Chui k t c dng kh ph bin trong lp trnh nn Turbo Pascal a sn vo mt s th tc v hm chun x l chui k t. * Th tc xa DELETE (St, Pos, Num)

ngha: Xa khi chui St mt s k t l Num bt u t v tr Pos tnh t tri sang. V d 8.21: VAR st : string [20]; BEGIN St := ' B BA BN BNH B '; Writeln (St) ; DELETE (St, 10, 4); Writeln(St); Readln ; END. Khi chy chng trnh, ta s thy trn mn hnh: B BA BN BNH B B BA BN B * Th tc INSERT (Obj, St, Pos)

ngha: Chn chui Obj xen vo chui St k t v tr Pos tnh t bn tri. V d 8.22: VAR st : string [25]; BEGIN St := 'B BA BN BNH B' ; Writeln (St) ; INSERT ( BNG B , St, 6); Writeln(St); Readln ; END. Khi chy chng trnh, ta s thy trn mn hnh: B BA BN BNH B B BA BNG B BN BNH B * Th tc STR (S [: n[: m]], St)

ngha: i gi tr s S thnh chui ri gn cho St, Gi tr n:m nu c s l s v tr v s ch s thp phn ca S. V d 8.23: VAR S: real; St: string[10]; BEGIN S:= 12345.6718; Writeln(S:5:2); Str(S:6:2:st); Readln; END. Kt qu trn mn hnh: 12345.67 12345.67 * {y l s } {y l chui}

Th tc VAL(St, S, Code)

ngha: i chui s St (biu th mt s nguyn hoc s thc) thnh s (s nguyn hoc s thc) v gn gi tr ny cho S. Code l s nguyn dng pht hin li: nu i ng th Code c gi tr = 0,

nu sai do St khng biu din ng s nguyn hoc s thc th Code s nhn gi tr bng v tr ca k t sai trong chui St. V d 8.24: VAR St : String[10]; SoX : real; maloi: integer; BEGIN St:= 123.456 ; VAL(St,SoX,maloi) ; Writeln('S X = , SoX :5:2, v m li = , maloi) ; Readln; St:=123.XXX ; VAL(St,SoX,maloi); Writeln('St = 123.XXX khng i thnh s c !'); Writeln('Sai li v tr th ' , maloi); Readln; END. Khi chy, ta s thy trn mn hnh: 123.45 v maloi = 0 St = 123.XXX khng i thnh s c ! Sai li v tr th 5 * Hm LENGTH (St)

ngha: Cho kt qu l mt s nguyn ch di ca chui k t St. vit 1 chui k t trung tm mn hnh, ta c th dng th thut vit chui l (80 - lenght(st)) div 2 V d 8.25: USES CRT; VAR St : String[80];

BEGIN ClrScr ; Write(' Nhp vo mt cu : '); Readln(St) ; Gotoxy(80 - Lenght(St)) div2, 12); Writeln(St) ; Readln ; END. * Hm COPY (St, Pos, Num)

ngha: Cho kt qu l mt chui k t mi c c bng cch chp t chui St, bt u t v tr Pos v chp Num k t. Nu v tr Pos ln hn chiu di ca chui St th hm COPY s cho mt chui rng. Nu gi tr ca v tr Pos v s k t Num (Pos + Num) ln hn chiu di ca chui St th hm COPY ch nhn cc k t nm trong chui St. V d 8.26: VAR St1, St2 : string[25] ; BEGIN St1 := UNIVERSITY OF CANTHO : 1966 - 1996 ; St2 := COPY (St1, 15, 6) ; END. Nh vy, gi tr ca bin St2 by gi l CANTHO. * Hm CONCAT (St1, St2, ..., StN)

ngha: Cho kt qu l mt chui mi c ghp theo th t t cc chui St1, St2, ..., StN. Hm ny ging nh php cng cc chui. Chui mi cng s khng c vt qu 255 k t. * Hm POS (Obj, St) :

ngha: Cho kt qu l v tr u tin ca chui Obj trong chui St. Nu khng tm thy th hm POS cho gi tr 0. V d 8.27: nu St := 1234567890, nu Obj := 456 th POS (Obj, St) = 4 cn POS(4X, St)=0

d. Truy xut tng k t trong chui Ta c th truy xut n tng k t trong chui vi tn bin v ch s trong du ngoc vung [ ] nh truy xut cc phn t ca mng. V d vi chui St th St[i] l k t th i trong chui St, d nhin . Ch s i chy di t 1 n di ln nht ca chui k t. V d 8.28: PROGRAM DoiChu; VAR St:String; i: integer; BEGIN Write('Hy nhp tn ca bn : '); Readln(St); FOR i:= 1 TO Length(St) DO St[i] := Upcase(St[i]); (*Hm Upcase i k t thnh ch in hoa*) Writeln; Writeln(St); Readln; END. III. KIU TP HP (SET) 1. nh ngha v khai bo Mt tp hp (SET) bao gm mt s cc phn t c cng bn cht kiu l kiu c bn. Trong Turbo Pascal v IBM Pascal, s phn t ti a trong mt tp hp l 256. Kiu c bn c th l kiu v hng lit k, kiu min con hoc kiu Char, khng c l s thc. Khi nim tp hp trong Pascal tng t nh khi nim tp hp trong ton hc. + Khai bo gin tip TYPE <Kiu c bn> = (phn_t_1, phn_t_2, ..., phn_t_n) ; <Tn kiu tp hp> = SET OF <Kiu c bn> ;

TO

VAR <Tn bin > : <Tn kiu tp hp> ; V d 8.29: TYPE Sizes = (short, medium, large) ; Shirtsizes = SET OF sizes ; VAR shortleeve, longleeve : shirtsizes ; + Khai bo trc tip VAR <Tn bin> : SET OF <Kiu c bn> ; V d 8.30: VAR Chu So : SET OF Char ; : SET OF 0 .. 9 ;

ABC : SET OF 0 .. 256 ; Date : SET OF (Sun, Mon, Tue, Wed, Fri, Sat) ;

2. M t mt tp hp Mt tp hp c m t bng cch lit k cc phn t ca tp hp, chng cch nhau bng mt du phy (,) v c t gia hai du mc vung [ ], cc phn t c th l hng, bin hoc biu thc. V d 8.31: [] [5 .. 15] [1, 3, 5] {tp hp rng, khng c cc phnt t } {tp hp cc ch s nguyn t 5 n 15} {tp hp 3 s 1, 3 v 5 }

TO

[Hng, Lan, Cc, Mai] {tp hp tn 4 loi hoa} [i, i + j*2, 4, 5] {tp hp cc bin nguyn gm s cc s nhn t i, i +j*2 vi i, j l 2 bin nguyn} 4, 5 v

3. Cc php ton trn tp hp a. Php gn Ta c th gn gi tr cc tp c m t vo cc bin tp cng kiu. Ring tp hp rng c th gn cho mi bin kiu tp hp khc nhau. Vi v d trn, ta c th gn : Chu So Date := [X,Y,Z] ; := [2,3,4] ; := [] ;

TO

Nu ta vit Chu := [1,2]; th khng hp l v Chu l tp hp cc ch. b. Php hp Hp ca 2 tp hp A v B l mt tp hp cha tt c cc phn t ca tp A hoc B hoc c A v B. K hiu ca php hp l du cng (+). Php hp c tnh giao hon: A+B = B+A Ta c th m t php hp qua hnh nh sau :

V d 8.32

A := [0,1,3,5,7,9] ; B := [0,2,4,6,8,9] ; C := A + B ; {tp hp C s c cc phn t l [0,1,2,3,4,5,6,7,8,9] }

c. Php giao Giao ca 2 tp hp A v B l mt tp cha cc phn t ca c A v c B. K hiu A * B. Php giao cng c tnh giao hon, ngha l A * B = B * A Minh ha nh sau :

Vi v d trong php hp, nu: D := A * B ; {tp D cha phn t [0,9] }

Nu A v B khng c phn t no ging nhau th php hp s cho tp rng. d. Php hiu Hiu ca 2 tp hp A v B, k hiu l A - B, l mt tp hp cha cc phn t ch thuc A m khng thuc B. Lu : A - B th khc B - A. V d 8.33: A := [3 .. 7] ; B := [1.. 6, 10, 15] ; th e. Php thuc IN Php thuc IN cho php th xem mt gi tr no thuc v mt tp hay khng? Php thuc IN cho kt qu c kiu Boolean. Nu ng n s cho kt qu l TRUE, ngc li l FALSE. V d 8.34: Chu l bin kiu Char, cn A l bin kiu SET OF Char v Chu := X ; A := [X, x,Y, y, Z, z] ; th php ton Chu IN A s cho kt qu l TRUE f. Cc php so snh =, <>, <= v >= Mun so snh 2 tp hp vi nhau th chng phi c cng kiu c bn. Kt qu ca cc php so snh l gi tr kiu Boolean, tc l TRUE (ng) hoc FALSE (Sai). Hai tp hp A v B gi l bng nhau (A = B) ch khi chng c cc phn t ging vi nhau tng i mt (khng k th t sp xp cc phn t trong 2 tp). Ngc li ca php so snh bng nhau (=) l php so snh khc nhau (<>). Ngha l, nu A = B l TRUE th A <> B s l FALSE v ngc li. Php so snh nh hn hoc bng (<=) ca A <= B s cho kt qu l TRUE nu mi phn t c trong A u c trong B. nh ngha ny cng tng t nh ln hn hoc bng (>=). Vi A >= B th mi phn t ca B u c trong A, kt qu ny TRUE, ngc li l FALSE. A - B l tp hp [7] cn B - A l tp hp [1,2, 10,15]

Ch : Trong Pascal khng c php so snh nh hn (<) v ln hn (>). kim tra xem tp A c thc s nm trong tp B hay khng (A nh hn B), ta phi s dng thm cc php logic nh sau: IF (A <> B) AND (A <= B) THEN WRITELN ( A < B)

4. Vit v c d liu kiu tp hp Vi d liu kiu tp hp, ta khng th vit ra hoc c vo bng cc th tc (Write) Writeln hoc (Read) Readln. Tuy nhin, ta c th thc hin cc thao tc ny khi m kiu c bn ca tp hp l s nguyn, k t. V d 8.35: Vit chng trnh c mt cu bt k, sp xp cc ch ca cu theo th t ABC abc t ch in n ch thng. Chng trnh chm dt khi nhn c ch END hoc end. PROGRAM Letters_used ; TYPE letters = SET OF char ; VAR used, unused : letters ; count, charcount : 0 .. 80 ; alpha : char ; line : string ; PROCEDURE Readinput ; {c mt cu bt k} BEGIN FOR count := 1 TO 80 DO line[count] := ; Writeln (' Nhp vo mt dng cu di y : ') ; Count := 0; WHILE NOT eoln DO {hm eoln tr v gi tr false khi k t nhn vo khc} BEGIN {k t kt thc dng CR: carry return}

TO

count := count + 1 ; read(line[count]); END ;

readln; charcount := count; END ; PROCEDURE BEGIN writeln; write(' Cc ch s dng: ') ; FOR alpha := A to z DO IF [alpha] <= used THEN write( , alpha) ; writeln; writeln; END; BEGIN Readinput; WHILE NOT (([line[1]] <= [E, e]) AND ([line[2]] <= [N, n]) AND ([line[3]] <= [D, d])) DO BEGIN used := [] ; unused := [A .. Z, a .. z] ; FOR count := 1 TO charcount DO IF [line[count]] <= unused THEN BEGIN used := used + [line[count]] ; unused := unused - [line[count]]; END ; {Thn chng trnh chnh} Writeoutput ; {trnh by phn tch ca mt dng cu }

Writeoutput ; Readinput; END ; END. Khi chy chng trnh, ta s thy (Cc dng ch gch di l ca ngi dng): Nhp vo mt dng cu di y: Pascal is a structured programming language derived from ALGOL - 60 Cc ch s dng: A G L O P a c d e f g i l m n o p r s t u v Nhp vo dng cu di y: END IV. KIU BN GHI (RECORD) 1. nh ngha v khai bo Cc cu trc d liu kiu mng (Array) v tp hp (Set) c hn ch ch cc phn t trong tp hp ca chng phi cng kiu m t. Song trong thc t, c nhng kiu cu trc d liu khc nhau nhng li c mt mi lin quan no . V d 8.36: m t d liu v l lch mt ngi no , ngi ta phi khai bo h tn ngi (kiu String), Phi (Nam :=True, N := False theo kiu Boolean), ngy sinh (m t kiu date), a ch (kiu String) v mc lng (kiu integer), v.v... Vi cc kiu c bn khc nhau nh vy trong Pascal, ta phi dng kiu bn ghi (RECORD). Kiu bn ghi trong ngn ng Pascal gn lin vi kiu tp tin (FILE) - s c trnh by trong phn k tip. Tuy nhin, ta c th s dng RECORD mt cch c lp vi FILE. RECORD l kiu d liu bao gm nhiu thnh phn c th khc nhau v kiu d liu, mi thnh phn c gi l trng (Field). C php khai bo kiu bn ghi (Record) trc ri khai bo bin nh sau: + Khai bo gin tip: TYPE <Tn kiu bn ghi> = RECORD <Tn trng 1a>[,<Tn trng1b>,...] : <Kiu trng> ;

TO

<Tn trng 2a>[,<Tn trng2b>,...] : <Kiu trng> ; .............................................................................................. ; END ; VAR <Tn bin1>[,<Tn bin2>, ...] : <Tn kiu bn ghi> ; V d 8.37: Ta ang lm mt khai bo v khch hng ca cng ty chuyn bn hng tr gp no . S liu cn s dng l ngy thng lm bn ghi v cc thng tin c bn v khch hng n thanh ton cho cng ty, theo minh ha hnh di:

Trong chng trnh ny, Cng ty phn ra 3 tnh trng loi khch n (status): ng k hn phi tr (current), qu hn phi tr (overdue) v loi khch chnh mng, dy da vic tr n nhiu ln (delinquent). y: - Status c khai bo theo kiu d liu lit k (enumerated data type). - Account (S k ton) l mt kiu record, cha cc thng tin v tn v a ch khch n (kiu chui string), s khch n (kiu s nguyn integer-type), loi khch n (kiu lit k enumerated type) v s liu tn ng n ca khch (kiu s thc real-type). - Date (Ngy thng) l mt kiu Record trong chng trnh ghi ngy, thng nm o n ca khch hng. Bin ca chng trnh l khch hng (customer).

Ta c th khai bo nh sau: TYPE status = (current, overdue, delinquent); date = RECORD day : 1 .. 31 ; month : 1 ..12 ; year : 1900 .. 2100 ; END ; account = RECORD Custname : String ; Custaddress : String ; Custno : 1 .. 9999 ; Custtype : status ; Custbalance : Real ; Lastpayment : date; END; VAR customer : account ; + Khai bo trc tip VAR <Tn bin1>[,<Tn bin2>, ...] : RECORD <Tn trng 1a>[,<Tn trng1b>,...] : <Kiu trng> ; <Tn trng 2a>[,<Tn trng2b>,...] : <Kiu trng> ; .............................................................................................. ; END ; 2. Truy xut mt Record truy xut vo mt trng ca kiu Record, ta cn dng tn bin kiu Record, sau l du chm (.) ri n tn trng. Dng tng qut sau:

TO

<Bin Record>.<Tn trng> V d 8.39: TYPE Lylich = RECORD Hoten : string [25] ; Tuoi : integer ; PhaiNam : boolean; Luong : real; END; VAR x, y : Lylich ; nv : ARRAY [1 .. 200] OF Lylich ; {nv l mng l lch cc nhn vin} .................................. Write('Nhp tng s nhn vin : '); readln(n) ; FOR i := 1 TO n DO BEGIN Write(' H tn : '); readln(nv[i].Hoten); Writeln(' Tui : '); readln(nv[i].Tuoi) ; Write(' Phi (Nam :M, N : F) ? '); readln (Phai); IF (Phai = M) or (Phai =m) THEN nv[i].PhaiNam := TRUE ELSE nv[i].PhaiNam := FALSE ; Writeln(' Lng : '); read(nv[i].Luong) ; END ; ....................................... Lu : Cc bin Record c th gn cho nhau. V d x v y l 2 bin bn ghi c cng kiu Lylich, th ta c th gn: {Nam : M (Male), N : F (Female)} {L lch gm H tn, Tui, Phi, Lng} Nhp l lch nhn vin ca mt c quan

x := y; Nh vy ta khng phi lp li: x.Hoten := y.Hoten ; x.Tuoi := y.Tuoi ; ................................. Khng c vit ra mn hnh hoc c t bn phm mt bin record nh : Writeln(x); hoc Readln(x);

Khng th so snh cc record bng cc php ton quan h <, >, <=, >=,=,<> Khng c dng cc ton s hc v logic vi kiu record. V d 8.40: Nhp vo 2 s phc C1 v C2 v tnh C3 l tng ca chng Vi chng trnh loi ny ta phi ln lt nhp tng phn thc v phn o ring r ca C1 v C2. Ta khng th dng dng lnh C3 = C1 + C2. Kt qu tnh C3 phi l php cng ring r tng phn thc v phn o ca C1 v C2 ri ghp li. PROGRAM So_Phuc ; TYPE Sophuc = Record pt, pa : real ; End; VAR c1, c2, c3 : Sophuc ; BEGIN Write('Ln lt nhp phn thc v phn o ca 2 s phc C1 v C2') ; Write('Nhp phn thc ca s phc C1 : ') ; Readln(c1.pt) ; Write('Nhp phn o ca s phc C1 : ') ; Readln(c1.pa) ; Write('Nhp phn thc ca s phc C2 : ') ; Readln(c2.pt) ; Write('Nhp phn o ca s phc C2: ') ; Readln(c2.pa) ;

c3.pt := c1.pt + c2.pt ; c3.pa := c1.pa + c2.pa ; Writeln('Kt qu ca php cng 2 s phc :'); Write(C3 = C1 + C2 ); Write( = (, c1.pt:5:2, +i , c1.pa:5:2, ) +(, c2.pt:5:2, +i ,c2.pa:5:2, ) );

Write(C3 = , c3.pt:5:2, +i, c3.pa:5:2 ); Readln; END. 3. Cc Record lng nhau Record lng nhau l record m c trng (field) ca n li c kiu l mt record khc. Ta c th nh ngha cc record lng nhau theo mt cch trc tip hay gin tip nhau v cch khai bo cng hon ton tng t nh cch khai bo record trn. V d 8.41: TYPE dd_mm_yy = Record dd:1..31; mm:1..12; yyyy:1900..2100; end; hoso = Record masv:string[7]; ngsinh:dd_mm_yyyy; diem:real; end; VAR Lop: Array[1..20] of hoso;

TO

4. Cu lnh WITH Nhiu chng trnh i hi cc phn t khc nhau ca cng mt record phi c thao tc ti cc v tr khc nhau bn trong chng trnh. Nh vy phi cn c nhiu ch th trng khc nhau c trng. Vic ny lm chng trnh tr nn phc tp, t nht v kh theo di. gii quyt tnh trng ny, Pascal a ra cu trc cu lnh WITH ... DO trong record nhm bt i cc rc ri t cc ch th trng (hay ni cch khc, cu lnh WITH .. DO nh l php ton t tha s chung m tha s chung l cc tn bin record). Dng tng qut ca cu lnh WITH l: WITH <tn bin record> DO BEGIN <Cu lnh vi tn trng 1>; ............................................. ; <Cu lnh vi tn trng n>; END ; V d 8.42: Mt bin bn ghi DANSO c cc trng KHUVUC, HOTEN, NGAYSINH, DIACHI, NGHE a d liu t bn phm nh sau: WITH DANSO DO BEGIN Write ('Khu vc iu tra :'); Readln (KHUVUC); Write ('H tn cng dn :'); Readln (HOTEN); Write ('Ngy-thng-nm sinh :'); Readln (NGAYSINH); Write ('a ch cng dn :'); Readln (DIACHI); Write ('Ngh nghip : '); Readln (NGHE); END ; i vi bn ghi c nhiu th bc: R1 l bin bn ghi c trng R2 R2 l bin bn ghi con c trng R3

TO

R3 l bin bn ghi con c trng R4 ..................... th cu lnh WITH c t chc lng nhau: WITH R1 DO WITH R2 DO ............... WITH RN DO <Cu lnh ...> ; hay vit n gin hn: WITH Record1, Record2, ..., RecordN DO <Cu lnh BEGIN .. END> ; v d 8.41, ta c th vit nh sau: WITH Lop[i] DO Begin With Ngsinh Do Begin dd:= 25; mm:=05; yyyy:=1978; End;

masv:='7962343'; diem:=9.0; End;

PH CHNG HA TRONG TURBO PASCAL

I. II. III. IV.

KHI NIM V HA. KHI NG CH HA. LI HA. MT S HM V TH TC CHUN TRONG UNIT GRAPH. 1. Mu v mu(kiu). 2. im, kiu ng thng, ng thng. 3. Cc hnh khng t.

V.

4. Cc hnh c t. 5. X l chui k t trn mn hnh ha. 6. Ca s trong ch ha. 7. ng ch ha. MT VI V D MINH HA.

Phn ny ch nhm gii thiu mt s cc khi nim c bn v ch ha, cc th tc v hm : khi ng ch ha, v cc hnh c bn nh ng thng, ng trn, cung elip, hnh qut, a gic, chui k t, ca s ViewPort,... c khai bo sn trong Unit Graph ca Turbo Pascal. I. KHI NIM V HA Trong Turbo Pascal c hai ch thng c s dng l: ch vn bn (text mode) v ch ha (graphics mode). Ch vn bn th mn hnh c thit lp hin th 25 dng v 80 ct nh gii thiu phn trc. Cn ch ha, th mn hnh li c thit lp da trn tng im nh (pixel), mi mn hnh gm nhiu im nh c sp xp trn cc ng thng nm ngang v ng thng ng, s bi tr s pixel trn mi loi mn hnh c gi l phn gii (Resolution), phn gii cng cao th s pixel cng nhiu v hnh nh cng mn. H ta cho mi loi mn hnh c khc nhau (xem bng 1), chng hn loi mn hnh VGA l 640x480 nh hnh sau:

TO

Mt chng trnh ha thng gm cc phn sau: Khi to ch ha. Xc nh mu nn, mu v kiu ch, mu ng v, mu t v kiu t. V v t cc hnh ta cn thc hin. Cc thao tc khc nh cho hin dng ch, ch thch. ng ch ha tr v ch vn bn.

II. KHI NG CH HA c th thc hin chng trnh trn ch ha, trc tin ta phi khi ng ch ha. Vic ny c thng qua th tc sau: Procedure InitGraph(var GraphDriver:Integer; var GraphMode: Integer; PathToDriver: string); Vi: GraphDriver, GraphMode l loi mn hnh v mt mn hnh (xem bng 1). PathToDriver l ng dn ca th mc cha cc tp tin iu khin ha. V d: Gi s ta c loi mn hnh VGA, mt l VGAHi, cc tp tin iu khin ha trong th mc F:\WINAPPS\BP\BGI, ta c th vit phn chng trnh khi ng ha nh sau: Uses Graph; Var mh,mode: integer; {mh: loi mn hnh} Begin mh:=VGA; mode:=VGAHi; {c th dng hng DETECT cho mh } Initgraph(mh,mode, F:\WINAPPS\BP\BGI); ........... End. Vic nh cc loi mn hnh v mt mn hnh l iu gy d nhm ln, do vy ta c th cho my t ng d tm loi v mt mn hnh. Nh vy chng trnh trn ta b dng (1) th khi thc hin my s t ng d tm (DECTECT), y l im rt hay v n s cho khi ng loi mn hnh ang s dng v mt ha c phn gii cao nht. Bng 1: dng. Cc gi tr ca Grapdriver, GraphMode v Resolution ca mt s loi mn hnh thng GraphMode CGAC0 CGAC1 CGAC2 CGAC3 EGA (3) CGACHi EGALo EGAHi (0) (1) (2) (3) (4) (0) (1) Resolution phn gii cao nht v loi mn hnh s dng 320 x 200 320 x 200 320 x 200 320 x 200 640 x 200 640 x 200 640 x3 50 (1)

TO

GraphDriver DETECT (0) CGA (1)

VGA

(9)

VGALo VGAMed VGAHi

(0) (1) (2)

640 x 200 640 x 350 640 x 480

Ch : bng ny cc hng DETECT c gi tr 0, hng VGA c gi tr 9, hng VGAHi c gi tr 2, ... Ta c th xc nh Grapdriver, GraphMode v Resolution trn mt my ang hot ng bng chng trnh sau: Uses Graph; Var mh,mode:integer; Begin mh:=Detect; {C th b dng ny} initgraph(mh,mode,'f:\winapps\bp\bgi'); writeln('GraphDriver = ',mh,' Graphmode = ',mode,' Resolution =',GetmaxX, 'x',GetMaxY); readln; closegraph; End. Vi: GetmaxX, v GetMaxY l cc hm tr v gi tr ln nht tng ng cho hng, ct ca mn hnh v mt hin hnh. III. LI HA Khi khi ng ha, nu my khng tm thy cc chng trnh iu khin ha th s pht sinh ra li ha v nh vy chng trnh khng th thc hin c hoc c th treo my. Trong c 2 trng hp c hoc khng c li, ta nn s dng hm GraphResult bit c li hay khng? C th kt hp vi hm GraphErrorMsg nhn c thng bo ng nht. Bng 2 lit k mt s thng bo li thng gp: Bng 2: Hng GrOk Tr m li 0 Cc li ha Thng tin li pht hin Khng c li khi ng ha.

TO

GrNoInitgraph GrNotDetected GrFileNotFound GrInvalidDriver GrNoloadMem GrNoScanMem GRNoFloodMem GrFontNoFound GrNoFontMem GrInvalidMode GrError GrIOError GrInvalidFont GrInvalidFontNum

-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14

Cha khi ng d ha. Khng c phn cng ha. Khng tm thy trnh iu khin ha. Trnh iu khin khng hp l. Khng b nh RAM cho ha. Trn vng nh trong Scan Fill. Trn vng nh trong Flood Fill. Khng tm thy tp tin Font. Khng b nh RAM np Font. Kiu ha khng hp l cho trnh iu khin. Li ha tng qut. Li ha vo ra. Tp tin Font khng hp l. S hiu i din cho Font khng hp l.

V d: mn hnh: Uses Graph; Var

Chng trnh kim tra qu trnh khi ng ha v nu c li s thng bo li ra

maloi: Integer; GrDriver, GrMode: Integer; Begin GrDriver := Detect; InitGraph(GrDriver, GrMode, 'f:\winapps\bp\bgi'); maloi := GraphResult; { Check for errors } if maloi <> grOk then

begin Writeln('Li ha l : ', GraphErrorMsg(maloi)); Writeln('Li!, Thot khi chng trnh ...'); Halt(1); {Lnh ngt ngang v kt thc chng trnh } end else End. IV. MT S HM V TH TC CHUN TRONG UNIT GRAPH 1. Mu v mu (kiu) i vi mn hnh trng en (Hercules Monochrome) ta c 2 gi tr mu 0 v 1, cn i vi cc mn hnh mu (VGA, EGA,...) th c 16 gi tr mu t 0..15 c lit k trong bng 3, v kiu t mu th c 11 kiu c nh sn l t 0..11 v mt kiu do ngi lp trnh nh ngha (User - defined fill) v cc kiu t c lit k trong bng 4. a. Th tc chn mu ng v SetColor(ColorNum:word); b. Th tc t mu nn ca mn hnh SetBkColor(ColorNum :word); c. Th tc chn kiu t v mu t SetFillStyle(Pattern:word; ColorNum:word); d. Hm nhn mu tr v do th tc SetColor t mu trc GetColor: word; e. Hm nhn mu nn tr v do th tc SetBkColor t trc GetBkColor: word; f. Hm tr v gi tr mu ln nht GetMaxColor: word; Bng 3: Cc gi tr c th nhn ca bin mu ColorNum Tn hng Gi tr mu Mu hin th { Phn chng trnh cn thc hin khi khng c li ha }

TO

Black Blue Green Cyan Red Magenta Brown LightGray DarkGray LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

en Xanh da tri Xanh l cy Xanh l Tm Nu Xm nht Xm sm Xanh da tri nht Xanh l cy nht Xanh l nht nht Tm nht Vng Trng

Bng 4: Cc gi tr c th nhn ca bin kiu t Pattern Tn hng EmptyFill SolidFill LineFill LtSlashFill SlashFill BkSlashFill Gi tr kiu t 0 1 2 3 4 5 Din gii kiu t T bng mu nn T c T bng gch ngang T bng /// T bng /// in m T bng \\\ in m

LtBkSlashFill HatchFill XHatchFill InterleaveFill WideDotFill CloseDotFill UserFill

6 7 8 9 10 11 12

T bng \\\ T bng ng gch bng nht T bng ng gch bng ch thp T bng ng t qung T bng nhng du chm tha T bng du chm dy Mu t t to

2. im, kiu ng thng, ng thng a. Th tc v mt im ti mt ta (x,y) PutPixel(x,y:integer;ColorNum:word); b. Th tc chn kiu ng thng SetLineStype(linestyle:word;pattern:word;thickness:word); Vi tham s LineStyle c cc gi tr nh bng 5 sau: Bng 5: Tham s LineStyle Hng SolidLn DottedLn CenterLn DashedLn UserBitLn Gi tr 0 1 2 3 4 Din gii Nt m Nt chm Nt chm gch Nt gch M u t t o

TO

Vi tham s thickness c cc gi tr nh bng 6 sau: Bng 6: Tham s Thickness Hng NormWidth Gi tr 1 Din gii B dy bnh thng

ThickWidth

B dy m

c. Th tc v ng thng t ta (x1 ,y1) n ta (x2 ,y2) Line(x1 ,y1 ,x2 ,y2: integer); 3. Cc hnh khng t a. Th tc v hnh ch nht Rectangle(x1 ,y1 ,x2 ,y2:integer); b. Th tc v hnh trn Circle(x,y:integer;r:word); Vi x,y l ta tm, r l bn knh. c. Th tc v mt cung trn Arc(x,y:integer; StAngle,EndAngle:word; r :word); Vi StAngle l gc bt u, EndAngle l gc kt thc. d. Th tc v cung Ellipse hoc mt Ellipse Ellipse(x,y:integer;StAngle,EndAngle:word;Xradius,Yradius:word); Nu StAngle = 0 v EndAngle =360 th l mt hnh Ellipse, nu EndAngle < 360 th l mt cung Ellipse. 4. Cc hnh c t a. ng gp khc (a gic) Mun v mt ng gp khc i qua n im ta : (x1 ,y1), (x2 ,y2),..., (xn ,yn ) th ta phi a to n im ny vo mt mng poly no m mi phn t ca mng c kiu PointType c nh ngha sn nh sau: Type PointType = Record x,y : integer; end;

TO

TO

Khi im cui (xn ,yn ) c ta trng vi im u (x1 ,y1 ) th n im ny s to thnh mt ng gp khc khp kn. Dng th tc DrawPoly(n, poly); v ng gp khc i qua n ta nh sn trong mng poly. Dng th tc FillPoly(n,poly); v v t ng gp khc i qua n ta nh sn trong mng poly. V d: Uses Graph; Const gk: Array[1..3] of pointtype=((x:5;y:200),(x:190;y:5),(x:100;y:300)); {gp khc} gkkk: Array[1..4] of Pointtype = ((x:405;y:200),(x:590;y:5),(x:500;y:300),(x:405;y:200)); Var Gd, Gm: Integer; Begin Gd := Detect; InitGraph(Gd, Gm, 'F:\WINAPPS\BP\BGI'); if GraphResult <> grOk then Halt(1); SetBkcolor(CYAN); SetColor(YELLOW); SetFillStyle(SolidFill,MAGENTA); DrawPoly(3,gk); FillPoly(3,gk); {ng gp khc khng khp kn}

FillPoly(4,gkkk); {ng gp khc khp kn} Readln; CloseGraph; End. b. Th tc v hnh ch nht Bar(x1 ,y1 ,x2 ,y2: integer);

c. Th tc v hnh hp ch nht Bar3D(x1 ,y1 ,x2 ,y2:integer; depth:word;top:boolean); Tham s depth: l s im trn b su ca khi 3 chiu. Tham s top c 2 gi tr c nh ngh sn l: TopOn (True) tng ng khi 3 chiu s c np v TopOff (False) s ng vi khi 3 chiu khng c np (xem hnh v).

d. Th tc v hnh Ellipse FillEllipse(x,y:integer;xradius,yradius:word); e. Th tc v hnh qut PieSlice(x,y:integer; StAngle,EndAngle,radius:word); 5. X l chui k t trn mn hnh ha a. Th tc np Font ch Cc font ch nm trong cc tp tin c phn m rng l .CHR . np cc font ch ny ta dng th tc: SetTextStyle(font,direction,charsize:word); Vi: Tham s font c th nhn mt trong cc gi tr sau: Hng DefauFont Hng TriplexFont Hng SmallFont Hng SansSerifFont Hng GothicFont hay gi tr hay gi tr 0 1 2

TO

hay gi tr hay gi tr hay gi tr 3 4

Tham s direction c th nhn mt trong cc gi tr sau: Hng HorizDir hay gi tr 0

Hng VertDir

hay gi tr

Tham s charsize l c k t v n c th nhn mt trong cc gi tr t 1 n 10. b. Th tc t ch cn chnh chui vn bn SetTextJustify(horiz, vert :word); Trong : Tham s horiz c th l mt trong cc hng: LeftText, CenterText, RightText. Tham s vert c th l mt trong cc hng: BottomText, CenterText, TopText. c. Th tc hin th chui vn bn ti v tr con nhy OutText (text:string); d. Th tc hin th chui vn bn ti ta (x,y) OutTextXY (x,y:integer;text:string); 6. Ca s trong ch ha (ViewPort) thit lp mt ca s trn mn hnh ha, ta s dng n chc nng ca ViewPort. Ca s ViewPort c xem nh mt vng ch nht trn mn hnh ha, n ging nh th tc Window trong ch vn bn (Text mode), ngha l ta c th hin mt dng vn bn, v hnh hoc xa ch nm gn trong ViewPort nh, ta c th minh ha mt ca s ViewPort nh hnh sau:

TO

hiu r cch thit lp mt ViewPort, ta hy xt n cch khai bo kiu ca ViewPort nh sau: ViewPortType = Record x1, y1, x2, y2 : Integer;

Clip End;

: Boolean;

Trong : (x1, y1) , (x2, y2) ln lt l gc ta trn bn tri v ta gc di bn phi, m chng phi tha tnh cht sau: Clip l mt bin trng c kiu Boolean m n c ngha nh sau: Nu c gi tr bng True (hay bng hng ClipOn) th khng cho php v bn ngoi ViewPort. Nu c gi tr bng False (hay bng hng ClipOff) th cho php v bn ngoi ViewPort. a. Th tc thit lp mt ViewPort SetViewPort(x1,y1,x2,y2:integer; Clip:Boolean); Sau khi thit lp ViewPort ta s c mt h ta mi m gc trn bn tri ca ViewPort s c ta (0,0). V d: Nh hnh v trn (gi s ta chn Clip bng hng ClipOn) th ta phi thit lp ViewPort nh sau: SetViewPort(300,250,500,350,ClipOn); * Ta m dng Vi mt s th ca ton hc phi c ta m dng, v n ta phi chia mn hnh ra lm 4 phn tng ng vi 4 vng (I, II, III, IV) m dng ca mt h trc ta xy. thc hin vic ny, ta phi dng n ca s ViewPort, vi cch thit lp sao cho ta (0,0) ca trc ta xy l tm tuyt i ca mn hnh gc trn bn tri ca ViewPort nh sau: - t: x1= GetmaxX; x2= GetmaxX; y1= GetmaxX; y2= GetmaxX;

- Dng th tc SetViewPort(x1,y1,x2,y2,ClipOff) , vi Clip = ClipOff c th v ra ngoi gii hn ca ViewPort.

V d: V th hm sin(x) trong h trc ta m dng, vi honh Program Dothi; Uses Crt,Graph; Const ScaleX=20; ScaleY=80; Var mh,mode,x,y,i:integer; Begin InitGraph(mh,mode,'F:\WINAPPS\BP\BGI'); SetViewPort(GetmaxX DIV 2,GetmaxY DIV 2,GetmaxX,GetmaxY,ClipOff); SetColor(blue); Line(-(GetmaxX DIV 2),0,GetmaxX DIV 2,0); Line(0,-(GetmaxY DIV 2),0,GetmaxY DIV 2); SetTextJustify(CenterText,CenterText); SetColor(White); OutTextXY(-GetmaxX DIV 4,-GetmaxX DIV 4,'DO THI HINH SIN '); SetColor(Red); OutTextXY(GetmaxX DIV 2- 32,2,'Truc x >'); OutTextXY(27,-(GetmaxY DIV 2-5),'^ Truc y'); OutTextXY(0,0,'0,0'); for i:= -400 to 400 do begin x:=Round(2*Pi*i* ScaleX /200); y:=Round(Sin(2*Pi*i/200)* ScaleY);

PutPixel(x,y,Yellow); end; Repeat Until KeyPressed; CloseGraph; End. b. Th tc nhn ViewPort hin hnh GetViewSettings(Var ViewPort: ViewPortType); c. Th tc xa bn trong mn hnh ViewPort hin hnh ClearViewPort; Th tc xa sch tt c cc phn (hnh v, chui k t, ...) bn trong ViewPort v a con tr v ta (0,0) ca ca s ViewPort hin hnh. d. Th tc xa sch mn hnh ha ClearDevice; 7. ng ch ha tr v ch vn bn, ta dng th tc: CloseGraph; V. MT VI V D MINH HA V d 1: V Bu tri y sao PROGRAM Vebautroi; Uses Graph,Crt; Var gd,gm,x,y:integer; maxcolor:word; Begin Gd:=Detect; Initgraph(gd,gm,'C:\TP70\BGI'); If Graphresult<> Grok Then Halt(1); x:=GetmaxX; y:=GetmaxY;

TO

TO

Maxcolor:=Getmaxcolor; Randomize; While (not keypressed) do Begin delay(100); Putpixel(random(x),random(y), Random (maxcolor-1)+1); end; Closegraph; End. V d 2: V th cc hm s: Sin(x),Cos(x) v Arctan(x)

PROGRAM VeDothi; Uses Crt,Graph; Var mh,mode:integer;chon:char;chugiai:string; Procedure Chonham; begin writeln('Cc th c th:'); writeln('1----> th hnh Sin(x)'); writeln('2----> th hnh Cos(x)'); writeln('3----> th hnh ArcTan(x)'); write('Chn th no ?'); readln(chon); Case chon of '1': chugiai:= TH HM SIN; '2': chugiai:= TH HM COS;

'3': chugiai:= TH HM ARCTAN; end; end; Function F(chon:char;x:real):real; begin Case chon of '1': F:=Sin(x); '2': F:=Cos(x); '3': F:=Arctan(x); end; end; Procedure Dothi(a,b:real;x1,y1,x2,y2:integer;mn,md:integer); var fx,k,h,r,c,d:real; x,y,n,m,i:integer; begin c:=f(chon,a); d:=f(chon,a); r:=a; h:=(b-a)/1000; while r <= b do begin fx:=f(chon,r); if c>fx then c:=fx; if d<fx then d:=fx; r:=r+h; end; Setcolor(md);Setbkcolor(mn);

n:=x2-x1; h:=(b-a)/n; m:=y2-y1; k:=(d-c)/m; for i:=0 to n do begin x:=x1+i; fx:=f(chon,a+i*h); y:=round((fx-c)/k)+y1; y:=y2-y+y1; if i=0 then moveto(x,y) else lineto(x,y); end; end; Begin (* Chng trnh chnh *) Clrscr; Chonham; mh:=detect; Initgraph(mh,mode,'u:\bgi'); Setviewport(GetmaxX DIV 2,GetmaxY DIV 2,GetmaxX,GetmaxY,ClipOff); Line(-(GetmaxX DIV 2),0,GetmaxX DIV 2,0); Line(0,-(GetmaxY DIV 2),0,GetmaxY DIV 2); SetTextJustify(CenterText,CenterText); OutTextXY(-GetmaxX DIV 4,-GetmaxX DIV 4,chugiai); SetColor(Red);

OutTextXY(GetmaxX DIV 2- 32,2,'Truc x >'); OutTextXY(27,-(GetmaxY DIV 2-5),'^ Truc y'); OutTextXY(0,0,'0,0'); Dothi(-4*pi,4*pi,-(getmaxx div 2)+100,-(getmaxy Getmaxy div 2 - 100,magenta,yellow); Readln; Closegraph; End. div 2)+100,getmaxx div 2 -100,

TI LIU THAM KHO


(Theo th t A, B, C ca tn tc gi)

Phm Vn t, 1993. Turbo Pascal 5 & 6 - Gio trnh c s v nng cao k thut lp trnh hng i tng, NXB Gio dc, H Ni. Byron S. GottFried, 1994. Theory and Problems of Programming with Pascal, 2/ed, Schaum's Outline Series, McGraw-Hill Int. Ed., New York, USA. H S m, Nguyn T Thnh, Dng Vit Thng, Nguyn Thanh Tng, 1995. Bi tp Tin hc I, NXB Gio dc, H Ni. Francis Scheid, 1982. Theory and Problems of Computers and Programming, McGraw-Hill Book Co., New York, USA. J. Glenn Brookhear, 1991. Computer Science. The Benjamin/ Cummings Publishing York, USA. Bi Vit H, 1995. Hng dn s dng Norton Commander, NXB. Gio dc ,H Ni. on Nguyn Hi, Nguyn Trung Trc, Ng. Anh Dng, 1993. Lp trnh cn bn ngn ng Pascal, NXB Khoa Tin hc, i hc Bch khoa TP. HCM. Henri E. Bal, Dick Grune, Programming Language Essentials, Addison - Wesley Publishing Company, New York, USA. Nguyn Vn Hoi, Nguyn Tin, 1995. Tin hc cn bn, NXB. Gio dc, H Ni. Nguyn Tin Huy, 1995. Gio trnh Tin hc cn bn , TT Tin hc a hc Tng hp TP. H Ch Minh, NXB ng Nai, Bin Ha. Co.,l nc., New

Trn S Huyn, 1996. Cc vn v lp trnh Pascal, NXb Tr, TP. H Ch Minh. Nguyn Xun Quc Hng, 1996. Tin hc A & B, NXB Tr, TP. H Ch Minh. Nguyn Trn K, Vng Quang Tin, Nguyn Th Hng, 1994. DOS 6.0 & 6.2, NXB. Thng k, H Ni. Trn Th L, Hong Kim, 1995. Tin hc 10, NXB. Gio dc, H Ni. Ng Hu Lim, 1990. Gio trnh nhp mn lp trnh, T sch Trung tm Tin hc, TP.HCM. Nguyn Vn Linh, 1994. Gio trnh Tin hc i cng, T sch i hc Cn Th. V Hiu Ngha, 1994. T hc Tin hc, NXB Thng k H Ni. Quch Tun Ngc, 1995. Gio trnh Tin hc cn bn, NXB. Gio dc, H Ni. Quch Tun Ngc, 1995. Ngn ng lp trnh Pascal, NXB Gio dc, H Ni. inh V Nhn, 1995. Tin hc cn bn, NXB TP. H Ch Minh. Ruknet Cezzar, A Guide to Programming Languages, Artech House, Inc., London, UK. Trn Ngc Tin, Trn Vn Nam, 1995. Tin hc i cng, Trng i Hc Kin Trc H Ni, H Ni. Nguyn nh Thng - Hong Minh - Phc, 1989. MS -DOS 3.30, Trung Tm Tin hc CADASA, Trng Cao ng S Phm TP. H Ch Minh. Lng Vn Thy, V Vn Sn, Nguyn Vn Tr, 1992. in ton cn bn, Trung tm in ton, UBKHNN, TP. H Ch Minh. Nguyn Vn Tr, 1995. Hng dn t lm vic bng my vi tnh, NXB TP. H Ch Minh. Trng i hc Ti chnh K ton Tp. H Ch Minh, 1991. Turbo Pascal 5.5 v Bi tp Turbo Pascal 5.5, NXB i hc v Gio dc chuyn nghip, H Ni. Ng Trung Vit, 1994. Kin thc c bn v lp trnh, NXB Giao thng vn ti, H Ni. Walter Savitch, 1995. Pascal: An introduction to the Art and Science of Programming, the Benjamin/ Cummings Publishing Co.,Inc., New York, USA.

You might also like