You are on page 1of 110

6. THUT TON 6.1. Khi nim Thut ton l mt khi nim rt quan trng ca ton hc v tin hc.

Khi nim thut ton tng i phc tp, nhng trong phm vi nghin cu ca mn hc ny, chng ta ch tm hiu nhng vn c bn, n gin v thut ton. lm bt k cng vic no, chng ta cng cn phi bit trnh t thc hin cng vic . Ngha l, chng ta phi xc nh c c th v chi tit cc thao tc v trnh t, cch thc thc hin trn c s ci ta c v ci ta cn t c. Thc cht y chnh l thut ton. Vy ta c th hiu: Thut ton l mt tp hp hu hn cc thao tc cn thc hin, c sp xp theo mt trnh t nht nh hon thnh trn vn mt cng vic nh trc. l mt h cc quy tc m nu hng dn cho nhng ngi khc nhau th h s hnh ng ging nhau. Hoc: Thut ton (cn gi l thut gii) l mt bn hng dn bao gm mt s hu hn cc mnh lnh quy nh chnh xc cc php ton v ng tc cn thc hin mt cch my mc theo mt trnh t vch r gii quyt mt loi bi ton hay nhim v no . Trong trng hp hiu theo ngha hp-gii cc bi ton, ta c th hiu: Thut ton l mt tp hp hu hn cc bc xc nh dng gii mt lp cc bi ton cng loi. N c vch ra trn c s cc d liu ban u v cc thng tin kt qu. Nh vy xy dng thut ton ta phi thc hin nh sau: - Chia bi ton thnh cc bc, mi bc ng vi mt thao tc ca ngi hoc my - Sp xp cc bc theo mt trnh t nht nh t thao tc u cho ti thao tc kt thc. V d: Thut ton gii phng trnh bc 2: ax2 + bx + c = 0 ( a0) Bc 1: Xc nh d liu a,b,c. Xong chuyn sang bc 2 Bc 2: Tnh = b2 - 4ac. Xong chuyn sang bc 3 1

Bc 3: Kim tra du ca + Nu >0 th chuyn sang bc 4 + Nu =0 th chuyn sang bc 6 + Nu <0 th chuyn sang bc 7 Bc 4: Tnh hai nghim phn bit ca phng trnh bc 2. Sau chuyn qua bc 5. Bc 5: In kt qu X1 v X2 . Xong chuyn sang bc 8. Bc 6: In nghim kp X=-b/2a . Xong chuyn sang bc 8. Bc 7: In kt qu phng trnh v nghim. Xong chuyn sang bc 8. Bc 8: Kt thc. 6.2. Trnh by thut ton bng s khi C nhiu cch biu din thut ton: Biu din thut ton di dng vn bn (v d trn), biu din di dng s khi. biu din thut ton di dng s khi th trong s mi cng vic c th hin trong mt khi nh sau: Khi nhp d liu : Trong khi ny ghi tn cc d liu cn nhp vo Khi x l: Cc php tnh s hc cn tnh ton ( Khi tnh ton) Khi kim tra iu kin: trong khi ghi biu thc logic cn kim tra, khi ch ra quyt nh i theo hng ny hay hng khc tu iu kin trong khi l ng hay sai Chuyn n vic tip theo

Bt u hoc kt thc cng vic In kt qu 6.3. Cc cu trc ca thut ton

a. Cu trc tun t
L cu trc m cc m t c thc hin tun t t trn xung di theo chiu iu khin. Chnh v vy m ngi ta cn gi cu trc ny l cu trc Top-Down. S 2

ca cu trc ny c dng nh sau:

Cu lnh 1 Cu lnh 2 ... Cu lnh n V d: thut ton tnh chu vi v din tch tam gic bit 3 cnh

a,b,c

CV=a+b+c

P= CV/2

