You are on page 1of 71

100 bi tp Turbo Pascal

U BAN NHN DN HUYN QU SN PHNG GIO DC V O TO *** **

(Ti liu bi dng hc sinh gii mn tin hc dnh cho hc sinh THCS)

Qu Sn, thng 11 nm 2010


L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 1

100 bi tp Turbo Pascal

GII THIU TM TT TP TI LIU 1. S cn thit: Cc trng THCS ang c xu hng dy mn t chn tin hc thay cho ch t chn khi m c s vt cht phc v cho vic dy hc mn hc ny c trang b ngy cng tt hn. Rt nhiu hc sinh, ph huynh hc sinh, lnh o cc trng mun bn thn, con mnh, hc sinh mnh tham gia cc k thi hc sinh gii mn tin hc (K thi tin hc tr, K thi hc sinh gii lp 9...) bi tnh mi m, hp dn, thit thc ca b mn. Ln u tin b mn tin hc c a vo dy hc ti cc trng THCS nn ti liu bi dng cho hc sinh gii dnh cho hc sinh THCS hu nh cha c. p ng nhu cu bi dng ti cc trng, tp ti liu bi dng hc sinh gii mn tin hc cp THCS vi tn gi 100 bi tp Turbo Pascal c b phn chuyn mn Phng GD&T Qu Sn bin son. 2. Ni dung: Tp ti liu c bin son theo nh hng 10 x 10. Ni dung bi dng c chia lm 10 chng. Mi chng gm tm tt l thuyt v 10 bi tp xoay quanh ni dung ca chng. Mi bi tp c trnh by theo cu trc: a. bi. b. Hng dn, thut ton. c. M chng trnh. d. Nhn xt: Nhn mnh ni dung mi, quan trng cn nm sau khi thc hin bi tp, gii quyt bi ton theo thut ton khc, im c v cha c ca thut ton ... Ni dung cc bi tp cc chng c la chn theo hng k tha, tng dn kh. Nhiu bi ton cn gii quyt trong thc t c a vo cc bi tp nhm tng hng th hc tp .... Hu ht cc bi tp c kh va phi, ph hp vi ni dung bi dng cp trng. Ni dung lin quan vi mn ton v cc mn khc t lp 8 tr xung. Ni dung bi dng c chia thnh 10 chng nh sau: Lp 8: I. Lm quen vi chng trnh Pascal Khai bo, s dng bin Cc th tc vo ra. II. Cu trc la chn: if then else Case ... of ... III. Cu trc lp vi s ln lp bit: For to do IV. Cu trc lp vi s ln lp cha bit. V. D liu kiu mng (mt chiu). VI. Chng trnh con. VII. Chuyn : Tnh chia ht- S nguyn t. VIII. Chuyn dy con. IX. Chuyn ch s - h c s. X. Chuyn a thc. 3. ngh: Chc chn tp ti liu cn hiu chnh, b sung c th a vo s dng. Rt mong Hi ng thm nh cho y kin c th v:
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 2

100 bi tp Turbo Pascal

- Nhng hiu chnh v cu trc ca tp ti liu. - Nhng ni dung cn b sung thm, nhng ni dung cn gim bt cho ph hp vi thc t bi dng ti cc n v trng. - xut cc bi tp hay hn thay th cho cc bi tp c tp ti liu. Cc bi tp m tp ti liu cn thiu.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 3

100 bi tp Turbo Pascal

CHNG I CC KIU D LIU C BN KHAI BO HNG, BIN, KIU, BIU THC V CU LNH A. L THUYT: I. CC KIU D LIU C BN 1. Kiu logic - T kha: BOOLEAN - min gi tr: (TRUE, FALSE). - Cc php ton: php so snh (=, <, >) v cc php ton logic: AND, OR, XOR, NOT. Trong Pascal, khi so snh cc gi tr boolean ta tun theo qui tc: FALSE < TRUE. Gi s A v B l hai gi tr kiu Boolean. Kt qu ca cc php ton c th hin qua bng di y: A TRUE TRUE FALSE FALSE B TRUE FALSE TRUE FALSE A AND B TRUE FALSE FALSE FALSE A OR B TRUE TRUE TRUE FALSE A XOR B FALSE TRUE TRUE FALSE NOT A FALSE FALSE TRUE TRUE

2. Kiu s nguyn 2.1. Cc kiu s nguyn Tn kiu Shortint Byte Integer Word LongInt Phm vi -128 127 0 255 -32768 32767 0 65535 -2147483648 2147483647 Dung lng 1 byte 1 byte 2 byte 2 byte 4 byte

2.2. Cc php ton trn kiu s nguyn 2.2.1. Cc php ton s hc: +, -, *, / (php chia cho ra kt qu l s thc). Php chia ly phn nguyn: DIV (V d : 34 DIV 5 = 6). Php chia ly s d: MOD (V d: 34 MOD 5 = 4). 3. Kiu s thc 3.1. Cc kiu s thc: Tn kiu Phm vi Dung lng
Trang 4

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

100 bi tp Turbo Pascal

Single Real Double Extended

1.510-45 3.410+38 2.910-39 1.710+38 5.010-324 1.710+308 3.410-4932 1.110+4932

4 byte 6 byte 8 byte 10 byte

Ch : Cc kiu s thc Single, Double v Extended yu cu phi s dng chung vi b ng x l s hoc phi bin dich chng trnh vi ch th {$N+} lin kt b gi lp s. 3.2. Cc php ton trn kiu s thc: +, -, *, / Ch : Trn kiu s thc khng tn ti cc php ton DIV v MOD. 3.3. Cc hm s hc s dng cho kiu s nguyn v s thc: SQR(x): Tr v x2 SQRT(x): Tr v cn bc hai ca x (x0) ABS(x): Tr v |x| SIN(x): Tr v sin(x) theo radian COS(x): Tr v cos(x) theo radian ARCTAN(x): Tr v arctang(x) theo radian TRUNC(x): Tr v s nguyn gn vi x nht nhng b hn x. INT(x): Tr v phn nguyn ca x FRAC(x): Tr v phn thp phn ca x ROUND(x): Lm trn s nguyn x PRED(n): Tr v gi tr ng trc n SUCC(n): Tr v gi tr ng sau n ODD(n): Cho gi tr TRUE nu n l s l. INC(n): Tng n thm 1 n v (n:=n+1). DEC(n): Gim n i 1 n v (n:=n-1). 4. Kiu k t - T kho: CHAR. - Kch thc: 1 byte. - biu din mt k t, ta c th s dng mt trong s cc cch sau y: t k t trong cp du nhy n. V d 'A', '0'. Dng hm CHR(n) (trong n l m ASCII ca k t cn biu din). V d CHR(65) biu din k t 'A'. Dng k hiu #n (trong n l m ASCII ca k t cn biu din). V d #65. - Cc php ton: =, >, >=, <, <=,<>. * Cc hm trn kiu k t: - UPCASE(ch): Tr v k t in hoa tng ng vi k t ch. V d: UPCASE('a') = 'A'. - ORD(ch): Tr v s th t trong bng m ASCII ca k t ch. V d ORD('A')=65.
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 5

100 bi tp Turbo Pascal

- CHR(n): Tr v k t tng ng trong bng m ASCII c s th t l n. V d: CHR(65)='A'. - PRED(ch): cho k t ng trc k t ch. V d: PRED('B')='A'. - SUCC(ch): cho k t ng sau k t ch. V d: SUCC('A')='B'. II. KHAI BO HNG - Hng l mt i lng c gi tr khng thay i trong sut chng trnh. - C php: CONST <Tn hng> = <Gi tr>; III. KHAI BO BIN - Bin l mt i lng m gi tr ca n c th thay i trong qu trnh thc hin chng trnh. - C php: VAR <Tn bin>[,<Tn bin 2>,...] : <Kiu d liu>; V d: VAR x, y: Real; {Khai bo hai bin x, y c kiu l Real} a, b: Integer; {Khai bo hai bin a, b c kiu integer} Ch : Ta c th va khai bo bin, va gn gi tr khi u cho bin bng cch s dng c php nh sau: CONST <Tn bin>: <Kiu> = <Gi tr>; V d: CONST x:integer = 5; Vi khai bo bin x nh trn, trong chng trnh gi tr ca bin x c th thay i. (iu ny khng ng nu chng ta khai bo x l hng). IV. BIU THC Biu thc (expression) l cng thc tnh ton m trong bao gm cc php ton, cc hng, cc bin, cc hm v cc du ngoc n. V d: (x +y)/(5-2*x) biu thc s hc (x+4)*2 = (8+y) biu thc logic Trong mt biu thc, th t u tin ca cc php ton c lit k theo th t sau: Li gi hm. Du ngoc () Php ton mt ngi (NOT, -). Php ton *, /, DIV, MOD, AND. Php ton +, -, OR, XOR Php ton so snh =, <, >, <=, >=, <>, IN

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 6

100 bi tp Turbo Pascal

V. CU LNH 6.1. Cu lnh n gin - Cu lnh gn (:=): <Tn bin>:=<Biu thc>; - Cc lnh xut nhp d liu: READ/READLN, WRITE/WRITELN. - Li gi hm, th tc. 6.2. Cu lnh c cu trc - Cu lnh ghp: BEGIN ... END; - Cc cu trc iu khin: IF.., CASE..., FOR..., REPEAT..., WHILE... 6.3. Cc lnh xut nhp d liu 6.3.1. Lnh xut d liu xut d liu ra mn hnh, ta s dng ba dng sau: (1) WRITE(<tham s 1> [, <tham s 2>,...]); (2) WRITELN(<tham s 1> [, <tham s 2>,...]); (3) WRITELN; Cc th tc trn c chc nng nh sau: (1) Sau khi xut gi tr ca cc tham s ra mn hnh th con tr khng xung dng. (2) Sau khi xut gi tr ca cc tham s ra mn hnh th con tr xung u dng tip theo. (3) Xung dng. Cc tham s c th l cc hng, bin, biu thc. Nu c nhiu tham s trong cu lnh th cc tham s phi c phn cch nhau bi du phy. Khi s dng lnh WRITE/WRITELN, ta c hai cch vit: khng qui cch v c qui cch: - Vit khng qui cch: d liu xut ra s c canh l pha bn tri. Nu d liu l s thc th s c in ra di dng biu din khoa hc. V d: WRITELN(x); WRITE(sin(3*x)); - Vit c qui cch: d liu xut ra s c canh l pha bn phi. V d: WRITELN(x:5); WRITE(sin(13*x):5:2); Cu lnh Kt qu trn mn hnh Writeln('Hello'); Hello Writeln('Hello':10); Hello Writeln(500); 500 Writeln(500:5); 500 Writeln(123.457) 1.2345700000E+02 Writeln(123.45:8:2) 123.46 6.3.2. Nhp d liu
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 7

100 bi tp Turbo Pascal

nhp d liu t bn phm vo cc bin c kiu d liu chun (tr cc bin kiu BOOLEAN), ta s dng c php sau y: READLN(<bin 1> [,<bin 2>,...,<bin n>]); Ch : Khi gp cu lnh READLN; (khng c tham s), chng trnh s dng li ch ngi s dng nhn phm ENTER mi chy tip. 6.4. Cc hm v th tc thng dng trong nhp xut d liu Hm KEYPRESSED: Hm tr v gi tr TRUE nu nh c mt phm bt k c nhn, nu khng hm cho gi tr l FALSE. Hm READKEY: Hm c chc nng c mt k t t b m bn phm. Th tc GOTOXY(X,Y:Integer): Di chuyn con tr n ct X dng Y. Th tc CLRSCR: Xo mn hnh v a con tr v gc trn bn tri mn hnh. Th tc CLREOL: Xa cc k t t v tr con tr n ht dng. Th tc DELLINE: Xo dng ti v tr con tr v dn cc dng pha di ln. Th tc TEXTCOLOR(color:Byte): Thit lp mu cho cc k t. Trong color [0,15]. Th tc TEXTBACKGROUND(color:Byte): Thit lp mu nn cho mn hnh. B. BI TP: Bi tp 1.1: Vit chng trnh tnh chu vi v din tch ca hnh ch nht c chiu di hai cnh l a, b (c nhp t bn phm). a. Hng dn: - Nhp hai cnh vo hai bin a, b. - Chu vi hnh ch nht bng 2*(a+b); Din tch hnh ch nht bng a*b. b. M chng trnh: Program Chu_nhat; uses crt; Var a, b, S, CV: real; Begin Write('Nhap chieu dai:'); readln(a); Write('Nhap chieu rong:'); readln(b); S := a*b; CV := (a+b)*2; Writeln('Dien tich hinh chu nhat la:',S); Writeln('Chu vi hinh chu nhat la:',CV:10:2); readln end.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 8

