Professional Documents
Culture Documents
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
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
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
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
Cu lnh 1
Cu lnh n
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
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!
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).
+ 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.
- 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
- Hoc bm phm F10, chn menu File -> Exit - Hoc bm t hp phm Alt+X. 1.3. Mi trng lm vic ca Turbo PASCAL
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.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.
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.
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
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).
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;....
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).
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:
15
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.
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.
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
19
Min gi tr 0 ... 65535 -127 ... 127 -32768 ... 32767 -2147483648 ... 2147483647
- 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}
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
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
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.
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, ...
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}
x := abs(10/3);
{x = 3.3333333333E+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}
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}
V d:
x: integer; x := int(2.8); {x = 2}
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}
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}
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 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}
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
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;
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;
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;
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, 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
BT logic Nhmlnh 1 S
Nhm lnh 2
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.
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.
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.
bin = bt1
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).
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
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);
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:
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.
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
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
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:
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
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;
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.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.
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
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;
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.
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.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;
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.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
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
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;
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}
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;
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;
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;
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.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
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.
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.');
sinhvien= record hoten: string[30]; mh1: string[12]; dm1: real; mh2: string[12]; dm2: real; end;
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.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.
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.
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