Giao Trinh Pascal Toan Tap

Preview:

DESCRIPTION

Giao Trinh Pascal Toan Tap

Citation preview

II

Gio trnh bi tp Pascal

LI M U

Theo khung chng trnh ca B Gio Dc v o To, Ngn ng Lp trnh Pascal l mt phn quan trng trong hc phn Tin hc i cng thuc cc khi ngnh Khoa hc T nhin, c bit l ngnh Cng ngh Thng tin.

Nhm p ng yu cu hc tp ca hc sinh, sinh vin bc u lm quen vi cng vic lp trnh, chng ti bin son b Gio Trnh Bi tp Pascal nhm gip cho sinh vin c mt ti liu hc tp, rn luyn tt kh nng lp trnh, to nn tng vng chc cho cc mn hc tip theo trong chng trnh o to C nhn Cng ngh Thng tin .

Gio trnh bai gm rt nhiu bi tp t n gin n phc tp. Cc bi tp ny c bin son da trn khung chng trnh ging dy mn Tin hc i cng. Bn cch , chng ti cng b sung mt s bi tp da trn c s mt s thut ton chun vi cc cu trc d liu c m rng nhm nng cao k nng, phng php lp trnh cho sinh vin.

Ni dung ca gio trnh c chia thnh 10 chng. Trong mi chng u c phn tm tt l thuyt, phn bi tp mu v cui cng l phn bi tp t gii bn c t mnh kim tra nhng kin thc v kinh nghim hc. Trong phn bi tp mu, i vi nhng bi tp kh hoc c thut ton phc tp, chng ti thng nu ra tng v gii thut trc khi vit chng trnh ci t.

Xin chn thnh cm n cc ng nghip Khoa Cng ngh Thng tin Trng i hc Khoa hc Hu gip , ng gp kin hon chnh ni dung gio trnh ny.

Chng ti hy vng sm nhn c nhng kin ng gp, ph bnh ca bn c v ni dung, cht lng v hnh thc trnh by gio trnh ny ngy mt hon thin hn.

Hu, Thng 07 Nm 2004

CC TC GI

Chng 1

CC THNH PHN C BN CA

NGN NG LP TRNH PASCAL

Pascal l mt ngn ng lp trnh bc cao do Niklaus Wirth, gio s in ton trng i hc k thut Zurich (Thy S) xut nm 1970. ng ly tn Pascal k nim nh ton hc v nh trit hc ngi Php ni ting Blaise Pascal.

1. Cc tp tin cn thit khi lp trnh vi Turbo Pascal

lp trnh c vi Turbo Pascal, ti thiu cn 2 file sau:

TURBO.EXE: Dng son tho v dch chng trnh.

TURBO.TPL: Th vin cha cc n v chun chy vi TURBO.EXE.

Ngoi ra, mun lp trnh ho th phi cn thm cc tp tin:

GRAPH.TPU: Th vin ho.

*.BGI: Cc file iu khin cc loi mn hnh tng ng khi dng ho.

*.CHR: Cc file cha cc font ch ha.

2. Cc bc c bn khi lp mt chng trnh Pascal

Bc 1: Son tho chng trnh.

Bc 2: Dch chng trnh (nhn phm F9), nu c li th phi sa li.

Bc 3: Chy chng trnh (nhn phm Ctrl-F9).

3. Cu trc chung ca mt chng trnh Pascal

{ Phn tiu }

PROGRAM Tn_chng_trnh;

{ Phn khai bo }

USES ......;

CONST .....;

TYPE .......;

VAR ........;

PROCEDURE ............;

FUNCTION ..............;

...............

{ Phn thn chng trnh }

BEGIN

...........

END.

V d 1: Chng trnh Pascal n gin nht

BEGIN

Write(Hello World!);

END.

V d 2:

Program Vidu2;

Const PI=3.14;

Var R,S:Real;

Begin

R:=10;

{Bn knh ng trn}

S:=R*R*PI; {Din tch hnh trn}

Writeln(Dien tich hinh tron = , S:0:2); { In ra mn hnh }

Readln;

End.

4. Mt s phm chc nng thng dng

F2:

Lu chng trnh ang son tho vo a.

F3:

M file mi hoc file tn ti trn a son tho.

Alt-F3:ng file ang son tho.