100 bi tp Turbo Pascal

c. Nhn xt: Lnh write cho php in ra mn hnh mt hoc nhiu mc. C th nh dng c s in ra bng cch qui nh khong dnh cho phn nguyn, khong dnh cho phn thp phn. Bi tp 1.2: Vit chng trnh tnh chu vi, din tch hnh vung c cnh a (c nhp t bn phm). a. Hng dn: - Nhp cnh vo bin canh. - Chu vi hnh vung bng 4*canh; Din tch hnh vung bng canh*canh. b. M chng trnh: Program HINH_VUONG; uses crt; Var canh: real; Begin clrscr; Write('Nhap do dai canh:');readln(canh); Writeln('Chu vi hinh vuong la:',4*canh:10:2); Writeln('Dien tich hinh vuong la:',canh*canh:10:2); readln end. c. Nhn xt: Bi tp 1.2 tit kim c hai bin l CV v S v lnh write cho php in mt biu thc. Trong lp trnh vic tit kim bin l cn thit nhng i lc gy kh hiu khi c, kim tra chng trnh. Bi tp 1.3: Vit chng trnh tnh chu vi v din tch hnh trn c bn knh r (c nhp t bn phm). a. Hng dn: - Nhp bn knh vo bin r. - Chu vi ng trn bng 2**r. - Din tch hnh trn bng *r*r. b. M chng trnh: Program HINH_TRON; uses crt; Var r: real; Begin clrscr; Write('Nhap ban kinh:'); readln(r); Writeln('Chu vi duong tron la:',2*pi*r:10:2); Writeln('Dien tich hinh tron la:',pi*r*r:10:2); readln
end.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 9

100 bi tp Turbo Pascal

c. Nhn xt: pi l hng s. Mt hng s c th c ngi dng khai bo hoc do Pascal t to. Pi l hng do Pascal t to nn ngi dng khng cn khai bo. Bi tp 1.4: Vit chng trnh tnh din tch ca tam gic c ba cnh l a,b,c (c nhp t bn phm) a. Hng dn: - Nhp ba cnh ca tam gic vo ba bin a,b,c. - Na chu vi ca tam gic p = (a+b+c)/2. - Din tch ca tam gic: s = p ( p a)( p b)( p c) . b. M chng trnh: Program TAM_GIAC; uses crt; Var a,b,c,p,S: real; Begin clrscr; Write('Nhap canh a:');readln(a); Write('Nhap canh b:');readln(b); Write('Nhap canh c:');readln(c); p:=(a+b+c)/2; S:= sqrt(p*(p-a)*(p-b)*(p-c)); Write('Dien tich tam giac la:',s:10:2); readln end. b. Nhn xt: y ta li hai ln dng bin trung gian p, s chng trnh sng sa, d theo di. sqrt l hm c sn ca turbo pascal. N cho php tnh cn bc hai ca mt s khng m. Bi tp 1.5: Vit chng trnh cho php tnh trung bnh cng ca bn s. a. Hng dn: - Nhp bn s vo bn bin a, b, c, d - Trung bnh cng ca a, b, c, d bng (a + b + c + d)/4. b. M chng trnh: Program TB_Cong_4_So; uses crt; Var a, b, c, d: real; Begin Clrscr; Write('Nhap so thu Write('Nhap so thu Write('Nhap so thu Write('Nhap so thu

nhat:');readln(a); hai:');readln(b); ba:');readln(c); tu:');readln(d);


Trang 10

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

100 bi tp Turbo Pascal

Writeln('Trung binh cong: ',(a+b+c+d)/4):10:2); Readln end. Bi tp 1.6: Vit chng trnh cho php tnh trung bnh cng ca bn s vi iu kin ch c s dng hai bin. a. Hng dn: - Dng mt bin S c gi tr ban u bng 0. - Dng mt bin nhp s. - Sau khi nhp mt s cng ngay vo bin S. b. M chng trnh: Program TB_Cong_4_So; uses crt; Var s,a: real; Begin Clrscr; S:=0; Write('Nhap so thu nhat:');readln(a); S:=S+a; Write('Nhap so thu hai:');readln(a); S:= S+a; Write('Nhap so thu ba:');readln(a); S:=S+a; Write('Nhap so thu tu:');readln(a); S:=S+a; Writeln('Trung binh cong: ',S/4:10:2); readln end. b. Nhn xt: Cu lnh gn S:= S+a thc hin vic cng thm a vo bin S. Thc cht l thc hin cc bc: ly gi tr ca S cng vi a ri ghi vo li bin S. y ta cng s dng bin a nh l mt bin tm cha tm thi gi tr c nhp t bn phm. Bi tp 1.7: Vit chng trnh cho php tnh trung bnh nhn ca bn s vi iu kin ch c s dng hai bin. a. Hng dn: - Dng mt bin S c gi tr ban u bng 1. - Dng mt bin nhp s. - Sau khi nhp mt s nhn ngay vo bin S. - Trung bnh nhn bn s l cn bc 4 tch ca chng (Dng hai ln cn bc hai). b. M chng trnh: Program TB_nhan; uses crt; Var a, S: real; Begin clrscr;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 11

100 bi tp Turbo Pascal

S:=1; Write('Nhap so thu nhat: '); readln(a); S:=S*a; Write('Nhap so thu hai: '); readln(a); S:=S*a; Write('Nhap so thu ba: '); readln(a); S:=S*a; Write('Nhap so thu tu: '); readln(a); S:=S*a; Write('Trung binh nhan cua bon so la:',sqrt(sqrt(s))); readln End. b. Nhn xt: Ta dng hai ln khai phng ly cn bc 4 ca mt s. cng dn gi tr vo mt bin th bin c gi tr ban u l 0. nhn dn gi tr ban u vo bin th bin cn c gi tr ban u l 1. Bi tp 1.8: Vit chng trnh nhp hai s, i gi tr hai s ri in ra hai s. a. Hng dn: - Dng cc bin a, b lu hai s c nhp t bn phm; - Gn cho bin tam gi tr ca a. - Gn gi tr ca b cho a. (Sau lnh ny a c gi tr ca b). - Gn gi tr ca tm cho cho b (Sau lnh ny b c gi tr ca tam = a). b. M chng trnh: Program Doi_Gia_Tri; uses crt; var a, b, tam:real; Begin clrscr; write('nhap a: '); readln(a); write('nhap b: '); readln(b); writeln('Truoc khi doi a =',a,' va b= ',b); readln; tam:=a; a:=b; b:=tam; writeln('Sau khi doi a =',a,' va b= ',b); readln end. Nhn xt: Nu thc hin hai lnh a:= b; b:=a i gi tr hai bin th sau hai lnh ny hai bin c gi tr bng nhau v bng b. Thc cht sau lnh th nht hai bin c gi tr bng nhau v bng b ri! Trong thc t i ch s du hai bnh cho nhau ta phi dng thm mt bnh ph. Bi tp 1.9 Gii bi tp 1.8 m ch c s dng hai bin (Tc khng c dng thm bin tm). a. Hng dn: - Cng thm b vo a. (Gi tr hai bin sau lnh ny l: a+b, b)
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 12

100 bi tp Turbo Pascal

- Gn b bng tng tr i b (Sau lnh ny b c gi tr bng a); - Gn gi tr a bng tng tr i b mi (Sau lnh ny a c gi tr bng b). b. M chng trnh: Program Doi_Gia_Tri; uses crt; var a, b:real; Begin clrscr; write('nhap a: '); readln(a); write('nhap b: '); readln(b); writeln('Truoc khi doi a =',a,' va b= ',b); readln; a:=a+b; b:=a-b; a:=a-b; writeln('Sau khi doi a =',a,' va b= ',b); readln end. Nhn xt:Ging sang du gia hai bnh nhng khng ging hon ton!!!K thut i gi tr bin cho nhau s c s dng nhiu trong phn sp xp. Bi tp 1.10: Vit chng trnh cho bit ch s hng trm, hng chc, hng n v ca mt s c ba ch s. V d khi nhp s 357 th my in ra: - Ch s hng trm: 3. - Ch s hng chc: 5. - Ch s hng n v: 7. a. Hng dn: S dng hm mov ly s d. Khi chia cho 10 ly s d ta c ch s hng n v. S dng DIV ly phn nguyn. Khi chia cho 10 ly phn nguyn ta b i ch s hng n v s c ba ch s cn s c hai ch s. b. M chng trnh: Program CHU_SO; uses crt; var n:integer; begin clrscr; write('Nhap so n: ');readln(n); writeln('Chu so hang don vi: ',n mod 10); n:=n div 10; writeln('Chu so hang chuc: ',n mod 10); n:=n div 10; writeln('Chu so hang tram: ',n mod 10); readln end.
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 13

100 bi tp Turbo Pascal

c. Nhn xt: Hy sa chng trnh c kt qu l hng trm, hng chc, hng n v. M chng trnh: Program CHU_SO; uses crt; var n:integer; begin clrscr; write('Nhap so n: ');readln(n); writeln('Chu so hang trm: ',n div 100); n:=n mov 100; writeln('Chu so hang chuc: ',n div 10); n:=n div 10; writeln('Chu so hang tram: ',n); readln end.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 14

100 bi tp Turbo Pascal

CHNG II CU LNH C CU TRC R NHNH A. L THUYT I. CU LNH R NHNH 1.1. Lnh IF C php: (1) IF B THEN S; (2) IF B THEN S1 ELSE S2; S thc hin: (1) (2)

+ S

S1

S2

...

...

Ch : Khi s dng cu lnh IF th ng trc t kho ELSE khng c c du chm phy (;). 1.2. Lnh CASE C php: Dng 1 Dng 2 CASE B OF CASE B OF Const 1: S1; Const 1: S1; Const 2: S2; Const 2: S2; ... ... Const n: Sn; Const n: Sn; END; ELSE Sn+1; END; Trong : B: Biu thc kiu v hng m c nh kiu nguyn, kiu logic, kiu k t, kiu lit k.
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 15

100 bi tp Turbo Pascal

Const i: Hng th i, c th l mt gi tr hng, cc gi tr hng (phn cch nhau bi du phy) hoc cc on hng (dng hai du chm phn cch gia gi tr u v gi tr cui). Gi tr ca biu thc v gi tr ca tp hng i (i=1n) phi c cng kiu. Khi gp lnh CASE, chng trnh s kim tra: - Nu gi tr ca biu thc B nm trong tp hng const i th my s thc hin lnh S i tng ng. - Ngc li: + i vi dng 1: Khng lm g c. + i vi dng 2: thc hin lnh Sn+1. B. BI TP: Bi tp 2.1: Vit chng trnh in ra s ln hn trong hai s (c nhp t bn phm). a. Hng dn: - Nhp hai s vo hai bin a, b. - Nu a > b th in a. Nu a <= b th in b. - Hoc: Nu a > b th in a. Ngc li th in b. b. M chng trnh: Program SO_SANH1; uses crt; var a,b: real; begin clrscr; write('nhap so thu nhat: '); readln(a); write('nhap so thu hai: '); readln(b); if a> b then writeln(' So lon la:',a); if a<= b then writeln(' So lon la:',b:10:2); readln end. Hoc: Program SO_SANH2; uses crt; var a,b: real; begin clrscr; write('nhap so thu nhat: '); readln(a); write('nhap so thu hai: '); readln(b); if a> b then writeln(' So lon la:',a:10:2) else writeln(' So lon la:',b:10:2); readln
end.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 16