S= (Px(p-a)x(p-b)x(p-c)

CV,S

b. Cu trc r nhnh
c s dng gii quyt mt trong hai tnh hung xy ra (tng ng vi hai 3

trng thi ng v sai). Cu trc r nhnh c 2 dng s dng nh sau:

F T K T K

F Cu lnh 2

Cu lnh

Cu lnh 1

c. Cu trc lp
c s dng thc hin mt cng vic lp i, lp li mt s ln hu hn. Cu trc chn cn c gi l cu trc chu trnh. Cu trc lp c 2 dng s nh sau:

Cc cu lnh lp

Cc cu lnh lp

K Dng 2 Dng 1 Trong : K l iu kin thc hin hoc thot khi vng lp. i vi dng 1 th cc thao tc lp c thc hin t nht mt ln, cn dng 2 th cc thao tc c th khng c thc hin ln no. V d: Thut ton tnh n! = 1 x 2 x 3 ... x n

B n i=1 ; GT=1

GT = GT x i i=i+1 T i<= n S GT

d. Cu trc chn (r nhiu nhnh):


c s dng chn mt trong nhiu tnh hung xy ra. y l cu trc m rng ca cu trc r nhnh. Cu trc chn c dng s nh sau:

K chn 1 K chn n S Cu lnh n+1 S

Cu lnh 1

Cu lnh n

6.4. Cc tnh cht ca thut ton

a. Tnh kt thc
Thut ton bao gi cng phi dng sau mt s hu hn cc bc thc hin. Khng phi c trong thut ton c khi kt thc l m bo thut ton s kt thc, v th khi xy dng thut ton phi chng t c tnh dng ca thut ton , thng l tho mn iu kin no v iu kin t phi xy ra.

b. Tnh xc nh
Cc bc thao tc trong thut ton phi r rng, khng gy s ln ln, kin cho mt lnh c th hiu theo nhiu ngha khc nhau

c. Tnh ph dng
Thut ton lun dng gii mt lp cc bi ton cng loi. N c th lm vic vi cc b d liu khc nhau v u t kt qu mong mun.

d. Tnh vo ra
Mi thut ton u phi c thng tin vo x l d n hay hin gi l d liu. Sau khi kt thc thut ton, tu chc nng m ta c th thu c kt qu khc nhau

e. Tnh hiu qu
Tnh hiu qu th hin ch vi d liu cho trc, thut ton thc hin sau mt s bc hu hn s dng v cho mt kt qu c th. 6.5. Chng trnh

a. Khi nim v lnh


Trong qu trnh gio tip gia ngi v my, khi mun my thc hin mt thao tc no th ta phi a vo mt dy cc k hiu (tu theo tng ngn ng). Khi nhn 6

c dy k hiu ny, my s phn tch v hiu c phi thc hin thao tc g. Mi dy k t khi a vo my vi nh yu cu my thc hin mt thao tc gi l mt lnh ca MTT. V d: Trong ngn ng PASCAL ta a vo dy k hiu sau Writeln( Chao cac ban!) , tc l a d liu ra mn hnh, th khi my s in ra cu Chao cac ban!

b. Khi nim v chng trnh


Chng trnh cho my tnh thc hin l mt tp hp cc lnh vit bng ngn ng no , m ngi dng v my c th hiu c. Mi mt lnh chnh l mt thao tc trong thut ton phi c xy dng trc. Ni cch khc chng trnh chnh l bn m t thut ton bng mt ngn ng m my hiu c. Ngn ng gi l ngn ng lp trnh.

c. Ngn ng lp trnh
Khi nghin cu cc phn mm ngi ta quan tm n cc loi ngn ng khc nhau vit chng trnh cho MTT. Cc ngn ng ny gi l ngn ng lp trnh (Programming Language). Mi ngn ng lp trnh c xy dng t cc yu t c s sau y: - Tp hp cc k t ( bng ch ci, ch s, k hiu), tp hp cc t kho dnh ring cho tng ngn ng. - Tp hp cc quy tc ng php: Quy tc t tn, quy tc vit cc lnh ... Trong s cc ngn ng lp trnh ngi ta chia lm hai loi: Ngn ng my v ngn ng thut ton

Ngn ng ca my tnh in t
c th giao tip gia ngi v my th gia ngi v my phi c ngn ng chung. Trong qu trnh pht trin ca MTT th vic tm ngn ng giao tip cng pht trin mnh m, cho ti nay giao tip vi MTT chng ta c rt nhiu ngn ng. Mt my tnh khi ra i bn thn n bao gi cng c mt ngn ng c s gi l ngn ng my, chnh l ngn ng s cp nht 7

Ngn ng my l mt ngn ng lp trnh vi nhng c im sau: - Mi lnh ch quy nh phi lm mt php ton ( Hay thao tc) s cp dn gin nh cng, tr, nhn, chia, so snh hai i lng vi nhau - Mi lnh u c phn m php ton ch php ton phi lm v phn a ch ghi a ch ca cc nh cha thnh phn php ton hay a ch ca ni t kt qu trong RAM - Mi m php ton hay a chu phi c vit hon ton bng cc ch s 0,1 c th a vo b nh trong ca my. Tuy nhin khi vit hay in chng trnh ngi ta khng th dng h s 2 v nh th lnh s di kh c v kh nh. Ngi ta thng dng h 16 hay h 8 v cc s ca h ny d i sang h 2. Vit chng trnh bng ngn ng my l mt vic lm th cng, t m, mt thi gi, d nhm ln m cc chng trnh lp cho loi my ny khng dng c cho loi my khc v lm chm nhp ng dng k thut tnh ton in t vo cc lnh vc ca i sng. chnh l l do cc chuyn gia my tnh phi n lc ci tin vic lp trnh cho my, ngi ta tm cch xy dng cc ngn ng d c, d hiu gn gi vi ngn ng t nhin ca con ngi, l mt h thng nhng qui c khng ph thuc vo tng my c th. Nhng ngn ng gi l ngn ng thut ton (hay ngn ng cp cao).

Ngn ng thut ton


Ngn ng thut ton l ngn ng lp trnh d c, d hiu gn gi vi ngn ng t nhin ca con ngi n khng ph thuc vo tng loi my c th. Trong s cc ngn ng thut ton c nhng loi gn vi ngn ng my hn gi l ngn ng cp thp nh ASSEMBLER, c loi gn gi vi ngn ng ca con ngi nh BASIC, PASCAL... Gi l ngn ng cp cao, v cng c loi trung gian nh ngn ng C. Mi mt ngn ng thut ton u c mt chng trnh dch lm nhim v phin dch cc chng trnh vit bng ngn ng thut ton (gi l chng trnh ngun hay chng trnh gc) thnh chng trnh vit bng ngn ng my ( gi l chng trnh ch). Khi thc hin, chng trnh ch trong my s thc hin. Thng thng cc ngn ng c hai kiu dch: 8

+ Thng dch: ngha l dch dn tng lnh ca chng trnh gc ra ngn ng my ri thc hin ngay. Mi ln thc hin chng trnh u phi dch li. Vic lm ny tuy chm nhng c li khi chng trnh cha hon thin, cn ang phi hiu chnh. V d ngn ng GWBASIC. + Bin dch: Ngha l dch ton b chng trnh gc thnh chng trnh ch ri mi thc hin chng trnh ch. V d QBASIC, PASCAL.

Chng 4: NGN NG TURBO PASCAL 7.0


1. GII THIU CHUNG V TURBO PASCAL 7.0 1.1. S ra i v pht trin ca PASCAL PASCAL l ngn ng lp trnh bc cao do gio s Niklaus Wirth (trng i hc k thut Zurich, Thu s) pht trin v cng b vo u nhng nm 1970 k nim nh ton hc ngi Php Blaise PASCAL - ngi ch to ra chic bn tnh cng u tin vo nm 1642. PASCAL c sng tc ra nhm mc ch dy hc cho sinh vin cc trng i hc. PASCAL gip sinh vin cng nh nhng ngi mi hc lp trnh c c thi quen vit mt chng trnh c cu trc sng sa, r rng, d hiu. PASCAL l mt ngn ng c nh kiu mnh m. iu c ngha l mi bin v hng ca mt kiu d liu khng th t do em trn ln vi cc bin v hng ca mt kiu d liu khc. Vic quy nh kiu cht ch nh vy buc ngi lp trnh lun phi vit cc biu thc gm cc i lng tng thch nhau v kiu d liu. PASCAL l mt ngn ng c cu trc. c im ca ngn ng c cu trc l ta c th tch cc d liu (bin, hng,...) v cc lnh lin quan n mt cng vic nht nh thnh mt khi ring v tch ra khi phn cn li ca chng trnh ngi lp trnh c th gii quyt dn tng phn mt, v c th c nhiu ngi cng tham gia lp trnh, mi ngi ph trch mt vi khi. Thng thng mt khi tng ng vi mt nhim v c th c thc hin bng cc chng trnh con vi cc bin a phng l cc bin tm thi ca chng trnh con . Bng cch ny ta c th vit cc chng trnh con sao cho cc s kin xy ra trong khng lm nh hng n cc phn khc ca chng trnh nm ngoi chng trnh con ny. D thi gian u PASCAL ch l ngn ng dng dy hc, nhng trong qu trnh pht trin PASCAL th hin cc u im v tr thnh mt ngn ng lp trnh mnh c thng mi ho rt nhanh. Nhiu hng pht trin v to ra cc chng trnh dch PASCAL khc nhau nh: - ISO PASCAL (PASCAL chun, ISO International Standard Organization) - ANSI PASCAL (American National Standard Institue) - TURBO PASCAL (ca hng Borland) 10

- IBM PASCAL (ca hng Microsoft). Turbo PASCAL l sn phm ca hng Borland (M) hin c dng ph bin nht so vi cc loi PASCAL khc cng nh so vi cc ngn ng khc v cc u im: - Tc dch nhanh. - Chng trnh dch ngn gn - Cc phn m rng so vi PASCAL chun p ng c yu cu ca ngi lp trnh nh can thip su vo my v khng ngng ci tin nng cao qua cc phin bn ca n. 1.2. Khi ng v thot khi Turbo PASCAL

1.2.1. Khi ng TURBO PASCAL


Turbo PASCAL 7.0 gm rt nhiu tp, c th khi ng Turbo PASCAL 7.0 th cn c ti thiu 2 tp (trong cng th mc) sau: - TURBO.EXE l tp chnh ca TURBO PASCAL. Tp ny cha y cc chc nng son tho, dch, chy chng trnh v mt s chc nng khc. - TURBO.TPL l tp th vin cha cc chng trnh mu c sn ca TURBO PASCAL m ta gi l UNIT (n v chun). Khi ng Turbo PASCAL t h iu hnh MS DOS c thc hin ging nh vic gi lnh ngoi tr. V d: Gi s c 2 tp TURBO.EXE v TURBO.TPL nm trong th mc BIN trong th mc TP trn th mc gc C: v du mi h thng l C:\>, khi khi ng Turbo PASCAL, ta g cc lnh sau: CD TP\BIN TURBO

1.2.2. Thot khi Turbo PASCAL


thot khi Turbo PASCAL7.0, t mn hnh son tho ca Turbo PASCAL7.0 ta thc hin nh sau: - Bm t hp phm Alt+F vo menu File v chn mc Exit 11

- Hoc bm phm F10, chn menu File -> Exit - Hoc bm t hp phm Alt+X. 1.3. Mi trng lm vic ca Turbo PASCAL

1.3.1. Mn hnh giao tip ca Turbo PASCAL


Sau khi khi ng chng trnh xong ta s c mn hnh giao tip nh sau:

Men u chnh Mn hnh son tho Thanh cun dc

Dng trng thi

Thanh cun ngang

Dng ch dn

- Dng Menu chnh: bao gm nhiu mc chn, mi mc chn gm mt s mc chn con vi cc chc nng khc nhau. - Mn hnh son tho: cho php son tho ni dung chng trnh. - Dng ch dn: ch dn cch thc hin nhanh mt s lnh thng qua cc phm chc nng. V d: lu ni dung chng trnh hin ti vo a, ta bm phm F2. - Thanh cun dc, ngang: dng hin th phn ni dung chng trnh b che khut. - Dng trng thi: cha mt s biu tng nh ng tp chng trnh ang lm vic, chuyn sang lm vic vi tp ang m khc,... v cung cp mt s thng tin khi son tho chng trnh nh: tn tp ang son tho; v tr con tr mn hnh;...

1.3.2. Son tho trong Turbo PASCAL


12

1.3.2.1.Cc phm dng di chuyn con tr Home End PageUp Di chuyn con tr sang tri mt k t. Di chuyn con tr sang phi mt k t. Di chuyn con tr ln dng trn. Di chuyn con tr xung dng di. a con tr v u dng hin ti. a con tr v cui dng hin ti. Di chuyn con tr ln pha trn mt trang mn hnh.

PageDown Di chuyn con tr xung pha di mt trang mn hnh. Ctrl + Ctrl + Di chuyn con tr sang tri mt t. Di chuyn con tr sang phi mt t. Di chuyn con tr v u vn bn. Di chuyn con tr v cui vn bn.

Ctrl + PageUp Ctrl+PageDown

1.3.2.2. Cc phm dng xo k t Phm Del Xo k t ti v tr con tr. Xo k t bn tri v tr con tr.

Phm (BackSpace) Ctrl + Y Ctrl+Q,Y Ctrl+Q,L

Xo dng vn bn con tr ang lm vic. Xo t v tr con tr n cui dng. Khi phc dng va xo.

1.2.3.3. Lm vic vi khi vn bn Khi vn bn l phn vn bn lin tc c nh du li phn bit vi cc phn vn bn khc. Mun lm vic vi khi vn bn no ta cn phi chn khi vn bn bng cch: a con tr v v tr u ca khi, sau gi phm Shift ng thi dng cc phm di chuyn con tr chn. Trong Turbo PASCAL c mt s lnh lm vic vi khi vn bn nh sau: 13

Ctrl+Insert Shift+Del

Sao chp khi vn bn chn vo b nh m(ClipBoard). Di chuyn khi vn bn chn vo b nh m(ClipBoard).

Shift + Insert Sao chp ni dung t b nh m ra v tr con tr ang lm vic. Ctrl + Del Ctrl +K,H Ctrl + K,W Ctrl + K,R Xo khi vn bn chn. Hu b vic chn khi vn bn. Ghi khi vn bn chn ra tp. c mt tp t a v t vo v tr con tr ang lm vic.

1.2.3.4. Tm kim v thay th Ctrl + Q,F Ctrl + Q,A Tm kim mt xu k t. Tm kim mt xu k t v thay th bng xu k t khc.

1.2.3.5. Mt s phm chc nng khc Phm Insert Thay i ch vit chn v vit . Alt + BackSpace Ctrl + O,I Khi phc li cng vic thc hin trc (Undo).

Bt/Tt ch t ng cn thng l tri vi dng trc.

Ngoi ra: Cc t hp phm thng c s dng cc phin bn trc c th s dng trong phin bn ny. V d nh: Ctrl+K,B; Ctrl+K,V; Ctrl+K,C;....

1.3.3.Lm vic vi menu chnh


Mun vo lm vic vi h thng menu ta c th thc hin bng cch: bm phm F10 hoc gi phm Alt v bm phm i din nhm chc nng cn chn, sau s dng cc phm mi tn a hp sng n mc cn chn v bm phm Enter. thot khi h thng menu, quay v mn hnh son tho vn bn bm phm ESC. Trong khi lm vic vi h thng menu cn ch : - Cc mc ch m l khng th thc hin c ti thi im hin ti. - Cc mc c du .. theo sau l mc chn cn cha mc chn con khc. - Cc mc chn c t hp phm ghi bn cnh l mc chn c th thc hin c 14

t mn hnh son tho bng cch bm t hp phm tng ng . Cc mc hay dng nht trong menu thuc bn nhm File, Edit, Run v Complie. Ta s xem xt nhng ni dung chnh ca bn menu ny: 1.3.3.1. Menu File

New: Open:

M tp chng trnh mi. M tp chng trnh c trn a ra lm vic (c th n phm F3 thc hin chc nng ny).

Save:

Lu gi ni dung chng trnh ang lm vic vo a (c th n phm F2 thc hin chc nng ny). Nu l ln u tin thc hin th phi khai bo ng dn v tn ca tp chng trnh cn ghi (tp chng trnh c phn m rng mc nh l PAS).

Save as: Change dir: Print: Print setup: DOS shell:

Lu gi ni dung chng trnh ang lm vic vi tn tp khc. Thay i th mc hin thi. In ni dung chng trnh ang lm vic. Thay i tham s cho my in,... Tm thi thot khi Turbo PASCAL v DOS, mun tr li Turbo PASCAL g lnh EXIT.

Exit:

Thot khi Turbo PASCAL. 1.3.3.2. Menu Edit

15

Undo: Redo: Cut: Copy: Paste: Clear:

Hu b thao tc va thc hin trc . Hu b thao tc Undo trc , ly li thao tc va hu b. Chuyn khi vn bn chn vo b nh m. Sao chp khi vn bn chn vo b nh m. Sao chp ni dung t b nh m ra v tr con tr. Xo khi vn bn chn.

Show clipboard:Xem ni dung bn trong b nh m. 1.3.3.3.Menu Run

Run:

Yu cu Turbo PASCAL bin dch v chy chng trnh ang son tho (c th n phm Ctrl+F9 thc hin chc nng ny). Trong qu trnh thc hin nu gp li, Turbo PASCAL s a ra thng bo v t con tr v v tr pht hin ra li. Sau khi chy xong chng trnh, mn hnh tr v trng thi ban u, do c th xem kt qu ca chng trnh phi bm t hp phm Alt+F5 sau khi thc hin chng trnh.

Step Over:

Bin dch v thc hin tng bc chng trnh ang son tho. Khi thc hin xong mt lnh thc hin lnh tip theo n phm F8. Lnh ny khng thc hin tng lnh trong chng trnh con. 16

Trace Into:

Bin dch v thc hin tng bc chng trnh ang son tho. Khi thc hin xong mt lnh thc hin lnh tip theo n phm F7.

Go to cursor:

Bin dch v thc hin tng bc chng trnh ang son tho n dng lnh cha con tr mn hnh th dng li. Khi thc hin xong mt lnh thc hin lnh tip theo n phm F4. Khng thc hin tng lnh trong chng trnh con.

Program reset Dng thao tc sa cha, xo b nh. Parameters: nh cc tham s trn dng lnh cn chuyn cho chng trnh.

1.3.3.4. Menu Compile

Compile:

Thc hin chc nng dch v ch dnh nhng tp no cn thit ch khng dch ht. Sau khi dch khng cho thc hin chng trnh.

Make:

Thc hin chc nng dch v ch nh ng mt UNIT ta ang son tho. Sau khi dch khng cho thc hin chng trnh.

Build:

Thc hin chc nng dch ton b chng trnh. Sau khi dch khng cho thc hin chng trnh.

Primary file:

Ch tn tp cha chng trnh chnh. Nu chng trnh ch cha mt tp, khng c UNIT th khng cn quan tm n mc ny.

ClearnPrimary file: Xo b tn tp cha chng trnh chnh. Information: Hin th mt s thng tin v chng trnh ang thc hin.

Tm li: Trong phn chy v bin dch chng trnh, ta ch cn nh t hp phm Ctrl+F9 l thun tin nht. Alt_F5 xem kt qu thc hin chng trnh.

17

2. CC YU T C BN CA NGN NG TURBO PASCAL 2.1. Bng ch (Character set) TURBO PASCAL s dng mi k hiu trong bng m ASCII c chia thnh ba loi sau: - B ch ci: Gm 26 ch ci ting Anh in hoa (A,...,Z) v in thng (a,...,z). TURBO PASCAL khng phn bit ch in hoa, in thng, tr trng hp trong cc xu vn bn. - B ch s: gm 10 ch s ,1,...,9. trnh nhm ln gia s vi ch O, TURBO PASCAL qui nh s c gch cho trong. - Cc k hiu c bit: l cc k hiu khng phi ch ci hoc ch s. Chng hn nh: <,>,?,=,+,!,~,[,],{,},... Mi k hiu thuc mt trong ba loi trn gi chung l mt k t. 2.2. T kho (Keyword) T kho l mt t ting Anh khng cha khong trng vi cch vit v ngha xc nh. Trong Turbo PASCAL, khng dng t c ngha tng ng thay th. - Trong chng trnh t kho c th c vit bng ch in hoa hoc in thng nhng phi c t nht mt k t trng t gia cc t kho. - Khng c dng t kho vo vic khc hoc t tn mi trng vi cc t kho. Turbo PASCAL c cc t kho sau: - T kho chung: PROGRAM, BEGIN, END, PROCEDURE, FUNCTION - T kho khai bo: USES, CONST, VAR, LABEL, TYPE, ARRAY, STRING, FILE, RECORD, OBJECT, SET - T kho ca lnh r nhnh: IF ... THEN ... ELSE, CASE ... OF - T kho ca lnh chu trnh: FOR ... TO ... DO, FOR...DOWNTO...DO, WHILE...DO, REPEAT...UNTIL - T kho iu khin: WITH, GOTO - T kho ton t: AND, OR, NOT, IN, XOR, DIV, MOD 18

- T kho Nul: NUL 2.3. Tn (Identifier) Tn l dy k t c dng ch tn hng, tn bin, tn chng trnh con,... Cch t tn: L dy lin tip khng qu 127 k t thuc loi ch ci, ch s, du gch ni, bt u bi ch ci v khng phn bit gia vit in v vit thng. Khi t tn ngi ta thng t tn c tnh gi nh. Chng hn khi lp chng trnh gii phng trnh bc nht ta c th t tn chng trnh l: Phuong_trinh_bac_nhat - Tn chun (Predefined Identifier): l tn ca cc hm v th tc c TURBO PASCAL nh ngha sn hay cn gi l tn c nh ngha trc. Mt s tn chun: BOOLEAN, CHAR, INTEGER, REAL, BYTE, FALSE, TRUE, SIN, COS, PI, INTEGER, READLN,... - S khc bit gia tn chun v t kho: t kho l nhng t m ngha c quy nh sn, ta khng c dng vi ngha no khc, cn tn chun th c th dng t tn cho mt i tng mi, khi ngha c ca tn chun s khng cn na. 2.4. Ch thch (Comment) Ch thch trong TURBO PASCAL l mt xu k t c t gia hai du { v } hoc c t gia hai cp du (* v *) dng gii thch trong chng trnh, gip cho chng trnh d c, d hiu hn m khng lm nh hng n phn khc. Khi thc hin my s b qua phn gii thch ny. V d: (* Phn khai bo cc bin, hng *) { y l phn chnh ca chng trnh} 2.5. Mt s kiu d liu c bn

2.5.1. Kiu s nguyn


Kiu s nguyn c my nh ngha sn vi t kho Integer. Tuy nhin trong Turbo PASCAL c mt s kiu s nguyn nh sau:

19

Kiu Byte Word Shortint Integer Longint Ch : 0 ... 255

Min gi tr 0 ... 65535 -127 ... 127 -32768 ... 32767 -2147483648 ... 2147483647

Yu cu b nh 1 byte 2 bytes 1 byte 2 bytes 4 bytes

- Khi vit s nguyn khng c c du cch gia cc ch s v khng c dng du chm thp phn gia cc ch s. Du dng (+) hoc du m (-) nu c th phi t ngay trc ch s u tin. - Khi tham gia cc php ton phi quan tm n kt qu xem c cn nm trong min gi tr cho php hay khng? V d: bin a c kiu Integer a := 10; {ng} a := 27 * 32767; {sai v khng thuc min gi tr}

2.5.2. Kiu s thc


Kiu s thc c nh ngha sn bng t kho Real trong Turbo PASCAL. Tuy nhin cn c cc kiu s thc sau trong PASCAL chun: Kiu Real Single Double Extended Comp Phm vi biu din 2.9E-39 ... 1.7E+38 1.5E-45 ... 3.4E+38 5.0E-324 ... 1.7E+308 3.4E-4932 ... 1.1E+4932 -9.2E+18 ... 9.2E+18 S ch s c ngha 11-12 7-8 15-16 19-20 19-20 Yu cu b nh 6 bytes 4 bytes 8 bytes 10 bytes 8 bytes

Trong chng trnh PASCAL s thc c th c vit di hai dng: dng du chm tnh v dng du chm ng. Dng du chm tnh S thc vit di dng du chm tnh l s thc c phn nguyn v phn thp phn. Du chm c dng ngn cch gia hai phn ny. 20

Dng tng qut:

n.m

trong n v m l dy s trong h m c s 10 V d: Cch vit s thc 123.45, -5.654 l ng. Cch vit s thc nh sau l sai, l khng y : .45 (l sai, phi vit l 0.45) 12. (l khng y , phi vit l 12.0 hoc 12) Dng du chm ng S thc vit di dng du chm ng c tch thnh hai phn. Phn nh tr v phn bc. Dng tng qut : trong : n.m E s

n, m, s l dy cc s h m c s 10 E s vi ngha l 10
S

V d: 4.3324E+2 hoc 0.43324E+3 u biu din s 433.24

2.5.3. Kiu k t (Char)


Kiu k t dng biu din mt k t thng qua bng m ASCII, mt k t kiu CHAR chim 1 byte. C tt c 256 k t nh s t 0 n 255. M ca mt k t chnh l s th t ca n trong bng m. biu din mt k t, c th s dng cc cch sau: - t k t cn biu din trong du nhy n. V d: 'A', 'a', '1', ... - Dng hm Char(n) biu din k t c gi tr m l n. V d: Char(65) biu din 'A'. - Hm Char(n) c th vit #n. V d: #65 biu din k t 'A'.

2.5.4. Kiu xu k t (String)


21

Mt gi tr kiu String l mt xu k t bt k t trong hai du nhy n. Yu cu b nh dnh cho kiu string bng di ca xu k t cng mt. di xu k t chnh l s k t trong dy. di ngm nh ti a l 255 k t. V d: 'xyz' l hng c kiu String c di l 3 cn 4 bytes biu din. 'Ha noi' l hng c kiu String c di l 6 cn 7 bytes biu din. 'Nguyen Thi Hoa' l hng c kiu String c di l 14 cn 15 bytes biu din.

2.5.5. Kiu Logic (Boolean)


D liu kiu Boolean ch nhn mt trong hai gi tr TRUE (ng) hoc FALSE (sai). D liu kiu Boolean chim 1 byte b nh. TRUE v FALSE l tn cc gi tr c nh ngha sn, trong gi tr FALSE coi l nh hn TRUE. 3. CC I LNG C BN CA TURBO PASCAL 3.1. Hng (Constant) Hng l cc i lng xc nh, khng thay i gi tr trong sut chng trnh. Cc loi hng: hng s (nguyn v thc), hng k t, hng xu k t, hng logic. Trong chng trnh hng c th c th hin bng gi tr cho trc tip hoc th hin qua tn. Nu hng th hin qua tn th trc khi s dng phi khai bo phn khai bo hng trong chng trnh. Khai bo hng theo nguyn tc sau: CONST <Tn hng> = <gi tr hoc biu thc ca hng>; Kiu ca gi tr hoc ca biu thc s xc nh kiu ca hng. V d: CONST x = 20; y = 3*7 + 1; 22

z = abc; nu = False; Turbo PASCAL cho php thc hin ng thi vic khai bo v khi u mt gi tr sau t kho CONST. V d: CONST m=3.2; x: integer = 20; Ch : Trong chng trnh c th thay i li gi tr ca bin x thng qua lnh gn v bin x khai bo kiu, cn gi tr ca bin m khng thay i li c v bin m cha khai bo kiu. 3.2. Bin (Variable) Bin l mt i lng m gi tr c th thay i trong qu trnh thc hin chng trnh. Bin c th hin thng qua tn bin. Mi bin l mt a ch tng trng cho mt trng nh RAM lu tr d liu thuc 1 trong 5 kiu d liu trn. Trong chng trnh mun s dng bin no th phi khai bo trc v mt bin ch gn vi mt kiu d liu duy nht. Khai bo bin theo nguyn tc sau: VAR <Danh sch bin>: <kiu d liu ca bin>; trong : <DS bin> l tn cc bin cn khai bo t cch nhau du phy. <kiu d liu ca bin> c th l: real, integer, char, string, Boolean, ... Du hai chm (:) ngn cch gia hai phn ca khai bo bin. Ch : i vi bin c kiu String c hai cch khai bo: <Danh sch bin>: String; {xu k t c di khng qu 255 k t} <Danh sch bin>: String[n]; {c di khng qu n k t, n 255} Khi c th ch ra k t th i trong xu bng cch vit: bin[i] v mi bin[i] c kiu char. 23

V d: VAR i ,j: integer; x: real; ho_ten: string[30]; ghichu: string; tl: char; Bin ch s: L dng c bit ca bin m t cc i lng bin thin km ch s. Cch vit: <Tn bin>[<danh sch cc ch s>]

trong : <danh sch cc ch s> gm cc ch s vit cch nhau du phy V d: x1 vit trong ngn ng Turbo PASCAL l x[1] xij c vit l x[i,j] 3.3. Hm (Function) v th tc (Procedure) Hm v th tc l cc chng trnh mu xy dng sn v c lu tr trong th vin chng trnh mu thc hin mt cng vic xc nh.. S khc bit c bn v duy nht gia hm v th tc l: Hm s tr v gi tr kt qu tng ng thng qua tn hm, do hm c s dng trong mt biu thc. Cn th tc khng tr v kt qu thng qua tn th tc, do th tc khng c s dng trong biu thc. V d: Hm ABS(x) tr v tr tuyt i ca x, hm SQRT(x) tr v gi tr s l cn bc hai ca x,... Th tc Dec(x) gim gi tr ca bin nguyn x mt n v, Th tc Inc(x) tng gi tr ca bin nguyn x mt n v, ...

3.3.1. Mt s hm v th tc dng cho s nguyn


a. Hm ABS(x): tr v gi tr tuyt i ca x. V d: x : integer; x := abs(15-20); 24 {x = 5}

b. Hm SQR(x): tr v gi tr bnh phng ca x. V d: x: integer; x := sqr(3); {x = 9}

c. Hm Pred(x): tr v gi tr bng x-1 ca s nguyn x. V d: x: integer; x := pred(15 - 20); {x = -6}

d. Hm Succ(x): tr v gi tr bng x+1 ca s nguyn x. V d: x: integer; x := succ(15 - 20); {x = -4}

e. Hm Odd(x): tr v gi tr TRUE nu s nguyn x l s l, tr v gi tr FALSE nu s nguyn x l s chn. V d: kt : boolean; kt := odd(10); {kt = false}

f. Th tc Dec(x): gim gi tr ca bin nguyn x xung mt n v. V d: x: integer; x := 5; dec(x); {x = 4}

g. Th tc Inc(x): tng gi tr ca bin nguyn x thm mt n v. V d: x: integer; x := 5; inc(x); {x = 6}

3.3.2. Mt s hm v th tc dng cho s thc


a. Hm ABS(x): tr v tr tuyt i ca x. V d: x: real; x := abs(15-20); 25 {x = 5.0000000000E+00}

x := abs(10/3);

{x = 3.3333333333E+00}

b. Hm SQR(x): tr v gi tr bnh phng ca x. V d: x: real; x := sqr( - 2); {x = 4.0000000000E+00}

c. Hm SQRT(x): tr v gi tr s thc l cn bc hai ca x. V d: x: real; x := sqrt( 9); d. Hm Pi: tr v gi tr ca s (3.1415.....). e. Hm SIN(x): tr v gi tr Sinx, x tnh theo Radian. V d: x: real; x := sin(30*pi/180); {x = 5.0000000000E-01} {x = 3.0000000000E+00}

f. Hm COS(x): tr v gi tr Cosx, x tnh theo Radian. V d: x: real; x := cos(90*pi/180); {x = 0.0000000000E+00}

g. Hm ArcTan(x): tr v gi tr l cung (bng radian) trong khong (- /2, /2) c tang bng x. V d: arctan(1) tr v gi tr 7.8539816340E-01 (radian). arctan(1)/pi*180 tr v gi tr 4.5000000000E+01 (). h. Hm Exp(x): tr v gi tr ex( trong : hng s e = 2.71828...) V d: exp(2) tr v gi tr 7.3890560989E+00 i. Hm Ln(x): tr v Loga c s e ca x (Logex). V d: Ln(3) tr v gi tr 1.0986122887E+00 j. Hm Int(x): tr v gi tr phn nguyn ca x nhng c kiu s thc. V d: x: real; x := int(2.8); {x = 2.0000000000E+00}

k. Hm Trunc(x): tr v gi tr phn nguyn ca x nhng c kiu s nguyn. 26

V d:

x: integer; x := int(2.8); {x = 2}

l. Hm Frac(x): tr v phn thp phn ca x. V d: x: real; x := frac(10/3); {x = 3.3333333333E-01}

m. Hm Random: tr v mt s thc ngu nhin trong khong (0,1). V d: Random tr v gi tr 4.6554604231E-01 n. Hm Round(x): tr v gi tr s nguyn gn s thc x nht (theo qui tc lm trn s n phn nguyn). V d: x: real; x := round(12.5); {x = 1.3000000000E+01}

3.3.3. Mt s hm v th tc v k t v xu k t
a. Hm CHR(x): tr v k t c m ASCII tng ng bng x. V d: kt: char; kt := chr(66); {kt = B}

b. Hm Concat(S1,S2,...,Sn): tr v xu k t ghp lin tip ca cc xu S1,S2,...,Sn V d: kt: char; kt := concat(ab, ,cd); {kt = ab cd} c. Hm Length(S): tr v gi tr s nguyn l di ca xu k t S. V d: x: integer; x := length(ab cd); Tng di ca xu phi <= 255 k t. d. Hm Ord(C): tr v gi tr s nguyn l m ASCII thp phn ca k t C. V d: x: integer; x := ord(B); 27 {x = 66} {x = 5}

e. Hm Pred(C): Tr v k t ng trc k t C trong bng m ASCII. V d: kt: char; kt := pred(B); {kt = A}

f. Hm Succ(C): Tr v k t ng sau k t C trong bng m ASCII. V d: kt: char; kt := succ(B); {kt = C}

g. Th tc Str(x,s): Chuyn gi tr s x (nguyn hoc thc) thnh xu k t dng s v lu tr trong bin s (c kiu string). V d: a: string; str(567, a); {a = 567}

h. Th tc Val(s,x,code): Chuyn xu k t s thnh gi tr s v lu tr trong bin x (c kiu s nguyn hoc thc). Nu chuyn c ton b cc k t th bin Code nhn gi tr 0 (c kiu s nguyn) ngc li th bin Code nhn gi tr l v tr bt u t khng chuyn c. V d: x : real; y:integer; {x = 567, y = 0} {x = 0, y = 4} {x = 0, y = 5}

val(567, x, y); val(567ab8, x, y); val(5678ab9, x, y);

3.3.4. Mt s th tc v con tr mn hnh


Cc th tc v con tr mn hnh c trnh by di y nm trong unit CRT, v vy khi s dng mt trong cc th tc ny phi khai bo unit CRT trong phn khai bo cc unit. Uses CRT; a. Th tc Gotoxy(x,y): Th tc ny dng di chuyn con tr mn hnh n ct x, dng y. Trong : x nhn gi tr nguyn dng t 1 n 80, y nhn gi tr nguyn dng t 1 n 25. V d: Gotoxy(25,10); s a con tr mn hnh v dng 10, ct 25. 28

b. Th tc ClrScr: Th tc ny dng xo ton b mn hnh v a con tr v dng 1, ct 1. ClrScr c vit tt bi cm t CLeaR SCReen. V d: ClrScr; c. Th tc ClrEol: Th tc ny dng xo cc k t t v tr con tr n cui dng ri a con tr v v tr trc khi thc hin th tc. ClrEol c vit tt bi cm t CLeaR End Of Line. V d: Gotoxy(15,30); ClrEol; Lnh ClrEol trn s xo tt c cc k t t ct 30 v cui dng ca dng 15, sau a con tr v v tr l dng 15, ct 30. d. Th tc Insline: Th tc ny dng chn mt dng trng vo v tr hin ti ca con tr. Insline c vit tt bi cm t INSert LINE. e. Th tc DelLine: Th tc ny dng xo dng m con tr ang . Delline c vit tt bi cm t DELete LINE. f. Th tc Where X: Th tc ny cho bit to ct hin hnh ca con tr mn hnh. g. Th tc Where Y: Th tc ny cho bit to dng hin hnh ca con tr mn hnh. 4. BIU THC Biu thc l mt tp hp cc i lng c kt hp vi nhau bi cc du php ton v cc du th hin trnh t u tin xc nh mt gi tr nht nh. Trong ngn ng Turbo PASCAL, du th hin trnh t u tin l cp du (). Trng hp n gin nht biu thc ch l mt hng, mt bin hoc mt hm. Turbo PASCAL c cc loi biu thc c bn sau: 4.1. Biu thc s Mt tp hp cc hng, bin, hm c cng kiu s c lin kt vi nhau bi cc du php ton s hc, cc du ng, m ngoc mt cch c ngha to thnh biu thc s hc. 29

Cc php ton: Php ton Php cng Php tr Php nhn Php chia Php chia ly phn nguyn Php chia ly phn thp phn Php DIV, MOD ch thc hin vi cc s nguyn. Trnh t u tin thc hin cc php ton: Trnh t u tin c xp t cao xung thp theo th t di y (Nu cng th t u tin th thc hin t tri qua phi): - Cc php ton trong ( ) - Tnh hm - Php tnh mt ngi (v d -a hoc +a) - Php nhn, php chia, DIV, MOD - Php cng, php tr V d: Biu din cc biu thc sau theo ng quy nh ca ngn ng Pascal: (1)
a + b + co 6 0 s 0

Vit trong Turbo PASCAL + * / DIV MOD

Vit trong Pascal: a + sqrt(b) + cos(60*pi/180) (2)


a b +a x 2b ( a > 0)

Vit trong Pascal: (sqrt(abs(a b)) + e(x*ln(a)))/(2*b) Ch : - Tt c cc i lng ca biu thc s hc u c vit trn cng mt dng. - Khng hai tn lin nhau v khi Turbo PASCAL s hiu l mt tn. - Chiu di ca biu thc s ni chung khng qu 255 k t. 30

- Khi tnh biu thc s hc, my s i kiu ca mi i lng ra kiu ca i lng c chnh xc cao nht tnh theo qui tc. 4.2. Biu thc xu k t Mt tp hp cc bin, hng, hm c kiu k t hoc kiu xu k t lin kt vi nhau bi du cng(+) to thnh biu thc xu k t. Gi tr ca biu thc xu k t l tp hp cc gi tr ca cc bin, hng, hm c mt trong biu thc ghp li tun t vi nhau theo th t xut hin. V d: ABC + CD + char(65) kt qu l dy k t ABCCDA 4.3. Biu thc quan h Hai biu thc cng kiu lin kt vi nhau bi mt php ton quan h to thnh biu thc quan h trong Turbo PASCAL. Cc php ton : Php ton Ln hn hoc bng Ln hn Nh hn hoc bng Nh hn Khc nhau Bng Vit trong PASCAL >= > <= < <> =

Gi tr: Khi tnh gi tr ca biu thc quan h, my s tnh gi tr 2 biu thc 2 v ri em so snh vi nhau, nu ph hp du php ton th biu thc nhn gi tr ng, ngc li nhn gi tr sai. Nh vy biu thc quan h tr v mt trong hai gi tr TRUE (ng) hoc FALSE (sai), trong gi tr FALSE c coi l nh hn TRUE. Ch : - Trong Pascal, cc php ton quan h vit nh sau l sai: =<; =>; >< 31

- Khi hai biu thc cn so snh c kiu xu k t th Turbo PASCAL s i tnh gi tr hai biu thc , sau cc k t ca hai xu kt qu c so snh tng cp mt t tri qua phi theo gi tr ca bng m ASCII. - Nu hai xu k t kt qu c di khc nhau song s k t ging nhau n di xu ngn nht th xu c di ngn hn c coi l b hn. - Hai xu k t kt qu c coi l bng nhau nu chng ging nhau c v ni dung v di. V d: 2 + 3 <=10+4 'HN' < 'HP' HN > HNM HN = HN HN => HNM 4.4. Biu thc logic Mt tp hp cc biu thc quan h, cc i lng logic lin kt vi nhau bi cc php ton logic, cc du ( v ) to thnh biu thc logic trong Turbo PASCAL. Nu trong biu thc logic c nhiu php ton quan h th phi nhm tng php ton li vi nhau bng cp du (...) Cc php ton : Php ton Php ph nh logic Php v logic Php hoc logic Php hoc trit tiu Kt qu thc hin ca cc php ton nh sau: Biu thc A TRUE 32 Gi tr TRUE FALSE FALSE Vit trong PASCAL NOT AND OR XOR {c gi tr FALSE} { c gi tr TRUE} { c gi tr FALSE} { c gi tr True} {khng thc hin c do vit sai du php ton}

B NOT a a AND b a OR b a XOR b

TRUE FALSE TRUE TRUE FALSE

FALSE FALSE FALSE TRUE TRUE

TRUE TRUE FALSE TRUE TRUE

FALSE TRUE FALSE FALSE FALSE

Trnh t u tin thc hin: Trnh t u tin c xp t cao xung thp theo th t di y (Nu cng th t u tin th thc hin t tri qua phi): - Cc php ton trong ngoc (). - Php ph nh logic (NOT). - Php v logic (AND). - Php hoc logic (OR), php hoc trit tiu logic (XOR). V d: (2 + 3 <=10+4) and ('HN' < 'HP') (2 + 3 <=10+4) or ('HN' < 'HP') not(2 + 3 <=10+4) and ('HN' < 'HP') {c gi tr False} {c gi tr True} {c gi tr True}

5. CU TRC C BN CA MT CHNG TRNH Mt chng trnh Turbo PASCAL thng c cc phn sau: {Phn tiu } Program Ten_chuong_trinh; {Phn khai bo} Uses Label Const Type Var Function <khai bo cc UNIT> <Khai bo cc nhn> <Khai bo cc hng> <Khai bo cc kiu d liu> <Khai bo cc bin> <Khai bo cc hm> 33

Procedure

<Khai bo cc th tc>

{Phn thn chng trnh} Begin <Cc lnh trong chng trnh> End. Trong : Phn tiu Phn tiu dng t tn cho chng trnh. Cho php ngi s dng phn bit chng trnh ny vi chng trnh khc. Phn tiu khng bt buc phi c trong mt chng trnh. V d: PROGRAM TINH_LUONG; Phn khai bo Phn khai bo c nhim v m t cc i tng ca bi ton, m t d liu, cc bin, cc hng, cc chng trnh con. Phn khai bo c th c hoc khng c trong mt chng trnh. <khai bo cc UNIT>: L vic khai bo cc UNIT cn s dng trong chng trnh. UNIT l th vin cc th tc v cc hm ca Turbo PASCAL, cho php ngi vit chng trnh c s dng ngoi cc th tc v cc hm chun c sn. Cc UNIT c t trong tp TURBO.TPL v cc tp c dng *.TPU gm mt s UNIT nh CRT, DOS, SYSTEM, GRAPH, PRINTER, ... Ngoi ra, ngi vit chng trnh cng c th to lp cc UNIT ca ring mnh theo qui nh ca Turbo PASCAL. <Khai bo cc nhn>: L vic khai bo cc nhn s s dng trong chng trnh. Nhn c s dng nh du v tr m chng trnh s chuyn ti thc hin tip khi gp lnh GOTO. Cch t tn nhn ging nh cch t tn ni chung, nhng khng cn bt u bng ch ci. <Khai bo cc hng>: L vic khai bo cc hng s s dng trong chng trnh. 34

<Khai bo cc kiu d liu>: L vic khai bo cc kiu d liu mi s s dng trong chng trnh, gia hai kiu lin tip cch nhau mt du chm phy. <Khai bo cc bin>: L vic khai bo cc bin s s dng trong chng trnh. Gia hai tn bin lin tip cch nhau mt du chm phy. Nu mt s bin c cng kiu, ta c th khai bo chung kiu khi hai bin lin tip khi khai bo chung cch nhau mt du phy. <Khai bo cc hm>, <Khai bo cc th tc>: L vic m t cc hm v th tc trong chng trnh. Cu trc ca mi hm, th tc tng t nh mt chng trnh Begin Turbo PASCAL, ngoi tr vic cc hm, th tc phi kt thc bng END; (c km du Begin chm phy theo sau). Phn thn chng trnh Begin Phn ny bt buc phi c trong mi chng trnh. Thn chng trnh bt u End; bng t kho Begin tip theo l cc lnh v kt thc bng t kho END. (c km du chm theo sau). 6. KHI LNHBegin End; Khi lnh l mt nhm cc cu lnh c t gia hai t kho Begin v End; Cu trc khi lnh c th m t nh s sau: End; Begin Begin

Begin End; End;

End; Begin End; End. 35

Khi lnh c vit trong trng hp tp hp cc lnh trong khi c hnh thnh thc hin mt cng vic no . Cc khi lnh c th lng nhau nhng khng c php ct nhau. 7. CC LNH C BN CA TURBO PASCAL 7.1. Nhm lnh gn, th tc vo/ra d liu

7.1.1. Lnh gn
Lnh gn dng tnh gi tr mt biu thc ri gn cho bin trong b nh. C php: <tn bin> := <biu thc>; Tc ng: Gp lnh ny my s thc hin theo cc bc sau: (1) Tnh gi tr <biu thc> v phi. (2) Gn gi tr tnh c vo bin v tri. 36

Ch : Kiu ca gi tr <biu thc> v phi phi ph hp vi kiu ca bin v tri (Tr trng hp c th gn biu thc c gi tr nguyn cho bin kiu thc, biu thc c gi tr k t cho xu k t). V d: a := 10; delta: = b*b - 4*a*c; Ten: = 'Nguyen Vn An'; tl := true;

7.1.2. Th tc a d liu ra mn hnh v my in


C php: Dng 1: Dng 2: Dng 3: trong : Write([LST,] bt1 [,bt2,...,btn]); Writeln([LST,] bt1 [,bt2,...,btn]); Writeln; bt1, bt2, ..., btn l cc biu thc bt k

LST dng a d liu ra my in (Trc phi khai bo Uses Printer), nu khng c tham s ny th d liu s c a ra mn hnh. Tc ng: Th tc ny dng a thng tin ra mn hnh hoc my in. Vic thc hin gm hai bc: (1) Tnh gi tr cc biu thc bt1, bt2, ...btn. (2) a gi tr ca cc biu thc ra mn hnh hoc my in (nu c tham s LST) S khc nhau gia ba dng lnh trn l ch v tr con tr mn hnh sau khi kt thc lnh. Dng 1 s t con tr sau gi tr ca btn khi kt thc lnh. Dng 2 s t con tr u dng tip theo khi kt thc lnh. Dng 3 s khng a ra thng tin no v chuyn con tr v u dng tip theo. V d: Program In_thu_1; Uses CRT; 37

Var Begin

a,b:integer;

clrscr; a := -16; write(a); writeln; writeln(b); writeln('a= ',a); writeln('a + b = ',a+b); writeln('Tri tuyet doi cua a: ',abs(a)); End. Chng trnh trn cho ra mn hnh kt qu sau: -16 25 a = -16 a+b=9 Tri tuyet doi cua a: 16 a ra kiu s nguyn: - Cch a ra khng qui cch: Write(<I>); Writeln(<I>); Cch ny s a ra ng gi tr ca s. - Cch a ra c qui cch: Write(<I>:<m>); Writeln(<I>:<m>); b := 25;

trong <m> l s v tr s s dng a s nguyn <I> ra. Trong cch vit ny ngi s dng c th b tr s ch c nh dnh cho s nguyn cn a ra. Cch vit khng qui cch s cn l bn tri cn cch vit c qui cch s cn l bn phi. V d: Program In_thu_2; 38

Uses crt; Var Begin clrscr; a := 123; write(a); writeln(b); writeln(a:5); writeln(a:6); write(b); End. Kt qu thc hin : 12345 123 123 45 b := 45; a,b:integer;

39

a ra kiu s thc: - Cch a ra khng qui cch: Write(<R>); Writeln(<R>); Cch ny a ra s thc di dng du chm ng. (17 v tr) - Cch a ra c qui cch: Dng 1: Write(<R>:<m>); Writeln(<R>:<m>); Cch ny a ra s thc di dng du chm ng. (n v tr) Dng 2: Write(<R>:<m>:<n>); hoc Writeln(<R>:<m>:<n>); Cch ny a ra s thc di dng du chm tnh vi m v tr v n ch s sau du chm thp phn. V d: Program In_thu_3; Var Begin a := 123; write(a); writeln; writeln(a:8); writeln(a:9); writeln(a:10); writeln(a:10:2); writeln(b:5:2); End. Kt qu thc hin: 1.2300000000E+02 1.23E+02 1.230E+02 123.00 1.50 a ra kiu k t: b := 1.5; a,b:real;

- Cch a ra khng qui cch: Write(<C>); Writeln(<C>); Cch ny s a ra cc k t mt cch bnh thng, mi k t chim mt v tr. - Cch a ra c qui cch: Write(<C>:<m>); Writeln(<C>:<m>);

Trong <m> l s v tr s s dng a gi tr biu thc <C> ra. V d: Program In_thu_4; Uses crt; Var Begin clrscr; ch := A; writeln(ch); writeln(ABCDE); writeln(ch:4); writeln(ABCDE:7); End. Kt qu thc hin : A ABCDE A ABCDE a ra kiu Boolean: - Cch a ra khng qui cch: Write(<B>); Writeln(<B>); - Cch a ra c qui cch: Write(<B>:<m>); Writeln(<B>:<m>); ch:char;

trong <m> l s v tr s s dng a gi tr biu thc logic <C> ra. V d: Program In_thu_5; Uses crt; Var Begin kt:boolean;

clrscr; kt := 10 > 4; writeln(kt); writeln(kt:7); End. Kt qu thc hin : TRUE TRUE

7.1.3. Th tc nhp d liu t bn phm


C php: Dng 1: Dng 2: Dng 3: Read(tb1 [,tb2,...,tbn]); Readln(tb1 [,tb2,...,tbn]); Readln;

trong : tb1, tb2, ..., tbn l tn cc bin s nhn gi tr nhp vo t bn phm. Tc ng: Gp lnh ny my s dng li ch nhp d liu. Khi , ngi s dng phi g cc gi tr cn nhp vo t bn phm, gia cc gi tr nhp vo phi c t nht mt k t trng, kt thc n phm ENTER. My s ln lt gn tng gi tr vo cc bin tng ng trong danh sch bin. gn c phi tho mn cc yu cu sau: - Mi d liu phi l mt hng, khng c l biu thc tng qut - Gi tr nhp vo phi ph hp vi kiu d liu ca cc bin tng ng - S lng d liu vo phi ln hn hoc bng s lng bin. Nu khng tho mn cc yu cu trn my s thng bo li v ngng thc hin chng trnh. Dng 3 khng c tham s ch c tc dng tm dng chng trnh ti thi im no kim tra bin, kim tra kt qu, ... v ch ngi s dng bm phm ENTER s thc hin cc lnh tip theo. V d 1: Program Nhap_du_lieu;

Uses crt; Var Begin clrscr; read(a); readln(b); writeln(a); writeln(b); readln; End. Khi chy chng trnh trn, my s ngng li ch ngi s dng a d liu vo. Nu ta mun gn cho a gi tr l 10, b gi tr l 1.5 th ta g cc gi tr ny vo. Kt hp gia th tc write v read Khi nhp d liu, nu chng trnh ch dng lnh Readln (hoc Read) th rt kh phn bit c l d liu s nhp vo cho bin no, v vy rt d dn n sai st. khc phc nhc im ny, ta nn s dng kt hp vi lnh a d liu ra mn hnh (Write hoc Writeln) ch dn cch nhp gi tr cho cc bin. V d 2: Lp chng trnh thc hin cng vic sau: - Nhp vo t bn phm h tn sinh vin v im thi ba mn ca sinh vin . - Tnh v a ra mn hnh h tn v im thi trung bnh ca sinh vin. Qu trnh gii bi ton c minh ho theo thut ton sau:
B

a, b:integer;

hten, d1, d2, d3

tb = (d1 + d2 + d3)/3

hten, tb

Program Diem_sinh_vien;

Uses CRT; Var d1,d2,d3,tb:real; hten:string[30]; Begin clrscr; write(Nhap ho ten sinh vien :); readln(hten); write('Nhap diem mon thu nhat :'); readln(d1); write('Nhap diem mon thu hai :'); readln(d2); write('Nhap diem mon thu ba :'); readln(d3); tb := (d1 + d2 + d3)/3; writeln('Sinh vien ',hten); writeln('Co diem trung binh hoc tap la: ',tb:5:2); readln; End. V d 3: Lp chng trnh nhp h tn, h s lng v h s ph cp chc v ca mt cn b vo t bn phm. Chng trnh s tnh v a ra mn hnh tin lng thc lnh ca cn b theo nguyn tc: Tin lng c bn = (H s lng + H s ph cp) x 450000 Tin bo him x hi = 5% Tin lng c bn Tin bo him y t = 1% Tin lng c bn Tin thc lnh=Tin lng c bn-Tin bo him x hi - Tin bo him y t Qu trnh gii bi ton c minh ho theo thut ton sau:

hten, hsl, hspc

lcb = (hsl + hspc) x 450000

tl = lcb 5%lcb 1%lcb

hten, tl

Program Tien_luong; Uses CRT; Var hsl,hspc,tl,lcb: real; hten: string[30]; Begin clrscr; write(Cho biet ho ten can bo :); readln(hten); write('Cho biet he so luong :'); readln(hsl); write('Cho biet he so phu cap :'); readln(hspc); lcb := (hsl + hspc)*290000;

tl := lcb - lcb*5/100 - lcb/100 writeln(Can bo ,hten); writeln('Co tien luong la : ', tl:10:0); readln; End. Hai chng trnh trn tuy n gin nhng chng c ba phn ca mt chng trnh Pascal l phn tiu , phn khai bo v phn thn chng trnh. Chng cng thc hin cc cng vic thng c ca mt chng trnh l: nhp d liu, tnh ton, in kt qu v kt thc. 7.2. Nhm lnh iu kin

7.2.1. Lnh IF...THEN


C php: IF <bt logic> THEN <nhm lnh 1> [ELSE <nhm lnh 2>]; trong : <bt logic> xc nh iu kin cn kim tra. <Nhm lnh 1>, <Nhm lnh 2>: l cc lnh ca Turbo PASCAL. Nu c nhiu lnh th cc lnh ny phi t trong khi lnh. Tc ng: Lnh ny dng chn thc hin mt trong hai nhnh tu thuc vo gi tr ca <bt logic>. Vic thc hin lnh IF ... THEN gm cc bc: (1) Tnh gi tr <bt logic> (2) Nu <bt logic> c gi tr TRUE th thc hin <Nhm lnh 1>, sau thc hin lnh tip theo trong chng trnh. Nu <bt logic> c gi tr FALSE th thc hin <Nhm lnh 2>(nu c ELSE <Nhm lnh 2>) hoc khng thc hin g (nu khng c ELSE <Nhm lnh 2>), sau thc hin lnh tip theo trong chng trnh. Ta c th minh ho qu trnh thc hin lnh IF bng cc s khi sau:

BT logic Nhmlnh 1 S

BT logic Nhm lnh 1

Nhm lnh 2

Lnh tip theo lnh IF

Lnh tip theo lnh IF

Lnh IF khng c ELSE Ch :

Lnh IF c ELSE

- Trc t kho ELSE khng c du chm phy. - Cc lnh IF...THEN c th lng nhau, khng c ct nhau. V d 1: Lp chng trnh kim tra xem mt s bt k nhp vo t bn phm c phi l s t nhin khng? Program Kiem_tra_so_tu_nhien; Uses CRT; Var Begin clrscr; write('Nhap so x :'); readln(x); if (int(x)=x) and (x>=0) then writeln(x:10:2,' la so tu nhien') else writeln(x:10:2,' khong la so tu nhien'); readln; End. V d 2: Lp chng trnh gii phng trnh bc hai: ax2 + bx + c = 0 Qu trnh gii bi ton c minh ho theo thut ton sau: x: real;

a, b, c

= b - 4ac

> 0

=0

x1, 2 = ( b ) /( 2a)

x = -b/(2a)

x1,2

PT v nghim

Program Phuongtrinhbachai; Uses CRT; Var Begin clrscr; write('Nhap he so thu nhat: '); readln(a); write('Nhap he so thu hai: '); readln(b); write('Nhap he so thu ba: '); readln(c); delta := b*b - 4*a*c; if delta > 0 then begin x1:= (-b + sqrt(delta))/(2*a); x2:= (-b - sqrt(delta))/(2*a); writeln(Nghiem x1 = ,x1:10:2); writeln(Nghiem x2 = ,x2:10:2); end else if delta = 0 then a,b,c,delta,x1,x2: real;

begin x := -b/(2*a); writeln(Nghiem x = ,x:10:2); end else writeln(Phuong trinh vo nghiem); readln; End. V d 3: Cho bit tn v im trung bnh ca sinh vin. Lp chng trnh tnh v in hc bng ca sinh vin theo cng thc: Sinh vin c hc bng l 240.000 ng nu DTB >= 9.0 Sinh vin c hc bng l 180.000 ng nu 8.0 <= DTB <= 9.0 Sinh vin c hc bng l 120.000 ng nu 7.0 <= DTB <= 8.0 Qu trnh gii bi ton c minh ho theo thut ton sau:
B

ten, dtb

dtb 9

dtb 8

dtb 7

hb = 240000

hb = 180000

hb = 120000

hb = 0

ten, hb

Program Hoc_bong; Uses CRT; Var ten: string[25]; dtb, hb: real; Begin

clrscr; write('Nhap ten sinh vien: '); readln(ten); write('Nhap diem trung binh: '); readln(dtb); if dtb >= 9 then hb := 240000 else if dtb >= 8 then hb := 180000 else if dtb >= 7 then hb := 120000 else hb := 0; writeln('Sinh vien ',ten,co hoc bong: ,hb:10:0, dong); readln; End.

7.2.2. Lnh CASE ...OF


C php: CASE <Biu thc> OF <Tp hng 1>: <Nhm lnh 1>; <Tp hng 2>: <Nhm lnh 2>; ... <Tp hng n>: <Nhm lnh n>; ELSE <Nhm lnh n+1>; END; trong : <biu thc> thng l mt bin so snh vi cc gi tr pha di. Biu thc phi c kiu m c (v d nh kiu s nguyn, k t, logic) <Tp hng 1>,...,<Tp hng n> l cc hng c cng kiu vi biu thc. Tc ng: Lnh ny dng chn thc hin mt trong nhiu nhnh tu thuc vo gi tr ca <biu thc>. Gp lnh ny, my thc hin theo cc bc sau: (1) Tnh gi tr <biu thc> (2) Chn nhnh c gi tr hng trng gi tr ca <biu thc> (3) Thc hin nhm lnh ca nhnh chn c v ra khi lnh CASE. Trong trng hp gi tr <biu thc> khng xut hin trong nhnh no th thc hin <nhm lnh n+1> (nu c ELSE <nhm lnh n+1>) hoc b qua lnh CASE...OF (nu khng c ELSE <nhm lnh n+1>) v thc hin lnh tip theo trong chng trnh. Ta c th minh ho qu trnh thc hin lnh CASE bng s khi sau:

Biu thc th 1

th 2

th n

Nhm lnh 1

Nhm lnh

....

Nhm lnh n

Nhm lnh n +1

V d 1: Lp chng trnh nhp vo t bn phm mt k t bt k, kim tra xem k t c phi l cc php ton trn d liu kiu s thc khng? Program Dau_phep_toan; Uses crt; Var Begin clrscr; write('Cho biet ki tu '); readln(pt); case pt of '*': writeln('Phep nhan'); '-': writeln('Phep tru'); '+': writeln('Phep cong'); '/': writeln('Phep chia'); else writeln('Khong phai la dau phep toan'); end; readln; End. V d 2: Lp chng trnh nhp vo t bn phm mt s th hin ngy trong tun. Chng trnh a ra mn hnh thi kho biu hc ca ngy . Program Thoi_khoa_bieu; Uses crt; Var Begin clrscr; thu:integer; pt:char;

write('Cho biet thu '); readln(thu); case thu of 2: writeln('Toan - KTCT'); 3: writeln('KTCT - Toan'); 4: writeln('Toan - KTCT'); 5: writeln('Tin - LSD'); 6: writeln('LSD - Tin'); else writeln('Ngay nghi'); end; readln; End. Ch : Cc tp hng c th c vit di dng kiu lit k hoc kiu min con - Kiu lit k: lit k gi tr ca tng hng Cch vit: <hng 1>,<hng 2>, ..., <hng n> V d: A, B, C - Kiu min con: l kiu ch ra mt min m hng c th nhn cc gi tr. Cch vit: <hng u>..<hng cui > V d: A..Z gm tt c cc hng t A n Z V d 3: Chng trnh tnh hc bng cho sinh vin c th vit bng cch s dng lnh CASE .. OF nh sau: Program Tien_hoc_bong; Uses CRT; Var hoten: string[25]; dtb,hb: real; tg:integer; Begin clrscr; write('Cho biet ho ten '); readln(hoten); write('Cho biet diem trung binh: '); readln(dtb); dtb:=dtb*10;

tg:=round(dtb); case tg of 0..69: hb:= 0; 70..79: hb:= 120000; 80..89: hb:= 180000; 90..100: hb:= 240000; end; writeln(hoten,' co tien hoc bong la: ',hb:10:0,' dong'); readln; End.

7.2.3. Lnh GOTO


C php: GOTO <nhn>; trong : <nhn> l mt nhn c khai bo trong chng trnh, sau t kha LABEL. Tn nhn t nh tn mt bin hoc l mt s nguyn trong on [1,9999]. Tc ng: Khi gp lnh GOTO <nhn>, my s nhy khng iu kin ti thc hin cu lnh c nh du bi mc l <nhn>. Ch : Lnh GOTO ch cho php nhy t mt v tr ny sang v tr khc trong thn mt hm (hay th tc), t trong vng lp ra ngoi vng lp. Lnh ny khng cho php nhy t ngoi mt hm (hay th tc) vo trong mt hm (hay th tc). V d: Vi bi ton tnh hc bng cho sinh vin da vo im trung bnh trn ta c th vit theo cch s dng lnh GOTO nh sau: Program Hocbong; Uses CRT; Label ketqua; Var ten: string[25]; dtb, hb: real; Begin clrscr; write('Nhap ten sinh vien: '); readln(ten); write('Nhap diem trung binh: '); readln(dtb); if dtb >= 9 then

dong);