Alt-F5:Xem kt qu chy chng trnh.

F8:

Chy tng cu lnh mt trong chng trnh.

Alt-X:

Thot khi Turbo Pascal.

Alt-: Dch chuyn qua li gia cc file ang m.

F10:

Vo h thng Menu ca Pascal.

5. Cc thao tc c bn khi son tho chng trnh

5.1. Cc phm thng dng

Insert: Chuyn qua li gia ch v ch chn.

Home: a con tr v u dng.

End: a con tr v cui dng.

Page Up: a con tr ln mt trang mn hnh.

Page Down: a con tr xung mt trang mn hnh.

Del: Xo k t ngay ti v tr con tr.

Back Space ((): Xa k t bn tri con tr.

Ctrl-PgUp: a con tr v u vn bn.

Ctrl-PgDn: a con tr v cui vn bn.

Ctrl-Y: Xa dng ti v tr con tr.

5.2. Cc thao tc trn khi vn bn

Chn khi vn bn: Shift + Ctrl-KY: Xo khi vn bn ang chn

Ctrl-Insert: a khi vn bn ang chn vo Clipboard

Shift-Insert: Dn khi vn t Clipboard xung v tr con tr.

6. Cc thnh phn c bn ca ngn ng Pascal

6.1. T kha

T kho l cc t m Pascal dnh ring phc v cho mc ch ca n. (Chng hn nh: BEGIN, END, IF, WHILE,...)

Ch : Vi Turbo Pascal 7.0 tr ln, cc t kho trong chng trnh s c hin th khc mu vi cc t khc.

6.2. Tn (nh danh)

nh danh l mt dy k t dng t tn cho cc hng, bin, kiu, tn chng trnh con... Khi t tn, ta phi ch mt s im sau:

Khng c t trng tn vi t kho

K t u tin ca tn khng c bt u bi cc k t c bit hoc ch s.

Khng c t tn vi k t space,cc php ton.

V d: Cc tn vit nh sau l sai

1XYZ

Sai v bt u bng ch s.

#LONG

Sai v bt u bng k t c bit.

FOR

Sai v trng vi t kho.

KY TU

Sai v c khong trng (space).

LAP-TRINHSai v du tr (-) l php ton.

6.3. Du chm phy (;)

Du chm phy c dng ngn cch gia cc cu lnh. Khng nn hiu du chm phy l du kt thc cu lnh.

V d:

FOR i:=1 TO 10 DO Write(i);

Trong cu lnh trn, lnh Write(i) c thc hin 10 ln. Nu hiu du chm phy l kt thc cu lnh th lnh Write(i) ch thc hin 1 ln.

6.4. Li gii thch

Cc li bn lun, li ch thch c th a vo bt k ch no trong chng trnh cho ngi c d hiu m khng lm nh hng n cc phn khc trong chng trnh. Li gii thch c t gia hai du ngoc { v } hoc gia cm du (* v *).

V d:

Var a,b,c:Rea; {Khai bo bin}

Delta := b*b 4*a*c; (* Tnh delta gii phng trnh bc 2 *)BI TP THC HNH

1. Khi ng Turbo Pascal.

2. Nhp vo on chng trnh sau:

Uses Crt;

Begin

Writeln(***********************************************************);

Writeln(* CHUONG TRINH PASCAL DAU TIEN CUA TOI *);

Writeln(* Oi! Tuyet voi!... *);

Writeln(***********************************************************);

Readln;

End.

3. Dch v chy chng trnh trn.

4. Lu chng trnh vo a vi tn BAI1.PAS.

5. Thot khi Pascal.

6. Khi ng li Turbo Pascal.

7. M file BAI1.PAS.

8. Chn thm vo dng: CLRSCR; vo sau dng BEGIN

9. Dch v chy th chng trnh.

10. Lu chng trnh vo a.

11. Thot khi Pascal.

12. Vit chng trnh in ra mn hnh cc hnh sau:

* ******** *******

*** ** ** ** **

** ** ** ** **

** ** ******** * *

********* ** ** **

** ** ** ** ** **

** ** ******** ********

Chng 2

CC KIU D LIU C BN

KHAI BO HNG, BIN, KIU, BIU THC V CU LNH

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:

ABA AND BA OR BA XOR BNOT A

TRUETRUETRUETRUEFALSEFALSE

TRUEFALSEFALSETRUETRUEFALSE

FALSETRUEFALSETRUETRUETRUE

FALSEFALSEFALSEFALSEFALSETRUE

2. Kiu s nguyn

2.1. Cc kiu s nguyn

Tn kiuPhm viDung lng

Shortint-128 ( 1271 byte

Byte0 ( 2551 byte

Integer-32768 ( 327672 byte

Word0 ( 655352 byte

LongInt-2147483648 ( 21474836474 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).

2.2.2. Cc php ton x l bit:

Trn cc kiu ShortInt, Integer, Byte, Word c cc php ton:

NOT, AND, OR, XOR.

ABA AND BA OR BA XOR BNOT A

111100

100110

010111

000001

SHL (php dch tri): a SHL n ( a ( 2n SHR (php dch phi): a SHR n ( a DIV 2n3. Kiu s thc

3.1. Cc kiu s thc

:

Tn kiuPhm viDung lng

Single1.5(10-45 ( 3.4(10+384 byte

Real2.9(10-39 ( 1.7(10+386 byte

Double5.0(10-324 ( 1.7(10+3088 byte

Extended3.4(10-4932 ( 1.1(10+493210 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 (x(0)

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

LN(x):

Tr v ln(x)

EXP(x):

Tr v ex

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: =, >, >=, 0

d/ e

Bi tp 2.5: Vit chng trnh tnh sin tch tam gic theo cng thc sau:

S =

vi p =

(a+b+c)

Bi tp 2.6: Vit chng trnh tnh khong cch t mt im I(xi,yi) n ng thng c phng trnh D: Ax + By + C = 0.

Gi :

Cng thc tnh khong cch: h =

Bi tp 2.7: Vit chng trnh tch mt s n thnh 2 s a, b sao cho tch P=a*b2 t cc i vi n c nhp vo t bn phm.

Gi :

Gi x l s th hai th s th nht l: (n-x). Theo ta c: P(x) = x2.(n-x).

Hm P t cc i khi P(x) = -3x2 + 2nx = 0 ( x = 2n/3.

Bi tp 2.8: Mn hnh ha ca mt my tnh c phn gii: 640x480. Bit rng, mi im trn mn hnh chim 1 byte. Hi cn bao nhiu byte lu tr ton b mn hnh ha ?

C 2 sinh vin vit chng trnh tnh s byte lu tr mn hnh ha:

Program Sinhvien1;

Vara,b:integer;

s:Word;

Begin

a:=640; b:=480;

s:=a*b;

writeln(s); readln;

End.

Program Sinhvien2;

Vara,b:Word;

s: LongInt;

Begin

a:=640; b:=480;

s:=a*b;

writeln(s); readln;

End.

Hy cho bit 2 chng trnh trn cho kt qu ng hay sai? Ti sao?

Bi tp 2.9: Mn hnh ha ca mt my tnh c phn gii: 640x480. Bit rng, mi im trn mn hnh chim 1 byte. Hi cn bao nhiu byte lu tr mt vng c kch thc bng 1/10 mn hnh ha ?

C 2 sinh vin vit chng trnh gii bi ton ny nh sau:

Program Sinhvien1;

Vara,b:Word;

s: LongInt;

Begin

a:=640; b:=480;

s:=a;

s:=s*b;

s:=s DIV 10;

writeln(s); readln;

End.

Program Sinhvien2;

Vara,b:Word;

s: LongInt;

Begin

a:=640; b:=480;

s:=a*b DIV 10;

writeln(s); readln;

End.

Hy cho bit 2 chng trnh trn cho kt qu ng hay sai? Ti sao?

Chng 3

CC CU LNH C CU TRC

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:

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 1Dng 2

CASE B OF

Const 1: S1;

Const 2: S2;

...

Const n: Sn;

END;CASE B OF

Const 1: S1;

Const 2: S2;

...

Const n: Sn;

ELSE Sn+1;

END;

Trong :

B: Biu thc kiu v hng m c nh kiu nguyn, kiu logic, kiu k t, kiu lit k.

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 Si tng ng.

- Ngc li:

+ i vi dng 1: Khng lm g c.

+ i vi dng 2: thc hin lnh Sn+1.

II. CU LNH LP

2.1. Vng lp xc nh

C hai dng sau:

(Dng tin

FOR := TO DOS;

(Dng li

FOR := DOWNTO DOS;

S thc hin vng lp FOR:

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.5.3.2. Vng lp khng xc nh

Dng REPEATDng WHILE

Repeat

S;

Until B;While B Do S;

ngha:

Dng REPEAT: Lp li cng vic S cho n khi biu thc B=TRUE th dng.

Dng WHILE: Trong khi biu thc B=TRUE th tip tc thc hin cng vic S.

BI TP MU

Bi tp 3.1: Vit chng trnh nhp vo mt s nguyn v kim tra xem s va nhp l s chn hay s l.

Uses crt;

Var x:integer;

Begin

Write('Nhap vao mot so nguyen : '); Readln(x);

If x MOD 2=0 Then

Writeln('So vua nhap vao la so chan')

Else

Writeln('So vua nhap vao la so le');

Readln;

End.

Bi tp 3.2: Vit chng trnh gii phng trnh bc nht ax+b=0

Uses Crt;

Var a,b,x : real;

Begin

Write('a = '); Readln(a);

Write('b = '); Readln(b);

If a = 0 Then { Nu a bng 0 }

If b = 0 Then { Trng hp a = 0 v b = 0 }

Writeln('Phuong trinh co vo so nghiem')

Else { Trng hp a=0 v b ( 0 }

Writeln('Phuong trinh vo nghiem')

Else { Trng hp a ( 0 }

Begin

x:= -b/a;

Writeln('Phuong trinh co nghiem la :',x:0:2);

End;

Readln;

End.Bi tp 3.3: Vit chng trnh nhp vo tui ca mt ngi v cho bit ngi l thiu nin, thanh nin, trung nin hay lo nin. Bit rng: nu tui nh hn 18 l thiu nin, t 18 n 39 l thanh nin, t 40 n 60 l trung nin v ln hn 60 l lo nin.

Uses crt;

Var tuoi:Byte;

Begin

Write(Nhap vao tuoi cua mot nguoi:');Readln(tuoi);

Case tuoi Of

1..17:Writeln(Nguoi nay la thieu nien');

18..39:Writeln(Nguoi nay la thanh nien');

40..60:Writeln(Nguoi nay la trung nien');

Else

Writeln(Nguoi nay la lao nien');

End;

Readln;

End.

Bi tp 3.4: Vit chng trnh tnh tng S = 1+2+...+N.

Cch 1: Dng vng lp FOR.

Program TinhTong;

Uses crt;

Var N,i,S:integer;

Begin

Clrscr;

Write('Nhap vao gia tri cua N :'); Readln(N);

S:=0;

For i:=1 to N do S:=S+i;

Writeln('Ket qua la :',S);

Readln;

End.

Cch 2: Dng vng lp REPEAT.

Program TinhTong;

Uses crt;

Var N,i,S:integer;

Begin

Clrscr;

Write('Nhap vao gia tri cua N :'); Readln(N);

S:=0; i:=1;

Repeat

S:=S+i;

i:=i+1;

Until i>N;

Writeln('Ket qua la :',S);

Readln;

End.

Cch 3: Dng vng lp WHILE.

Program TinhTong;

Uses crt;

Var N,i,S:integer;

Begin

Clrscr;

Write('Nhap vao gia tri cua N :'); Readln(N);

S:=0; i:=1;

While iEpsilon Do

Begin

Pi:=Pi+s*t;

s:=-s; i:=i+1;

t:=4/(2*i+1);

End;

Writeln('So Pi = ',Pi:0:4);

Readln;

End.

Bi tp 3.8:Vit chng trnh nhp vo s nguyn N. In ra mn hnh tt c cc c s ca N.

tng:

Cho bin i chy t 1 ti N. Nu N MOD i=0 th vit i ra mn hnh.

Uses Crt;

Var N,i : Integer;

Begin

Clrscr;

Write('Nhap so nguyen N= '); Readln(N);

For i:=1 To N Do

If N MOD i=0 ThenWrite(i:5);

Readln;

End.

Bi tp 3.9:Vit chng trnh tm USCLN v BSCNN ca 2 s a, b c nhp vo t bn phm.

tng:

- Tm USCLN: Ly s ln tr s nh cho n khi a=b th dng. Lc : USCLN=a.

- BSCNN(a,b) = a*b DIV USCLN(a,b).

Uses crt;

Var a,b,aa,bb:integer;

Begin

Write('Nhap a : '); Readln(a);

Write('Nhap b : '); Readln(b);

aa:=a; bb:=b;

While aabb Do

Begin

If aa>bb Then aa:=aa-bb Elsebb:=bb-aa;

End;

Writeln('USCLN= ',aa);

Writeln('BSCNN= ',a*b DIV aa);

Readln;

End.

Bi tp 3.10: Vit chng trnh tm cc s c 3 ch s sao cho: = a3 + b3 + c3.

tng:

Dng phng php vt cn. Ta bit rng: a c th c gi tr t 1(9 (v a l s hng trm), b,c c th c gi tr t 0(9. Ta s dng 3 vng lp FOR lng nhau duyt qua tt c cc trng hp ca a,b,c.

ng vi mi b abc, ta s kim tra: Nu 100.a + 10.b + c = a3 + b3 + c3 th in ra b abc .

Uses crt;

Var a,b,c : Word;

Begin

For a:=1 To 9 Do

For b:=0 To 9 Do

For c:=0 To 9 Do

If (100*a + 10*b + c)=(a*a*a + b*b*b + c*c*c) ThenWriteln(a,b,c);

Readln;

End.

Bi tp 3.11: Vit chng trnh nhp vo s t nhin N ri thng bo ln mn hnh s c phi l s nguyn t hay khng.

tng:

N l s nguyn t nu N khng c c s no t 2 ( N div 2. T nh ngha ny ta a ra gii thut:

- m s c s ca N t 2 ( N div 2 lu vo bin d.

- Nu d=0 th N l s nguyn t.

Uses crt;

Var N,i,d : Word;

Begin

If N0 th: ly ra ch s cui cng ca N tnh bng php ton MOD 10, sau b bt i ch s cui cng ca N bng php ton DIV 10.Bi tp 3.24: Vit chng trnh in ra mn hnh tt c cc s nguyn t t 2 n N. Vi N c nhp t bn phm.

Bi tp 3.25: Vit chng trnh phn tch mt s ra tha s nguyn t. V d: N=100 s in ra mn hnh:

100|2

50|2

25|5

5|5

1|

Bi tp 3.26: S hon thin l s t nhin c tng cc c ca n (khng k chnh n) bng chnh n. Vit chng trnh kim tra xem mt s c nhp vo t bn phm c phi l s hon thin hay khng? V d: 6, 28 l cc s hon thin.

Gi :

- Tnh tng cc c s ca N: t 1 ( N div 2 lu vo bin S.

- Nu S=N th N l s hon thin.

Bi tp 3.27: Vit chng trnh in ra cc s nguyn t 1 n N2 theo hnh xon c vi N c nhp vo t bn phm. V d, vi N=5 ta c:

12345

161718196

152425207

142322218

131211109

Chng 4

CHNG TRNH CON: TH TC V HM

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 hoc kiu con tr). 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 ............;

TYPE ............;

VAR ............;

PROCEDURE THUTUC[(Cc tham s)];

[Khai bo Const, Type, Var]

BEGIN

..............

END;

FUNCTION HAM[(Cc tham s)]:;

[Khai bo Const, Type, Var]

BEGIN

..............

HAM:=;

END;

BEGIN {Chng trnh chnh}

...................

THUTUC[(...)];

...................

A:= HAM[(...)];

...................

END.

Ch : Trong qu trnh xy dng CTC, khi no th nn dng th tc/hm?

Dng hmDng th tc

- Kt qu ca bi ton tr v 1 gi tr duy nht (kiu v hng, kiu string hoc kiu con tr).- Li gi CTC cn nm trong cc biu thc tnh ton.- Kt qu ca bi ton khng tr v gi tr no hoc tr v nhiu gi tr hoc tr v kiu d liu c cu trc (Array, Record, File).- Li gi CTC khng nm trong cc biu thc tnh ton.

V d 1: Vit CTC tnh n! = 1.2...n.

tng: V bi ton ny tr v 1 gi tr duy nht nn ta dng hm.

Function GiaiThua(n:Word):Word;

Var P, i:Word;

Begin

P:=1;

For i:=1 To n Do P:=P*i;

GiaiThua:=P;

End;

V d 2: Vit chng trnh con tm im i xng ca im (x,y) qua gc ta .

tng: V bi ton ny tr v ta im i xng (xx,yy) gm 2 gi tr nn ta dng th tc.

Procedure DoiXung(x,y:Integer; Var xx,yy:Integer);

Begin

xx:=-x;

yy:=-y;

End;

CH : Trong 2 v d trn:

n, x, y c gi l tham tr (khng c t kha var ng trc) v sau khi ra khi CTC gi tr ca n khng b thay i.

xx, yy c gi l tham bin (c t kha var ng trc) v sau khi ra khi CTC gi tr ca n b thay i.

III. BIN TON CC V BIN A PHNG

Bin ton cc: l cc bin c khai bo trong chng trnh chnh. Cc bin ny c tc dng mi ni trong ton b chng trnh.

Bin a phng: l cc bin c khai bo trong cc CTC. Cc bin ny ch c tc dng trong phm vi CTC m thi.

Ch : Trong mt CTC, nu bin ton cc trng tn vi bin a phng th bin a phng c u tin hn.

V d:

Program KhaoSatBien;

Var a,b: Integer;{bin ton cc}

Procedure ThuBien;

Var a: Integer;{bin a phng}

Begin

a:=10;

Writeln(A=,a,B=,b);

End;

Begin

a:=50;

b:=200;

ThuBien;

{A=10 B=200}

Writeln(A=,a,B=,b);

{A=50 B=200}

End.

IV. QUI

4.1. Khi nim qui

Trong mt chng trnh, mt CTC c th gi mt CTC khc vo lm vic. Nu nh CTC gi li chnh n th gi l s qui.

4.2. Phng php thit k gii thut qui

Tham s ha bi ton

Tm trng hp suy bin.

Phn tch cc trng hp chung (a v cc bi ton cng loi nhng nh hn).

V d: Vit hm qui tnh n! = 1.2...n.

Tham s ha: n! = Factorial(n);

Factorial(0) = 1

(trng hp suy bin)

Factorial(n) = n*Factorial(n-1)

(trng hp chung)

Function Factorial(N:integer):Longint;

Begin

If N=0 Then Factorial:=1

ElseFactorial:=N*factorial(N-1); { li gi qui }

End;

4.3. Gii thut quay lui

Bi ton:

Hy xy dng cc b gi tr gm n thnh phn (x1,...,xn) t mt tp hu hn cho trc sao cho cc b tha mn yu cu B cho trc no .

Phng php chung

Gi s xc nh c k-1 phn t u tin ca dy: x1,...,xk-1. Ta cn xc nh phn t th k. Phn t ny c xc nh theo cch sau:

- Gi s Tk: tp tt c cc gi tr m phn t xk c th nhn c. V tp Tk hu hn nn ta c th t nk l s phn t ca Tk theo mt th t no , tc l ta c th thnh lp mt nh x 1-1 t tp Tk ln tp {1, 2, ..., nk}.

- Xt j({1, 2, ..., nk}. Ta ni rng j chp nhn c nu ta c th b sung phn t th j trong Tk vi t cch l phn t xk vo trong dy x1,...,xk-1 c dy x1,...,xk.

- Nu k=n: B (x1,...,xk) tha mn yu cu B, do b ny c thu nhn.

- Nu kb Then a:=a-b Else b:=b-a;

End;

UCLN:=a;

End;

Function NGUYENTO(n:Word):Boolean;

Var d,i:Word;

Begin

d:=0;

For i:=2 To n DIV 2 Do

If n MOD i=0 Then d:=d+1;

NGUYENTO:=d=0;

End;

END.

By gi, ta c th vit mt chng trnh c s dng Unit MYTOOL.

Uses Crt, MyTool;

Var a,b:Integer;

Begin

CLRSCR;

Write(10,5,CHUONG TRINH MINH HOA);

Write(Nhap a = ); Readln(a);

Write(Nhap b = ); Readln(b);

Writeln(UCLN cua ,a, va ,b, la:,UCLN(a,b));

Write(Nhap m = ); Readln(m);

If NGUYENTO(m) Then

Writeln(m, la so nguyen to!)

Else

Writeln(m, khong phai la so nguyen to!)

Readln;

End.

BI TP MUBi tp 4.1: Vit hm tm Max ca 2 s thc x,y.

Var a,b:Real;

Function Max(x,y:Real):Real;

Begin

If x>y Then Max:=x Else Max:=y;

End;

Begin

Write(Nhap a=); Readln(a);

Write(Nhap b=); Readln(b);

Writeln(So lon nhat trong 2 so la: , Max(a,b));

Readln;

End.

Bi tp 4.2: Vit hm LOWCASE( c:char):char; i ch ci hoa c thnh ch thng.

tng:

Trong bng m ASCII, s th t ca ch ci hoa nh hn s th t ca ch ci thng l 32. V vy ta c th dng 2 hm CHR v ORD chuyn i.

Uses crt;

Var ch:Char;

Function LOWCASE(c:Char):Char;

Begin

If c IN [A..Z] Then LOWCASE:=CHR(ORD(c)+32)

Else LOWCASE:=c;

End;

Begin

Write(Nhap k tu ch=); Readln(ch);

Writeln(Ky tu hoa la: , LOWCASE(ch));

Readln;

End.Bi tp 4.3: Vit th tc hon i hai ga tr x,y cho nhau.

Var a,b:Real;

Function Swap(Var x,y:Real);

Var Tam:Real;

Begin

Tam:=x; x:=y; y:=Tam;

End;

Begin

Write(Nhap a=); Readln(a);

Write(Nhap b=); Readln(b);

Swap(a,b);

Writeln(Cac so sau khi hoan doi: a=, a:0:2, b=,b:0:2);

Readln;

End.

Bi tp 4.4: Vit hm XMU(x:Real;n:Byte):Real; tnh gi tr xn.

Varx:Real;

n:Byte;

Function XMU(x:Real;n:Byte):Real;

Var i:Byte; S:Rea;

Begin

S:=1;

For i:=1 To n Do S:=S*x;

XMU:=S;

End;

Begin

Write(Nhap x=); Readln(x);

Write(Nhap n=); Readln(n);

Writeln(x mu n = , XMU(x,n):0:2);

Readln;

End.Bi tp 4.5: Vit th tc KHUNG(x1,y1,x2,y2:Integer); v mt khung hnh ch nht c nh trn bn tri l (x1,y1) v nh di bn phi l (x2,y2).

tng:

Dng cc k t m rng trong bng m ASCII:((#179), ((#196), ((#218), ((#192), ((#191), ((#217).

Uses crt;

Procedure Khung(x1,y1,x2,y2:Integer);

Var i,j:Integer;

Begin

Gotoxy(x1,y1); Write(#218); {V (}

Gotoxy(x1,y2); Write(#192); {V (}

{V 2 vin ngang ca khung}

For i:=x1+1 To x2-1 do

Begin

Gotoxy(i,y1); Write(#196);

Gotoxy(i,y2); Write(#196);

End;

Gotoxy(x2,y1); Write(#191); {V (}

Gotoxy(x2,y2); Write(#217); {V (}

{V 2 vin dc ca khung}

For j:=y1+1 To y2-1 do

Begin

Gotoxy(x1,j); Write(#179);

Gotoxy(x2,j); Write(#179);

End;

End;

Begin

Clrscr;

Khung(10,5,40,20);

Readln;

End.

Bi tp 4.6: Vit th tc PHANTICH(n:Integer); phn tch s nguyn n ra tha s nguyn t.

Uses crt;

Var n:Integer;

Procedure PHANTICH(n:Integer);

Var i:Integer;

Begin

i:=2;

While n1 Do

Begin

While n MOD i=0 Do

Begin

Writeln(n:5,'|',i:2);

n:=n Div i;

End;

i:=i+1;

End;

Writeln(n:5,'|');

End;

Begin

Write('Nhap n='); Readln(n);

PHANTICH(n);

Readln;

End.

BI TP T GII

Bi tp 4.7: Vit 2 hm tm Max , min ca 3 s thc.

Bi tp 4.8: Vit hm PERFECT(n:Word):Boolean; kim tra s nguyn n c phi l s hon thin hay khng?

Bi tp 4.9:Vit th tc FILL(x1,y1,x2,y2:Integer; ch:Char); t mt vng mn hnh hnh ch nht c nh trn bn tri l (x1,y1) v nh di bn phi l (x2,y2) bng cc k t ch.

Bi tp 4.10: Vit hm tm BSCNN ca 2 s nguyn a,b c khai bo nh sau:

Function BSCNN (a,b:word ):word ;

Bi tp 4.11: Vit th tc ti gin phn s a/b , vi a, b l 2 s nguyn.

Bi tp 4.12: Vit cc hm quy tnh:

S1 = 1+2 +3+......+n ;

S2 = 1+1/2 + .....+ 1/n ;

S3 = 1-1/2 +......+ (-1)n+1 1/n

S4 = 1 + sin(x) + sin2(x) + ......+ sinn (x)

Bi tp 4.13: Vit hm quy tnh Ckn bit :

Cnn =1 , C0n = 1 , Ckn = Ck-1n-1 + Ckn-1.

Bi tp 4.14: Cho m , n nguyn dng . Lp hm quy tnh:

A(m,n) =

Bi tp 4.15: Lp hm qui tnh dy Fibonaci:

F(n) =

Bi tp 4.16: Vit hm qui tm USCLN ca 2 s.

Bi tp 4.17: Vit th tc in ra mn hnh s o ngc ca mt s nguyn cho trc theo 2 cch: qui v khng qui.

Bi tp 4.18: Vit chng trnh in ra mn hnh cc hon v ca n s nguyn u tin.

Bi tp 4.19: Xy dng mt Unit SOHOC.PAS cha cc th tc v hm thc hin cc chc nng sau:

- Gii phng trnh bc nht.

- Gii phng trnh bc hai.

- Tm Max/Min ca 2 s a,b.

- Tm USCLN v BSCNN ca 2 s nguyn a,b.

- Kim tra s nguyn dng n c phi l s nguyn t hay khng?

- Kim tra s nguyn dng n c phi l s hon thin hay khng?

- i mt s nguyn dng n sang dng nh phn.

- In ra mn hnh bng cu chng t 2 ( 9.

Sau , t vit cc chng trnh c s dng Unit SOHOC va c xy dng trn.

Chng 5

D LIU KIU MNG (ARRAY)

I. KHAI BO MNG

C php:

TYPE = ARRAY [ch s] OF ;

VAR :;

hoc khai bo trc tip:

VAR

: ARRAY [ch s] OF ;

V d:

TYPEMangnguyen = Array[1..100] of Integer;

Matrix = Array[1..10,1..10] of Integer;

MangKytu = Array[Byte] of Char;

VAR

A: Mangnguyen;

M: Matrix;

C: MangKytu;

hoc:

VAR

A: Array[1..100] of Integer;

C: Array[Byte] of Char;

II. XUT NHP TRN D LIU KIU MNG

- truy cp n phn t th k trong mng mt chiu A, ta s dng c php: A[k].

- truy cp n phn t (i,j) trong mng hai chiu M, ta s dng c php: M[i,j].

- C th s dng cc th tc READ(LN)/WRITE(LN) i vi cc phn t ca bin kiu mng.

BI TP MU

Bi tp 5.1:Vit chng trnh tm gi tr ln nht ca mt mng cha cc s nguyn gm N phn t.

tng:

- Cho s ln nht l s u tin: Max:=a[1].

- Duyt qua cc phn t a[i], vi i chy t 2 ti N: Nu a[i]>Max th thay Max:=a[i];

Uses Crt;

Type Mang = ARRAY[1..50] Of Integer;

VarA:Mang;

N,i,Max:Integer;

Begin

{Nhp mng}

Write(Nhap N=); Readln(N);

For i:=1 To N Do

Begin

Write(A[,i,]=); Readln(A[i]);

End;

{Tm phn t ln nht}

Max:=A[1];

For i:=2 To N Do

If MaxN.

Nu x=A[i] th v tr cn tm l i, ngc li th kt qu tm l 0 (khng tm thy).

Uses Crt;

Type Mang = ARRAY[1..50] Of Integer;

VarA:Mang;

N,i,x:Integer;

Function TimKiem(x, N: Integer; A:Mang):Integer;

Var i:Integer;

Begin

I:=1;

While (I