100 bi tp Turbo Pascal

c. Nhn xt: Khi hai s bng nhau th mi s c xem l s ln. Hy sa chng trnh khc phc yu im ny. Ni chung nn s dng lnh if then else v chng trnh sng sa, d hiu hn. Tuy nhin trong vi trng hp s dng cc lnh if then ri li d din t hn. Hy xem v d sau: Bi tp 2.2: Vit chng trnh in ra s ln nht trong bn s nhp t bn phm. a. Hng dn: Nu a b v a c v a d th a l s ln nht. Tng t nh th xt cc trng hp cn li tm s ln nht. b. M chng trnh: Program So_Lon_Nhat_1; Uses crt; Var a,b,c,d: real; Begin Clrscr; Write('Nhap so thu nhat:');readln(a); Write('Nhap so thu hai:');readln(b); Write('Nhap so thu ba:');readln(c); Write('Nhap so thu tu:');readln(d); if (a>=b) and (a>=c) and (a>= d) then writeln('So lon nhat la:',a:10:2); if (b>=a) and (b>=c) and (b>= d) then writeln('So lon nhat la:',b:10:2); if (c>=a) and (c>=b) and (c>= d) then writeln('So lon nhat la:',c:10:2); if (d>=a) and (d>=b) and (d>= c) then writeln('So lon nhat la:',d:10:2); readln end. c. Nhn xt: Hy s dng cu trc if then else gii bi tp trn. kh ca bi ton s tng ln nhiu nu thm yu cu c thng bo khi hai s, ba s, bn s bng nhau. Bi tp 2.3: Vit chng trnh in ra s ln nht trong bn s nhp t bn phm vi iu kin ch c dng hai bin. a. Hng dn: S dng mt bin max v mt bin a cha s va nhp. Cho max bng s u tin. Sau khi nhp mt s thc hin so snh nu s va nhp ln hn max th lu s va nhp vo max. Sau khi nhp xong ta c max l s ln nht (Gii thut ny gi l k thut lnh canh cn hiu r s dng sau ny). b. M chng trnh:
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 17

100 bi tp Turbo Pascal