begin hb := 240000; goto ketqua; end; if dtb >= 8 then begin hb := 180000; goto ketqua; end; if dtb >= 7 then begin hb := 120000; goto ketqua; end; hb := 0; ketqua:writeln('Sinh

vien

',ten,co

HB

la,hb:10:0,

readln; End.

7.2.4. Lnh EXIT


C php: EXIT; Tc ng: Khi gp lnh EXIT nm trong chng trnh con th s kt thc vic thc hin cc lnh trong chng trnh con v tr v v tr gi thc hin chng trnh con. Cn nu lnh EXIT nm trong chng trnh chnh th lnh s kt thc vic thc hin cc lnh trong chng trnh chnh.

7.2.5. Lnh BREAK


C php: BREAK; Tc ng: Trong thn cc lnh vng lp (For, While, Repeat) khi gp lnh BREAK th my s thot khi chu trnh. Nu c nhiu vng lp lng nhau th my s thot khi vng lp trong nht cha lnh BREAK.

7.2.6. Lnh HALT


C php: HALT; Tc ng: Lnh HALT dng dng hn chng trnh. Lnh ny thng dng khi gp mt trng hp no m thut ton khng th thc hin c. 7.3. Nhm lnh chu trnh Khi nim: Chu trnh l mt on chng trnh c thc hin lp i lp li nhiu ln. S ln thc hin on chng trnh gi l s ln lp ca chu trnh. Nu nh trc khi thc hin c th xc nh c s ln lp th gi l chu trnh c s ln lp bit trc, ngc li gi l chu trnh vi s ln lp khng bit trc. t chc chu trnh trong Turbo PASCAL s dng cc lnh sau:

7.3.1. Lnh FOR


7.3.1.1. Dng 1: C php: trong : <bin> l tn bin chu trnh (c kiu nguyn, k t, logic) <bt1>, <bt2> l cc biu thc v phi cng kiu d liu vi bin chu trnh. Gi tr ca <bt1> khng ln hn gi tr ca <bt2> <nhm lnh> l cc lnh cn thc hin trong chu trnh gi l thn chu trnh. Nu thn chu trnh gm nhiu lnh th phi t trong khi lnh Tc ng: Lnh c dng t chc cc chu trnh c s ln lp bit trc. Gp lnh ny, my thc hin theo cc bc sau: (1) Thc hin lnh gn <bin> := <bt1>; (2) Kim tra iu kin bin <= bt2. Nu iu kin ny l sai th my thot khi vng lp FOR thc hin cc lnh sau FOR. Nu iu kin ny l ng th my thc hin <nhm lnh>, sau thay i gi tr ca bin chu trnh, bin s nhn gi tr mi l Succ(<bin>) (thc cht l thc hin lnh gn <bin>:=Succ(<bin>)) v quay tr li thc hin bc (2). C th minh ho qu trnh thc hin lnh bng s khi sau: FOR <bin>:=<bt1> TO <bt2> DO <nhm lnh>;

bin = bt1

binbt 2 S Lnh tip theo

Nhm lnh

bin=succ(bin)

V d 1: Lp chng trnh tnh v a ra mn hnh tng n s t nhin u tin (n 50). Qu trnh gii bi ton c minh ho theo thut ton sau:
B

n S=0

i=1

in S S

S=S+i

i=i+1

Program Tinh_tong; Uses CRT; Var i, n : integer; s : real; Begin clrscr; write('Nhap n= '); readln(n); s:=0; for i : = 1 to n do s : = s + i;

writeln('Tong S = ',s:10:0); readln; End. V d 2: Lp chng trnh tnh v a ra mn hnh lu tha nguyn dng ca s thc a (an). Qu trnh gii bi ton c minh ho theo thut ton sau:
B

a, n T=1

i=1

in T S

T=Txa

i=i+1

Program Tinh_luy_thua; Uses CRT; Var t,a:real; i,n: integer; Begin clrscr; write('Cho biet so a = '); readln(a); write('Cho biet so n = '); readln(n); t := 1; for i:=1 to n do t := t*a; writeln('Luy thua ',t:10:2); readln; End. V d 3: Lp chng trnh tnh v a ra mn hnh tng n s bt k nhp vo t bn phm (n 50).

Qu trnh gii bi ton c minh ho theo thut ton sau:


B

n S=0

i=1

in S S

S=S+a

i=i+1

Program Tinh_tong_cac_so_trong_day; Uses CRT; Var s,a:real; i,n: integer; Begin clrscr; write('Cho biet so chu so can tinh tong: '); readln(n); s := 0; for i:=1 to n do begin write('Nhap so thu ',i); readln(a); s := s+ a; end; writeln('Tong la ', S:10:2); readln; End. 7.3.1.2. Dng 2: C php: trong : <bin> l tn bin chu trnh (c kiu nguyn, k t, logic) FOR <bin>:=<bt1> DOWNTO <bt2> DO <nhm lnh>;

<bt1>, <bt2> l cc biu thc v phi cng kiu d liu vi bin chu trnh. Gi tr ca <bt1> khng nh hn gi tr ca <bt2> <nhm lnh> l cc lnh cn thc hin trong chu trnh gi l thn chu trnh. Nu thn chu trnh gm nhiu lnh th phi t trong khi lnh Tc ng: Lnh ny dng t chc cc chu trnh c s ln lp bit trc. Gp lnh ny, my thc hin theo cc bc sau: (1) Thc hin lnh gn <bin>:=<bt1>; (2) Kim tra iu kin bin >= bt2. Nu iu kin ny l sai th my thot khi vng lp FOR thc hin cc lnh sau FOR. Nu iu kin ny l ng th my thc hin <nhm lnh>, sau thay i gi tr ca bin chu trnh, bin s nhn gi tr mi l Pred(<bin>) (thc cht l thc hin lnh gn <bin>:=Pred(<bin>)) v quay tr li thc hin bc (2). S khi sau m t vic thc hin lnh FOR ... DOWNTO ... DO

bin = bt1

binbt 2 S Lnh tip theo

Nhm lnh

bin=pred(bin)

Ch : - Cc lnh trong thn chu trnh khng c tu tin thay i gi tr ca bin chu trnh v nu lm nh vy s rt kh kim sot c gi tr ca bin chu trnh. - Cc chu trnh c th lng nhau nhng khng c ct nhau. - Nu trong thn chu trnh c lnh BREAK th gp lnh ny s thot khi chu trnh. V d 4: Chng trnh tnh tng n (n 50) s t nhin u tin c th vit cch khc nh sau: Program Tinh_tong; Uses CRT; Var i, s, n : integer; Begin clrscr; write('Nhap n= '); readln(n);

s:=0; for i : = n downto 1 do s : = s + i; writeln('Tong S = ',s ); readln; end.

7.3.2. Lnh WHILE ... DO


C php: WHILE <bt logic> DO <nhm lnh>; trong : <bt logic> l biu thc logic xc nh iu kin lp. <nhm lnh> l cc lnh cn thc hin lp i lp li, gi l thn chu trnh. Nu thn chu trnh gm nhiu lnh th phi t trong khi lnh. Tc ng: Lnh WHILE dng t chc c hai loi chu trnh c s ln lp bit trc v chu trnh c s ln lp khng bit trc. Gp lnh ny, my thc hin theo cc bc sau: (1) Tnh gi tr <bt logic> (2) Nu <bt logic> tr v gi tr TRUE th my s thc hin <nhm lnh>, sau quay tr v bc (1). Nu <bt logic> tr v gi tr FALSE th kt thc lnh v thc hin cc lnh tip theo. Nu ngay t u <bt logic> nhn gi tr FALSE th my s khng thc hin lnh no trong vng lp. S khi sau m t vic thc hin lnh WHILE ... DO

bt logic S Lnh tip theo

Nhm lnh

Ch : Trong vng lp WHILE ... DO phi c lnh iu khin bin lin quan n vng lp hoc lnh ra khi vng lp nu khng s khng thot khi c vng lp. V d 1: Vi chng trnh tnh lu tha nguyn dng ca s thc a (a n). Ta c th vit chng trnh gii bi ton ny theo cch sau:

Program Tinh_luy_thua; Uses CRT; Var t,a:real;

i,n: integer; Begin clrscr; write('Cho biet so a = '); readln(a); write('Cho biet so n = '); readln(n); t := 1; i:=1; while i<=n do begin t := t*a; i := i+1; end; writeln('Luy thua ',t:10:2); readln; End. V d 2: Lp chng trnh thc hin cng vic sau: - Nhp vo t bn phm s thc a ( 0< a 10). - Tm v a ra mn hnh s n (n nguyn dng) nh nht tho mn iu kin:

1 1 1 1+ + + ...+ > a 2 3 n
Qu trnh gii bi ton c minh ho theo thut ton sau:

a S=0

n=0

Sa n S

n=n+1

S=S + 1/n

Program Tim_so_thoa_man_dieu_kien; Uses CRT; Var s,a:real; n: integer; Begin clrscr; write('Cho biet so a = '); readln(a); s := 0; n:=0; while s <= a do begin n:=n+1; s := s+ 1/n; end; writeln('So tim duoc la ',n:5); readln; end. V d 3: Lp chng trnh tm c chung ln nht ca hai s nguyn dng m,n (m, n c nhp vo t bn phm). Qu trnh gii bi ton c minh ho theo thut ton sau:

m, n

m <> n S m

m>n m=m-n

S n=n-m

Program UCLN; Uses crt; Var m,n, uc: integer; Begin clrscr; write('Cho biet so m = '); readln(m); write('Cho biet so n = '); readln(n); while m<>n do if m>n then m:=m-n else m:= n-m; uc := m; writeln('UCLN la',uc); readln; End.

7.3.3. Lnh REPEAT... UNTIL


C php: REPEAT <nhm lnh>; UNTIL <bt logic>; trong : <bt logic> l biu thc xc nh iu kin kt thc chu trnh <nhm lnh> l cc lnh cn thc hin lp i lp li, gi l thn chu trnh. Nu thn chu trnh gm nhiu lnh khng cn phi t trong khi lnh.

Tc ng: Lnh REPEAT thng dng t chc cc chu trnh d c s ln lp bit trc hay khng. Gp lnh ny, my thc hin theo cc bc sau: (1) Thc hin <nhm lnh> (2) Tnh gi tr <bt logic> (3) Nu <bt logic> tr v gi tr FALSE th quay tr v bc (1). Nu <bt logic> tr v gi tr TRUE th kt thc lnh v thc hin cc lnh tip theo. Nh vy trong cu trc lp REPEAT ... UNTIL, <nhm lnh> c thc hin t nht mt ln. S khi m t vic thc hin lnh REPEAT ... UNTIL

Nhm lnh
S

BT logic

Lnh tip theo lnh Repeat

Ch : Trong vng lp REPEAT ... UNTIL phi c lnh iu khin bin lin quan n vng lp hoc lnh ra khi vng lp nu khng s khng thot khi c vng lp. V d 1: Vi chng trnh tnh lu tha nguyn dng ca s thc a (a n). Ta c th vit chng trnh gii bi ton ny theo cch sau: PROGRAM Tinh_luy_thua; Uses CRT; Var t,a:real; i,n: integer; Begin clrscr; write('Cho biet so a = '); readln(a); write('Cho biet so n = '); readln(n); t := 1; i:=1; repeat

t := t*a; i := i+1; until i>n; writeln('Luy thua ',t:10:2); readln; End. V d 2: Li sut hng thng gi tit kim khng k hn l 0,5%. Mt ngi gi vo s tin ban u l a. Sau bao nhiu thng ngi c c s tin khng nh hn b? Qu trnh gii bi ton c minh ho theo thut ton sau:
B

a, b S a<b t=0

t=t+1

a = a + a*0,5/100

a b t

PROGRAM Tinh_so_thang_can_gui; Uses CRT; Var a,b:real;

t: integer; Const l = 0.005; Begin clrscr; repeat write('Cho biet so tien ban dau = '); readln(a); write('Cho biet so tien can co = '); readln(b); until a<b; t := 0; repeat t:=t+1; a:=a+a*l; until a>=b; writeln('So thang can gui la: ',t); readln; End. 7.4. D liu kiu mng (Array) D liu kiu mng l d liu c cu trc. Mng l mt tp hp hu hn cc phn t c cng kiu gi tr (nguyn, k t, ...) v c chung mt tn nhng c phn bit vi nhau bi ch s. Mi phn t ca mng cha mt gi tr. Mng cng c cc kiu d liu nh cc bin. Mng c khai bo bng t kho Array. Cch khai bo nh sau:

7.4.1. Khai bo mng mt chiu


Khai bo thng qua phn m t kiu TYPE: TYPE kiu_mng = array[CSD .. CSC] of <kiu>; Khi vic khai bo bin X c kiu l kiu_mng c th vit nh sau: VAR X: kiu_mng;

Khai bo trc tip: VAR <Tn bin mng>: Array[CSD .. CSC] Of <kiu>;

trong : CSD (Ch s u) v CSC(Ch s cui) c th l: - Hai s nguyn m CSD<=CSC, hoc - Hai k t thuc bng m ASCII m CSD<=CSC <Kiu> c th l mi kiu m Turbo Pascal chp nhn tr kiu File. V d: Khai bo bin:

Var

a:array[1..4] of integer; hoten:array[1..50] of string[25];

S to ra cc bin ch s sau: a[1], a[2], a[3], a[4] c kiu nguyn. hoten[1], hoten[2],...., hoten[49], hoten[50] c kiu xu k t. Thay v cch khai bo trc tip nh trn ta c th khai bo theo cch sau: TYPE X = array[1..4] of integer; Y = array[1..50] of string[25]; VAR a : X; hoten:Y;

7.4.2. Khai bo mng hai chiu


Khai bo thng qua phn m t kiu TYPE: TYPE kiu_mng = array[CSD1..CSC1,CSD2..CSC2] of <kiu>; Khi vic khai bo bin X c kiu l kiu_mng c th vit nh sau: VAR X: kiu_mng; Khai bo trc tip: VAR <Tn bin mng>: Array[CSD1..CSC1,CSD2..CSC2] Of <kiu>; V d: Khai bo bin: Var a:array[1..3, 1..4] of integer;

S to ra cc bin ch s sau: a[1,1], a[1,2], a[1,3], a[1,4] a[2,1], a[2,2], a[2,3], a[2,4] a[3,1], a[3,2], a[3,3], a[3,4] c kiu nguyn

7.4.3. Truy nhp n thnh phn ca mng


Dng cch vit: Tn_bin_mng[gi tr ch s,...] trong : gi tr ch s l mt gi tr c th.

7.4.4.Cp pht b nh
S nh (bytes) cp cho mng ph thuc vo kch thc v kiu thnh phn ca mng. S ny tng ln rt nhanh khi tng s chiu ca mng. V d 1: Lp chng trnh thc hin cng vic sau: - Nhp vo t bn phm dy n s thc (n50). - m xem c bao nhiu s dng ri tnh tng ca chng. - a ra mn hnh: Dy s ban u, s cc s dng v tng ca cc s dng. Qu trnh gii bi ton c minh ho theo thut ton sau:
B

S = 0, d= 0

i= 1

i n xi

xi ( i = 1,... ,n)

S, d

xi > 0 S = S + xi d = d+ 1 S

i = i+ 1

Program Tinh_tong_day; Uses CRT Var x:array[1..50] of real; d,i,n:integer; S:real; Begin

write('Cho biet so phan tu cua day n = '); readln(n); S:=0; d:=0; for i:=1 to n do begin write('Nhap phan tu thu ',i); readln(x[i]); if x[i]>0 then begin S:=S+x[i]; d:=d+1; end; end; writeln('Day so ban dau: '); for i:=1 to n do write(x[i]:5:1); writeln; writeln('So cac so duong la ',d); writeln('Tong cac so duong la',S:10:2); readln; End. V d 2: (n 100). p dng thut ton: Ly s th nht so snh vi tt c cc s cn li tm s nh nht a v u dy, nu tn ti s no nh hn th ta i ch hai s cho nhau. Tip tc li ly s th hai so snh vi tt c cc s cn li tm s nh th nh (qu trnh lm hon ton tng t nh trn),... Sau khi so snh s th n-1 vi s th n xong, ta c dy s mi c sp xp theo th t tng dn. Program sap_xep_day_so; Uses CRT; Const max=100; Var a: array[1..max] of real; i,j,k,n: integer; trunggian:real; Lp chng trnh sp xp n s nhp vo t bn phm theo trnh t tng dn

Begin end; writeln('Day so da duoc sap xep:'); for i:=1 to n do write(a[i]:5:1); readln; V d 3: Hy vit chng trnh nhp vo t bn phm h tn, h s lng v h s ph cp ca n cn b, sau a ra mn hnh bng lng nh sau: BNG LNG CA CN B CNG NHN VIN STT ... trong : H v tn ... Tng cng Lng CB ... ... BHXH ... ... BHYT ... ... Tng tin ... ... clrscr; {Nhp d liu} write('Cho biet so phan tu trong day so: '); readln(n); for i:=1 to n do begin write('Nhap phan tu ',i,'='); readln(a[i]); end; {Thc hin sp xp dy s} for i:=1 to n-1 do begin k := i; for j := i+1 to n do if a[k]>a[j] then k:=j; if k<>i then begin trunggian := a[i]; a[i] := a[k]; a[k] := trunggian; end;

End.

Lng c bn = (H s lng + H s ph cp) x 450000 ng

BHXH (bo him x hi) = 5% Lng c bn BHYT (bo him y t) = 1% Lng c bn Tng tin = Lng c bn - BHXH - BHYT Program Bang_luong_can_bo; Uses CRT; Var ht:array[1..100] of string[30]; hsl,hspc,lcb,bhxh,bhyt,stdl: array[1..100] of real; i,n,stt:integer; tlcb,tbhxh, tbhyt, tstdl:real; dke: string[80]; Begin Clrscr; {Nhap du lieu} write('Cho biet so can bo :'); readln(n); for i:=1 to n do begin write('Nhap ten can bo thu ',i,':'); readln(ht[i]); write('Nhap hsl cua can bo thu ',i,':'); readln(hsl[i]); write('Nhap hspc cua can bo thu ',i,':'); readln(hspc[i]); lcb[i] := (hsl[i] + hspc[i])*450000; bhxh[i] := lcb[i]*5/100; bhyt[i] := lcb[i]*1/100; stdl[i] := lcb[i] - bhxh[i] - bhyt[i]; end; clrscr; tlcb:=0; tbhxh:=0; tbhyt:=0; tstdl:=0; stt:=1; {In tieu de bang luong} writeln('BANG LUONG THANG CUA CAN BO NHAN VIEN'); dke:='-------------------------------------------------------------------'; writeln(dke); writeln('| STT | Ho va ten | Luong CB | BHXH |

BHYT

|TONG TIEN |'); writeln(dke); {In noi dung bang luong} for i:=1 to n do begin

writeln('|',stt:5,'|',ht[i]:20,'|',lcb[i]:10:1,'|',bhxh[i]:8 :1,'|', bhyt[i]:8:1,'|',stdl[i]:10:1,'|'); tlcb := tlcb + lcb[i]; tbhxh := tbhxh + bhxh[i]; tbhyt := tbhyt + bhyt[i]; stt := stt + 1; end; tstdl:=tlcb - tbhxh - tbhyt; {In phan cuoi bang luong} writeln(dke); writeln('| ':20,'|',tlcb:10:1,'|',tbhxh:8:1,'|', tbhyt:8:1,'|',tstdl:10:1,'|'); writeln(dke); readln; End. V d 4: Lp chng trnh nhn hai ma trn C(m,n) = A(m,l) * B(l,n) Cc phn t ca ma trn tch c tnh theo cng thc: |',' Tong

Ci j = Ai k * Bk j
k =1

Program Nhan_ma_tran; Uses CRT; Var a,b,c:array[1..50,1..50] of real; i,j,k,n,m,l:integer; Begin clrscr; {Nhap du lieu} write('m = '); readln(m);

write('l = '); readln(l); write('n = '); readln(n); {Nhap ma tran A} for i:=1 to m do for j:=1 to l do begin write('a[',i,j,'] = '); readln(a[i,j]); end; {Nhap ma tran B} for i:=1 to l do for j:=1 to n do begin write('b[',i,j,'] = '); readln(b[i,j]); end; {Nhan ma tran} for i:=1 to m do for j:=1 to n do begin c[i,j]:=0; for k:=1 to l do c[i,j]:=c[i,j]+a[i,k]*b[k,j]; end; {In ket qua} for i:=1 to m do begin for j:=1 to n do write(c[i,j]:5:0); writeln; end; readln; End. 7.5. Chng trnh con: Hm v th tc

7.5.1. Gii thiu chung


Trong khi lp trnh, ta thng gp nhng on chng trnh c lp i lp li nhiu ln nhng ch khc nhau. trnh tnh trng vit i, vit li nhiu ln nhng on chng trnh ny, nn thay th nhng on chng trnh bng cc chng trnh tng ng v khi cn ch cn gi

n thay v phi vit li cc chng trnh trn, cc chng trnh gi l chng trnh con. Khi vit chng trnh gii quyt cc bi ton ln, phc tp, chng trnh thng rt di, gm hng trm, hng nghn dng lnh. c cc chng trnh di rt kh nhn bit c chng trnh thc hin cc cng vic g. V vy, n gin trong qu trnh g ri, hiu chnh, b sung,... ta nn chia chng trnh ln thnh cc chng trnh nh hn, mi chng trnh con gii quyt mt bi ton no . kt hp tt c cc chng trnh con , ta phi xy dng mt chng trnh iu hnh chnh, khi cn chng trnh con no th gi chng trnh con thc hin. Cc chng trnh con cng c lp v d liu, v cc bin th cng thun li cho vic sa i chng trnh. Trong Turbo PASCAL c hai loi chng trnh con l th tc v hm. phn trn ta lm quen vi mt s th tc v hm chun c sn trong Turbo PASCAL v nm c s khc nhau c bn gia hm v th tc, l: Hm tr li mt gi tr thng qua tn hm v do hm c th tham gia vo cc biu thc, cn th tc khng tr li kt qu thng qua tn ca n nn khng th tham gia vo cc biu thc.

7.5.2. Th tc (Procedure)
Th tc l mt chng trnh con dng thc hin mt s thao tc x l no . Mt th tc bt u bng t kho Procedure v c t chc nh sau: Procedure <tn th tc>[(tham s 1:kiu d liu, tham s 2: kiu d liu,...)]; (* Khai bo Label, Const, Type, Var ca ring th tc nu cn*) Begin <Cc lnh trong thn th tc>; End; - Phn u th tc gm t kho Procedure, ri n tn th tc, sau l danh sch tham s hnh thc (nu c). Danh sch tham s hnh thc t trong cp du (...). - Phn khai bo ca th tc cng ging nh phn khai bo trong chng trnh. Tt c cc tn c khai bo trong phn khai bo ca th tc s l tn cc b trong th tc v cc th tc khc c khai bo trong th tc ny. - Phn thn th tc gm cc lnh t trong cp t kho Begin ... End; (kt thc t kho End l du chm phy). Phn thn th tc s c thc hin khi th tc ny c gi. Sau khi xy dng xong cc th tc, trong thn chng trnh chnh nu mun s dng th tc no ta ch cn a vo li gi: Tn_th_tc[(Tham s 1, Tham s 2, ...)];

trong : Tham s 1, Tham s 2,... l cc biu thc c gi tr xc nh gi l cc tham s thc s. Cc tham s ny dng xc nh gi tr cho cc tham s hnh thc ca th tc cn gi. Mt th tc khi c gi s thay th ln lt cc tham s hnh thc bng cc gi tr ca tham s thc s ri thc hin th tc nh mt chng trnh bnh thng. Sau khi thc hin xong th tc s quay v chng trnh chnh thc hin lnh tip theo li gi n th tc. V d: Th tc nhp vo gi tr cho ba bin x, y, z bt k Procedure Nhap(var x, y, z: real); Begin Write('Nhap so thu nhat: '); Readln(x); Write('Nhap so thu hai: '); Readln(y); Write('Nhap so thu ba: '); Readln(z); End; Khi xy dng xong th tc Nhap ri, sau ny trong chng trnh chnh khi cn nhp d liu cho cc bin a, b, c ta ch cn gi: Nhap(a, b, c); Khi x, y, z gi l cc tham s hnh thc. a, b, c l cc tham s thc.

7.5.3. Hm (Function)
Hm l mt chng trnh con dng tnh mt i lng no c kiu d liu n gin (s, k t, xu k t, logic). Khi chng trnh chnh gi mt hm th phi c t nht mt lnh gn gi tr cho tn ca hm. Mt hm bt u bng t kho Function v c t chc nh sau: Function <tn hm>(tham s 1:kiu d liu, tham s 2: kiu d liu,...): kiu ca hm; (* Khai bo Label, Const, Type, Var ca ring hm nu cn*) Begin <Cc lnh trong thn hm>; End; V d: Hm tm gi tr nh nht trong 3 s thc bt k function Tim_min(x,y,z:real):real; var min:real; begin min := x;

if min > y then min := y; if min > z then min := z; Tim_min := min; end;

7.5.4. Cch truyn tham s cho chng trnh con


Chng trnh con c th khng dng n tham s khi cc chng trnh con tnh ton trc tip vi cc bin ton cc hoc chng trnh con khng dng n bt c bin hay hng no. Vic truyn tham s cho chng trnh con l mt c cu thay th tng ng. N cho php thc hin lp i lp li nhiu ln vi cc ton hng khc nhau. Danh sch cc tham s thc s s phi tng ng v nht qun vi danh sch cc tham s hnh thc c khai bo trong tiu ca chng trnh con. V d: Khi xy dng xong th tc Nhap nhp gi tr cho ba bin s thc bt k, nu ta gi: Nhap(a, b, c) s thay th a vo v tr ca x, b vo v tr ca y v c vo v tr ca z. Tng t, nu ta gi Nhap(d, e, f) s thay th d vo v tr ca x, e vo v tr ca y v f vo v tr ca z. C hai cch truyn tham s cho chng trnh con: - Truyn theo tham bin: Cch vit: Var <cc tham s hnh thc> : <kiu d liu>

Trong trng hp ny cc tham s thc s s phi l bin ch khng c l gi tr. Cc tham s thc l cc tham bin c th c thay i trong chng trnh con v n vn gi nguyn gi tr ny khi ra khi chng trnh con. - Truyn theo tham tr: Cc vit: <Cc tham s hnh thc> : <kiu d liu>

Cc tham s hnh thc vit trong trng hp ny c coi nh bin a phng ca chng trnh con. Cc tham s ny nhn gi tr ca tham s thc nh l gi tr ban u vo thi im thay vo chng trnh con. Chng trnh con c th thay i gi tr ca n, song khng th thay i gi tr ca tham s thc. Do vy mt tham tr khng bao gi l kt qu tnh ton ca chng trnh con. V d 1: C chng trnh sau: Program Truyen_tham_so;

Uses CRT; Var x, y : real; Procedure tham_so(a:real; var b:real); begin a := a + 10; b := b + 10; writeln(a:10:2); writeln(b:10:2); end; Begin clrscr; x := 1; y := 2.5; tham_so(x,y); writeln('x = ',x:10:2); writeln('y = ',y:10:2); End. Trong v d trn th tc tham_so c hai loi tham s: a l tham tr v b l tham bin. Trong thn chng trnh chnh c hai lnh gn x := 1 v y := 2.5. Khi gi th tc tham_so(x,y) s nhn hai gi tr trn lm tham s thc. Trong th tc c hai lnh lm thay i gi tr ca x v y. Lnh writeln(a:10:2) cho kt qu l 11.00 v lnh writeln(b:10:2) cho kt qu l 12.50. Tuy nhin, sau khi ra khi chng trnh con ch c y l gi c gi tr thay i v y l tham bin. V vy cc lnh in trong chng trnh chnh cho kt qu l x = 1.00 v y = 12.50. Kt qu thc hin chng trnh trn nh sau: 11.00 12.50 x= y= 1.00 12.50

V d 2: Hy vit chng trnh thc hin yu cu sau: Nhp ba s a, b, c bt k t bn phm. Khi chy chng trnh trn mn hnh xut hin thng bo:

Hy la chn cng vic: 1. Tnh tng ca 3 s. 2. Tnh tch ca 3 s. 3. Tm gi tr ln nht trong 3 s. Bn hy chn cng vic bng cch g s tng ng. Sau khi g s chn cng vic, chng trnh cho kt qu tng ng vi cng vic bn chn. program Lua_chon_viec_thuc_hien; uses crt; var a,b,c: real; chon:byte; procedure Nhap(var x,y,z:real); begin write('Nhap so thu nhat: '); readln(x); write('Nhap so thu hai: '); readln(y); write('Nhap so thu ba: '); readln(z); end; function Tim_max(x,y,z:real):real; var tg:real; begin tg := x; if tg < y then tg := y; if tg < z then tg := z; Tim_max := tg; end; function Tinh_tong(x,y,z:real):real; begin Tinh_tong := x + y + z; end; function Tinh_tich(x,y,z:real):real; begin Tinh_tich := x * y * z;

end; begin clrscr; Nhap(a,b,c); writeln; writeln('Hay lua chon cong viec:'); writeln('1. Tinh tong cua 3 so'); writeln('2. Tinh tich cua 3 so'); writeln('3. Tim gia tri lon nhat trong 3 so'); writeln; write('Hay chon viec bang cach go so tuong ung: '); readln(chon); if chon=1 then writeln('Tong cua 3 so: ',Tinh_tong(a,b,c):10:1); if chon=2 then writeln('Tich cua 3 so: ',Tinh_tich(a,b,c):10:1); if chon=3 then writeln('Gia tri lon nhat: ',Tim_max(a,b,c):10:1); readln; end.

7.5.5.Tnh quy ca chng trnh con


quy l mt k thut c bit trong lp trnh ch hin tng mt lnh ca chng trnh con li c th gi n chnh chng trnh con . V d: Chng trnh tnh giai tha ca s t nhin n. C th tnh giai tha qua nh ngha sau: n! = 1 khi n = 0 n! = (n-1)! n trong cc trng hp cn li Khi hm tnh giai tha c vit nh sau: program Tinh_giai_thua; uses crt; var n : integer;

function giai_thua(n:integer):longint; begin if n = 0 then giai_thua := 1 else giai_thua := n * giai_thua(n-1); end; begin clrscr; write('Nhap so n = '); readln(n); writeln('n! = ',giai_thua(n)); readln; end. Cch tnh giai tha trn rt n gin v d hiu. Song v phng din k thut lp trnh th khng phi l cch ti u v n tn thi gian thc hin v tn b nh. Ta c th tnh giai tha qua chng trnh khc nh sau: program Tinh_giai_thua; uses crt; var n : integer; function giai_thua(n:integer):longint; var i: integer; gt : longint; begin i := 0; gt := 1; while i < n do begin i := i + 1; gt : = gt * i; end; giai_thua := gt; end; begin clrscr; write('Nhap so n = '); readln(n); writeln('n! = ',giai_thua(n));

readln; end. Ni chung ngi ta thng trnh dng quy khi m c th dng php lp tnh ton. 7.6. D liu kiu xu

7.6.1. Cch khai bo kiu xu


Xu k t l gm mt tp hp cc k t c di khng qu 255 k t. Cch khai bo xu k t nh sau: Khai bo thng qua phn m t kiu TYPE: TYPE Tn_kiu_xu = String[max]; VAR Tn_bin_xu: Tn_kiu_xu; trong max l mt s nguyn dng xc nh s k t ti a ca xu (0<max<256). V d 1: Type hoten = string[30]; Var ht1, ht2: hoten; Khai bo trc tip: VAR Tn_bin_xu: string[max]; Trng hp max=255 c th khai bo n gin nh sau: VAR Tn_bin_xu:string; V d 2: Var ht1, ht2: string[30];

7.6.2. X l xu k t
Truy cp n tng k t ca xu: s dng cch vit sau: Tn_bin_xu[gi_tr_ch_s]; X l xu k t: - Php gn - Php cng (+) ghp hai hay nhiu xu k t mt cch ln lt. - Cc php so snh. Mt s hm v th tc thng dng: - Hm LENGTH(S): cho kt qu l di xu k t S. - Hm POS(Y,X): cho kt qu l v tr u tin ca xu Y xut hin trong xu X. Nu khng tm thy Y hm cho gi tr 0. - Hm COPY(X,i,k): cho kt qu l xu con c di k ca xu X tnh t v tr th i. - Hm DELETE(X,i,k): xo k k t trong X k t v tr th i. - Th tc INSERT(Y,X,i): chn xu k t Y vo xu X v tr th i.

7.6.3. V d
V d 1: Lp chng trnh nhp vo mt cu (c t hn 50 k t) t bn phm. m xem cu c bao nhiu t (mt t c hiu l xu khc rng khng cha du cch). a kt qu m c ra mn hnh. Program Dem_tu_trong_cau; Uses CRT; Var cau: string[50]; i,n,dem: byte;

Begin clrscr; write('Nhap vao mot cau khong qua 50 ki tu: '); readln(cau); cau := cau + ' ';

n := length(cau); dem := 0; for i:=1 to n-1 do if (cau[i]<>' ') and (cau[i+1]=' ') then dem := dem + 1; writeln; writeln('So tu trong cau la: ',dem); readln; V d 2: Lp chng trnh nhp vo mt cu (c t hn 50 k t) t bn phm. Nhp vo mt cu

End.

mi, sau chn cu ny vo v tr th i (nhp vo t bn phm) trong cu ban u. a cu ban u v cu sau khi chn thm ra mn hnh. Program Chen_cau; Uses CRT; Var cau1,cau2: string[50]; i,n: byte;

Begin clrscr; write('Nhap vao mot cau khong qua 50 ki tu: '); readln(cau1); n := length(cau1); write('Nhap vao cau can chen khong qua 50 ki tu: '); readln(cau2); repeat write('Vi tri can chen :'); readln(i); until i<=n; writeln('Cau ban dau: ',cau1); insert(cau2,cau1,i); writeln('Cau sau khi chen: ',cau1); readln;

End. 7.7. D liu kiu lit k v kiu min con

7.7.1. D liu kiu lit k


Bin kiu lit k l bin cha cc i tng kiu m c c gi tr thuc mt min th t c ch r trong khai bo. Cch khai bo nh sau: Khai bo thng qua phn m t kiu TYPE: TYPE Tn_kiu_lit_k = (phn t 1, phn t 2, ..., phn t n); VAR Tn_bin: Tn_kiu_lit_k; trong : phn t 1, ..., phn t n: l cc gi tr c th. V d: Type color = (xanh,do,vang,trang,den); Var mau1, mau2: color; Khai bo trc tip: VAR Tn_bin : (phn t 1, phn t 2, ...., phn t n); V d: Var mau1, mau2: (xanh,do,vang,trang,den); Cc php x l - Bin kiu lit k c th s dng cc php gn, cc php ton quan h. - C th dng vi cc hm: ORD(x) : cho s th t ca x trong tp gc. PRED(x) : cho gi tr l phn t ng trc x.

SUCC(x) : cho gi tr l phn t ng sau x.

7.7.2. D liu kiu min con


Bin kiu min con l bin cha cc i tng kiu m c c gi tr thuc mt dy gi tr lin tip bt u t mt gi tr ny n mt gi tr khc. Cch khai bo nh sau: Khai bo thng qua phn m t kiu TYPE: TYPE Tn_kiu_min_con = Gi tr 1 .. Gi tr n; VAR Tn_bin: Tn_kiu_min_con; V d: Type date = 1..31; Var ngay1, ngay2: date; Khai bo trc tip: VAR Tn_bin : Gi tr 1 .. Gi tr n; V d: Var ngay1, ngay2: 1 .. 31; Cc php x l Bin kiu min con c th s dng cc php gn, cc php tnh cng kiu vi cc

phn t ca n. C th dng vi cc hm:

ORD(x) : cho s th t ca x trong tp gc. PRED(x) : cho gi tr l phn t ng trc x. SUCC(x) : cho gi tr l phn t ng sau x.

7.8. D liu kiu tp hp

7.8.1. Khai bo kiu tp hp


Bin kiu tp hp l bin cha cc i tng cng kiu. Kiu ca phn t tp hp l kiu c bn loi v hng hay min con, khng c l kiu s thc. S cc phn t cc i ca mt tp hp l 256. Khai bo thng qua phn m t kiu TYPE: TYPE Tn_kiu_tp_hp = Set of kiu_phn_t; VAR Tn_bin: Tn_kiu_tp_hp; V d 1: Type TH_ch = set of char; Var kt1, kt2: TH_ch; Khai bo trc tip: VAR Tn_bin : Set of kiu_phn_t; V d 2: Var kt1, kt2: set of char;

7.8.2. Xc lp mt tp hp
Mt tp hp c xc lp bng cch lit k hoc ch ra mt tp cc phn t ca tp hp. Cc phn t c t trong cp du ngoc vung ([ ]). V d 3: [] l tp rng

[1..10]l tp cc ch s 1,2,3,4,5,6,7,8,9,10

[a,b,c] l tp cc ch ci a, b, c

7.8.3. Cc php ton trn tp hp


Php gn: K hiu l := V d 4: chu_so := [1..10]; chu_cai := []; Php hp: K hiu l +. Hp ca hai tp l mt tp gm cc phn t thuc c hai tp. V d 5: chu_cai1 := [a,b,c]; chu_cai2 := [d,e,f]; chu_cai3 := chu_cai1 + chu_cai2; chu_cai3 s l tp hp [a,b,c,d,e,f] Php giao: K hiu l *. Giao ca hai tp l mt tp gm cc phn t nm chung ca c hai tp. V d 6: chu_so1 := [1..7]; chu_so2 := [5..10]; chu_so3 := chu_so1 * chu_so2; chu_so3 s l tp [5..7] Php hiu: K hiu l - . Hiu ca hai tp l mt tp gm cc phn t thuc tp th nht nhng khng thuc tp th hai. V d 7: chu_so1 := [1..7]; chu_so2 := [5..10];

chu_so3 := chu_so1 - chu_so2; chu_so3 s l tp [1..4] Php thuc v K hiu l IN. Php thuc v cho bit gi tr ca mt tp c l con ca tp kia hay khng? Kt qu ca php thuc v c kiu boolean. V d 8: ch IN [a, b, c] Cc php so snh K hiu l =, <>, >=, <=. Hai tp c em ra so snh trc ht phi c cng kiu. Kt qu ca php so snh thuc v kiu boolean. V d 9: Lp chng trnh nhp vo t bn phm n ch ci xy dng tp gm n ch ci vit in. a ra mn hnh s cc phn t ca tp ch ci (lc lng ca tp ch ci). Program Tap_chu_cai; Uses CRT; Type Var

chu_cai = set of 'A'..'Z';

chu: chu_cai; i,n: integer; kt: char;

Begin clrscr; write('Cho biet so ki tu can nhap: '); readln(n); chu := []; for i:=1 to n do begin write('Nhap vao ki tu thu ',i,' :'); readln(kt); kt := upcase(kt); chu := chu + [kt]; end;

writeln('Cac ki tu da nhap la:'); for kt:='A' to 'Z' do if kt IN chu then write(kt:3); readln; V d 10: Lp chng trnh a ra mn hnh cc s nguyn t t 1 n 100. Chng trnh di y th hin cch tm cc s nguyn t theo phng php ca

End.

Eratosthene (sng s nguyn t). Cch thc hin nh sau: Xt tp cc s nguyn t 1 n 100. Mi ln gp mt s nguyn t s loi khi tp ban u tt c cc s l bi ca n. Thut ton s kt thc khi xt ht tt c cc s trong tp ban u.

Program Sang_so_nguyen_to;

Uses CRT; Type Var


so_nguyen = set of 1..100;

ng_to, sang_nguyen: so_nguyen; so, i: integer;

Begin clrscr; ng_to := []; sang_nguyen := [2..100]; repeat while not (so IN sang_nguyen) do so := so + 1; ng_to := ng_to + [so]; write(so:4); i := so; while i <=n do begin sang_nguyen := sang_ nguyen - [i]; i := i + so; end; {Tp cha cc s nguyn t} {Tp cha cc s cn xt}

until sang_nguyen = []; readln;

End. 7.9. D liu kiu bn ghi

7.9.1. Khai bo d liu kiu bn ghi


Kiu bn ghi cho php to ra cu trc d liu vi cc phn t d liu c kiu khc nhau. Khai bo thng qua phn m t kiu TYPE: TYPE Tn_kiu_bn_ghi = record tn_trng_1 : kiu; tn_trng_2 : kiu; ................. tn_trng_n : kiu; end; VAR Tn_bin_bn_ghi : Tn_kiu_bn_ghi; V d 1: TYPE Date = record ngay : 1..31; thang : 1..12; nam : integer; end; VAR ngay_sinh : date; Khai bo trc tip VAR

Tn_bin_bn_ghi : record tn_trng_1 : kiu; tn_trng_2 : kiu; .............. tn_trng_n : kiu; end; V d 2: VAR ngay_sinh : record ngay : 1..31; thang : 1..12; nam : integer; end;

7.9.2. Cc php x l vi kiu bn ghi


Truy nhp ti tng trng ca bn ghi: truy cp ti tng trng ca bn ghi s dng cch vit sau: Tn_bn_ghi.tn_trng Cc php x l vi ton bn ghi: Turbo Pascal ch cho php lm vic vi ton bn ghi trong cc trng hp sau: - Cc php so snh = (bng nhau) hoc <> (khc nhau). - Php gn ni dung hai bn ghi cng cu trc. - Php truy nhp file trn a. Cc trng hp khc: Cc trng hp cn li, k c c t bn phm hay hin th ln mn hnh u phi truy nhp trc tip n tn tn trng ca bn ghi.

7.9.3. Cu lnh WITH... DO...


Khi truy nhp n cc trng ca mt bin kiu bn ghi ngi s dng s phi lp i lp li

nhiu ln tn bin . n gin cho vic truy nhp cc trng ca mt bn ghi Pascal a ra lnh WITH vi c php nh sau: WITH tn_bn_ghi DO Begin .......... {Cc cu lnh x l ch cn ghi tn trng}; ..................... End; V d 3: Hy lp chng trnh nhp vo t bn phm mt danh sch n sinh vin (n <=100). Thng tin v mt sinh vin bao gm: h v tn, nm sinh, im trung bnh hc tp. a ra mn hnh danh sch sinh vin va nhp. Program Danh_sach_sinh_vien; Uses CRT; Type Var sv: array[1..100] of sinh_vien; n,i: integer; sinh_vien = record hoten:string[35]; namsinh:integer; diemtb:real; end;

Begin clrscr; write('Cho biet so luong sinh vien: '); readln(n); for i:=1 to n do with sv[i] do begin write('Ho va ten sinh vien thu ',i,' :'); readln(hoten);

write('Nam sinh: '); readln(namsinh); write('Diem trung binh: '); readln(diemtb); end; clrscr; gotoxy(20,2); writeln('DANH SACH SINH VIEN'); gotoxy(8,6); write('Ho va ten'); gotoxy(30,6); write('Nam sinh'); gotoxy(45,6); write('Diem TB'); for i:=1 to n do with sv[i] do begin gotoxy(4,7+i); write(' ',hoten); gotoxy(30,7+i); write(' ',namsinh); gotoxy(45,7+i); write(' ',diemtb:4:2); end; readln; V d 4: Cho mt danh sch hng ho (khng qu 100 mt hng). Thng tin v mt mt hng gm:

End.

tn hng, n v tnh, s lng, n gi v thnh tin. Lp chng trnh thc hin cc cng vic sau: - Nhp danh sch cc mt hng vo t bn phm. Kt thc nhp khi tn mt hng l du /. - a ra mn hnh danh sch cc mt hng c s lng trn 100. Program Danh_sach_hang_hoa; Uses CRT; Type hang_hoa = record tenhang:string[35]; donvt:string[20]; soluong:integer; dongia:real; thanhtien:real;

Var

end;

dshh: array[1..100] of hang_hoa; n,i,tt: integer; tgian: hang_hoa;

Begin clrscr; n := 0; writeln('NHAP DANH SACH CAC MAT HANG'); repeat write('Cho biet ten mat hang : '); readln(tgian.tenhang); if tgian.tenhang <>'/' then begin n := n+1; write('Don vi tinh :'); readln(tgian.donvt); write('So luong :'); readln(tgian.soluong); write('Don gia :'); readln(tgian.dongia); tgian.thanhtien := tgian.soluong * tgian.dongia; dshh[n] := tgian; end; until tgian.tenhang = '/'; clrscr; gotoxy(20,2); writeln('DANH SACH HANG CO SO LUONG TREN 100'); gotoxy(2,6); write('| TT'); gotoxy(7,6); write('| Ten hang '); gotoxy(32,6); write('| Don VT'); gotoxy(42,6); write('| So luong'); gotoxy(52,6); write('| Don gia'); gotoxy(62,6); write('| Thanh tien'); gotoxy(75,6); write('|'); tt := 0; for i:=1 to n do with dshh[i] do

End.

begin if soluong>100 then begin tt := tt + 1; gotoxy(2,8+tt); write('| ',tt); gotoxy(7,8+tt); write('| ',tenhang); gotoxy(32,8+tt); write('| ',donvt); gotoxy(42,8+tt); write('| ',soluong); gotoxy(52,8+tt); write('| ',dongia:9:1); gotoxy(62,8+tt); write('| ',thanhtien:9:0); gotoxy(75,8+tt); write('|'); end; end; readln;

7.10. D liu kiu tp

7.19.1. Gii thiu chung


Tp l mt tp hp cc d liu c lin quan vi nhau v c cng kiu. Nhng khc vi d liu kiu mng, s phn t ca tp khng c xc nh trc v tp c lu tr trong b nh ngoi. im khc bit ca tp so vi d liu lu tr trong b nh trong l p ng c cc yu cu sau ca ngi s dng: - Lu tr thng tin b nh ngoi v vy khng b mt khi tt my. - Lu tr c mt lng thng tin ln vt khi sc cha ca b nh trong. - Sao chp c thng tin t a ny sang a khc. Cu trc ca tp: Cc phn t ca tp c sp xp thnh mt dy v vic truy nhp khng th tu tin c. Ti mt thi im chng trnh ch c th truy nhp c vo mt phn t ca tp thng qua bin m. Mi tp c mt du hiu kt thc tp. Phn loi tp Da vo vic b tr cc phn t ca tp v cch truy cp tp c chia thnh hai loi chnh

sau: - Tp c cu trc tun t: vic c mt phn t bt k ca tp bt buc phi tun t i qua cc phn t trc . - Tp truy nhp trc tip: c th c hoc ghi mt phn t bt k ca tp thng qua ch s th t ca thnh phn trong tp. Pascal chun ch nh ngha loi tp tun t. Phn di y nu khng ni r tp loi g th ta hiu tp l tp c cu trc tun t.

7.10.2. Khai bo d liu kiu tp


Khai bo thng qua phn m t kiu TYPE: TYPE Tn_kiu_tp = file of kiu_thnh_phn; VAR Tn_bin_tp : Tn_kiu_tp; Khai bo trc tip VAR Tn_bin_tp: file of kiu_thnh_phn; Lu : kiu thnh phn ca tp c th l bt k kiu d liu no tr kiu tp.

7.10.3. Cc ch th c bn lm vic vi tp
ASSIGN(F,S): Gn tn S (kiu xu k t) cho bin tp F. REWRITE(F): M tp F ghi t u. F c th l tp mi. RESET(F): M tp F c hoc ghi. Tp F phi c trn a, nu khng h thng s bo li. READ(F, danh sch bin): c t tp F. Ni dung cc thnh phn ca tp F, k t v tr hin thi s c ln lt c vo cc bin trong danh sch. Cc bin ny phi c cng kiu vi cc thnh phn ca tp F. WRITE(F, danh sch d liu):Ghi ra tp F. Gi tr ca cc d liu trong danh sch s c ln lt ghi ra cc thnh phn ca F, bt u t v tr hin thi. Cc d liu ny phi c cng kiu vi cc thnh phn ca F. CLOSE(F): ng tp F. i vi tp ra, nu khng ng tp sau ln ghi cui cng th my s

khng a nt thng tin t vng m ra a.

7.10.4. Mt s th tc v hm x l tp
Hm EOF(F): hm cho gi tr TRUE nu con tr ang v tr cui tp, ngc li c gi tr FALSE. Hm FILESIZE(F): cho bit kch thc ca tp F. Hm FILEPOS(F): cho bit v tr hin thi ca con tr tp trong tp F. Hm IORESULT: cho bit kt qu trao i vo/ra. Nu vic trao i khng c li cho gi tr bng khng ngc li cho gi tr khc khng. Th tc SEEK(F,k): chuyn con tr ti thnh phn th k ca tp F (thnh phn th nht tng ng vi k = 0). Th tc RENAME(F,S): i tn tp F thnh tn mi l S. Th tc ERASE(F): Xo tp F.

7.10.5. Tp vn bn
Trong Pascal c mt kiu tp c nh ngha trc l tp vn bn. Cc phn t ca tp vn bn l cc k t v c t chc thnh dng vi di mi dng khc nhau ( cui mi dng c du hiu ht dng). Tp vn bn ch ghi c d liu v hng v kiu xu k t. Khng th va ghi, va c vo tp vn bn. Hn na vic c hay ghi l tun t t u n cui tp. Cch khai bo tp vn bn: VAR Tn_bin_tp: Text; Ngoi cc ch th lm vic vi tp nh phn trn, ring vi tp vn bn cn c th dng cc ch th sau: READLN(F, danh sch bin): c vo c du xung dng. WRITELN(F, danh sch d liu): ghi ra c du xung dng. APPEND(F): m tp F ghi b xung vo cui tp.

7.10.6. Cc ch th dch thng dng

Ch th dch {$I-}: khng dng chng trnh khi c li vo/ra. Ch th dch {$I+}: Dng chng trnh khi c li vo/ra (gi tr ngm nh). V d 1: Lp chng trnh kim tra xem mt tp c tn a vo t bn phm c trong a ang lm vic khng? Nu c cho bit kch thc ca tp, ngc li thng bo khng tm thy tp. Program Tim_tep; Uses CRT; Var End. V d 2: Lp chng trnh thc hin cc cng vic sau: - Nhp vo t bn phm danh sch sinh vin gm: h v tn, tn mn thi th nht, im mn thi th nht, tn mn thi th hai, im mn thi th hai. - Ghi vo a vi tn QLSV.DAT - c d liu t tp QLSV.DAT. a ra mn hnh danh sch sinh vin phi thi li (c im thi nh hn 5). end else writeln('Khong tim thay tep ',s); readln; f: file of byte; s: string[50];

Begin clrscr; write('Cho biet ten tep can tim: '); readln(s); assign(f,s); reset(f); if IOResult = 0 then begin write('Tep ', s,' co kich thuoc la: '); writeln(fileSize(f),' bytes.');

Program Danh_sach_sinh_vien_thi_lai; Uses CRT; Type Var

sinhvien= record hoten: string[30]; mh1: string[12]; dm1: real; mh2: string[12]; dm2: real; end;

f: file of sinhvien; sv: sinhvien; n,i,tt: integer;

Begin clrscr; write('Cho biet so sinh vien can nhap: '); readln(n); assign(f,'QLSV.DAT'); rewrite(f); with sv do begin write('Mon thu nhat: '); readln(mh1); write('Mon thu hai: '); readln(mh2); for i:=1 to n do begin writeln('Nhap sinh vien thu ',i); write('Ho va ten: '); readln(hoten); write('Diem mon thu nhat: '); readln(dm1); write('Diem mon thu hai: '); readln(dm2); write(f,sv); end; end; close(f);

clrscr; writeln('DANH SACH SINH VIEN THI LAI'); writeln; assign(f,'QLSV.DAT'); reset(f); tt := 0; while not Eof(f) do begin read(f,sv); with sv do if (dm1 < 5) or (dm2 < 5) then begin tt := tt + 1; write(tt:3,'-',hoten,' ':30-length(hoten)); if dm1<5 then write(mh1,' ':12-length(mh1),':',dm1:4:2,' if dm2<5 then write(mh2,' ':12-length(mh1),':',dm2:4:2,' writeln; end; end; close(f); readln;

':3); ':3);

End. 7.11. Con tr v cu trc ng ca d liu Cc kiu cu trc d liu nghin cu trong phn trc nh: mng, tp hp, bn ghi u c gi l tnh v chng c xc nh trc khi m t kiu v khai bo bin. Thi gian tn ti ca cc bin tnh cng l thi gian tn ti ca khi chng trnh c cha khai bo cc bin ny. Ngoi cch to nh trn, cc bin cng c th c to ra mt cch ng, tc l c to ra lc chy chng trnh. Cc bin ny khng c xc nh t trc. Bin c to ra nh vy gi l cc bin ng (Dynamic Variable).

Vic truy cp cc bin ng c tin hnh nh cc bin con tr (Pointer Variable). Cc bin con tr c nh ngha nh bin tnh v c dng cha a ch ca bin ng. Turbo Pascal xy dng hai loi con tr: con tr nh kiu v con tr khng nh kiu. Con tr nh kiu dng cho vic truy cp d liu nh kiu v con tr khng nh kiu dng tng thch vi mi loi con tr khc nhau.

7.11.1. Khai bo con tr


7.11.1.1. Khai bo con tr nh kiu Khai bo thng qua phn m t kiu TYPE: TYPE Tn_kiu_con_tr = ^ kiu_d_liu; trong : kiu_d_liu l tn mt kiu d liu bt k (s nguyn, s thc, k t, xu k t, mng, bn ghi). VAR Tn_bin_tr : Tn_kiu_con_tr; Khai bo trc tip VAR Tn_bin_tr: ^kiu_d_liu; V d: Nu mun khai bo bin kiu con tr, cha a ch ca bin ng c kiu s nguyn ta khai bo nh sau: TYPE IntPointer = ^Integer; VAR Ptr: IntPointer; hoc khai bo trc tip: VAR Ptr:^Integer; 7.11.1.2. Khai bo con tr khng nh kiu

VAR Tn_bin_tr : Pointer; V d: VAR P: Pointer;

7.11.2. Cc thao tc vi con tr


Gn gi tr gia hai bin tr Hai bin tr c th gn gi tr cho nhau trong trng hp tng thch. Nh vy php gn p := q ch thc hin c khi p v q l hai con tr nh kiu, tr n cng mt kiu d liu hoc mt trong chng l con tr khng nh kiu. Hng con tr NIL: NIL l mt gi tr hng c bit dnh cho cc bin con tr v c dng bo rng con tr khng tr vo u c. So snh hai bin tr Hai bin con tr tng thch c th so snh vi nhau qua php ton: = (bng nhau) v <> (khc nhau). c bit: bin tr p = NIL cho gi tr l True khi v ch khi p cha tr n mt gi tr no c.

7.11.3. Truy cp d liu nh con tr


Gi s con tr p ang gi a ch ca mt vng. Ta c th truy cp d liu ang c lu tr trong vng ny nh k hiu p^. - Nu p l con tr nh kiu th p^ c truy cp nh mt bin nh kiu thng thng. - Nu p l con tr khng nh kiu th p^ c truy cp nh l mt bin khng nh kiu v n thng c dng truyn vo v tr cc tham bin khng nh kiu trong mt s th tc hay hm.

7.11.4. Cp pht ng
Vic cp pht ng b nh cho bin tr c Pascal xp vo mt vng nh t do theo kiu xp chng c gi l HEAP (b nh cp pht ng) v c th thu hi khi cn, v th c gi l cp pht ng. C hai cch cp pht ng: cp pht nh kiu v cp pht khng nh kiu.

Cp pht nh kiu To ra bin ng nh th tc New(p): th tc ny cp pht cho con tr nh kiu p mt vng nh trn HEAP, kch thc cp pht bng kch thc kiu d liu p tr ti, a ch vng cp pht c lu tr trong p. Trong chng trnh c th dng th tc New(p) nhiu ln nhng con tr p s tr vo bin ng c to ra sau cng. - Thu hi vng nh cp pht cho bin p dng th tc Dispose(p). Sau khi thu hi, ni dung d liu trong p^ c th b thay i. - Ngoi ra c th dng hai th tc: Mark(pvar) nh du v tr u ca vng nh cn gii phng sau ny. Release(pvar) gii phng c mt vng nh ca nhiu bin ng khc nhau c nh du. V d: Type Ptr=^Integer; Var p, q: Ptr; Begin ..... new(p); new(q); ..... dispose(p); dispose(q); ..... new(p); dispose(p); ..... End. Cp pht khng nh kiu {To ra bin ng mi p} {Gii phng nh ca bin ng p} {Gii phng nh ca bin ng p} {Gii phng nh ca bin ng q} {To ra bin ng p} {To ra bin ng q}

Gi s p l con tr bt k: - Th tc GetMem(p,size) s cp pht cho con tr p mt vng nh c kch thc size bytes. Khi p^ ch c dng nh nhng bin khng nh kiu. - Th tc FreeMem(p,size) thu hi vng nh cp pht cho p, kch thc size bytes.

7.11.5. ng dng ca con tr


Vic cp pht ng c dng ch yu trong cc ng dng: - Cn s dng hu hiu b nh: cn n u xin cp pht n y, khi khng dng n na th c th thu hi li. - Xy dng cc cu trc d liu ng, in hnh l danh sch lin kt. V d: Lp chng trnh nhp mt danh sch sinh vin gm h v tn, nm sinh, im trung bnh hc tp cho n khi h tn nhp vo l rng. a danh sch va nhp ra mn hnh. Danh sch nhp vo khng bit trc s ngi nn khng th s dng mng. y ta s dng bin con tr xy dng mt danh sch cc sinh vin c mc ni vi nhau. to danh sch, u tin khi to danh sch rng, sau l qu trnh np ln lt cc nt vo cui danh sch. Vic in danh sch sinh vin l vic duyt tun t cc nt trong danh sch bt u t nt cui cng cho n khi duyt ht danh sch. Cu trc d liu t chc nh vy c gi l cu trc kiu ngn xp (hay gi l cu trc kiu LIFO Last In First Out). Program Danh_sach_sinh_vien; Uses CRT; Type Var Last, Ptr:pointerSV; HeapTop: ^integer; pointerSV = ^sinh_vien; sinh_vien = record hoten:string[35]; namsinh:integer; diemtb:real; next:pointerSV; end;

ten:string[35];

Begin clrscr; Last := NIL; mark(HeapTop); {nh du v tr trn HEAP} {Nhp vo danh sach sinh vin cho n khi Tn=''} repeat write('Nhap ho va ten sinh vien: '); readln(ten); if ten<>'' then begin new(Ptr); Ptr^.hoten := ten; write('Nam sinh: '); readln(Ptr^.namsinh); write('Diem trung binh: '); readln(Ptr^.diemtb); Ptr^.Next := Last; Last := Ptr; end; until ten = ''; {a ra mn hnh ton b danh sch va nhp vo} clrscr; writeln('DANH SACH SINH VIEN'); Ptr := Last; {Ptr tr vo ngi cui cng trong danh sch}; while Ptr <> NIL do begin writeln('Ho va ten: ', Ptr^.hoten); writeln('Nam sinh: ', Ptr^.namsinh); writeln('Diem trung binh: ', Ptr^.diemtb:4:2); writeln; Ptr := Ptr^.next; end; release(HeapTop);

End.

PH LC BNG M ASCII (AMERICAN STANDARD CODE FOR INFORMATION INTERCHANGE) M h 10 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 K t Space ! # $ % & ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? M h 10 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 K t @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ M h 10 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 K t ` a b c d e f g h I j k l m n o p q r s t u v w x y z { | } ~

TI LIU THAM KHO 1. Henning Mittelbach Lp trnh bng TURBO PASCAL Version 7.0 Nh xut bn Khoa hc k thut 1996. 2. Quch Tun Ngc - Ngn ng lp trnh PASCAL - Nh xut bn Thng k - 2002

3. 4. 5. 6.

Hng dn s dng MS-DOS - Cng ty my tnh H Ni 1996 Dng Quang Thin MS-DOS 6.0 Nh xut bn Thng k - 1996 Deghe - Cu trc d liu + gii thut = Chng trnh Nh xut bn Thng k - 1992 Nguyn Xun Huy T thut ton n chng trnh Nh xut bn Khoa hc k thut 2001

7. 8.

Microsoft Windows Help. Microsoft Word Help.

MC LC 6. THUT TON ........................................................................................................1 6.1. Khi nim.........................................................................................................1 6.2. Trnh by thut ton bng s khi................................................................2 6.3. Cc cu trc ca thut ton...............................................................................2 6.4. Cc tnh cht ca thut ton..............................................................................6 6.5. Chng trnh.....................................................................................................6 Chng 4: NGN NG TURBO PASCAL 7.0....................................................10 1. GII THIU CHUNG V TURBO PASCAL 7.0..................................................10 1.1. S ra i v pht trin ca PASCAL..............................................................10 1.2. Khi ng v thot khi Turbo PASCAL.......................................................11 1.3. Mi trng lm vic ca Turbo PASCAL......................................................12 2. CC YU T C BN CA NGN NG TURBO PASCAL ...........................18 2.1. Bng ch (Character set)................................................................................18 2.2. T kho (Keyword)........................................................................................18 2.3. Tn (Identifier)...............................................................................................19 2.4. Ch thch (Comment).....................................................................................19 2.5. Mt s kiu d liu c bn..............................................................................19 3. CC I LNG C BN CA TURBO PASCAL..........................................22 3.1. Hng (Constant)..............................................................................................22 3.2. Bin (Variable)...............................................................................................23 3.3. Hm (Function) v th tc (Procedure)..........................................................24 4. BIU THC............................................................................................................29 4.1. Biu thc s....................................................................................................29 4.2. Biu thc xu k t.........................................................................................31 4.3. Biu thc quan h...........................................................................................31 4.4. Biu thc logic................................................................................................32 5. CU TRC C BN CA MT CHNG TRNH...........................................33 6. KHI LNH...........................................................................................................35 7. CC LNH C BN CA TURBO PASCAL .....................................................36 7.1. Nhm lnh gn, th tc vo/ra d liu............................................................36 7.2. Nhm lnh iu kin.......................................................................................46 7.3. Nhm lnh chu trnh.......................................................................................56 7.4. D liu kiu mng (Array)..............................................................................67 7.5. Chng trnh con: Hm v th tc..................................................................74 7.6. D liu kiu xu..............................................................................................82 7.7. D liu kiu lit k v kiu min con.............................................................85 7.8. D liu kiu tp hp.......................................................................................87 7.9. D liu kiu bn ghi........................................................................................91 7.10. D liu kiu tp............................................................................................96 7.11. Con tr v cu trc ng ca d liu..........................................................101

You might also like