Program So_Lon_Nhat_2; Uses crt; Var a,max: real; Begin Clrscr; Write('Nhap so thu Write('Nhap so thu then Max:=a; Write('Nhap so thu then Max:=a; Write('Nhap so thu then Max:=a; Write('So lon nhat readln end.

nhat:');readln(a);Max:=a; hai:');readln(a);if a>=Max ba:');readln(a);if a>=Max tu:');readln(a);if a>=Max la:',Max:10:2);

Bi tp 2. 4 Vit chng trnh xt xem mt tam gic c l tam gic u hay khng khi bit ba cnh ca tam gic. a. Hng dn: - Nhp ba cnh ca tam gic vo ba bin a,b,c. - Nu a = b v b = c th tam gic l tam gic u v ngc li tam gic khng l tam gic u. b. M chng trnh: Program Tam_giac_deu; uses crt; var a,b,c: real; begin clrscr; write('Nhap a = '); readln(a); write('Nhap b = '); readln(b); write('Nhap c = '); readln(c); if (a = b) and (b = c) then writeln('La tam giac deu') else writeln('Khong phai la tam giac deu'); readln end. Bi tp 2. 5 Vit chng trnh xt xem mt tam gic c l tam gic cn hay khng khi bit ba cnh ca tam gic. a.Hng dn: - Nhp ba cnh ca tam gic vo ba bin a,b,c.
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 18

100 bi tp Turbo Pascal

Nu a = b hoc b = c hoc a = c th tam gic l tam gic cn v ngc li tam gic khng l tam gic cn. b.M chng trnh: Program Tam_giac_can; uses crt; var a,b,c: real; begin clrscr; write('Nhap a = '); readln(a); write('Nhap b = '); readln(b); write('Nhap c = '); readln(c); if (a = b) or (b = c) or (a = c) then writeln('La tam giac can') else writeln('Khong phai la tam giac can'); readln end. Bi tp 2. 6 Vit chng trnh xt xem mt tam gic c l tam gic vung hay khng khi bit ba cnh ca tam gic. a.Hng dn: - Nhp ba cnh ca tam gic vo ba bin a,b,c. - Nu a2 = b2 + c2 hoc b2 = c2 + a2 hoc c2 = a2+b2 th tam gic l tam gic vung v ngc li tam gic khng l tam gic vung. b.M chng trnh: Program Tam_giac_can; uses crt; var a,b,c: real; begin clrscr; write('Nhap a = '); readln(a); write('Nhap b = '); readln(b); write('Nhap c = '); readln(c); if (a*a = b*b+c*c) or (b*b = c*c+a*a) or (c*c= a*a+b*b) then writeln('La tam giac vuong') else writeln('Khong phai la tam giac vuong'); readln end.

Bi tp 2.7:

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 19

100 bi tp Turbo Pascal

Vit chng trnh gii phng trnh ax + b = 0 (Cc h s a, b c nhp t bn phm). a.Hng dn: Nu a 0 th phng trnh c nghim x =
b a

Nu a = 0 v b = 0 th phng trnh c v s nghim Nu a = 0 v b 0 th phng trnh v nghim

Hoc: - Nu a = 0 th xt b. Nu b = 0 th phng trnh c v s nghim ngc li (b 0) th phng trnh v nghim ngc li (a 0) phng trnh c nghim x =
b . a

a. M chng trnh: Program Phuong_trinh_2; uses crt; var a,b:real; begin clrscr; Writeln(' CHUONG TRINH GIAI PT ax + b = 0'); Write('Nhap he so a = ');readln(a); Write('Nhap he so b = ');readln(b); if (a<>0) then writeln('phuong trinh',a:10:2,'x + ',b:10:2,'= 0',' co nghiem x =;',-b/a:10:2); if (a=0) and (b=0) then writeln('Phuong trinh co vo so nghiem'); if (a=0) and (b<>0) then writeln('Phuong trinh vo nghiem'); readln end. Hoc: Program Phuong_trinh_2; uses crt; var a,b:real; begin clrscr; Writeln(' CHUONG TRINH GIAI PT ax + b = 0'); Write('Nhap he so a = ');readln(a); Write('Nhap he so b = ');readln(b); if (a<>0) then writeln('phuong trinh',a:10:2,'x + ',b:10:2,'= 0',' co nghiem x =;',-b/a:10:2)
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 20

100 bi tp Turbo Pascal

else if (b=0) then writeln('Phuong trinh co vo so nghiem') else writeln('Phuong trinh vo nghiem'); readln
end.

Bi tp 2.8: (HSG lp 8 -TP Hu 2006-2007) Ba bn An, Bnh v Cng cng tham gia mt tr chi nh sau: Mi bn nm trong tay mt ng xu, mi ng xu c hai trng thi : sp v nga. Theo hiu lnh, c ba bn cng a ng xu ca mnh ra pha trc. Nu c ba ng xu cng sp hoc cng nga th cha pht hin ngi thua cuc (ha nhau). Nu mt bn c trng thi ng xu khc vi hai bn kia( ngha l ng xu ca bn y sp cn hai ngi kia nga v ngc li ng xu ca bn y nga th hai ngi kia sp) th bn thng cuc. Hy vit chng trnh m phng tr chi trn. Thut ton: - m phng trng thi sp, nga ca ng xu ta dng hm Random(1) hoc dng Random(n) mod 2 vi n > 2. - Xt tm trng hp xy ra tm ngi thng cuc. Ci t: Program Sap_ngua; uses crt; Var A, B, C: byte; Begin clrscr; Writeln('Go phim de xem ket qua: '); A:=Random(10); A:=A mod 2; B:=Random(10); B:=B mod 2; C:=Random(10); C:=C mod 2; Write('Ket qua: ',a,b,c); if (A=0) and (B=0) and (C=0) then Write(' Hoa'); if (A=0) and (B=0) and (C=1) then Write(' C Thang'); if (A=0) and (B=1) and (C=0) then Write(' B Thang'); if (A=0) and (B=1) and (C=1) then Write(' A Thang'); if (A=1) and (B=0) and (C=0) then Write(' A Thang'); if (A=1) and (B=0) and (C=1) then Write(' B Thang'); if (A=1) and (B=1) and (C=0) then Write(' C Thang'); if (A=1) and (B=1) and (C=1) then Write(' Hoa'); Readln; Readln End.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 21

100 bi tp Turbo Pascal

Bi tp 2.9: Vit chng trnh dch cc ngy trong tun sang ting anh 2 3 4 5 6 7 8 Monday Tuesday Wednesday Thursda Friday Saturday Sunday y a. b. Hng dn: Dng bin a kiu byte cha th (2 n 8) Trng hp a = 2: Monday Trng hp a = 3: Thursday ... Trng hp a = 8: Sunday Ngoi ra khng cn th no. M chng trnh: Program dich; uses crt; Var thu:byte; begin clrscr; write('nhap thu can dich 28: '); readln(thu); case thu of 2: Write('--> Monday'); 3: Write('--> Tuesday'); 4: Write('--> Wednesday'); 5: Write('--> Thursday'); 6: Write('--> Friday'); 7: Write('--> Saturday'); 8: Write('--> Sunday'); else Write(' Khong co thu nay'); end; readln end.

Bi tp 2.10 Vit chng trnh cho php tnh din tch cc hnh: Hnh vung; Hnh ch nht; Hnh trn; Tam gic; Hnh thang. Ngi dng chn hnh cn tnh din tch t bng chn, sau khai bo cc thng s lin quan v nhn c din tch ca hnh: MOI BAN CHON HINH CAN TINH DIEN TICH 1. Hnh vung. 2. Hnh ch nht. 3. Hnh trn. 4. Tam gic.
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 22

100 bi tp Turbo Pascal

5. Hnh thang. Mun tnh din tch tam gic, ngi dng g 4 v khai bo ng cao, y. Chng trnh tnh v thng din tch n ngi dng. a. Hng dn: - Dng cu trc chn Case chon of vi chon c kiu Char to bng chn. - Dng 3 bin a,b,c lu cc thng s ca hnh; Bin S lu din tch ca hnh. - Thc hin chung cu thng bo din tch (Nm ngoi Case . . . of) gn chong trnh. b. M chng trnh: Program Dien_Tich_cac_hinh; uses crt; var chon: byte; a,b,c,S: real; Begin clrscr; writeln('CHUONG TRINH TINH DIEN TICH CAC HINH'); Writeln(' ------------'); writeln('1. DIEN TICH HINH TAM GIAC'); writeln('2. DIEN TICH HINH VUONG'); writeln('3. DIEN TICH HINH CHU NHAT'); writeln('4. DIEN TICH HINH THANG'); writeln('5. DIEN TICH HINH TRON'); write('Moi ban chon hinh can tinh dien tich: ');readln(chon); case chon of 1 : Begin Write('Cho biet canh day: '); readln(a); Write('Cho biet chieu cao: '); readln(b); S:=(a*b)/2; end; 2:Begin Write('Cho biet chieu dai canh: '); readln(a); S:=a*a; end; 3:Begin Write('Cho biet chieu dai: '); readln(a); Write('Cho biet chieu rong: '); readln(b); S:=a*b; end; 4:Begin Write('Cho biet day lon: '); readln(a); Write('Cho biet day nho: '); readln(b); Write('Cho biet chieu cao: '); readln(c); S:=(a+b)*c/2;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 23

100 bi tp Turbo Pascal

End; 5:Begin Write('Cho biet ban kinh: '); readln(a); S:=a*a*pi; End; else Writeln('Chon sai roi!!!'); end; Writeln('Dien tich cua hinh la: ',S:8:2); readln end. c. Nhn xt: Vi mi trng hp tha Case bin chn of thc hin mt lnh. V th, mun thc hin nhiu lnh ta cn ghp nhiu lnh thnh mt lnh ghp.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 24

100 bi tp Turbo Pascal

CHNG III CU LNH C CU TRC LP XC NH A. L THUYT: II. CU LNH LP 2.1. Vng lp xc nh C hai dng sau: Dng tin FOR <bin m>:=<gi tr Min> TO <gi tr Max> DO S; Dng li FOR <bin m>:=<gi tr Max> DOWNTO <gi tr Min> DO S; S thc hin vng lp FOR:
Dng tin Dng li

Bin m:=Min

Bin m:=Max

Bin m<=Max

Bin m>=Max

+ S; INC(Bin m); Thot

+ S; DEC(Bin m); Thot

Ch : Khi s dng cu lnh lp FOR cn ch cc im sau: Khng nn tu tin thay i gi tr ca bin m bn trong vng lp FOR v lm nh vy c th s khng kim sot c bin m. Gi tr Max v Min trong cu lnh FOR s c xc nh ngay khi vo u vng lp. Do cho d trong vng lp ta c thay i gi tr ca n th s ln lp cng khng thay i. B. BI TP Bi tp 3.1: Vit chng trnh in ra cc s l nh hn hoc bng n (Vi n c nhp). a. Hng dn: - Cho bin i chy t 1 n n. - Nu i chn ( i chia 2 d 0) th in ra s n.
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 25

100 bi tp Turbo Pascal

b. M chng trnh: Program In_So_Le; Uses crt; var i,n: integer; Begin Clrscr; Write('Nhap so n ='); readln(n); For i:=1 to n do if i mod 2 =1 then Write(i:3,','); readln end. Bi tp 3.2: Vit chng trnh in ra cc s l nh hn hoc bng n ( Vi n c nhp). Sao cho 15 s l c in trn mt dng. a. Hng dn: - Cho j =0. - Cho bin i chy t 1 n n. - Nu i chn ( i chia 2 d 0) th in ra s n v tng dem ln 1 - Nu dem chia ht cho 15 th thc hin xung dng (Dng Writeln). b. M chng trnh: Program In_So_Le; Uses crt; var Dem,i,n: integer; Begin Clrscr; Write('Nhap so n ='); readln(n); Dem:= 0; For i:=1 to n do if i mod 2 =1 then Begin Write(i:3,','); Dem:= Dem + 1; if Dem mod 15 = 0 then Writeln; end; readln end. c. Nhn xt: Lnh writeln khng c tham s cho php xung hng. Nu c nhn xt trong 30 s th c 15 s l, ta c th khng cn thm bin m m ch cn kim tra bin i xung hng. Bi tp 3.3: Vit chng trnh in ra tng cc s l nh hn hoc bng n ( Vi n c nhp).
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 26

100 bi tp Turbo Pascal

a. Hng dn: - Cho S = 0. - Cho bin i chy t 1 n n. - Nu i chn ( i chia 2 d 0) th cng thm i vo S. - In ra S. b. M chng trnh: Program In_So_Le; Uses crt; var S,i,n: integer; Begin Clrscr; Write('Nhap so n ='); readln(n); S:= 0; For i:=1 to n do if i mod 2 =1 then S:= S+i; Writeln('Tong cac so le nho hon ',n,' la: ',S); readln end. c. Nhn xt: Ta dng bin S cng dn nn n c khi to gi tr u bng 0. Bi tp 3.4: Vit chng trnh in ra tt c cc c ca mt s n (Vi n c nhp t bn phm) a. Hng dn: - Cho bin i chy t 1 n n. Nu n chia ht cho i th in ra i. b. M chng trnh: Program Tim_uoc; uses crt; Var n, i: integer; Begin clrscr; Write('Nhap so n ='); readln(n); For i:=1 to n do if n mod i = 0 then write(i:3,','); readln end. c. Nhn xt: Chng trnh trn c hai im yu: - In d mt du phy cui dy cc c. - Khi n = 0 th khng in mt s no trong khi mi s u l c ca 0. Hy tm cch khc phc yu im ny. Bi tp 3.5: Mt s c tng cc c nh hn n bng chnh n c gi l s hon chnh. V d: 6 c cc c nh hn n l 1, 2, 3. Tng l 1 + 2 + 3 = 6.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 27

100 bi tp Turbo Pascal

Vit chng trnh xt xem mt s n c nhp t bn phm c phi l s hon chnh khng. a. Hng dn: - Dng bin n lu s cn xt. - Bin S c gi tr ban u bng 0. - Cho i chy t 1 n n-1. nu i l c ca n th cng thm i vo S. - Nu S = n th S l s hon chnh. b. M chng trnh: Program So_Hoan_Chinh; uses crt; var n, i, s: integer; begin write('nhap so n: ');readln(n); s:=0; for i:= 1 to n -1 do if n mod i = 0 then s:=s+i; if s = n then write(n, ' la so hoan chinh') else writeln(n, ' khong phai la so hoan chinh'); readln end. Bi tp 3.6: Vit chng trnh tm cc s hon chnh nh hn n (Vi n c nhp t bn phm). a. Hng dn: Cho bin i chy t 1 n n. Xt i. Nu n l s hon chnh th in ra. b. M chng trnh: Program Tim_uoc_2; uses crt; Var S, n, i,j: longint; Begin clrscr; Write('Nhap so n ='); readln(n); For i:=1 to n do Begin S:=0; For j:=1 to i do if i mod j = 0 then S:=S+j; if S = 2*i then write(i:6,','); end; readln end. c. Nhn xt: y ta s dng hai vng lp lng nhau.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 28

100 bi tp Turbo Pascal

Bi tp 3.7 In bng cu chng n (Vi n nhp t bn phm) a.Hng dn : b. M chng trnh: Program Cuu_Chuong_1; uses crt; var n, i : integer; begin clrscr; write('Nhap n: '); readln(n); for i:= 1 to 9 do writeln(n,' x ', i, ' = ', n*i); readln end. Bi tp 3.8 Ln lt in cc bng cu chng. a.Hng dn : - Cho bin i chy t 2 n 9 - In bng cu chng i. b. M chng trnh: Program Cuu_Chuong_1; uses crt; var i,j : integer; begin clrscr; for i:= 2 to 9 do Begin Writeln('Bang cuu chuong ',i); For j := 1 to 9 do writeln(i,' x ', j, ' = ', j*i); readln end; readln end. c. Nhn xt: Chng trnh ny in bng cu chng dc (Ht bng ny n bng khc tnh t trn xung). Hy sa chng trnh in theo kiu ngang thng thy. Bi tp 3.9 Vit chng trnh xt xem mt s n c phi l s nguyn t khng? a.Hng dn: - Nu n khng chia ht mi s i c gi tr t 2 n n - 1 th n l s nguyn t. - S dng bin ok c kiu boolean v c gi tr ban u l true.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 29

100 bi tp Turbo Pascal

- Cho bin i chy t 2 n n 1. Xt n mod i. Nu bng 0 th gn ok = false. Ngc li vn nguyn ok. b.M chng trnh: Program Nguyen_to_1; uses crt; var n, i: integer; ok: boolean; begin ok:=true; write('Nhap n: ');readln(n); for i:= 2 to n - 1 do if n mod i = 0 then ok :=false; if ok then write(n,' la so nguyen to') else write(n, ' khong la so nguyen to'); readln end. c. Nhn xt: y ta s dng bin c kiu logic (ng, sai). Ch cn mt ln n mod i = 0 th sau khi thc hin xong vng lp ok c gi tr l false. Bi tp 3.10 Vit chng trnh in ra tt c cc s nguyn t b hn hoc bng n? a. Hng dn: - Cho i chy t 2 n n. - Xt i. Nu n l s nguyn t th in n ra. b. M chng trnh: Program Nguyen_to_1; uses crt; var n, i, j: integer; ok: boolean; begin clrscr; write('Nhap n: '); readln(n); for i := 2 to n do begin ok:=true; for j:= 2 to i - 1 do if i mod j = 0 then ok :=false; if ok then write(i,';') end; readln end.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 30

100 bi tp Turbo Pascal

CHNG IV CU TRC LP KHNG XC NH A. L THUYT Dng REPEAT Repeat S; Until B; Dng WHILE While B Do S;

ngha: Dng REPEAT: Lp li cng vic S cho n khi biu thc B=TRUE th dng. Trc Repeat c th B cha c xc nh nhng khi thc hin S th B xc nh. Dng WHILE: Trong khi biu thc B=TRUE th tip tc thc hin cng vic S. Trc While cn c cc lnh B c xc nh. Yu cu quan trng: Trong S phi c mt lnh lm thay i d liu lin quan n iu kin B. B. BI TP Bi tp 4.1: Vit chng trnh in ra cc s l nh hn hoc bng s nguyn dng n ( Vi n c nhp). Yu cu nhp li nu n <=0 a. Hng dn: - S dng kin thc s l u tin bng 1. S l sau bng s trc cng vi 2. - Cho bin i c gi tr ban u bng 1. - Dng vng lp while do vi iu kin i < n v cng vic bn trong l in i v tng i ln 2. b. M chng trnh: Program In_So_Le; uses crt; var i,n:integer; begin clrscr; Repeat write('Nhap so n: ');readln(n); until n>0; i:=1; while i<=n do begin write(i:3,', '); i:=i+2; end; readln end.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 31

100 bi tp Turbo Pascal

Nhn xt: - Mi vng lp For ... to ... do u c th thay th bng vng lp while ... do. - on m: Repeat write('Nhap so n: ');readln(n); until n>0; Dng kim tra, khng ch iu kin ca d liu vo. - Trong vng lp while nht thit phi c mt cu lnh lm thay i iu kin lp. y l i:=i+2. Nu khng c s dn n trng hp lp v hn. Chng trnh chy mi m khng c li ra (Khng thot ra khi vng lp c). Bi tp 4.2: Vit chng trnh tnh n! vi n! c nh ngha nh sau: - n! = 1 vi n = 0 - n! = 1.2.3...n (Tch ca n s t 1 n n). Yu cu: S dng vng lp vi s ln cha bit trc: a. Hng dn: - C th vit li: n! = n.(n-1)... 3.2.1. - Lp gt = gt*n; n = n-1 vi iu kin n>0. b. M chng trnh: Program Giai_Thua_while; uses crt; var n, gt:longint; begin clrscr; Repeat write('Nhap so n: ');readln(n); until n>0; gt:=1; while n>0 do begin gt:=gt*n; n:=n-1; end; writeln('Giai thua cua n la: ',gt); readln end. c. Nhn xt: Tit kim c mt bin i chy nhng lm thay i n nn khi xut ra ch c th xut mt cu chung chung Giai thua cua n la: Bi tp 4.3: Vit chng trnh tnh n!! (giai tha kp) vi n!! c nh ngha nh sau: - n!! = 1 vi n = 0 - n!! = 1.3.5..n vi n l.
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 32

100 bi tp Turbo Pascal

- n!! = 2.4.6..n vi n chn. Yu cu: S dng vng lp vi s ln cha bit trc: a. Hng dn: - Hai s chn lin tip hn km nhau 2. Hai s l lin tip cng vy. - Thc hin tnh nh giai tha n nhng vi bc nhy l 2. b. M chng trnh: Program Giai_thua_kep; uses crt; var n,gt:longint; begin Repeat write('Nhap so n: ');readln(n); until n>0; gt:=1; while n>0 do begin gt:=gt*n; n:=n-2; end; write('Giai thua la: ',gt); readln
end.

c. Nhn xt: - Vi thut ton trn ta khng cn xt n l chn hay l. Bi tp 4.4: Vit chng trnh cho php tnh tng ca nhiu s (Cha bit bao nhiu s). Nhp s 0 kt thc qu trnh nhp. a. Hng dn: b. M chng trnh: Program Tong_Repeat; uses crt; var i: byte; so, tong: real; begin write('NHAP CAC SO - NHAP 0 DE NGUNG '); readln; repeat clrscr; write('Nhap so thu ',i,': '); readln(so); tong:=tong+so; i:=i+1; until so=0; write('Tong la: ',tong:6:1); readln end.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 33

100 bi tp Turbo Pascal

Bi tp 4.5 Vit chng trnh tm c chung ln nht (UCLN) ca hai s vi yu cu s dng thut ton Euclid. Thut ton Euclid: Nu a chia ht cho b (a chia b d 0) th UCLN(a,b) bng b Nu a chia b d r th UCLN(a,b) = UCLN(b,r) a.Hng dn: - Nhp a, b v gn r = a mod b. - Lp vi iu kin r <> 0: b = r, a = b, r = a mod b. b.M chng trnh: Program UCLN; uses crt; var a,b,r:byte; begin clrscr; writeln('CHUONG TRINH TIM UCLN CUA HAI SO'); write('Nhap a: ');readln(a); write('Nhap b: ');readln(b); r:=a mod b; while r<> 0 do begin b:=r; a:=b; r:=a mod b; end; write('UCLN cua hai so la: ',b); readln end. Bi tp 4.6 Dy Fibonacy c hai phn t u l 1, 1. Cc phn t sau bng tng hai phn t ng ngay trc n: 1, 1, 2, 3, 5, 8, 13, 21, ... Vit chng trnh in ra dy Fibonacy c phn t ln nht nh hn n? a.Hng dn: - Cn hai bin F_1 v F c gi tr u l 1, 1. - Thc hin lp cho n khi F >= n. - Do yu cu ch in cc s b hn n nn khi in cn thm mt lnh kim tra. b.M chng trnh: Program Fi_Bo_na_xi; Var n, F_2,F_1, F: Longint; Begin Write('Nhap n: ');Readln(n); F_1:=1; F_2:=1; Write(F_2,';',F_1,';'); Repeat F:=F_2+F_1;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 34

100 bi tp Turbo Pascal

if F< n then Write(F,';'); F_2:=F_1; F_1:=F; Until F>n; Readln; End. Nhn xt: Gia Repeat ... until c th cha nhiu lnh m khng cn ghp. Hy pht trin bi tp theo hng ch in mt phn t trong dy ln nht nhng b hn n hoc theo hng phn t th k ca dy.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 35

100 bi tp Turbo Pascal

CHNG V D LIU KIU MNG (Mt chiu) A. L THUYT I. KHAI BO MNG C php: VAR <Bin mng> : ARRAY [ch s] OF <Kiu d liu>; V d: VAR M: Array[1..100] of Integer; C: Array[A..Z] of byte; Trong ch s c kiu v hng m c (nh: nguyn, k t ...) II. QUN L MT MNG: - qun ly mt dy cn hai bin nguyn v mt bin mng. Mt bin kiu nguyn lu s phn t ca dy, mt bin nguyn khc lu ch s v mt bin mng lu gi tr cc phn t ca dy. - truy cp n phn t th k trong mng mt chiu A, ta s dng c php: A[k]. - C th s dng cc th tc READ(LN)/WRITE(LN) i vi cc phn t ca bin kiu mng. B. BI TP Bi tp 5.1 Vit chng trnh cho php nhp n s v in ra theo th t ngc li. V d nhp 3, 5, 7 th in ra 7, 5, 3. a.Hng dn: - Dng bin n lu lng s cn nhp. - Dng mng lu cc s va nhp. - Cho i chy t n v 1 in cc s va nhp. b.M chng trnh: Program mang_1; uses crt; var n, i: integer; M: array[1..100] of real; Begin write('Nhap so n: ');readln(n); for i:=1 to n do Begin write('M[',i,']='); readln(M[i]); end; for i:= n downto 1 do write(m[i], ,); readln end.
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 36

100 bi tp Turbo Pascal

Bi tp 5.2 Vit chng trnh nhp dy n s v in ra tng cc s l trong dy s va nhp. a. Hng dn: Thc hin cng dn cc s l bng lnh: if M[i] mod 2 =1 then tong:=tong+M[i] b. M chng trnh: Program Mang_Tong_Le; uses crt; var i,n:byte; M:array[1..100] of integer; tong:longint; begin write('Nhap so phan tu cua day: ');readln(n); for i:=1 to n do begin write('M[',i,']'); readln(M[i]); end; tong:=0; for i:=1 to n do if M[i] mod 2 =1 then tong:=tong+M[i]; write('Tong cac so le trong day la: ',tong); readln end. c. Nhn xt: Vi yu cu ca bi ton th khng cn s dng bin mng vn gii c. Hy th nh. Bi tp 5.3 Vit chng trnh nhp n s, xo s th k trong n s va nhp.In ra n-1 s cn li. n= 10 (Nhp 10 phn t) V d: Nhp 2, 3, 4, 5, 6, 8, 7, 6, 5, 4. k= 8 (Xo phn t th 8). In ra: 2, 3, 4, 5, 6, 8, 7, 5, 4. a. Hng dn: Xo phn t k bng cch ghi phn t th k+1 ln n. b. M chng trnh: Program Xoa_mang; uses crt; var m:array[1..100] of integer; n,i,k:byte; begin Write('So phan tu cua day: ');readln(n); for i:=1 to n do Begin write('M[',i,']=');
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 37

100 bi tp Turbo Pascal

end; write('Nhap phan tu can xoa: ');readln(k); for i:=k to n-1 do m[i]:=m[i+1]; for i:=1 to n-1 do write(m[i],', '); readln end. c. Nhn xt: Vi yu cu ca bi tp trn ch cn kim tra ch s khi in (VD nu i = 8 th khng in). Tuy nhin trong khi s dng mng lu d liu gii ton, nhiu khi ta c nhu cu xa bt hoc chn thm phn t vo dy. Bi tp 5.4 Vit chng trnh cho php nhp mt dy gm n s nguyn. Nhp thm mt s v chn thm vo dy sau phn t k. a. Hng dn: - Di cc phn t t v tr k v sau mt bc. - Nhp gi tr cn chn vo v tr k. b. M chng trnh: Program Mang_chen; uses crt; var M: array[1..100] of integer; i,n,k:integer; begin clrscr; write('Nhap : ');readln(n); for i:=1 to n do begin write('M[',i,']='); readln(M[i]); end; write('Vi tri chen: ');readln(k); for i:=n+1 downto k+1 do M[i]:=M[i-1]; write('Nhap so can chen: '); readln(M[k]); for i:=1 to n+1 do write(M[i],', '); readln end. Bi tp 5.5 Vit chng trnh cho php nhp n s v cho bit s nh nht trong cc s va nhp l s th my. a.Hng dn: - Dng bin n lu lng s cn nhp. - Dng mng lu cc s va nhp. - Cho Min = M[1], j = 1 (Xem phn t u tin l b nht)

readln(M[i]);

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 38

100 bi tp Turbo Pascal

So snh Min vi n-1 s cn li. Trong qu trnh so snh nu Min > M[i] th gn Min = M[i], j=i v tip tc so snh . b.M chng trnh: Program TIM_NHO_NHAT; uses crt; var n,i,nhonhat:integer; m: array[1..100] of real; min:real; begin write('Nhap n: '); readln(n); for i:=1 to n do begin write('M[',i,']='); readln(m[i]); end; min:=m[1]; nhonhat:=1; for i:=2 to n do if m[i] < min then begin min:=m[i]; nhonhat:=i; end; writeln('phan tu nho nhat la phan tu thu',nhonhat); readln end. Bi tp 5.6 Vit chng trnh cho php nhp n s sp xp v in ra cc s nhp theo th t tng dn. a. Hng dn: b. M chng trnh: Program Sap_xep_mang; Var M: array[1..10] of integer; i,j,n: byte; tam: integer; Begin Write('Nhap so phan tu n:');Readln(n); For i:=1 to n do Begin Write('M[',i,']='); Readln(M[i]); End; For i:=1 to n-1 do For j:=i+1 to n do if M[j] <=M[i] then Begin Tam:= M[i]; M[i]:=M[j]; M[j]:=tam; End; Write('Sau khi sap xep: '); For i:=1 to n do Write(M[i],';'); Readln;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 39

100 bi tp Turbo Pascal

End. Bi tp 5.7: Vit chng trnh in dy n s fibonacy. a.Hng dn: - S dng mng M cha dy n s fibonacy. To lp hai phn t u tin l 1, 1. - Cho i chy t 3 n n. M [i] = M[i-1]+M[i-2]. - In n phn t u tin ca mng. b.M chng trnh: Program Fibonacy_mang; uses crt; var i,n: integer; m:array[1..100] of longint; begin write('Nhap so phan tu can in:'); readln(n); m[1]:=1; m[2]:=1; for i:=3 to n do m[i]:=m[i-1]+m[i-2]; for i:=1 to n do write(m[i],' ,'); readln end. Bi tp 5.8 Vit chng trnh in ra mn hnh tam gic Pascal. V d, vi n=4 s in ra hnh sau: 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ... Hng th n c xc nh t hng n-1: - Phn t u tin v phn t cui cng u bng 1. - Phn t th 2 l tng ca phn t th nht v th 2 ca hng n-1 - Phn t th k ca hng th n l tng ca phn t th k-1 v k ca hng th n-1. Thut ton: Bc 1: Khi to mt mng mt chiu n phn t c gi tr 0. Bc 2: Khi to gi tr cho hng th nht M[1,1] = 1. Bc 3: - i vi hng th i tnh gi tr phn t t phn t th i + 1 xung phn t th 2: M[j]:=M[j] + M[j-1] - In ra hng th i. Chng trnh: Program Tam_giac_Pascal_mot_chieu; Var n,i,j: integer; M: array[1..10] of integer; Begin
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 40

100 bi tp Turbo Pascal

Write('Nhap n: '); Readln(n); For i:= 1 to n do M[i]:=0; M[1]:=1; For i:=1 to n do Begin For j:=i+ 1 downto 2 do M[j]:=M[j]+M[j-1]; For j:=1 to i+ 1 do Write(M[j]:3); Writeln; End; Readln End. Bi tp 5.9 Vit chng trnh cho php nhp. a. Hng dn: b. M chng trnh: Bi tp 5.10 Vit chng trnh cho php nhp. a. Hng dn: b. M chng trnh:

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 41

100 bi tp Turbo Pascal

CHNG VI CHNG TRNH CON: TH TC V HM A. L THUYT I. KHI NIM V CHNG TRNH CON Chng trnh con (CTC) l mt on chng trnh thc hin trn vn hay mt chc nng no . Trong Turbo Pascal, c 2 dng CTC: Th tc (PROCEDURE): Dng thc hin mt hay nhiu nhim v no . Hm (FUNCTION): Tr v mt gi tr no (c kiu v hng, kiu string). Hm c th s dng trong cc biu thc. Ngoi ra, trong Pascal cn cho php cc CTC lng vo nhau. II. CU TRC CHUNG CA MT CHNG TRNH C S DNG CTC PROGRAM Tn_chng_trnh; USES CRT; CONST ............; VAR ............; PROCEDURE THUTUC[(Cc tham s)]; [Khai bo Const, Var] BEGIN .............. END; FUNCTION HAM[(Cc tham s)]:<Kiu d liu>; [Khai bo Const, Var] BEGIN .............. HAM:=<Gi tr>; END; BEGIN {Chng trnh chnh} ................... THUTUC[(...)]; ................... A:= HAM[(...)]; ................... END.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 42

100 bi tp Turbo Pascal

Ch : Trong qu trnh xy dng CTC, khi no th nn dng th tc/hm? Dng hm Dng th tc - Kt qu ca bi ton tr v 1 gi tr duy - Kt qu ca bi ton khng tr v gi tr nht (kiu v hng, kiu string). no hoc tr v nhiu gi tr hoc tr v - Li gi CTC cn nm trong cc biu kiu d liu c cu trc (Array, Record, thc tnh ton. File). - Li gi CTC khng nm trong cc biu thc tnh ton. B. BI TP Bi tp 6.1: Vit chng trnh gii phng trnh bc hai vi yu cu s dng cc chng trnh con gii quyt cc trng hp xy ra ca delta. a. Hng dn: b. M chng trnh: Program Giai_PT_bac_hai; uses crt; var a,b,c,delta:real; {----------------------} Procedure delta_duong; begin write('Phuong trinh co hai nghiem x1=',(b+sqrt(delta))/(2*a),'x2=',(-b+sqrt(delta))/(2*a)); end; {---------------------} Procedure delta_khong; begin write('Phuong trinh co nghiem kep x=',-b/(2*a):3:1); end; {--------------------} Procedure delta_am; begin writeln('Phuong trinh vo nghiem'); end; {Chuong trinh chinh} Begin clrscr; write('Nhap a: ');readln(a); write('Nhap b: ');readln(b); write('Nhap c: ');readln(c); delta:=b*b-4*a*c; if delta>0 then delta_duong else if delta = 0 then delta_khong else delta_am; readln
end.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 43

100 bi tp Turbo Pascal

c. Nhn xt: Chng trnh con cho php chia nh cng vic nhm n gin ho. Ngoi ra mt cng vic no lp li nhiu ln trong chng trnh nn dng CTC v khi m chng trnh s gn, d theo di, g ri hn. Bi tp 6.2: Vit chng trnh cho php nhp hai s vo hai bin, thc hin i gi tr ca hai bin cho nhau. Yu cu dng chng trnh con thc hin chc nng i gi tr. a. Hng dn: b. M chng trnh: Program CTC_1; uses crt; var a,b: real; {----CTC doi gia tri----} Procedure swap(var x,y:real); var tam:real; begin tam:=x; x:=y; y:=tam; end; {-----Ket thuc CTC-----} begin clrscr; write('Nhap so a: ');readln(a); write('Nhap so b: ');readln(b); swap(a,b); write('Sau khi doi a =',a:3:1); write('Sau khi doi b =',b:3:1); readln end. b. Nhn xt: - Nu b t var khai bo var x,y:real th chng trnh vn khng bo li nhng chc nng i gi tr ca hai bin khng thc hin c. Bi tp 6.3: Tm s ln th nh trong n s c nhp t bn phm. V d: Nhp cc s 10; 10; 9; 9; 8 th c s ln nh l 9. Gii thut: - Nhp 2 s, Xc nh gi tr cho hai bin Max, Nhi. - Ln lt nhp cc s. Vi mi s c nhp xt: - Nu So > Max th gn Nhi = Max, Max = So. - Nu Nhi < So < Max th gn Nhi = So. Program So_lon_nhi; Var n,i,so, nhi,max,tam:integer; Procedure swap(var x,y:real);
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 44

100 bi tp Turbo Pascal

var tam:real; begin tam:=x; x:=y; y:=tam; end; Begin Write('Nhap n: ');Readln(n); Write('nhap so:');Readln(max); Write('nhap so: ');Readln(nhi); if nhi > Max then swap(Max,nhi) For i:= 3 to n do Begin Write('Nhap so: ');Readln(so); if (so>nhi) and (so<max) then nhi:=so; if so>max then Begin nhi:=max; Max:=so; End; End; Write('So thu nhi la: ',nhi); Readln End. Bi tp 6.3: Vit chng trnh tnh giai tha ca s n (Vit l n!). Vi yu cu: - Nu ngi dng nhp s n < 0 th yu cu nhp li. - S dng chng trnh con tnh giai tha ca mt s. n! = 1 nu n = 0; n! = 1.2.3.4.5...n (Tch ca n tha s). a. Hng dn: b. M chng trnh: Program CTC_2; uses crt; var n:integer;x:longint; Procedure Giai_Thua(var GT:longint; n:byte); begin GT:=1; while n>0 do begin GT:=GT*n; n:=n-1; end; end;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 45

100 bi tp Turbo Pascal

begin repeat clrscr; write('Nhap so n: ');readln(n); if n < 0 then begin write('Nhap so n>=0');readln; end; until n>=0; Giai_Thua(x,n); writeln('Giai thua cua ',n,'la:',x); readln end. Nhn xt: Lnh n:= n-1 lm thay i gi tr ca n nhng khi ra khi chng trnh con n c gi tr khng i so vi trc khi gi chng trnh con. Bi tp 6.4: Vit chng trnh tnh n! vi yu cu s dng hm tnh giai tha. a. Hng dn: b. M chng trnh: Program Giai_thua_Ham; uses crt; var n: longint; Function Giai_Thua(n:longint):longint; Var GT:Longint; begin GT:=1; while n > 0 do begin GT:=GT * n; n:=n-1; end; Giai_thua:=GT; end; begin clrscr; write('Nhap n: '); readln(n); write(n,'!=',Giai_thua(n)); readln end. Nhn xt: Hy so snh s khc nhau khi Giai_thua c vit di hai dng Function v Procedure. - Khi dng Procedure cn mt bin (ton cc) lu gia gi tr ca n!. Bin ny c truyn cho tham bin trong Procedure. Sau khi gi n cn lnh in n! - Khi dng Function, c th s dng n nh l mt biu thc.
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 46

100 bi tp Turbo Pascal

Bi tp 6.5: Vit chng trnh cho php thc hin rt gn phn s. a. Hng dn: - Tm UCLN ca t s v mu s. - Chia t v mu ca phn s cho UCLN va tm c. b. M chng trnh: Program Rut_gon_phan_so; uses crt; var tu,mau:integer; Function UCLN(a,b:integer):integer; var r: integer; begin r:= a mod b; while r <> 0 do begin a:= b; b:= r; r:=a mod b; end; UCLN:=b; end; begin clrscr; write('Nhap tu: '); readln(tu); write('Nhap mau: '); readln(mau); write('Ket qua rut gon: ',tu,'/',mau,'=',tu div UCLN(tu,mau),'/',mau div UCLN(tu,mau)); readln end. Bi tp 6.6: Vit chng trnh cho php trn hai dy s A v B cng c s phn t l k c dy s C theo yu cu sau: A = a1, a2 ... ak B = b1, b2 ... bk c C = a1, b1, a2, b2 ... ak, bk. a. Hng dn: b. M chng trnh: Program Tron_day; uses crt; type kieu_mang = array[1..100] of integer; var A, B, C: Kieu_mang;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 47

100 bi tp Turbo Pascal

n,i,j: integer; Procedure Nhap_Mang(Var X: Kieu_mang; n:byte); var i:integer; begin for i:=1 to n do begin write('M[',i,']=');readln(X[i]); end; end; Procedure In_Mang(X:kieu_mang; n:byte); var i: byte; begin for i:=1 to n do write(x[i],', '); end; {-----------} begin clrscr; write('Nhap so phan tu cua day: ');read(n); Nhap_mang(A,n); Nhap_mang(B,n); i:=1; j:=1; while i<= n do begin C[j]:= A[i]; C[j+1]:=B[i]; j:=j+2; i:=i+1; end; in_mang(C,2*n); readln end. Bi tp 6.7: Vit chng trnh in ra cc s nguyn t nh hn n vi yu cu dng hm kim tra mt s c phi l s nguyn t hay khng. a. Hng dn: b. M chng trnh: Program In_so_nguyen_to; uses crt; var n, i: integer; {------Ham kiem tra-------} Function kiem_tra(n:integer):boolean; var i: integer;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 48

100 bi tp Turbo Pascal

begin kiem_tra:=true; for i:=2 to n-1 do if (n mod i) = 0 then kiem_tra:=false; end; {------CTC----------------} begin clrscr; write('Nhap n: '); readln(n); for i:=2 to n do if kiem_tra(i) then write(i:3, ', '); readln; end. Bi tp 6.8: Vit chng trnh cho php sp xp mt dy s vi yu cu s dng cc chng trnh con: Nhp mng, in mng, i gi tr ca hai s. a. Hng dn: b. M chng trnh: Program Sap_xep_day; uses crt; type kieu_mang =array[1..100] of integer; Var A: kieu_mang; n,i,j:byte; {---------------------} Procedure Nhap_mang(var M:Kieu_Mang;n:byte); Var i:byte; begin for i:=1 to n do begin write('M[',i,']=');readln(M[i]); end; end; {---------------------} Procedure In_mang(var M:Kieu_Mang;n:byte); Var i:byte; begin for i:=1 to n do write(M[i]:3,', ') end; {---------------------} Procedure swap(var a,b:integer); var tam:integer; begin tam:=b;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 49

100 bi tp Turbo Pascal

b:=a; a:=tam; end; {---------------------} Begin Clrscr; write('Cho biet so phan tu cua day: ');readln(n); nhap_mang(A,n); for i:=1 to n-1 do for j:= i to n do if A[i]>A[j] then swap(A[i],A[j]); In_mang(A,n); readln end.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 50

100 bi tp Turbo Pascal

CHNG VII CHUYN CHIA HT S NGUYN T. A. L THUYT: -: -: . -: B. BI TON: Bi tp 7.1 : Nhp vo mt s nguyn dng n. Hy in ra s nguyn t nh nht ln hn n. VD: Nhp n = 10. Kt qu in ra s 11. Gii thut : - Gn i := n ; - Thc hin cho n khi i l nguyn t vic tng i ln 1. Program Nguyen_to; Var n,i:integer; Function NT(n:integer):Boolean; Var ok: Boolean; i: integer; Begin ok:=true; for i:=2 to n-1 do if (n mod i)= 0 then ok:=ok and false; if n < 2 then NT:=false else NT:=ok; End; Begin Write('Nhap n: ');Readln(n); i:=n; Repeat i:=i+1; Until NT(i); Write('So nguyen to nho nhat lon hon ',n, 'la: ',i); Readln End. Bi tp 7.2 : Nhp vo t bn phm s t nhin n (n<1000). Hy phn tch n thnh tch cc tha s nguyn t. VD: Nhp vo n = 9 c 9 = 3.3 Thut ton: Gn i := 2; Khi n > 1 th lp: Nu n chia ht cho i th in ra i v gn li n:= n div i. Ngc li tng i ln 1.
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 51

100 bi tp Turbo Pascal

Program Phan_tich; var n,i: integer; Begin Write('Nhap so can phan tich: ');Readln(n); i:=2; Write('Ket qua phan tich:'); Write(n,'='); While n>1 do Begin if n mod i = 0 then Begin Write(i,'.'); n:= n div i End else i:=i+1; End; Readln End. Nhn xt: Ci t trn in d mt du nhn cui. Hy chnh sa b du nhn tha ny. Bi tp 7.3: Tm cc s t nhin nh hn hoc bng n m sau khi lm php phn tch ra tha s nguyn t c nhiu nhn t nht. V d n=9 . Cc s c nhiu nhn t nht sau khi lm php phn tch l: 8 = 2.2.2 Thut ton: Ci t: Program Phan_tich_nguyen_to_2; Var n, Max, so, i:byte; Function PTNT(n:integer):byte; Var i,p:byte; Begin i:=2; p:=0; While n>1 do if (n mod i)=0 then Begin p:=p+1; n:=n div i end else i:=i+1; PTNT:=p; End; Procedure PT(n:integer); Var i:byte; Begin i:=2; While n>1 do if (n mod i)=0 then Begin Write(i,'.'); n:=n div i end else i:=i+1; End; Begin
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 52

100 bi tp Turbo Pascal

Write('Nhap so n: ');Readln(n); Max:=0; For i:= 1 to n do if PTNT(i)>=Max then Begin Max:=PTNT(i); So:=i End; Write('So ',So,' co nhieu uoc nhat,',so,' = '); PT(So); Readln End. Bi tp 7.4: Vit chng trnh cho php phn tch mt s ra tha s nguyn t v ghi kt qu di dng tch cc ly tha. V d: 300 = 2^2.3.5^2 Thut ton: Dng mt mng lu ly tha. Mng ny c gi tr cc phn t ban u u bng 0. Nu n chia ht cho i th tng M[i] ln 1. Khi in kim tra: Nu M[i] >0 th in i^M[i]. Ci t: Program Phan_tich; Var M: array[1..1000] of byte; i: byte; n: integer; Begin For i:=1 to 1000 do M[i]:=0; Write('Nhap so n: ');Readln(n); i:=2; While n>1 do if (n mod i = 0) then begin M[i]:=M[i]+1; n:=n div i End else i:=i+1; For i:=1 to 1000 do if M[i]>0 then Begin If M[i]>1 then Write(i,'^',M[i],'.') else Write(i,'.') End; Readln; End. Bi tp 7.5 Mi s t nhin u c th vit c di dng tng ca hai s nguyn t. Vit chng trnh thc hin tch mt s t nhin thnh tng ca hai s nguyn t. Thut ton: Ci t: Program Tong_nguyen_to; Var i,n:integer; Function NT(n:integer):Boolean; Var ok: Boolean; i:integer; Begin
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 53

100 bi tp Turbo Pascal

ok:=true; For i:=2 to n-1 do if (n mod i) = 0 then ok:=ok and false; if n>=2 then NT:=ok else NT:=false; End; Begin Write('Nhap so n: ');Readln(n); For i:=2 to n div 2 do if (NT(i) and NT(n-i)) then Writeln(n,' = ',i,' + ',n-i); Readln End. Nhn xt: Hy m rng bi ton theo hng - Xt xem trong on [n1...n2] s no cho php tch thnh tng hai s nguyn t nhiu trng hp nht. - Tch mt s thnh tng ba s nguyn t. Bi tp 7.6: (Tin hc tr ton quc ln I - 1995) Hai s t nhin A, B c coi l hu ngh nu nh s ny bng tng cc c s ca s kia v ngc li. Lp trnh tm v chiu ln mn hnh cc cp s hu ngh trong phm vi t 1 n 10000. (Lu : s 1 c coi l c s ca mi s cn mi s khng c coi l c s ca chnh n). Thut ton: Ci t: Program Cap_so_huu_nghi; Var a,b,n,i:integer; Function TU(a:integer):integer; Var Tg,i:integer; Begin Tg:=0; For i:=1 to a-1 do if (a mod i = 0) then Tg:=Tg + i; TU:=Tg; End; Begin Write('Nhap so n: ');Readln(n); For a:=1 to n do Begin b:=TU(a); if TU(b)=a then Writeln(a,'-',b) end; Readln; End. Nhn xt: Cc s hon chnh lun l hu ngh ca chnh n.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 54

100 bi tp Turbo Pascal

CHNG VIII CHUYN DY CON. A. L THUYT: - Dy con l dy cc phn t lin tc thuc mt dy c trc (dy m) tha mn mt tnh cht no . - qun l mt dy con cn mt ch s (ni bt u dy con) v di ca dy. - Mt cch qun l khc l ch s u v chr s cui. - xy dng mt dy con cn: - Xy dng gi tr ban u. - Duyt qua cc phn t ca dy, Nu: - Tha iu kin, tng di thm 1 ngc li: - Nu dy con ang xt cn lu th: Lu li di, ch s u dy, Xc nh li di, ch s u ca dy mi. - Nu dy con ang xt khng cn lu th: Xc nh li di, ch s u ca dy mi. - duyt qua tt c cc dy con ca mt dy gm n s ta dng thut ton vt cn sau: For i:= 1 to n For j:= 1 to n-i+1 Xt dy con bt u t v tr th i c di j. B. BI TP: Bi tp 1: Cho dy s gm n s. Tm dy con ln nht cc phn t tng (gim) dn. Gii thut: S dng k thut xy dng dy con. Ci t: Program Day_con1; Var M: array[1..100] of integer; i,n, dau,ldau, dai,Max: integer; Begin Write('Nhap so n: '); Readln(n); For i:=1 to n do Begin Write('[',i,']='); Readln(M[i]); End; {Khoi tao gia tri dau} i:=0; Max:=1; dau:=1; dai:=1; ldau:=1; While i<=n do Begin i:=i+1; if M[i+1]>=M[i] then dai:=dai+1 else if dai> Max then Begin Max:=dai; ldau:=dau; dai:=0 End else Begin dau:=i+1; dai:=1 End;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 55

100 bi tp Turbo Pascal

End.

End; Write('Xau con dai:',max,' bat dau tu: ',ldau); Readln

Nhn xt: Bi ton trn c th s dng gii thut vt cn dy con gii. Sau y l ci t: Program Day_con1b; Type KM= array[1..100] of integer; Var M:KM; i,j,n, dau,ldau, dai,Max: integer; Function KT(A:KM;m,l:byte):boolean; Var ok:Boolean; i:byte; Begin ok:=True; For i:=m to m+l-1 do if A[i]>A[i+1] then ok:=ok and false; KT:=ok; End; Begin Write('Nhap so nc: '); Readln(n); Max:=0; For i:=1 to n do Begin Write('[',i,']='); Readln(M[i]); End; For i:= 1 to n-1 do For j:=1 to n-i+1 do if KT(M,i,j) then if j+1> Max then Begin ldau:=i; Max:=j+1 End; Write('Xau con dai:',max,' bat dau tu: ',ldau); Readln End. Bi tp 2: Cho dy s gm n s. Tm dy con ln nht cc phn t c cng du, (an du). Gii thut: Thc hin ging nhu bi 1, ch thay iu kin l M[i+1]*M[i] >0 Ci t: Program Day_con2; Var M: array[1..100] of integer; i,n, dau,ldau, dai,Max: integer; Begin Write('Nhap so nc: '); Readln(n);
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 56

100 bi tp Turbo Pascal

For i:=1 to n do Begin Write('[',i,']='); Readln(M[i]); End; i:=0; Max:=1; dau:=1; dai:=1; ldau:=1; While i<=n do Begin i:=i+1; if M[i+1]*M[i]>0 then dai:=dai+1 else if dai> Max then Begin Max:=dai; ldau:=dau; dai:=0 End else Begin dau:=i+1; dai:=1 End; End; Write('Xau con dai:',max,' bat dau tu: ',ldau); Readln End. Nhn xt: Hy thc hin bi tp trn bng k thut vt cn dy con. Bi tp 3: Cho dy gm n s. Tm dy con ln nht n iu (lin tc tng, gim hoc gim, tng). Gii thut: - Dy ang du nu M[i]*M[i+1] < 0. Ci t: Ging bi tp 2 Nhn xt: Bi tp 4: Cho dy s gm n s nguyn. Tm dy con c tng ln nht Gii thut: - S dng k thut vt cn cc dy con, dng hm tnh tng dy con kim tra. Ci t: Program Day_con1b; Type KM= array[1..100] of integer; Var M:KM; i,j,n,ldau, dai,Max: integer; Function TONG(A:KM;m,l:byte):Integer; Var Tam,i:integer; Begin Tam:=0; For i:=m to m+l do Tam:=Tam + A[i]; TONG:=Tam; End;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 57

100 bi tp Turbo Pascal

Begin Write('Nhap so nc: '); Readln(n); For i:=1 to n do Begin Write('[',i,']='); Readln(M[i]); End; Max:=M[1];dai:=1;ldau:=1; For i:= 1 to n do For j:=0 to n-i+1 do if TONG(M,i,j)> Max then Begin ldau:=i; Max:=Tong(M,i,j) ; dai:=j+1 End; Write('Xau con co tong:',max,' bat dau tu: ',ldau, ' dai: ',dai); Readln End. Nhn xt:

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 58

100 bi tp Turbo Pascal

CHNG IX CHUYN CH S, H C S. A. L THUYT: - Trong h c s 10: S A = an.a2a1a0 = a0 + 10a1 + +10nan nn: ly s a0 = A mod 10; xa ch s a0 ta dng A:=A div 10. (Tng t: ly hai s tn cng a1a0 = A mod 100; xa hai ch s a1 a0 ta dng A:=A div 100. - Thut ton vt cn: xt tt c cc trng hp ca s A ta xt a n = 1..9; an-1.a2a1a0 =0..9 - H c s 2: Nu nh h thp phn dng 10 ch s ghi s th h c s 2 ch dng hai ch s l 0 v 1 ghi s. - i mt s t c s 2 sang c s 10: - i mt s t c s 10 sang c s 2: - H c s bt k: - Vn cng, tr, nhn, ly tha s ln (hoc kt qu c s ln) c xem xt ring mt chuyn (sau khi c trang b d liu kiu string). B. BI TON: Bi tp 8.1: Gi abcd l mt s c 4 ch s. Hy lp chng trnh tm tt c cc s c 4 ch s tha mn biu thc: abcd=(ab + cd)2 V d: s 2025=(20 + 25)2. Thut ton: Kim tra tt c cc s c bn ch s theo cc cch sau; - Tch ly hai s u, hai s sau ca s c bn ch s kim tra. - Kim tra cc trng hp c th ca mi ch s. Cch 1: Program Tach_so; Var haisodau, haisocuoi, i : integer; Begin Writeln( cac so thoa man dieu kien gom co); For i:=1000 to 9999 do Begin haisodau:=i Div 100;{lay 2 so dau tien ab} haisocuoi:=i mod 100;{lay 2 so cuoi cd} If i=SQR(haisodau + haisocuoi) then write(i:5); End; Readln; End. Cch 2: Program Xet_so; Var a,b,c,d : integer;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 59

100 bi tp Turbo Pascal

Begin Writeln( cac so thoa man dieu kien gom co); For a:=1 to 9 do For b:=0 to 9 do For c:=0 to 9 do For d:=0 to 9 do If i=(1000*a + 100*b + 10*c+ d) = SQRT(10*a+b + 10*c+d) then write(i:5); Readln; End. Bi tp 8.2: Vit chng trnh cho nhp hai s t nhin N v k. Hy cho bit ch s th k tnh t tri sang phi trong s N l s my? nu k ln hn di ca N hoc k bng 0 th thng bo khng tm c. V d 1: Vi N v k c nhp: N = 65932, k = 4 Kt qu tm c l 3. V d 2: Vi N v k c nhp: N = 65932, k = 10 Kt qu tm c l -1 ( k ln hn di s N). Program Chu_so_thu_k; Var M: array[1..10] of integer; so: Longint; i,k:integer; Begin Write('Nhap so: ');Readln(so); so:=abs(so); Write('Nhap k: ');Readln(k); i:=0; While so>0 do begin i:=i+1; M[i]:=so mod 10; so:=so div 10; end; Write('Chu so thu ',k,'la: ',M[i-k+1]); Readln End. Nhn xt : Nu bi ton yu cu tm ch s th k tnh t phi sang tri th n gin hn nhiu. Lc ta ch cn xa k-1 ch s cui. Ri ly ch s cui. Bi tp 8.2: Mt s c gi l s bc thang nu biu din thp phn ca n c nhiu hn mt ch s ng thi theo chiu t tri qua phi, ch s ng sau khng nh hn ch s ng trc. Vit chng trnh in ra cc s bc thang trong on [n1, n2] vi n1, n2 c nhp t bn phm.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 60

100 bi tp Turbo Pascal

Program So_bac_thang; Var i,n1,n2: integer; Function BT(n:integer):Boolean; Var ok: boolean; so:byte; Begin ok:=true; While n>=10 do Begin so:=n mod 10; n:=n div 10; if so < (n mod 10) then ok:=ok and false; End; BT:=ok; End; Begin Write('Nhap so n1: ');Readln(n1); Write('Nhap so n2: ');Readln(n2); For i:= n1 to n2 do if BT(i) then Write(i:4); Readln End. Bi tp 8.3: Vit chng trnh cho php i mt s t c s 10 sang c s bt k. Thut ton: - Dng mng CS lu cc ch s. - Lp khi n <> vic: Chia n cho s ly phn d. Ly phn d lm ch s ly v lu ch s. Gn n = n div s. - Ch ch s ly sau s nm trc. Program Doi_co_so; Var n,s: longint; Function D10_CS(n:longint;s:byte):string; Var CS: array[0..100] of char; i: integer; ch:Char; Tam:string; Begin {Khoi tao cac chu so 0 den 9} i:=0; ch:='0'; while i<=9 do Begin CS[i]:=Ch;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 61

100 bi tp Turbo Pascal

inc(i); inc(ch); End; {Khoi tao cac chu so A den Z} i:=10; ch:='A'; While ch<'Z' do Begin CS[i]:=ch; inc(i); inc(ch); End; tam:=''; While n<>0 do Begin tam:= CS[n mod s]+ Tam; n:=n div s; End; D10_CS:=Tam; End; Begin Write('Nhap n:');Readln(n); Write('Doi sang co so: ');Readln(s); Write(D10_CS(n,s)); Readln End. Bi tp 8.4: Vit chng trnh cho php i mt s t c s bt k sang c s 10. Thut ton: - Dng mng CS1 lu gi tr ca cc ch s <10 v mng CS2 lu gi tr ca cc ch s ln hn 10. - Lp li cho n khi n= vic: Ly ch s u tin ca n lm ch s xc nh gi tr ca ch s, Gn Tong:=Tong*C s + Gi tr tng ng ca ch s; Xa ch s u tin ca n. Program Doi_co_so; Var n: String; s:byte; Function DCS_10(st:String;s:byte):longint; Var CS1: array['0'..'9'] of byte; CS2: array['A'..'Z'] of byte; ch:Char; i:byte;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 62

100 bi tp Turbo Pascal

Tam:longint; Begin i:=0; ch:='0'; while i<=9 do Begin CS1[ch]:=i; inc(i); inc(ch); End; i:=10; ch:='A'; While ch<'Z' do Begin CS2[ch]:=i; inc(i); inc(ch); End; Tam:=0; While st<>'' do Begin ch:=st[1]; if (ch>='0') and (ch<='9') then Tam:=Tam*s+CS1[ch] else Tam:=Tam*s+CS2[ch]; Delete(st,1,1); End; DCS_10:=Tam; End; Begin Write('Nhap n:');Readln(n); Write('Co so cua so vua nhap: ');Readln(s); Write(DCS_10(n,s)); Readln End. Bi tp 8.5: (Vnh Phc 2009-2010) Nm 1973, nh Ton hc Neil Sloan a ra khi nim bn ca mt s nguyn khng m N nh sau: Nu N c mt ch s th bn ca N bng 0. Nu N c t 2 ch s tr ln th bn ca N bng bn ca s nguyn l tch cc ch s ca N cng 1. Cho N, tm s b hn N c bn ln nht (0 N 2.000.000.000). V d
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 63

100 bi tp Turbo Pascal

Persist persist .inp .out 100 77

Gii thch Doben(77)=Doben(49)+1=Doben(36)+1+1=Doben(1 8)+1+1+1=Doben(8)+1+1+1+1=0+1+1+1+1=4

Gii thut: - tm bn mt s cn mt hm tnh tch cc ch s ca n TICH(n). - Cho d = 0. Lp li iu kin n >9 vic: Tng d ln 1 thay n = TICH(n). Program Do_ben; uses crt; Var n,d,i,j,max:longint; Function TICH(n:Longint):Longint; Var tam:integer; Begin if n=0 then tam:=0 else tam:=1; While n<> 0 do Begin Tam:=tam*(n mod 10); n:=n div 10; End; TICH:=Tam; End; Begin clrscr; Write('Nhap n:');Readln(n); Max:=0; For i:=1 to n do Begin d:=0; j:=i; gotoxy(1,2); Write('Dang duyet den so: ',i); While j>9 do Begin d:=d+1; j:=TICH(j); End; if d>=Max then Begin max:=d; gotoxy(1,3); Writeln('So co do ben lon nhat dang la ',i,' do ben la:',d); End;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 64

100 bi tp Turbo Pascal

End; Gotoxy(1,4); Writeln('Da duyet xong'); Readln End.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 65

100 bi tp Turbo Pascal

CHNG X CHUYN A THC (Mt bin). A. L THUYT: - lu tr mt a thc ta ch cn lu cc h s (bng mt mng)v bc ca a thc. - Cc php ton i vi mt a thc gm cng, tr, nhn, chia hai a thc. - Vic tnh gi tr a thc ti mt gi tr ca bin c thc hin thng qua lc hooc n hoc tnh trc tip. B. BI TP: Bi tp 10.1: Vit chng trnh cho php cng hai a thc. Kt qu in ra dng: anx^n + ... + a1x + a0 Gii thut: - Dng hai mng A, B lu h s ca hai a thc. C th dng mng th ba C hoc dng li mt trong hai mng A, B lu h s ca a thc tng. - Khi in kt qu cn kim tra h s in du cho ng. Ci t: Program Cong_da_thuc; uses crt; Type KM = array[0..10] of integer; Var A,B: KM; n: byte; Procedure NhapDT(Var A: KM; n:byte); Var i: byte; Begin For i:=n downto 0 do Begin Write('M[',i,']='); Read(A[i]); End; End; Procedure CONG(Var A:KM;B:KM;n:byte); Var i: byte; Begin For i:= 0 to n do A[i]:=A[i]+B[i]; End; Procedure INDT(A:KM;n:byte); Var i: byte; Begin if A[n] <> 0 then Write(A[n],'x^',n); For i:=n-1 downto 0 do if A[i] <> 0 then if A[i] < 0 then write(A[i],'x^',i) else Write('+',A[i],'x^',i); End;
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 66

100 bi tp Turbo Pascal

Begin

End. Nhn xt:

clrscr; Write('Nhap bac n: ');Readln(n); Writeln('Nhap da thuc A: '); NhapDT(A,n); Writeln('Nhap da thuc B: '); NhapDT(B,n); clrscr; Indt(A,n); Writeln; Indt(B,n); Writeln; Cong(A,B,n); Writeln('Da thuc tong: '); Indt(A,n); Readln; Readln

Bi tp 10.2: Vit chng trnh cho php tnh gi tr ca a thc A(x) ti gi tr x = x0. Gii thut: - Dng chng trnh con tnh xn. Ci t: Program Gia_tri_cua_da_thuc; Var n,i: integer; x,a,s:real; Function XMU(x:real; n:integer):real; Var i: integer; Mu: real; Begin Mu:=1; For i:=1 to n do Mu:=Mu*x; XMU:=Mu; End; Begin Write('Nhap bac cua da thuc n = '); Readln(n); Write('Tinh f(x) tai x = ');Readln(x); S:=0; For i:=n downto 0 do Begin Write('a',i,'= '); Readln(a); S:=S+a*XMU(x,i); End; Writeln('F(',x:5:2,')= ',S:5:2); Readln; End.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 67

100 bi tp Turbo Pascal

Nhn xt: Bi tp 10.3: Vit chng trnh tnh gi tr ca a thc A(x) vi iu kin khng dng bin mng. Vit chng trnh tnh gi tr ca a thc f(x) = anxn + ... +a1x + a0 ti x = x0. Thut ton: f(x) = anxn + ... +a1x + a0 = a0 + x(a1 + x(a2 + ... x(an-1 + x(an))...)) Lp li vic: c v cng h s ri nhn vi x t h s an n h s a0. Chng trnh: Program Gia_tri_da_thuc; Var S,a,x: real; n,i: byte; Begin Write('Nhap bac cua da thuc. n = '); Readln(n); Write('Tinh f(x) tai x = ');Readln(x); S:=0; For i:= n downto 0 do Begin Write('a',i,'=');Readln(a); S:=(S+a)*x; End; Write('f(',x:3:1,')=',S:5:1); Readln End. Nhn xt: Bi tp 10.4: Vit chng trnh cho php nhn hai a thc sp xp. Thut ton: Tch a thc A bc m vi a thc B bc n l a thc C bc m + n. Trong : C[m] = Tng ca cc tch A[i] * A[j] sao cho i+j = m. Program Nhan_da_thuc; Var m,n,i,j:byte; A, B, C: array[0..10] of real; Begin Write(' Nhap bac cua da thuc A: '); Readln(m); For i:= m downto 0 do Begin Write('A[',i,']= '); Readln(A[i]); End; Write(' Nhap bac cua da thuc B: '); Readln(n); For i:= n downto 0 do Begin Write('B[',i,']= '); Readln(B[i]);
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 68

100 bi tp Turbo Pascal

End; For i:=0 to m+n do C[i]:=0; For i:=0 to m do For j:=0 to n do C[i+j]:=C[i+j]+A[i]*B[j]; For i:= m+n downto 0 do if C[i]<>0 then Write(C[i]:3:1,'x^',i,' + '); Readln End. Nhn xt: Bi tp 10.5: Vit chng trnh cho php chia hai a thc tm a thc thng v a thc d. Gii thut: Ci t: Program Chia_da_thuc; uses crt; Type KM = array[0..10] of real; Var A,B,C,AB,D: KM; i,n,cs,bc: byte; Procedure NhapDT(Var A: KM; n:byte); Var i: byte; Begin For i:=n downto 0 do Begin Write('M[',i,']='); Read(A[i]); End; End; Function BAC(A:KM;n:integer):Byte; Var i:Byte; Begin i:=n; While (A[i]=0) and (i> 0) do i:=i-1; BAC:=i; End; Procedure TRU(Var A:KM;B:KM;n:byte); Var i: byte; Begin For i:= 0 to n do A[i]:=A[i]-B[i]; End; Procedure NHAN(Var C:KM;A,B:KM; Var n:byte); Var i,j:byte; TAM:KM; Begin n:=Bac(A,n)+Bac(B,n); For i:= 0 to 2*n do TAM[i]:=0; For i:= 0 to n do For j:=0 to n do TAM[i+j]:=TAM[i+j]+A[i]*B[j]; For i:=0 to 2*n do C[i]:=TAM[i];
L Nho Duyt Phng Gio dc & o to huyn Qu Sn Trang 69

100 bi tp Turbo Pascal

End; Procedure INDT(A:KM;n:byte); Var i: byte; Begin if A[n] <> 0 then Write(A[n]:3:1,'x^',n); For i:=n-1 downto 0 do if A[i] <> 0 then if A[i] < 0 then write(A[i]:3:1,'x^',i) else Write('+',A[i]:3:1,'x^',i); End; Procedure DT_BAC(Var A:KM;Bac:byte;gt:real); Var i:byte; Begin For i:=1 to n do A[i]:=0; A[Bac]:=gt; End; Begin clrscr; Write('Nhap bac cua da thuc bi chia: ');Readln(n); Writeln('Nhap da thuc A: '); NhapDT(A,n); Writeln('Nhap da thuc B: '); NhapDT(B,n); clrscr; Write('Da thuc bi chia: ');Indt(A,n); Writeln; Write('Da thuc chia: ');Indt(B,n); Writeln; bc:=Bac(A,n)-Bac(B,n); {Luu bac cua da thuc C} For i:=1 to bc do C[i]:=0; While BAC(A,n) >= BAC(B,n) do Begin cs:=BAC(A,n)-BAC(B,n); C[cs]:=A[Bac(A,n)]/B[Bac(B,n)]; Writeln('C[',cs,']=',C[cs]:3:1); DT_BAC(D,cs,C[cs]);Writeln; Write('Da thuc D:'); Indt(D,n); NHAN(AB,B,D,n);Writeln; Write('Da thuc AB:'); Indt(AB,n);Writeln; TRU(A,AB,n); Write('Da thuc A moi:'); Indt(A,n); End; Writeln('Da thuc thuong: '); Indt(C,bc); Readln; Readln
End.

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 70

100 bi tp Turbo Pascal

Nhn xt: Bi tp 10.7: Gii thut: Ci t: Nhn xt: Bi tp 10.8: Gii thut: Ci t: Nhn xt: Bi tp 10.9: Gii thut: Ci t: Nhn xt: Bi tp 10.10: Gii thut: Ci t: Nhn xt:

L Nho Duyt Phng Gio dc & o to huyn Qu Sn

Trang 71

You might also like